void FUN_0041b2a8(int *param_1)

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