void FUN_004831c0(void)

{
  ushort *puVar1;
  ushort *puVar2;
  ushort *puVar3;
  ushort *puVar4;
  undefined1 auStack_38 [16];
  undefined1 auStack_28 [20];
  
  FUN_004874ec(auStack_38,FUN_004874e4,&DAT_004b7688);
  FUN_004874e4(&DAT_004b7688);
  if ((DAT_004c01a0 == 1) && (0 < DAT_004c01a4)) {
    FUN_004874ec(auStack_28,FUN_004874e4,&DAT_004b7670);
    FUN_004874e4(&DAT_004b7670);
    puVar3 = (ushort *)PTR_DAT_004b76bc;
    puVar1 = (ushort *)0x0;
    while (puVar4 = puVar1, puVar2 = puVar3, puVar2 != (ushort *)0x0) {
      puVar3 = *(ushort **)(puVar2 + 0xc);
      puVar1 = puVar2;
      if ((*puVar2 & 0x8030) == 0x30) {
        puVar1 = puVar3;
        if (puVar4 != (ushort *)0x0) {
          *(ushort **)(puVar4 + 0xc) = puVar3;
          puVar1 = (ushort *)PTR_DAT_004b76bc;
        }
        PTR_DAT_004b76bc = (undefined *)puVar1;
        puVar1 = puVar4;
        if ((*puVar2 & 0x2000) != 0) {
          FUN_004859b0();
        }
      }
    }
    FUN_004874ec(auStack_28,1);
    DAT_004c01a4 = 0;
  }
  DAT_004c01a0 = DAT_004c01a0 + -1;
  FUN_004874ec(auStack_38,1);
  return;
}