int sigaction(int __sig,sigaction *__act,sigaction *__oact)
{
int iVar1;
int iVar2;
undefined1 *puVar3;
undefined1 auStack_a8 [4];
code *local_a4;
if ((__sig == __pthread_sig_restart) || (__sig == __pthread_sig_cancel)) {
iVar2 = 0x16;
}
else if ((__sig == __pthread_sig_debug) && (0 < __sig)) {
iVar2 = 0x16;
}
else {
puVar3 = (undefined1 *)0x0;
if (__act != (sigaction *)0x0) {
memcpy(auStack_a8,__act,0x90) //possible issue identified - semgrep
if (((__act->sa_mask).__val[0] < 2) || (__sig < 1)) {
puVar3 = auStack_a8;
}
else {
puVar3 = auStack_a8;
if (__sig < 0x80) {
puVar3 = auStack_a8;
if (((uint)(__act->__sigaction_handler).sa_handler & 8) == 0) {
local_a4 = FUN_000187f4;
}
else {
local_a4 = FUN_000188b0;
}
}
}
}
iVar1 = __libc_sigaction(__sig,puVar3,__oact);
iVar2 = -1;
if (iVar1 != -1) {
if (__sig - 1U < 0x7f) {
if (__oact != (sigaction *)0x0) {
(__oact->sa_mask).__val[0] = *(ulong *)(&DAT_00031820 + __sig * 4);
}
if (__act != (sigaction *)0x0) {
*(ulong *)(&DAT_00031820 + __sig * 4) = (__act->sa_mask).__val[0];
}
iVar2 = 0;
}
else {
iVar2 = 0;
}
}
}
return iVar2;
}