void FUN_004081d8(int *param_1)

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