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;
}