void FUN_00404da4(int *param_1)

{
  uint uVar1;
  int *piVar2;
  int *piVar3;
  int iVar4;
  
  if (param_1 == (int *)0x0) {
    while (piVar3 = DAT_0041c9b8, (int **)DAT_0041c9b8 != &DAT_0041c9b8) {
      signal(DAT_0041c9b8[3],(__sighandler_t)0x0)   //possible issue identified - semgrep
      iVar4 = *piVar3;
      piVar2 = (int *)piVar3[1];
      uVar1 = piVar3[2];
      *piVar2 = iVar4;
      *piVar3 = 0;
      *(int **)(iVar4 + 4) = piVar2;
      *piVar3 = (int)DAT_0041c9a0;
      DAT_0041c9a0[1] = (int)piVar3;
      piVar3[2] = uVar1 & 0xfffffeff;
      DAT_0041c9a0 = piVar3;
      piVar3[1] = (int)&DAT_0041c9a0;
    }
  }
  else {
    signal(param_1[3],(__sighandler_t)0x0)   //possible issue identified - semgrep
    iVar4 = *param_1;
    piVar3 = (int *)param_1[1];
    uVar1 = param_1[2];
    *piVar3 = iVar4;
    *param_1 = 0;
    *(int **)(iVar4 + 4) = piVar3;
    *param_1 = (int)DAT_0041c9a0;
    DAT_0041c9a0[1] = (int)param_1;
    DAT_0041c9a0 = param_1;
    param_1[2] = uVar1 & 0xfffffeff;
    param_1[1] = (int)&DAT_0041c9a0;
  }
  return;
}