void FUN_00404dc4(int param_1)

{
  int iVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  
  if (param_1 != 0) {
    piVar3 = (int *)0x0;
    while( true ) {
      if (piVar3 == (int *)0x0) {
        piVar4 = *(int **)(param_1 + 0x14);
      }
      else {
        piVar4 = (int *)*piVar3;
      }
      if ((piVar4 == (int *)(param_1 + 0x14)) || (piVar4 == (int *)0x0)) break;
      if (0 < piVar4[2]) {
        iVar1 = child_running();
        if (iVar1 == 0) {
          piVar4[2] = 0;
        }
      }
      if (piVar4[2] < 1) {
        piVar2 = (int *)piVar4[1];
        iVar1 = *piVar4;
        piVar3 = (int *)piVar4[1];
        *piVar2 = iVar1;
        *(int **)(iVar1 + 4) = piVar2;
        *piVar4 = 0;
        piVar4[1] = 0;
        FUN_00404c20(piVar4);
      }
      else {
        piVar4[5] = piVar4[5] + 1;
        piVar3 = piVar4;
      }
    }
  }
  return;
}