void FUN_00481458(void)

{
  int iVar1;
  ushort *puVar2;
  undefined2 *puVar3;
  ushort *puVar4;
  
  FUN_00483c90(&DAT_004b7670,&DAT_00498870,0x18);
  FUN_00483c90(&DAT_004b7688,&DAT_00498870,0x18);
  for (puVar3 = (undefined2 *)PTR_DAT_004b76bc; puVar4 = (ushort *)PTR_DAT_004b76bc,
      puVar3 != (undefined2 *)0x0; puVar3 = *(undefined2 **)(puVar3 + 0xc)) {
    iVar1 = FUN_004874e4(puVar3 + 0x1a);
    if (iVar1 != 0) {
      *puVar3 = 0x30;
      *(undefined4 *)(puVar3 + 10) = *(undefined4 *)(puVar3 + 4);
      *(undefined4 *)(puVar3 + 8) = *(undefined4 *)(puVar3 + 4);
    }
    *(undefined4 *)(puVar3 + 0x18) = 1;
    FUN_00483c90(puVar3 + 0x1a,&DAT_00498870,0x18);
  }
  do {
    while( true ) {
      if (puVar4 == (ushort *)0x0) {
        return;
      }
      if ((*puVar4 & 0x40) == 0) {
        puVar2 = *(ushort **)(puVar4 + 0xe);
      }
      else {
        FUN_00481660(puVar4);
        puVar2 = *(ushort **)(puVar4 + 0xe);
      }
      if (puVar2 != puVar4 + 2) break;
LAB_0048157c:
      puVar4 = *(ushort **)(puVar4 + 0xc);
    }
    if (*(code **)(puVar4 + 0x16) != (code *)0x0) {
      (**(code **)(puVar4 + 0x16))(puVar2);
      goto LAB_0048157c;
    }
    puVar4 = *(ushort **)(puVar4 + 0xc);
  } while( true );
}