int pthread_sigmask(int __how,__sigset_t *__newmask,__sigset_t *__oldmask)
{
__sigset_t *__set;
int iVar1;
int *piVar2;
int iVar3;
sigset_t sStack_90;
__set = __newmask;
if (__newmask != (__sigset_t *)0x0) {
__set = &sStack_90;
memcpy(__set,__newmask,0x80) //possible issue identified - semgrep
iVar1 = __pthread_sig_restart;
if (__how != 2) {
if (__how == 3) {
sigaddset(__set,__pthread_sig_restart);
}
else if (__how != 1) {
__set = &sStack_90;
goto LAB_00018f20;
}
sigdelset(__set,__pthread_sig_cancel);
iVar1 = __pthread_sig_debug;
if (__pthread_sig_debug < 1) {
__set = &sStack_90;
goto LAB_00018f20;
}
}
sigdelset(__set,iVar1);
}
LAB_00018f20:
iVar1 = sigprocmask(__how,__set,__oldmask);
iVar3 = 0;
if (iVar1 == -1) {
piVar2 = __errno_location();
iVar3 = *piVar2;
}
return iVar3;
}