void FUN_00413fc8(int *param_1)

{
  uint uVar1;
  int *piVar2;
  int *piVar3;
  int iVar4;
  
  if (param_1 == (int *)0x0) {
    while (piVar3 = DAT_00433ed0, (int **)DAT_00433ed0 != &DAT_00433ed0) {
      iVar4 = *DAT_00433ed0;
      piVar2 = (int *)DAT_00433ed0[1];
      uVar1 = DAT_00433ed0[2];
      *piVar2 = iVar4;
      *piVar3 = 0;
      *(int **)(iVar4 + 4) = piVar2;
      *piVar3 = (int)DAT_00433ea8;
      DAT_00433ea8[1] = (int)piVar3;
      piVar3[2] = uVar1 & 0xfffffeff;
      DAT_00433ea8 = piVar3;
      piVar3[1] = (int)&DAT_00433ea8;
    }
    return;
  }
  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_00433ea8;
  DAT_00433ea8[1] = (int)param_1;
  DAT_00433ea8 = param_1;
  param_1[2] = uVar1 & 0xfffffeff;
  param_1[1] = (int)&DAT_00433ea8;
  return;
}