program=noxus38-subrosa.exe roots=69 expanded=120

===== FUN_1400c9820 @ 1400c9820 root=true =====

void FUN_1400c9820(int param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint uVar4;
  longlong lVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  longlong lVar9;
  int iVar10;
  longlong lVar11;
  longlong lVar12;
  
  lVar9 = (longlong)param_1;
  lVar11 = lVar9 * 0x1b80;
  if ((*(int *)(&DAT_182bbc7f0 + lVar11) == 0) &&
     (*(int *)(&DAT_182bbc7ec + lVar11) = *(int *)(&DAT_182bbc7ec + lVar11) + -1,
     *(int *)(&DAT_182bbc7ec + lVar11) < 1)) {
    if (*(int *)(&DAT_182bbc7e4 + lVar11) == 0) {
      FUN_1400c92b0(param_1);
      return;
    }
    iVar6 = 0x10 - (*(int *)(&DAT_182bbc7e8 + lVar11) >> 1 & 0xfffffffcU);
    if (iVar6 < 4) {
      iVar6 = 4;
    }
    *(int *)(&DAT_182bbc7ec + lVar11) = iVar6;
    lVar12 = lVar9 * 0x370;
    lVar5 = (ulonglong)(*(uint *)(&DAT_182bbc7f8 + lVar11) & 0x3f) + lVar12;
    uVar7 = *(uint *)(&DAT_182bbc7f8 + lVar11) + 1 & 0x3f;
    iVar6 = *(int *)(&DAT_182bbc800 + lVar5 * 8);
    iVar8 = *(int *)(&DAT_182bbc804 + lVar5 * 8);
    iVar1 = *(int *)(&DAT_182bbc7f4 + lVar11);
    *(uint *)(&DAT_182bbc7f8 + lVar11) = uVar7;
    if (iVar1 == 0) {
      iVar10 = 0;
      if (iVar6 + 1 < 0x1f) {
        iVar10 = iVar6 + 1;
      }
    }
    else {
      iVar10 = iVar6;
      if (iVar1 == 1) {
        iVar6 = iVar8 + 1;
        iVar8 = 0;
        if (iVar6 < 0x16) {
          iVar8 = iVar6;
        }
      }
      else if (iVar1 == 2) {
        iVar10 = iVar6 + -1;
        if (iVar6 + -1 < 0) {
          iVar10 = 0x1e;
        }
      }
      else if ((iVar1 == 3) && (iVar8 = iVar8 + -1, iVar8 < 0)) {
        iVar8 = 0x15;
      }
    }
    lVar5 = (ulonglong)uVar7 + lVar12;
    lVar9 = lVar9 * 0xdc;
    *(int *)(&DAT_182bbc800 + lVar5 * 8) = iVar10;
    *(int *)(&DAT_182bbc804 + lVar5 * 8) = iVar8;
    lVar5 = (iVar8 + lVar9) * 0x20 + (longlong)iVar10;
    if ((&DAT_182bbca00)[lVar5] == '\x04') {
      (&DAT_182bbca00)[lVar5] = 0;
      *(int *)(&DAT_182bbc7e0 + lVar11) = *(int *)(&DAT_182bbc7e0 + lVar11) + 5;
      *(int *)(&DAT_182bbc7e4 + lVar11) = *(int *)(&DAT_182bbc7e4 + lVar11) + -1;
      *(undefined2 *)(&DAT_182bbc7e2 + lVar11) = 0;
      if (*(int *)(&DAT_182bbc7e4 + lVar11) < 1) {
        *(undefined4 *)(&DAT_182bbc7ec + lVar11) = 0x20;
        *(undefined4 *)(&DAT_182bbc7e4 + lVar11) = 0;
      }
      lVar5 = lVar12 + *(int *)(&DAT_182bbc7fc + lVar11);
      uVar2 = *(undefined4 *)(&DAT_182bbc800 + lVar5 * 8);
      uVar7 = *(int *)(&DAT_182bbc7fc + lVar11) - 1U & 0x3f;
      uVar3 = *(undefined4 *)(&DAT_182bbc804 + lVar5 * 8);
      *(uint *)(&DAT_182bbc7fc + lVar11) = uVar7;
      lVar5 = (ulonglong)uVar7 + lVar12;
      *(undefined4 *)(&DAT_182bbc800 + lVar5 * 8) = uVar2;
      *(undefined4 *)(&DAT_182bbc804 + lVar5 * 8) = uVar3;
      uVar7 = *(int *)(&DAT_182bbc7fc + lVar11) - 1U & 0x3f;
      *(uint *)(&DAT_182bbc7fc + lVar11) = uVar7;
      lVar5 = (ulonglong)uVar7 + lVar12;
      *(undefined4 *)(&DAT_182bbc800 + lVar5 * 8) = uVar2;
      *(undefined4 *)(&DAT_182bbc804 + lVar5 * 8) = uVar3;
      uVar7 = *(int *)(&DAT_182bbc7fc + lVar11) - 1U & 0x3f;
      *(uint *)(&DAT_182bbc7fc + lVar11) = uVar7;
      lVar5 = (ulonglong)uVar7 + lVar12;
      *(undefined4 *)(&DAT_182bbc800 + lVar5 * 8) = uVar2;
      *(undefined4 *)(&DAT_182bbc804 + lVar5 * 8) = uVar3;
      uVar7 = *(int *)(&DAT_182bbc7fc + lVar11) - 1U & 0x3f;
      *(uint *)(&DAT_182bbc7fc + lVar11) = uVar7;
      lVar5 = (ulonglong)uVar7 + lVar12;
      *(undefined4 *)(&DAT_182bbc800 + lVar5 * 8) = uVar2;
      *(undefined4 *)(&DAT_182bbc804 + lVar5 * 8) = uVar3;
    }
    if ((&DAT_182bbca00)
        [(*(int *)(&DAT_182bbc804 + (*(int *)(&DAT_182bbc7f8 + lVar11) + lVar12) * 8) + lVar9) *
         0x20 + (longlong)
                *(int *)(&DAT_182bbc800 + (*(int *)(&DAT_182bbc7f8 + lVar11) + lVar12) * 8)] != '\0'
       ) {
      *(undefined4 *)(&DAT_182bbc7f0 + lVar11) = 1;
    }
    (&DAT_182bbca00)
    [(*(int *)(&DAT_182bbc804 + (*(int *)(&DAT_182bbc7fc + lVar11) + lVar12) * 8) + lVar9) * 0x20 +
     (longlong)*(int *)(&DAT_182bbc800 + (*(int *)(&DAT_182bbc7fc + lVar11) + lVar12) * 8)] = 0;
    uVar7 = *(uint *)(&DAT_182bbc7f8 + lVar11);
    uVar4 = *(int *)(&DAT_182bbc7fc + lVar11) + 1U & 0x3f;
    *(uint *)(&DAT_182bbc7fc + lVar11) = uVar4;
    for (; uVar4 != (uVar7 & 0x3f); uVar4 = uVar4 + 1 & 0x3f) {
      (&DAT_182bbca00)
      [(*(int *)(&DAT_182bbc804 + ((ulonglong)uVar4 + lVar12) * 8) + lVar9) * 0x20 +
       (longlong)*(int *)(&DAT_182bbc800 + ((ulonglong)uVar4 + lVar12) * 8)] = 2;
    }
    (&DAT_182bbca00)
    [(*(int *)(&DAT_182bbc804 + ((ulonglong)uVar4 + lVar12) * 8) + lVar9) * 0x20 +
     (longlong)*(int *)(&DAT_182bbc800 + ((ulonglong)uVar4 + lVar12) * 8)] = 3;
    FUN_1400c8e10(param_1);
  }
  return;
}



===== FUN_1400c58e0 @ 1400c58e0 root=true =====

void FUN_1400c58e0(int param_1)

{
  int *piVar1;
  longlong lVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  
  iVar5 = 0;
  lVar2 = (longlong)param_1 * 0x6e0;
  piVar1 = (int *)(&DAT_182bbc9ec + (longlong)param_1 * 0x1b80);
  iVar6 = 2;
  do {
    iVar3 = iVar5 + 1;
    if (piVar1[0x3f] < 1) {
      iVar3 = iVar5;
    }
    if ((*(int *)(&DAT_182bbcb68 + (piVar1[-1] + lVar2) * 4) != iVar6 + -2) &&
       (*(int *)(&DAT_182bbcb68 + (piVar1[-1] + lVar2) * 4) != -1)) {
      iVar3 = iVar3 + 1;
    }
    iVar5 = iVar3 + 1;
    if (piVar1[0x40] < 1) {
      iVar5 = iVar3;
    }
    if ((*(int *)(&DAT_182bbcb68 + (*piVar1 + lVar2) * 4) != iVar6 + -1) &&
       (*(int *)(&DAT_182bbcb68 + (*piVar1 + lVar2) * 4) != -1)) {
      iVar5 = iVar5 + 1;
    }
    iVar3 = iVar5 + 1;
    if (piVar1[0x41] < 1) {
      iVar3 = iVar5;
    }
    if ((*(int *)(&DAT_182bbcb68 + (piVar1[1] + lVar2) * 4) != iVar6) &&
       (*(int *)(&DAT_182bbcb68 + (piVar1[1] + lVar2) * 4) != -1)) {
      iVar3 = iVar3 + 1;
    }
    iVar5 = iVar3 + 1;
    if (piVar1[0x42] < 1) {
      iVar5 = iVar3;
    }
    if ((*(int *)(&DAT_182bbcb68 + (piVar1[2] + lVar2) * 4) != iVar6 + 1) &&
       (*(int *)(&DAT_182bbcb68 + (piVar1[2] + lVar2) * 4) != -1)) {
      iVar5 = iVar5 + 1;
    }
    iVar3 = iVar5 + 1;
    if (piVar1[0x43] < 1) {
      iVar3 = iVar5;
    }
    if ((*(int *)(&DAT_182bbcb68 + (piVar1[3] + lVar2) * 4) != iVar6 + 2) &&
       (*(int *)(&DAT_182bbcb68 + (piVar1[3] + lVar2) * 4) != -1)) {
      iVar3 = iVar3 + 1;
    }
    iVar5 = iVar3 + 1;
    if (piVar1[0x44] < 1) {
      iVar5 = iVar3;
    }
    if ((*(int *)(&DAT_182bbcb68 + (piVar1[4] + lVar2) * 4) != iVar6 + 3) &&
       (*(int *)(&DAT_182bbcb68 + (piVar1[4] + lVar2) * 4) != -1)) {
      iVar5 = iVar5 + 1;
    }
    iVar3 = iVar5 + 1;
    if (piVar1[0x45] < 1) {
      iVar3 = iVar5;
    }
    if ((*(int *)(&DAT_182bbcb68 + (piVar1[5] + lVar2) * 4) != iVar6 + 4) &&
       (*(int *)(&DAT_182bbcb68 + (piVar1[5] + lVar2) * 4) != -1)) {
      iVar3 = iVar3 + 1;
    }
    iVar5 = iVar3 + 1;
    if (piVar1[0x46] < 1) {
      iVar5 = iVar3;
    }
    if ((*(int *)(&DAT_182bbcb68 + (piVar1[6] + lVar2) * 4) != iVar6 + 5) &&
       (*(int *)(&DAT_182bbcb68 + (piVar1[6] + lVar2) * 4) != -1)) {
      iVar5 = iVar5 + 1;
    }
    iVar3 = iVar5 + 1;
    if (piVar1[0x47] < 1) {
      iVar3 = iVar5;
    }
    if ((*(int *)(&DAT_182bbcb68 + (piVar1[7] + lVar2) * 4) != iVar6 + 6) &&
       (*(int *)(&DAT_182bbcb68 + (piVar1[7] + lVar2) * 4) != -1)) {
      iVar3 = iVar3 + 1;
    }
    iVar5 = iVar3 + 1;
    if (piVar1[0x48] < 1) {
      iVar5 = iVar3;
    }
    if ((*(int *)(&DAT_182bbcb68 + (piVar1[8] + lVar2) * 4) != iVar6 + 7) &&
       (*(int *)(&DAT_182bbcb68 + (piVar1[8] + lVar2) * 4) != -1)) {
      iVar5 = iVar5 + 1;
    }
    iVar3 = iVar5 + 1;
    if (piVar1[0x49] < 1) {
      iVar3 = iVar5;
    }
    if ((*(int *)(&DAT_182bbcb68 + (piVar1[9] + lVar2) * 4) != iVar6 + 8) &&
       (*(int *)(&DAT_182bbcb68 + (piVar1[9] + lVar2) * 4) != -1)) {
      iVar3 = iVar3 + 1;
    }
    iVar4 = iVar3 + 1;
    if (piVar1[0x4a] < 1) {
      iVar4 = iVar3;
    }
    if ((*(int *)(&DAT_182bbcb68 + (piVar1[10] + lVar2) * 4) != iVar6 + 9) &&
       (*(int *)(&DAT_182bbcb68 + (piVar1[10] + lVar2) * 4) != -1)) {
      iVar4 = iVar4 + 1;
    }
    iVar5 = iVar4 + 1;
    if (piVar1[0x4b] < 1) {
      iVar5 = iVar4;
    }
    if ((*(int *)(&DAT_182bbcb68 + (piVar1[0xb] + lVar2) * 4) != iVar6 + 10) &&
       (*(int *)(&DAT_182bbcb68 + (piVar1[0xb] + lVar2) * 4) != -1)) {
      iVar5 = iVar5 + 1;
    }
    piVar1 = piVar1 + 0xd;
    iVar3 = iVar6 + 0xb;
    iVar6 = iVar6 + 0xd;
  } while (iVar3 < 0x1a);
  if (iVar5 < 1) {
    return;
  }
  return;
}



===== FUN_140127910 @ 140127910 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140127910(void)

{
  char cVar1;
  char cVar2;
  undefined4 uVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  undefined4 uVar9;
  float fVar10;
  byte bVar11;
  undefined4 uVar12;
  int iVar13;
  FILE *pFVar14;
  int *piVar15;
  undefined4 *puVar16;
  int *piVar17;
  undefined4 *puVar18;
  undefined8 *puVar19;
  __time64_t _Var20;
  int iVar21;
  int iVar22;
  char *pcVar23;
  longlong lVar24;
  uint *puVar25;
  ulonglong uVar26;
  ulonglong uVar27;
  ulonglong uVar28;
  uint uVar29;
  char *pcVar30;
  longlong lVar31;
  int iVar32;
  ulonglong uVar33;
  ulonglong uVar34;
  undefined8 *puVar35;
  int iVar36;
  ulonglong uVar37;
  uint *puVar38;
  bool bVar39;
  float fVar40;
  double dVar41;
  double dVar42;
  float fVar43;
  float fVar44;
  float fVar45;
  undefined1 auStack_598 [32];
  undefined4 local_578;
  float local_570;
  float local_568;
  float local_560;
  float local_558;
  float local_548;
  float fStack_544;
  float local_540;
  undefined8 local_538;
  float local_530;
  undefined4 local_528;
  undefined4 local_524 [3];
  char local_518 [8];
  char acStack_510 [8];
  char local_508 [8];
  char acStack_500 [8];
  char local_4f8 [8];
  char acStack_4f0 [8];
  char local_4e8 [8];
  char acStack_4e0 [8];
  char local_4d8 [8];
  char acStack_4d0 [8];
  char local_4c8 [8];
  char acStack_4c0 [8];
  char local_4b8 [8];
  char acStack_4b0 [8];
  char local_4a8 [8];
  char acStack_4a0 [8];
  char local_498 [8];
  char acStack_490 [8];
  char local_488 [8];
  char acStack_480 [8];
  char local_478 [8];
  char acStack_470 [8];
  char local_468 [8];
  char acStack_460 [840];
  undefined1 local_118 [16];
  undefined1 local_108 [16];
  undefined4 local_f8;
  ulonglong local_d8;
  
  local_d8 = DAT_1403020a0 ^ (ulonglong)auStack_598;
  if (((DAT_144cbfaa4 == 0) && (0 < DAT_144cbfaa8)) && (0 < DAT_144cbfab4)) {
    iVar32 = 1;
    FUN_140158ab0(local_118,"replay%03d.srp",1);
    pFVar14 = (FILE *)FUN_14020b8d8(local_118,&DAT_1402724dc);
    while ((pFVar14 != (FILE *)0x0 && (iVar32 < 1000))) {
      fclose(pFVar14);
      iVar32 = iVar32 + 1;
      FUN_140158ab0(local_118,"replay%03d.srp",iVar32);
      pFVar14 = (FILE *)FUN_14020b8d8(local_118,&DAT_1402724dc);
    }
    pFVar14 = (FILE *)FUN_14020b8d8(local_118,&DAT_14027366c);
    if (pFVar14 != (FILE *)0x0) {
      local_528 = 1;
      fwrite(&local_528,4,1,pFVar14);
      local_524[0] = DAT_1402b26c8;
      fwrite(local_524,4,1,pFVar14);
      fwrite(&DAT_144cbfab4,4,1,pFVar14);
      fwrite(DAT_144cbfab8,1,(longlong)DAT_144cbfab4,pFVar14);
      fclose(pFVar14);
    }
    DAT_144cbfaa8 = DAT_144cbfaa8 + -1;
  }
  DAT_1ad04b21c = DAT_183ebfaac;
  if (DAT_1ad04adc0 != 0) {
    if (DAT_183ebfaac == 7) {
      pcVar30 = &DAT_183ebfab0;
      pcVar23 = &DAT_183f7a614 + (longlong)DAT_183f7a610 * 0x40;
      do {
        cVar1 = *pcVar23;
        pcVar23 = pcVar23 + 1;
        *pcVar30 = cVar1;
        pcVar30 = pcVar30 + 1;
      } while (cVar1 != '\0');
    }
    else if ((DAT_183ebfaac - 4 & 0xfffffffb) == 0) {
      DAT_183ebfab0 = DAT_140274da0;
      DAT_183ebfab1 = DAT_140274da1;
      DAT_183ebfab0_1._1_1_ = UNK_140274da2;
      DAT_183ebfab0_1._2_1_ = UNK_140274da3;
      _DAT_183ebfab4 = DAT_140274da4;
    }
    else if (((DAT_183ebfaac - 3 & 0xfffffffc) == 0) && (DAT_183ebfaac != 4)) {
      DAT_183ebfab0 = s_round_140274da8[0];
      DAT_183ebfab1 = s_round_140274da8[1];
      DAT_183ebfab0_1._1_1_ = s_round_140274da8[2];
      DAT_183ebfab0_1._2_1_ = s_round_140274da8[3];
      _DAT_183ebfab4 = s_round_140274da8._4_2_;
    }
  }
  uVar33 = 0;
  iVar32 = 0;
  iVar13 = 0;
  uVar37 = uVar33;
  do {
    uVar34 = uVar37;
    cVar1 = (&DAT_183ebfab0)[uVar34];
    bVar39 = cVar1 == "round"[uVar34];
    if (!bVar39) goto LAB_140127b79;
    uVar37 = uVar34 + 1;
  } while (uVar34 + 1 != 6);
  bVar39 = cVar1 == "round"[uVar34];
LAB_140127b79:
  DAT_183f7cb60 = (uint)bVar39;
  if (DAT_183ebfaac == 3) {
    DAT_183ebfcb0 = (uint)(DAT_183f7a5b4 != 0);
  }
  _DAT_183f7cbc0 = _DAT_140279820;
  uRam0000000183f7cbc8 = _UNK_140279828;
  DAT_1ad04b214 = 0xffffffff;
  _DAT_183f7cbd0 = DAT_140278800;
  _DAT_183f7cbd4 = DAT_140278a64;
  (*DAT_144980d30)(cVar1,DAT_183ebfaac,DAT_1402b2bf0,0);
  (*DAT_144980d28)(0x4100);
  FUN_14007bb00();
  uVar12 = DAT_140278964;
  fVar6 = DAT_1402787d4;
  fVar5 = DAT_140278774;
  fVar4 = DAT_1402783f4;
  local_558 = DAT_1402783f4;
  local_560 = DAT_1402783f4;
  local_568 = DAT_1402783f4;
  local_570 = DAT_1402783f4;
  local_578 = 1;
  FUN_14006d930("Generating...",DAT_140278964,DAT_1402787d4,DAT_140278774);
  SDL_GL_SwapWindow(DAT_160fc47c8);
  lVar24 = 0x10;
  puVar35 = &DAT_1a6f9e144;
  do {
    *puVar35 = 0x100000001;
    puVar35[1] = 0x100000001;
    puVar35[2] = 0x100000001;
    puVar35[3] = 0x100000001;
    puVar35[4] = 0x100000001;
    puVar35[5] = 0x100000001;
    puVar35[6] = 0x100000001;
    puVar35[7] = 0x100000001;
    lVar24 = lVar24 + -1;
    puVar35 = puVar35 + 8;
  } while (lVar24 != 0);
  DAT_15104ae60 = 0;
  piVar15 = &DAT_140544ab4;
  do {
    if ((piVar15[-1] != 0) && (*piVar15 == 0)) {
      *piVar15 = 1;
    }
    if ((piVar15[0x440bf] != 0) && (piVar15[0x440c0] == 0)) {
      piVar15[0x440c0] = 1;
    }
    if ((piVar15[0x8817f] != 0) && (piVar15[0x88180] == 0)) {
      piVar15[0x88180] = 1;
    }
    if ((piVar15[0xcc23f] != 0) && (piVar15[0xcc240] == 0)) {
      piVar15[0xcc240] = 1;
    }
    if ((piVar15[0x1102ff] != 0) && (piVar15[0x110300] == 0)) {
      piVar15[0x110300] = 1;
    }
    if ((piVar15[0x1543bf] != 0) && (piVar15[0x1543c0] == 0)) {
      piVar15[0x1543c0] = 1;
    }
    if ((piVar15[0x19847f] != 0) && (piVar15[0x198480] == 0)) {
      piVar15[0x198480] = 1;
    }
    if ((piVar15[0x1dc53f] != 0) && (piVar15[0x1dc540] == 0)) {
      piVar15[0x1dc540] = 1;
    }
    if ((piVar15[0x2205ff] != 0) && (piVar15[0x220600] == 0)) {
      piVar15[0x220600] = 1;
    }
    if ((piVar15[0x2646bf] != 0) && (piVar15[0x2646c0] == 0)) {
      piVar15[0x2646c0] = 1;
    }
    if ((piVar15[0x2a877f] != 0) && (piVar15[0x2a8780] == 0)) {
      piVar15[0x2a8780] = 1;
    }
    if ((piVar15[0x2ec83f] != 0) && (piVar15[0x2ec840] == 0)) {
      piVar15[0x2ec840] = 1;
    }
    if ((piVar15[0x3308ff] != 0) && (piVar15[0x330900] == 0)) {
      piVar15[0x330900] = 1;
    }
    if ((piVar15[0x3749bf] != 0) && (piVar15[0x3749c0] == 0)) {
      piVar15[0x3749c0] = 1;
    }
    if ((piVar15[0x3b8a7f] != 0) && (piVar15[0x3b8a80] == 0)) {
      piVar15[0x3b8a80] = 1;
    }
    if ((piVar15[0x3fcb3f] != 0) && (piVar15[0x3fcb40] == 0)) {
      piVar15[0x3fcb40] = 1;
    }
    if ((piVar15[0x440bff] != 0) && (piVar15[0x440c00] == 0)) {
      piVar15[0x440c00] = 1;
    }
    if ((piVar15[0x484cbf] != 0) && (piVar15[0x484cc0] == 0)) {
      piVar15[0x484cc0] = 1;
    }
    if ((piVar15[0x4c8d7f] != 0) && (piVar15[0x4c8d80] == 0)) {
      piVar15[0x4c8d80] = 1;
    }
    if ((piVar15[0x50ce3f] != 0) && (piVar15[0x50ce40] == 0)) {
      piVar15[0x50ce40] = 1;
    }
    if ((piVar15[0x550eff] != 0) && (piVar15[0x550f00] == 0)) {
      piVar15[0x550f00] = 1;
    }
    if ((piVar15[0x594fbf] != 0) && (piVar15[0x594fc0] == 0)) {
      piVar15[0x594fc0] = 1;
    }
    if ((piVar15[0x5d907f] != 0) && (piVar15[0x5d9080] == 0)) {
      piVar15[0x5d9080] = 1;
    }
    if ((piVar15[0x61d13f] != 0) && (piVar15[0x61d140] == 0)) {
      piVar15[0x61d140] = 1;
    }
    if ((piVar15[0x6611ff] != 0) && (piVar15[0x661200] == 0)) {
      piVar15[0x661200] = 1;
    }
    if ((piVar15[0x6a52bf] != 0) && (piVar15[0x6a52c0] == 0)) {
      piVar15[0x6a52c0] = 1;
    }
    if ((piVar15[0x6e937f] != 0) && (piVar15[0x6e9380] == 0)) {
      piVar15[0x6e9380] = 1;
    }
    if ((piVar15[0x72d43f] != 0) && (piVar15[0x72d440] == 0)) {
      piVar15[0x72d440] = 1;
    }
    if ((piVar15[0x7714ff] != 0) && (piVar15[0x771500] == 0)) {
      piVar15[0x771500] = 1;
    }
    if ((piVar15[0x7b55bf] != 0) && (piVar15[0x7b55c0] == 0)) {
      piVar15[0x7b55c0] = 1;
    }
    if ((piVar15[0x7f967f] != 0) && (piVar15[0x7f9680] == 0)) {
      piVar15[0x7f9680] = 1;
    }
    if ((piVar15[0x83d73f] != 0) && (piVar15[0x83d740] == 0)) {
      piVar15[0x83d740] = 1;
    }
    uVar29 = DAT_183ebfaac;
    piVar15 = piVar15 + 0x881800;
  } while ((longlong)piVar15 < 0x144950ab4);
  if (((DAT_183ebfaac == 4) || ((int)DAT_183ebfaac < 2)) ||
     (DAT_18329cc24 = 1, 7 < (int)DAT_183ebfaac)) {
    DAT_18329cc24 = iVar32;
  }
  if (DAT_144cbfaa4 != 0) {
    DAT_18329cc24 = iVar13;
  }
  lVar24 = 0x192e8f66c;
  do {
    if (*(int *)(lVar24 + -0xc) != 0) {
      *(undefined8 *)(lVar24 + -4) = 0;
    }
    if (*(int *)(lVar24 + 0x8c) != 0) {
      *(undefined8 *)(lVar24 + 0x94) = 0;
    }
    if (*(int *)(lVar24 + 0x124) != 0) {
      *(undefined8 *)(lVar24 + 300) = 0;
    }
    if (*(int *)(lVar24 + 0x1bc) != 0) {
      *(undefined8 *)(lVar24 + 0x1c4) = 0;
    }
    lVar24 = lVar24 + 0x260;
  } while (lVar24 < 0x192e98e6c);
  DAT_183e93544 = 1;
  iVar36 = DAT_1ad04adc0;
  if (DAT_1ad04adc0 != 0) {
    if (((uVar29 - 2 & 0xfffffffa) == 0) && (uVar29 != 6)) {
      FUN_14012c480();
      FUN_140132b00();
      uVar29 = DAT_183ebfaac;
    }
    iVar36 = DAT_1ad04adc0;
    uVar9 = DAT_183f7a5fc;
    uVar3 = DAT_183f7a5b0;
    if (DAT_1ad04adc0 != 0) {
      DAT_183ebfcc4 = DAT_183ebfcc4 + 1;
      if (uVar29 == 7) {
        if (5 < DAT_183ebfcc4) {
          puVar16 = &DAT_151622454;
          _DAT_183f7ae14 = 0;
          do {
            puVar16[-0x5ea] = uVar9;
            *puVar16 = 0;
            puVar16[0x19] = 0;
            puVar16[0x32] = 0;
            puVar16[0x4b] = 0;
            puVar16[100] = 0;
            puVar16[0x7d] = 0;
            puVar16[0x96] = 0;
            puVar16 = puVar16 + 0xe0d;
          } while ((longlong)puVar16 < 0x1519a5854);
LAB_1401281ca:
          DAT_183ebfcc4 = 1;
        }
      }
      else if (((uVar29 == 3) && (DAT_183ebfcb0 == 1)) && (5 < DAT_183ebfcc4)) {
        puVar16 = &DAT_151620cec;
        DAT_19021f0c4 = 0x42c80000;
        DAT_19021f0cc = 1000;
        DAT_19021f0c0 = 100;
        DAT_19021f0dc = 0x42c80000;
        DAT_19021f0e4 = 1000;
        DAT_19021f0d8 = 100;
        DAT_19021f0f4 = 0x42c80000;
        DAT_19021f0fc = 1000;
        DAT_19021f0f0 = 100;
        do {
          puVar16[-0x10] = uVar3;
          *puVar16 = 0;
          puVar16[0x5da] = 0;
          puVar16[0x5f3] = 0;
          puVar16[0x60c] = 0;
          puVar16[0x625] = 0;
          puVar16[0x63e] = 0;
          puVar16[0x657] = 0;
          puVar16[0x670] = 0;
          puVar16 = puVar16 + 0xe0d;
        } while ((longlong)puVar16 < 0x1519a40ec);
        goto LAB_1401281ca;
      }
    }
  }
  DAT_183ebfccc = 1;
  DAT_183ebfcd4 = 0;
  if (uVar29 == 3) {
    DAT_183ebfcdc = 0x1c20;
    DAT_183ebfcd4 = 0x1c20;
  }
  else {
    if ((uVar29 == 2) || (uVar29 - 5 < 3)) {
      DAT_183ebfcd4 = 0x708;
    }
    if (uVar29 < 2) {
      DAT_183ebfcd4 = DAT_183ebfce0;
      DAT_183ebfccc = 2;
    }
  }
  DAT_183ebfcd8 = 0;
  DAT_183ebfce8 = DAT_183f7a60c;
  if ((uVar29 != 7) && (DAT_183ebfce8 = iVar13, uVar29 == 3)) {
    DAT_183ebfce8 = DAT_183f7a5bc;
  }
  if (DAT_144cbfaa4 == 0) {
    DAT_183f79de4 = 0xffffffff;
  }
  DAT_183f7a320 = 0;
  puVar16 = &DAT_183ebfdbc;
  DAT_183f7a570 = 0;
  _DAT_183f79df8 = 0;
  DAT_183f7c588 = 0xffffffff;
  DAT_183f79de8 = 0;
  DAT_1b4657c80 = 0;
  do {
    *(undefined8 *)(puVar16 + -3) = 0;
    *puVar16 = 0;
    if (DAT_183ebfcc8 == 0) {
      puVar16[2] = 0xffffffff;
    }
    puVar16[0x50] = 0;
    *(undefined1 *)(puVar16 + 0x67) = 0;
    puVar16[0x167] = 0;
    *(undefined1 *)(puVar16 + 0x17e) = 0;
    puVar16[0x27e] = 0;
    *(undefined1 *)(puVar16 + 0x295) = 0;
    puVar16[0x395] = 0;
    *(undefined1 *)(puVar16 + 0x3ac) = 0;
    puVar16[0x4ac] = 0;
    *(undefined1 *)(puVar16 + 0x4c3) = 0;
    puVar16[0x5c3] = 0;
    *(undefined1 *)(puVar16 + 0x5da) = 0;
    puVar16[0x6da] = 0;
    *(undefined1 *)(puVar16 + 0x6f1) = 0;
    puVar16[0x7f1] = 0;
    *(undefined1 *)(puVar16 + 0x808) = 0;
    puVar16[0x908] = 0;
    *(undefined1 *)(puVar16 + 0x91f) = 0;
    puVar16[0xa1f] = 0;
    *(undefined1 *)(puVar16 + 0xa36) = 0;
    puVar16[0xb36] = 0;
    *(undefined1 *)(puVar16 + 0xb4d) = 0;
    puVar16[0xc4d] = 0;
    *(undefined1 *)(puVar16 + 0xc64) = 0;
    puVar16[0xd64] = 0;
    *(undefined1 *)(puVar16 + 0xd7b) = 0;
    puVar16[0xe7b] = 0;
    *(undefined1 *)(puVar16 + 0xe92) = 0;
    puVar16[0xf92] = 0;
    *(undefined1 *)(puVar16 + 0xfa9) = 0;
    puVar16[0x10a9] = 0;
    *(undefined1 *)(puVar16 + 0x10c0) = 0;
    if (0 < (int)puVar16[0x12d7]) {
      puVar18 = puVar16 + 0x12d8;
      uVar37 = uVar33;
      do {
        *puVar18 = 0;
        puVar18 = puVar18 + 0xd;
        uVar29 = (int)uVar37 + 1;
        uVar37 = (ulonglong)uVar29;
      } while ((int)uVar29 < (int)puVar16[0x12d7]);
    }
    puVar16[3] = 0;
    fVar45 = DAT_1402781f0;
    puVar16 = puVar16 + 0x16f1;
  } while ((longlong)puVar16 < 0x183ee2454);
  if (DAT_183ebfcc8 == 0) {
    DAT_183ebfcf8 = s_Buy_Stuff_140274dc0[8];
    register0x00000001 = s_Buy_Stuff_140274dc0[9];
    DAT_183ebfcf0 = s_Buy_Stuff_140274dc0[0];
    DAT_183ebfcf0_1._0_1_ = s_Buy_Stuff_140274dc0[1];
    DAT_183ebfcf0_1._1_1_ = s_Buy_Stuff_140274dc0[2];
    DAT_183ebfcf0_1._2_1_ = s_Buy_Stuff_140274dc0[3];
    DAT_183ebfcf0_1._3_1_ = s_Buy_Stuff_140274dc0[4];
    DAT_183ebfcf0_1._4_1_ = s_Buy_Stuff_140274dc0[5];
    DAT_183ebfcf0_1._5_1_ = s_Buy_Stuff_140274dc0[6];
    DAT_183ebfcf0_1._6_1_ = s_Buy_Stuff_140274dc0[7];
    _DAT_183ebfcec = 10000;
  }
  piVar15 = &DAT_19021f0cc;
  uVar37 = uVar33;
  do {
    if (DAT_183ebfcc8 == 0) {
      piVar15[-2] = 0x42c80000;
      iVar21 = 1000;
      *piVar15 = 1000;
    }
    else {
      iVar21 = *piVar15;
    }
    iVar22 = 100;
    piVar15[-3] = 100;
    piVar15[1] = iVar21 / 10;
    piVar17 = &DAT_151620cec;
    piVar15[-1] = (int)((float)iVar21 * fVar45);
    do {
      if (piVar17[-2] == (int)uVar37) {
        iVar22 = iVar22 + *piVar17;
        piVar15[-3] = iVar22;
      }
      piVar17 = piVar17 + 0xe0d;
    } while ((longlong)piVar17 < 0x1519a40ec);
    uVar29 = (int)uVar37 + 1;
    uVar37 = (ulonglong)uVar29;
    piVar15 = piVar15 + 6;
  } while ((int)uVar29 < 6);
  _DAT_183f79f84 = 0;
  DAT_183f7aee8 = 0;
  _DAT_183f775e0 = 0;
  iVar21 = DAT_1a4d2dce4;
  if (iVar36 != 0) {
    iVar21 = DAT_183ebfcc8 + 1;
  }
  DAT_183ebfd34 = 0;
  _DAT_1a4d2dce0 = 0;
  _DAT_183e93524 = 0;
  DAT_183ebfcc8 = iVar21;
  if (iVar36 == 0) {
    DAT_183e53120 = 0;
  }
  else {
    FUN_1401063e0();
    if (DAT_1ad04adc0 != 0) {
      bVar11 = FUN_14023b1b0();
      DAT_183ebfd54 = (float)((double)bVar11 * _DAT_1402783c0);
      bVar11 = FUN_14023b1b0();
      DAT_183ebfd54 = (float)((double)(bVar11 + 0x40) * _DAT_1402783c0);
      bVar11 = FUN_14023b1b0();
      DAT_16b2a2ec0 = 0x244140;
      DAT_183ebfd58 = (float)((double)bVar11 * _DAT_140278408);
    }
  }
  fVar45 = DAT_183ebfd58;
  iVar36 = DAT_183ebfcc8;
  DAT_151e44920 = 0;
  puVar16 = &DAT_1b4287c80;
  do {
    *puVar16 = 0;
    puVar16 = puVar16 + 0x3d;
  } while ((longlong)puVar16 < 0x1b4657c80);
  puVar16 = &DAT_1601172a0;
  do {
    *puVar16 = 0;
    uVar29 = DAT_183ebfaac;
    puVar16 = puVar16 + 0xca;
    uVar37 = uVar33;
  } while ((longlong)puVar16 < 0x1601e12a0);
  do {
    lVar24 = uVar37 * 0x3834;
    if ((&DAT_151623978)[uVar37 * 0xe0d] != 0) {
      (&DAT_151620c60)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_151620d90)[uVar37 * 0xe0d] = 0;
    (&DAT_151620cc8)[uVar37 * 0xe0d] = 0;
    (&DAT_151620cf4)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)((longlong)&DAT_151620e14 + lVar24) = 0;
    (&DAT_151620d94)[uVar37 * 0xe0d] = 1;
    (&DAT_151620cfc)[uVar37 * 0xe0d] = 0xffffffff;
    if (uVar29 == 4) {
      if (iVar36 == 0) {
        (&DAT_151620cec)[uVar37 * 0xe0d] = 0;
      }
    }
    else if (uVar29 == 0) {
      (&DAT_151620ce4)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_151620ca8)[uVar37 * 0xe0d] = 0;
    if (((uVar29 == 4) || ((int)uVar29 < 2)) || (iVar21 = 2, 7 < (int)uVar29)) {
      iVar21 = iVar13;
    }
    (&DAT_151620dc4)[uVar37 * 0xe0d] = iVar21;
    (&DAT_151620dd0)[uVar37 * 0xe0d] = 0xffffffff;
    *(undefined8 *)(&DAT_151620db8 + uVar37 * 0xe0d) = 0;
    (&DAT_151620d20)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)(&DAT_151620cd4 + uVar37 * 0xe0d) = 0;
    (&DAT_187bde860)[uVar37 * 0x8085] = 1;
    (&DAT_151620cdc)[uVar37 * 0xe0d] = 0;
    (&DAT_1516241a8)[uVar37 * 0xe0d] = 0xffffffff;
    if ((&DAT_1516271ac)[uVar37 * 0xe0d] != 0) {
      (&DAT_151624494)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_1516245c4)[uVar37 * 0xe0d] = 0;
    (&DAT_1516244fc)[uVar37 * 0xe0d] = 0;
    (&DAT_151624528)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)((longlong)&DAT_151624648 + lVar24) = 0;
    (&DAT_1516245c8)[uVar37 * 0xe0d] = 1;
    (&DAT_151624530)[uVar37 * 0xe0d] = 0xffffffff;
    if (uVar29 == 4) {
      if (iVar36 == 0) {
        (&DAT_151624520)[uVar37 * 0xe0d] = 0;
      }
    }
    else if (uVar29 == 0) {
      (&DAT_151624518)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_1516244dc)[uVar37 * 0xe0d] = 0;
    if (((uVar29 == 4) || ((int)uVar29 < 2)) || (iVar21 = 2, 7 < (int)uVar29)) {
      iVar21 = iVar32;
    }
    (&DAT_1516245f8)[uVar37 * 0xe0d] = iVar21;
    (&DAT_151624604)[uVar37 * 0xe0d] = 0xffffffff;
    *(undefined8 *)(&DAT_1516245ec + uVar37 * 0xe0d) = 0;
    (&DAT_151624554)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)(&DAT_151624508 + uVar37 * 0xe0d) = 0;
    (&DAT_151624510)[uVar37 * 0xe0d] = 0;
    (&DAT_1516279dc)[uVar37 * 0xe0d] = 0xffffffff;
    (&DAT_187bfea74)[uVar37 * 0x8085] = 1;
    if ((&DAT_15162a9e0)[uVar37 * 0xe0d] != 0) {
      (&DAT_151627cc8)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_151627df8)[uVar37 * 0xe0d] = 0;
    (&DAT_151627d30)[uVar37 * 0xe0d] = 0;
    (&DAT_151627d5c)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)((longlong)&DAT_151627e7c + lVar24) = 0;
    (&DAT_151627dfc)[uVar37 * 0xe0d] = 1;
    (&DAT_151627d64)[uVar37 * 0xe0d] = 0xffffffff;
    if (uVar29 == 4) {
      if (iVar36 == 0) {
        (&DAT_151627d54)[uVar37 * 0xe0d] = 0;
      }
    }
    else if (uVar29 == 0) {
      (&DAT_151627d4c)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_151627d10)[uVar37 * 0xe0d] = 0;
    if (((uVar29 == 4) || ((int)uVar29 < 2)) || (iVar21 = 2, 7 < (int)uVar29)) {
      iVar21 = iVar32;
    }
    (&DAT_151627e2c)[uVar37 * 0xe0d] = iVar21;
    (&DAT_151627e38)[uVar37 * 0xe0d] = 0xffffffff;
    *(undefined8 *)((longlong)&DAT_151627e20 + lVar24) = 0;
    (&DAT_151627d88)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)((longlong)&DAT_151627d3c + lVar24) = 0;
    (&DAT_151627d44)[uVar37 * 0xe0d] = 0;
    (&DAT_15162b210)[uVar37 * 0xe0d] = 0xffffffff;
    (&DAT_187c1ec88)[uVar37 * 0x8085] = 1;
    if ((&DAT_15162e214)[uVar37 * 0xe0d] != 0) {
      (&DAT_15162b4fc)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_15162b62c)[uVar37 * 0xe0d] = 0;
    (&DAT_15162b564)[uVar37 * 0xe0d] = 0;
    (&DAT_15162b590)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)((longlong)&DAT_15162b6b0 + lVar24) = 0;
    (&DAT_15162b630)[uVar37 * 0xe0d] = 1;
    (&DAT_15162b598)[uVar37 * 0xe0d] = 0xffffffff;
    if (uVar29 == 4) {
      if (iVar36 == 0) {
        (&DAT_15162b588)[uVar37 * 0xe0d] = 0;
      }
    }
    else if (uVar29 == 0) {
      (&DAT_15162b580)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_15162b544)[uVar37 * 0xe0d] = 0;
    if (((uVar29 == 4) || ((int)uVar29 < 2)) || (iVar21 = 2, 7 < (int)uVar29)) {
      iVar21 = iVar32;
    }
    (&DAT_15162b660)[uVar37 * 0xe0d] = iVar21;
    (&DAT_15162b66c)[uVar37 * 0xe0d] = 0xffffffff;
    *(undefined8 *)((longlong)&DAT_15162b654 + lVar24) = 0;
    (&DAT_15162b5bc)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)((longlong)&DAT_15162b570 + lVar24) = 0;
    (&DAT_15162b578)[uVar37 * 0xe0d] = 0;
    (&DAT_15162ea44)[uVar37 * 0xe0d] = 0xffffffff;
    (&DAT_187c3ee9c)[uVar37 * 0x8085] = 1;
    if ((&DAT_151631a48)[uVar37 * 0xe0d] != 0) {
      (&DAT_15162ed30)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_15162ee60)[uVar37 * 0xe0d] = 0;
    (&DAT_15162ed98)[uVar37 * 0xe0d] = 0;
    (&DAT_15162edc4)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)((longlong)&DAT_15162eee4 + lVar24) = 0;
    (&DAT_15162ee64)[uVar37 * 0xe0d] = 1;
    (&DAT_15162edcc)[uVar37 * 0xe0d] = 0xffffffff;
    if (uVar29 == 4) {
      if (iVar36 == 0) {
        (&DAT_15162edbc)[uVar37 * 0xe0d] = 0;
      }
    }
    else if (uVar29 == 0) {
      (&DAT_15162edb4)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_15162ed78)[uVar37 * 0xe0d] = 0;
    if (((uVar29 == 4) || ((int)uVar29 < 2)) || (iVar21 = 2, 7 < (int)uVar29)) {
      iVar21 = iVar32;
    }
    (&DAT_15162ee94)[uVar37 * 0xe0d] = iVar21;
    (&DAT_15162eea0)[uVar37 * 0xe0d] = 0xffffffff;
    *(undefined8 *)((longlong)&DAT_15162ee88 + lVar24) = 0;
    (&DAT_15162edf0)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)((longlong)&DAT_15162eda4 + lVar24) = 0;
    (&DAT_15162edac)[uVar37 * 0xe0d] = 0;
    (&DAT_151632278)[uVar37 * 0xe0d] = 0xffffffff;
    (&DAT_187c5f0b0)[uVar37 * 0x8085] = 1;
    if ((&DAT_15163527c)[uVar37 * 0xe0d] != 0) {
      (&DAT_151632564)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_151632694)[uVar37 * 0xe0d] = 0;
    (&DAT_1516325cc)[uVar37 * 0xe0d] = 0;
    (&DAT_1516325f8)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)((longlong)&DAT_151632718 + lVar24) = 0;
    (&DAT_151632698)[uVar37 * 0xe0d] = 1;
    (&DAT_151632600)[uVar37 * 0xe0d] = 0xffffffff;
    if (uVar29 == 4) {
      if (iVar36 == 0) {
        (&DAT_1516325f0)[uVar37 * 0xe0d] = 0;
      }
    }
    else if (uVar29 == 0) {
      (&DAT_1516325e8)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_1516325ac)[uVar37 * 0xe0d] = 0;
    if (((uVar29 == 4) || ((int)uVar29 < 2)) || (iVar21 = 2, 7 < (int)uVar29)) {
      iVar21 = iVar32;
    }
    (&DAT_1516326c8)[uVar37 * 0xe0d] = iVar21;
    (&DAT_1516326d4)[uVar37 * 0xe0d] = 0xffffffff;
    *(undefined8 *)((longlong)&DAT_1516326bc + lVar24) = 0;
    (&DAT_151632624)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)((longlong)&DAT_1516325d8 + lVar24) = 0;
    (&DAT_1516325e0)[uVar37 * 0xe0d] = 0;
    (&DAT_151635aac)[uVar37 * 0xe0d] = 0xffffffff;
    (&DAT_187c7f2c4)[uVar37 * 0x8085] = 1;
    if ((&DAT_151638ab0)[uVar37 * 0xe0d] != 0) {
      (&DAT_151635d98)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_151635ec8)[uVar37 * 0xe0d] = 0;
    (&DAT_151635e00)[uVar37 * 0xe0d] = 0;
    (&DAT_151635e2c)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)((longlong)&DAT_151635f4c + lVar24) = 0;
    (&DAT_151635ecc)[uVar37 * 0xe0d] = 1;
    (&DAT_151635e34)[uVar37 * 0xe0d] = 0xffffffff;
    if (uVar29 == 4) {
      if (iVar36 == 0) {
        (&DAT_151635e24)[uVar37 * 0xe0d] = 0;
      }
    }
    else if (uVar29 == 0) {
      (&DAT_151635e1c)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_151635de0)[uVar37 * 0xe0d] = 0;
    if (((uVar29 == 4) || ((int)uVar29 < 2)) || (iVar21 = 2, 7 < (int)uVar29)) {
      iVar21 = iVar32;
    }
    (&DAT_151635efc)[uVar37 * 0xe0d] = iVar21;
    (&DAT_151635f08)[uVar37 * 0xe0d] = 0xffffffff;
    *(undefined8 *)((longlong)&DAT_151635ef0 + lVar24) = 0;
    (&DAT_151635e58)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)((longlong)&DAT_151635e0c + lVar24) = 0;
    (&DAT_151635e14)[uVar37 * 0xe0d] = 0;
    (&DAT_1516392e0)[uVar37 * 0xe0d] = 0xffffffff;
    (&DAT_187c9f4d8)[uVar37 * 0x8085] = 1;
    if ((&DAT_15163c2e4)[uVar37 * 0xe0d] != 0) {
      (&DAT_1516395cc)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_1516396fc)[uVar37 * 0xe0d] = 0;
    (&DAT_151639634)[uVar37 * 0xe0d] = 0;
    (&DAT_151639660)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)((longlong)&DAT_151639780 + lVar24) = 0;
    (&DAT_151639700)[uVar37 * 0xe0d] = 1;
    (&DAT_151639668)[uVar37 * 0xe0d] = 0xffffffff;
    if (uVar29 == 4) {
      if (iVar36 == 0) {
        (&DAT_151639658)[uVar37 * 0xe0d] = 0;
      }
    }
    else if (uVar29 == 0) {
      (&DAT_151639650)[uVar37 * 0xe0d] = 0;
    }
    (&DAT_151639614)[uVar37 * 0xe0d] = 0;
    if (((uVar29 == 4) || ((int)uVar29 < 2)) || (iVar21 = 2, 7 < (int)uVar29)) {
      iVar21 = iVar32;
    }
    (&DAT_151639730)[uVar37 * 0xe0d] = iVar21;
    uVar34 = uVar37 + 8;
    (&DAT_15163973c)[uVar37 * 0xe0d] = 0xffffffff;
    *(undefined8 *)((longlong)&DAT_151639724 + lVar24) = 0;
    (&DAT_15163968c)[uVar37 * 0xe0d] = 0;
    *(undefined8 *)((longlong)&DAT_151639640 + lVar24) = 0;
    (&DAT_151639648)[uVar37 * 0xe0d] = 0;
    (&DAT_15163cb14)[uVar37 * 0xe0d] = 0xffffffff;
    (&DAT_187cbf6ec)[uVar37 * 0x8085] = 1;
    uVar37 = uVar34;
  } while ((longlong)uVar34 < 0x100);
  puVar16 = &DAT_1449816e0;
  do {
    *puVar16 = 0;
    puVar16 = puVar16 + 0x2f;
  } while ((longlong)puVar16 < 0x144af96e0);
  puVar16 = &DAT_18329e308;
  do {
    *puVar16 = 0;
    puVar16 = puVar16 + 0x1bfe;
  } while ((longlong)puVar16 < 0x18399db08);
  puVar16 = &DAT_15f2de364;
  do {
    puVar16[-0x1459] = 0;
    *puVar16 = 0xffffffff;
    puVar16 = puVar16 + 0x145a;
  } while ((longlong)puVar16 < 0x15fd0b364);
  puVar16 = &DAT_182bbb180;
  do {
    *puVar16 = 0;
    puVar16 = puVar16 + 0x6e0;
  } while ((longlong)puVar16 < 0x18329b180);
  puVar16 = &DAT_182a7d580;
  do {
    *puVar16 = 0;
    puVar16 = puVar16 + 3;
  } while ((longlong)puVar16 < 0x182a7e180);
  DAT_1a796f380 = 0;
  DAT_1a796f3d4 = 0;
  _DAT_1a796f428 = 0;
  _DAT_1a796f47c = 0;
  _DAT_1a796f4d0 = 0;
  _DAT_1a796f524 = 0;
  _DAT_1a796f578 = 0;
  _DAT_1a796f5cc = 0;
  _DAT_1a796f620 = 0;
  _DAT_1a796f674 = 0;
  _DAT_1a796f6c8 = 0;
  _DAT_1a796f71c = 0;
  _DAT_1a796f770 = 0;
  _DAT_1a796f7c4 = 0;
  _DAT_1a796f818 = 0;
  _DAT_1a796f86c = 0;
  _DAT_1a796f8c0 = 0;
  _DAT_1a796f914 = 0;
  _DAT_1a796f968 = 0;
  _DAT_1a796f9bc = 0;
  _DAT_1a796fa10 = 0;
  _DAT_1a796fa64 = 0;
  _DAT_1a796fab8 = 0;
  _DAT_1a796fb0c = 0;
  _DAT_1a796fb60 = 0;
  _DAT_1a796fbb4 = 0;
  _DAT_1a796fc08 = 0;
  _DAT_1a796fc5c = 0;
  _DAT_1a796fcb0 = 0;
  _DAT_1a796fd04 = 0;
  _DAT_1a796fd58 = 0;
  _DAT_1a796fdac = 0;
  _DAT_1a796fe00 = 0;
  _DAT_1a796fe54 = 0;
  _DAT_1a796fea8 = 0;
  _DAT_1a796fefc = 0;
  _DAT_1a796ff50 = 0;
  _DAT_1a796ffa4 = 0;
  _DAT_1a796fff8 = 0;
  _DAT_1a797004c = 0;
  _DAT_1a79700a0 = 0;
  _DAT_1a79700f4 = 0;
  _DAT_1a7970148 = 0;
  _DAT_1a797019c = 0;
  _DAT_1a79701f0 = 0;
  _DAT_1a7970244 = 0;
  _DAT_1a7970298 = 0;
  _DAT_1a79702ec = 0;
  _DAT_1a7970340 = 0;
  _DAT_1a7970394 = 0;
  _DAT_1a79703e8 = 0;
  _DAT_1a797043c = 0;
  _DAT_1a7970490 = 0;
  _DAT_1a79704e4 = 0;
  _DAT_1a7970538 = 0;
  _DAT_1a797058c = 0;
  _DAT_1a79705e0 = 0;
  _DAT_1a7970634 = 0;
  _DAT_1a7970688 = 0;
  _DAT_1a79706dc = 0;
  _DAT_1a7970730 = 0;
  _DAT_1a7970784 = 0;
  _DAT_1a79707d8 = 0;
  _DAT_1a797082c = 0;
  _DAT_1a7970880 = 0;
  _DAT_1a79708d4 = 0;
  _DAT_1a7970928 = 0;
  _DAT_1a797097c = 0;
  _DAT_1a79709d0 = 0;
  _DAT_1a7970a24 = 0;
  _DAT_1a7970a78 = 0;
  _DAT_1a7970acc = 0;
  _DAT_1a7970b20 = 0;
  _DAT_1a7970b74 = 0;
  _DAT_1a7970bc8 = 0;
  _DAT_1a7970c1c = 0;
  _DAT_1a7970c70 = 0;
  _DAT_1a7970cc4 = 0;
  _DAT_1a7970d18 = 0;
  _DAT_1a7970d6c = 0;
  _DAT_1a7970dc0 = 0;
  _DAT_1a7970e14 = 0;
  puVar16 = &DAT_181feebc0;
  _DAT_1a7970e68 = 0;
  puVar18 = &DAT_15fd16268;
  _DAT_1a7970ebc = 0;
  _DAT_1a7970f10 = 0;
  _DAT_1a7970f64 = 0;
  _DAT_1a7970fb8 = 0;
  _DAT_1a797100c = 0;
  _DAT_1a7971060 = 0;
  _DAT_1a79710b4 = 0;
  _DAT_1a7971108 = 0;
  _DAT_1a797115c = 0;
  _DAT_1a79711b0 = 0;
  _DAT_1a7971204 = 0;
  _DAT_1a7971258 = 0;
  _DAT_1a79712ac = 0;
  _DAT_1a7971300 = 0;
  _DAT_1a7971354 = 0;
  _DAT_1a79713a8 = 0;
  _DAT_1a79713fc = 0;
  _DAT_1a7971450 = 0;
  _DAT_1a79714a4 = 0;
  _DAT_1a79714f8 = 0;
  _DAT_1a797154c = 0;
  _DAT_1a79715a0 = 0;
  _DAT_1a79715f4 = 0;
  _DAT_1a7971648 = 0;
  _DAT_1a797169c = 0;
  _DAT_1a79716f0 = 0;
  _DAT_1a7971744 = 0;
  _DAT_1a7971798 = 0;
  _DAT_1a79717ec = 0;
  _DAT_1a7971840 = 0;
  _DAT_1a7971894 = 0;
  _DAT_1a79718e8 = 0;
  _DAT_1a797193c = 0;
  _DAT_1a7971990 = 0;
  _DAT_1a79719e4 = 0;
  _DAT_1a7971a38 = 0;
  _DAT_1a7971a8c = 0;
  _DAT_1a7971ae0 = 0;
  _DAT_1a7971b34 = 0;
  _DAT_1a7971b88 = 0;
  _DAT_1a7971bdc = 0;
  _DAT_1a7971c30 = 0;
  _DAT_1a7971c84 = 0;
  _DAT_1a7971cd8 = 0;
  _DAT_1a7971d2c = 0;
  do {
    *puVar18 = 0xffffffff;
    puVar18 = puVar18 + 0x17f;
    *puVar16 = 0;
    puVar16 = puVar16 + 0xa0a;
  } while ((longlong)puVar18 < 0x15fe95268);
  puVar16 = &DAT_1816deb80;
  do {
    *puVar16 = 0;
    puVar16 = puVar16 + 0x122;
  } while ((longlong)puVar16 < 0x181feeb80);
  DAT_1816deb80 = 1;
  puVar16 = &DAT_17ce4b61c;
  DAT_1a4bf08e0 = 0;
  do {
    puVar16[-9] = 0;
    *puVar16 = 0;
    puVar16[9] = 0;
    puVar16[0x12] = 0;
    puVar16[0x1b] = 0;
    puVar16[0x24] = 0;
    puVar16[0x2d] = 0;
    puVar16[0x36] = 0;
    puVar16[0x3f] = 0;
    puVar16[0x48] = 0;
    puVar16[0x51] = 0;
    puVar16[0x5a] = 0;
    puVar16[99] = 0;
    puVar16[0x6c] = 0;
    puVar16[0x75] = 0;
    puVar16[0x7e] = 0;
    puVar16[0x87] = 0;
    puVar16[0x90] = 0;
    puVar16[0x99] = 0;
    puVar16[0xa2] = 0;
    puVar16[0xab] = 0;
    puVar16[0xb4] = 0;
    puVar16[0xbd] = 0;
    puVar16[0xc6] = 0;
    puVar16[0xcf] = 0;
    puVar16[0xd8] = 0;
    puVar16[0xe1] = 0;
    puVar16[0xea] = 0;
    puVar16[0xf3] = 0;
    puVar16[0xfc] = 0;
    puVar16[0x105] = 0;
    puVar16[0x10e] = 0;
    puVar16[0x117] = 0;
    puVar16[0x120] = 0;
    puVar16[0x129] = 0;
    puVar16[0x132] = 0;
    puVar16[0x13b] = 0;
    puVar16[0x144] = 0;
    puVar16[0x14d] = 0;
    puVar16[0x156] = 0;
    puVar16[0x15f] = 0;
    puVar16[0x168] = 0;
    puVar16[0x171] = 0;
    puVar16[0x17a] = 0;
    puVar16[0x183] = 0;
    puVar16[0x18c] = 0;
    puVar16[0x195] = 0;
    puVar16[0x19e] = 0;
    puVar16[0x1a7] = 0;
    puVar16[0x1b0] = 0;
    puVar16[0x1b9] = 0;
    puVar16[0x1c2] = 0;
    puVar16[0x1cb] = 0;
    puVar16[0x1d4] = 0;
    puVar16[0x1dd] = 0;
    puVar16[0x1e6] = 0;
    puVar16[0x1ef] = 0;
    puVar16[0x1f8] = 0;
    puVar16[0x201] = 0;
    puVar16[0x20a] = 0;
    puVar16[0x213] = 0;
    puVar16[0x21c] = 0;
    puVar16[0x225] = 0;
    puVar16[0x22e] = 0;
    puVar16 = puVar16 + 0x240;
  } while ((longlong)puVar16 < 0x17ce6f61c);
  DAT_15fe95260 = 0;
  FUN_1401fcd30(&DAT_15fe95280,0,0x1000);
  FUN_1401fcd30(&DAT_18399dae0,0,0x400);
  FUN_1401fcd30(&DAT_18329b1e0,0,0x1000);
  puVar16 = &DAT_16b2aaf20;
  do {
    *puVar16 = 0;
    puVar16 = puVar16 + 0x875d;
  } while ((longlong)puVar16 < 0x16d482320);
  DAT_16b2aaf1c = 0;
  lVar24 = 0x1857bd744;
  DAT_1a8e379d4 = 0;
  DAT_1a7971d80 = 0;
  DAT_1a724e700 = 0;
  DAT_1a724e720 = 0;
  DAT_1a729e724 = 0;
  _DAT_1a72fe728 = 0;
  _DAT_1a74fe730 = 0;
  DAT_1a70ae564 = 0;
  DAT_1a70ae560 = 0;
  DAT_189c1dc64 = 0;
  DAT_189c1dc60 = 0;
  do {
    *(undefined8 *)(lVar24 + -4) = 0;
    lVar24 = lVar24 + 0x9c;
  } while (lVar24 < 0x185a2d744);
  puVar16 = &DAT_1a8e3da7c;
  lVar24 = 0x101;
  puVar35 = (undefined8 *)&DAT_1a8e477e0;
  do {
    puVar16[-4] = 0;
    puVar18 = puVar16 + 0x7f57;
    *puVar16 = 0;
    lVar31 = 0x400;
    puVar16[10] = 0;
    puVar16[0x14] = 0;
    puVar16[0x1e] = 0;
    puVar16[0x28] = 0;
    puVar16[0x32] = 0;
    puVar16[0x3c] = 0;
    puVar16[0x46] = 0;
    puVar16[-2] = 0xffffffff;
    do {
      *puVar18 = 0;
      puVar18 = puVar18 + 4;
      lVar31 = lVar31 + -1;
    } while (lVar31 != 0);
    *(undefined8 *)(puVar16 + 0x8f57) = 0;
    puVar18 = puVar16 + 0x451;
    puVar16[0x8f59] = 0;
    lVar31 = 0x100;
    puVar16[0xb75a] = 0;
    puVar16[0xb75c] = 0;
    do {
      puVar18[2] = 0;
      *puVar18 = 0;
      puVar18 = puVar18 + 3;
      lVar31 = lVar31 + -1;
    } while (lVar31 != 0);
    puVar18 = puVar16 + 0x52;
    lVar31 = 0x200;
    do {
      *puVar18 = 0;
      puVar18 = puVar18 + 2;
      lVar31 = lVar31 + -1;
    } while (lVar31 != 0);
    puVar19 = (undefined8 *)(puVar16 + 0x752);
    lVar31 = 0x400;
    do {
      *puVar19 = 0;
      *(undefined4 *)((longlong)puVar19 + -4) = 0;
      puVar19[1] = 0;
      puVar19 = (undefined8 *)((longlong)puVar19 + 0x14);
      lVar31 = lVar31 + -1;
    } while (lVar31 != 0);
    puVar18 = puVar16 + 0x1b53;
    lVar31 = 0x400;
    do {
      *(undefined8 *)(puVar18 + -1) = 0;
      puVar18[-2] = 0;
      puVar18 = puVar18 + 3;
      lVar31 = lVar31 + -1;
    } while (lVar31 != 0);
    lVar31 = 0x100;
    puVar19 = puVar35;
    do {
      puVar19[-4] = 0;
      puVar19[-3] = 0;
      puVar19[-2] = 0;
      puVar19[-1] = 0;
      *puVar19 = 0;
      puVar19[1] = 0;
      puVar19[2] = 0;
      puVar19[3] = 0;
      puVar19[4] = 0;
      puVar19[5] = 0;
      puVar19[6] = 0;
      puVar19[7] = 0;
      puVar19[8] = 0;
      puVar19[9] = 0;
      puVar19[10] = 0;
      puVar19[0xb] = 0;
      puVar19[0xc] = 0;
      puVar19[0xd] = 0;
      puVar19[0xe] = 0;
      puVar19[0xf] = 0;
      puVar19[0x10] = 0;
      puVar19[0x11] = 0;
      puVar19[0x12] = 0;
      puVar19[0x13] = 0;
      puVar19[0x14] = 0;
      puVar19[0x15] = 0;
      puVar19[0x16] = 0;
      puVar19[0x17] = 0;
      puVar19[0x18] = 0;
      puVar19[0x19] = 0;
      puVar19[0x1a] = 0;
      puVar19[0x1b] = 0;
      puVar19[0x1c] = 0;
      puVar19[0x1d] = 0;
      puVar19[0x1e] = 0;
      puVar19[0x1f] = 0;
      puVar19[0x20] = 0;
      puVar19[0x21] = 0;
      puVar19[0x22] = 0;
      puVar19[0x23] = 0;
      puVar19[0x24] = 0;
      puVar19[0x25] = 0;
      puVar19[0x26] = 0;
      puVar19[0x27] = 0;
      lVar31 = lVar31 + -1;
      puVar19 = puVar19 + 0x2c;
    } while (lVar31 != 0);
    puVar35 = puVar35 + 0x5c3c;
    puVar16 = puVar16 + 0xb878;
    lVar24 = lVar24 + -1;
  } while (lVar24 != 0);
  FUN_1401fcd30(&DAT_160fc4960,0,0x4dc0000);
  FUN_1401fcd30(&DAT_1abc2d840,0,0x2e1e0);
  puVar16 = &DAT_1a4d2dd14;
  _DAT_1abc2d894 = 0xffffffff;
  do {
    *puVar16 = 0;
    puVar16 = puVar16 + 4;
  } while ((longlong)puVar16 < 0x1a4d31d14);
  _DAT_1a4d31d14 = 0;
  _DAT_1a4d3bd1c = 0;
  DAT_144cbfaac = 0;
  if (DAT_144cbfaa4 == 0) {
    _DAT_144cbfab0 = 0;
  }
  DAT_189c1dc80 = 0;
  DAT_189c7bec4 = 0;
  DAT_189cda108 = 0;
  DAT_189d3834c = 0;
  _DAT_189d96590 = 0;
  _DAT_189df47d4 = 0;
  _DAT_189e52a18 = 0;
  _DAT_189eb0c5c = 0;
  dVar41 = (double)FUN_1402431f0((double)DAT_183ebfd54);
  dVar42 = (double)FUN_14023fc70((double)fVar45);
  DAT_18417de78 = (float)(dVar42 * dVar41);
  DAT_18417de7c = FUN_1402401f0();
  dVar42 = (double)FUN_1402431f0((double)fVar45);
  _DAT_18417de84 = 0;
  DAT_18417de80 = (float)(dVar42 * dVar41);
  (*DAT_144980d30)();
  (*DAT_144980d28)(0x4100);
  FUN_14007bb00();
  local_558 = fVar4;
  local_560 = fVar4;
  local_568 = fVar4;
  local_570 = fVar4;
  local_578 = 1;
  FUN_14006d930("Generating level...",uVar12,fVar6,fVar5);
  SDL_GL_SwapWindow(DAT_160fc47c8);
  pcVar23 = &DAT_175fd1404;
  do {
    cVar1 = *pcVar23;
    cVar2 = pcVar23[0xdeee6ac];
    if (cVar1 != cVar2) break;
    pcVar23 = pcVar23 + 1;
  } while (cVar2 != '\0');
  if (cVar1 == cVar2) {
    if (DAT_175fd1400 != 0) {
      puVar38 = &DAT_154164248;
      uVar37 = uVar33;
      uVar34 = uVar33;
      do {
        if (puVar38[-0xc02] != 0) {
          lVar24 = 0x200;
          puVar25 = puVar38;
          do {
            if ((*puVar25 & 0xe0000000) == 0x80000000) {
              *puVar25 = *puVar25 & 0xff00ffff;
            }
            puVar25[0xa00] = 0;
            puVar25 = puVar25 + 1;
            lVar24 = lVar24 + -1;
            uVar28 = uVar33;
          } while (lVar24 != 0);
          do {
            if (uVar34 < 0x6c413b9) {
              uVar29 = (&DAT_154167248)[uVar28 + uVar37];
              (&DAT_154167248)[uVar28 + uVar37] = 0xffffffff;
              if (uVar29 < 0x400) {
                (&DAT_151e46224)[(longlong)(int)uVar29 * 0x2309] = 0xffffffff;
                FUN_1401941f0(0,uVar29);
                FUN_1401941f0(3,uVar29);
                FUN_1401941f0(5,uVar29);
              }
            }
            uVar28 = uVar28 + 1;
          } while ((longlong)uVar28 < 4);
        }
        uVar34 = uVar34 + 0x6c48;
        puVar38 = puVar38 + 0x1b12;
        uVar37 = uVar37 + 0x1b12;
      } while ((longlong)puVar38 < 0x15adac248);
      goto LAB_1401296b1;
    }
  }
  else {
    DAT_175fd1400 = 0;
  }
  FUN_140056980();
  uVar37 = uVar33;
  do {
    pcVar23 = &DAT_183ebfab0 + uVar37;
    (&DAT_175fd1404)[uVar37] = *pcVar23;
    uVar37 = uVar37 + 1;
  } while (*pcVar23 != '\0');
  FUN_140124320();
LAB_1401296b1:
  piVar15 = &DAT_151620c60;
  FUN_14014c390();
  (*DAT_144980d30)();
  (*DAT_144980d28)(0x4100);
  FUN_14007bb00();
  fVar45 = DAT_1402787d4;
  local_558 = fVar4;
  local_560 = fVar4;
  local_568 = fVar4;
  local_570 = fVar4;
  local_578 = 1;
  FUN_14006d930("Generating game...",uVar12,DAT_1402787d4,fVar5);
  SDL_GL_SwapWindow();
  _Var20 = _time64((__time64_t *)0x0);
  FUN_14023b1dc(_Var20);
  fVar6 = DAT_1402787bc;
  if (DAT_183ebfcc8 == 1) {
    DAT_183f7c360 = (float)DAT_16b2a222c;
    DAT_183f7c364 = (float)DAT_16b2a2230;
    DAT_183f7c368 = (float)DAT_16b2a2234;
  }
  if (DAT_144cbfaa4 == 0) {
    DAT_183f7c37c = DAT_16b2a2ec8 + fVar45;
    DAT_183f7c380 = DAT_16b2a2ecc + fVar5;
    DAT_183f7c38c = 0;
    DAT_183f7c384 = DAT_16b2a2ed0;
    DAT_183f7c388 = DAT_140278c40;
  }
  if (DAT_1ad04adc0 != 0) {
    if (DAT_183ebfaac == 1) {
      local_118._0_8_ = CONCAT44(_UNK_140278d34,_DAT_140278d30);
      local_118._8_8_ = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
      local_548 = 138.0;
      fStack_544 = 26.0;
      local_540 = 138.0;
      DAT_151620c60 = 1;
      DAT_151620ce4 = 0;
      local_f8 = 0x3f800000;
      local_108._0_8_ = local_118._0_8_;
      local_108._8_8_ = local_118._8_8_;
      FUN_14007b2a0(local_118,local_118 + 0xc,DAT_140278654);
      DAT_151620cfc = FUN_140053840(&local_548,local_118,0);
      local_118._8_8_ = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
      local_118._0_8_ = CONCAT44(_UNK_140278d34,_DAT_140278d30);
      local_108._8_8_ = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
      local_108._0_8_ = CONCAT44(_UNK_140278d34,_DAT_140278d30);
      _DAT_151620db8 = 0;
      local_f8 = 0x3f800000;
      (&DAT_18329e3a0)[(longlong)DAT_151620cfc * 0x1bfe] = 0x40490fdb;
      uVar12 = FUN_140054130(3,&local_548,0,local_118);
      FUN_1400e35d0(uVar12,0xffffffff,DAT_151620cfc,0);
      uVar12 = FUN_140054130(4,&local_548,0,local_118);
      FUN_1400e35d0(uVar12,0xffffffff,DAT_151620cfc,1);
      uVar12 = FUN_140054130(4,&local_548,0,local_118);
      FUN_1400e35d0(uVar12,0xffffffff,DAT_151620cfc,3);
      uVar12 = FUN_140054130(4,&local_548,0,local_118);
      FUN_1400e35d0(uVar12,0xffffffff,DAT_151620cfc,3);
      local_118._4_4_ = _UNK_140278d34;
      local_118._0_4_ = _DAT_140278d30;
      local_118._8_4_ = _UNK_140278d38;
      local_118._12_4_ = _UNK_140278d3c;
      local_548 = DAT_140278874;
      local_f8 = 0x3f800000;
      local_578 = 1;
      local_108 = local_118;
      FUN_14005bca0(0,&local_548,0,local_118);
    }
    if ((DAT_1ad04adc0 != 0) && (DAT_183ebfaac == 4)) {
      if (0 < (int)DAT_16b2a2ee0) {
        puVar16 = &DAT_16b2a2ee4;
        uVar37 = uVar33;
        do {
          lVar24 = (longlong)(int)uVar37 * 0x40;
          local_578 = puVar16[1];
          uVar12 = FUN_14005bca0(*puVar16,&DAT_16b2a2ef4 + lVar24,0,&DAT_16b2a2f00 + lVar24);
          puVar16[2] = uVar12;
          puVar16 = puVar16 + 0x10;
          uVar29 = (int)uVar37 + 1;
          uVar37 = (ulonglong)uVar29;
        } while ((int)uVar29 < (int)DAT_16b2a2ee0);
      }
      puVar16 = &DAT_151624484;
      uVar37 = uVar33;
      do {
        if ((puVar16[-0xe09] != 0) && (puVar16[-3] != 0)) {
          local_548 = (float)puVar16[-2];
          fStack_544 = (float)puVar16[-1];
          local_540 = (float)*puVar16;
          local_118._4_4_ = _UNK_140278d34;
          local_118._0_4_ = _DAT_140278d30;
          local_118._8_4_ = _UNK_140278d38;
          local_118._12_4_ = _UNK_140278d3c;
          local_f8 = 0x3f800000;
          local_108 = local_118;
          FUN_14007b2a0(local_118,local_118 + 0xc,puVar16[1]);
          iVar13 = FUN_140053840(&local_548,local_118,uVar37);
          puVar16[-0xde2] = iVar13;
          if (iVar13 != -1) {
            (&DAT_18329e314)[(longlong)iVar13 * 0x1bfe] = puVar16[-0xdfa];
            (&DAT_18329e3a0)[(longlong)iVar13 * 0x1bfe] = puVar16[1];
            FUN_140117020(uVar37);
            iVar13 = puVar16[2];
            if ((iVar13 != -1) && (0 < (int)DAT_16b2a2ee0)) {
              puVar18 = &DAT_16b2a2eec;
              uVar34 = (ulonglong)DAT_16b2a2ee0;
              do {
                if (iVar13 == puVar18[1]) {
                  iVar36 = puVar16[-0xde2];
                  (&DAT_18329e330)[(longlong)iVar36 * 0x1bfe] = *puVar18;
                  (&DAT_18329e334)[(longlong)iVar36 * 0x1bfe] = puVar16[3];
                }
                puVar18 = puVar18 + 0x10;
                uVar34 = uVar34 - 1;
              } while (uVar34 != 0);
            }
          }
        }
        uVar29 = (int)uVar37 + 1;
        uVar37 = (ulonglong)uVar29;
        puVar16 = puVar16 + 0xe0d;
      } while ((int)uVar29 < 0x100);
      piVar17 = &DAT_183ebfdc4;
      uVar37 = uVar33;
      do {
        iVar13 = *piVar17;
        if ((iVar13 != -1) && (*piVar17 = -1, (&DAT_151620c60)[(longlong)iVar13 * 0xe0d] != 0)) {
          FUN_1400f45a0(uVar37);
        }
        iVar13 = DAT_1ad04adc0;
        uVar12 = DAT_183ebfd34;
        uVar29 = (int)uVar37 + 1;
        uVar37 = (ulonglong)uVar29;
        piVar17 = piVar17 + 0x16f1;
      } while ((int)uVar29 < 6);
      if (DAT_1ad04adc0 != 0) {
        lVar24 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar24 * 0x20] = 10;
        (&DAT_1873de464)[lVar24 * 0x20] = uVar12;
        (&DAT_1873de480)[lVar24 * 0x20] = 0;
        (&DAT_1873de484)[lVar24 * 0x20] = 1;
      }
      DAT_183ebfdc0 = 1;
      if (iVar13 != 0) {
        lVar24 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar24 * 0x20] = 10;
        (&DAT_1873de464)[lVar24 * 0x20] = uVar12;
        (&DAT_1873de480)[lVar24 * 0x20] = 1;
        (&DAT_1873de484)[lVar24 * 0x20] = 1;
      }
      DAT_183ec5984 = 1;
      if (iVar13 != 0) {
        lVar24 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar24 * 0x20] = 10;
        (&DAT_1873de464)[lVar24 * 0x20] = uVar12;
        (&DAT_1873de480)[lVar24 * 0x20] = 2;
        (&DAT_1873de484)[lVar24 * 0x20] = 1;
      }
      DAT_183ecb548 = 1;
      if (iVar13 != 0) {
        lVar24 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar24 * 0x20] = 10;
        (&DAT_1873de464)[lVar24 * 0x20] = uVar12;
        (&DAT_1873de480)[lVar24 * 0x20] = 3;
        (&DAT_1873de484)[lVar24 * 0x20] = 1;
      }
      _DAT_183ed110c = 1;
      if (iVar13 != 0) {
        lVar24 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar24 * 0x20] = 10;
        (&DAT_1873de464)[lVar24 * 0x20] = uVar12;
        (&DAT_1873de480)[lVar24 * 0x20] = 4;
        (&DAT_1873de484)[lVar24 * 0x20] = 1;
      }
      _DAT_183ed6cd0 = 1;
      if (iVar13 != 0) {
        lVar24 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar24 * 0x20] = 10;
        (&DAT_1873de464)[lVar24 * 0x20] = uVar12;
        (&DAT_1873de480)[lVar24 * 0x20] = 5;
        (&DAT_1873de484)[lVar24 * 0x20] = 1;
      }
      _DAT_183edc894 = 1;
    }
  }
  local_540 = 0.0;
  uVar37 = uVar33;
  do {
    uVar34 = uVar37 + 1;
    if ((&DAT_183ebfab0)[uVar37] != (&DAT_140274da0)[uVar37]) goto LAB_140129e08;
    uVar37 = uVar34;
  } while (uVar34 != 6);
  FUN_14002a9a0(&local_548);
  DAT_16b2a2ed0 = DAT_15b1ac860;
  DAT_16b2a2ec8 = DAT_15b1ac858 + fVar5;
  DAT_16b2a2ecc = DAT_15b1ac85c + fVar4;
LAB_140129e08:
  FUN_140188b80();
  fVar8 = DAT_140278a74;
  fVar7 = DAT_1402788a4;
  fVar5 = DAT_140278810;
  fVar4 = DAT_1402785b8;
  if (DAT_1ad04adc0 != 0) {
    uVar37 = uVar33;
    uVar34 = uVar33;
    iVar13 = DAT_1ad04adc0;
    if (DAT_183ebfaac == 0) {
      do {
        fVar44 = DAT_140278a80;
        uVar29 = (uint)uVar34;
        fStack_544 = fVar6;
        local_548 = (float)(int)uVar29 + (float)(int)uVar29 + _DAT_1402788e4;
        if (uVar29 == 0) {
          fStack_544 = fVar5;
          local_548 = 1508.0;
          *(undefined4 *)((longlong)&DAT_151620c60 + uVar37) = 1;
          fVar43 = fVar8;
        }
        else if (uVar29 == 0) {
          *(undefined4 *)((longlong)&DAT_151620c60 + uVar37) = 1;
          fVar44 = fVar7;
          fVar43 = local_548;
        }
        else {
          fVar43 = (float)(int)(uVar34 >> 2);
          *(undefined4 *)((longlong)&DAT_151620c60 + uVar37) = 1;
          fVar44 = (float)(uVar29 & 3) + (float)(uVar29 & 3) + _DAT_140278a7c;
          local_548 = fVar43 + fVar43 + fVar8;
          fStack_544 = fVar5;
          *(undefined4 *)((longlong)&DAT_151623994 + uVar37 + 4) = 0;
          *(undefined4 *)((longlong)&DAT_151624420 + uVar37) = 2;
          *(uint *)((longlong)&DAT_15162440c + uVar37) = uVar29 & 1;
          *(undefined4 *)((longlong)&DAT_151620c64 + uVar37) = _DAT_140274dfc;
          (&DAT_151620c68)[uVar37] = DAT_140274e00;
          *(undefined4 *)((longlong)&DAT_151624420 + uVar37 + 4) = 1;
          fVar43 = local_548;
        }
        *(uint *)((longlong)&DAT_151620ce4 + uVar37) = (uint)(uVar29 != 0);
        uVar28 = uVar33;
        do {
          uVar26 = uVar28 + 1;
          uVar27 = uVar33;
          if ((&DAT_183ebfab0)[uVar28] != (&DAT_140274da0)[uVar28]) goto LAB_14012a000;
          uVar28 = uVar26;
        } while (uVar26 != 6);
        fStack_544 = DAT_1402787b8;
        fVar43 = (float)(int)(uVar34 >> 2);
        fVar44 = (float)(uVar29 & 3) + (float)(uVar29 & 3) + _DAT_140278a2c;
        local_548 = fVar43 + fVar43 + _DAT_140278a24;
        fVar43 = local_548;
LAB_14012a000:
        do {
          uVar26 = uVar27 + 1;
          uVar28 = uVar33;
          if ((&DAT_183ebfab0)[uVar27] != (&DAT_140274dfc)[uVar27]) goto LAB_14012a022;
          uVar27 = uVar26;
        } while (uVar26 != 5);
        fStack_544 = fVar6;
LAB_14012a022:
        do {
          uVar26 = uVar28 + 1;
          uVar27 = uVar33;
          if ((&DAT_183ebfab0)[uVar28] != "versus"[uVar28]) goto LAB_14012a050;
          uVar28 = uVar26;
        } while (uVar26 != 7);
        fStack_544 = fVar6;
LAB_14012a050:
        do {
          uVar28 = uVar27 + 1;
          if ((&DAT_183ebfab0)[uVar27] != (&DAT_140274950)[uVar27]) goto LAB_14012a06f;
          uVar27 = uVar28;
        } while (uVar28 != 5);
        fStack_544 = fVar6;
LAB_14012a06f:
        fVar10 = fStack_544;
        fVar44 = fVar44 - DAT_1402787f4;
        fVar40 = local_548;
        if (uVar29 != 0) {
          fVar40 = fVar43 + fVar45;
        }
        local_538 = CONCAT44(fStack_544,fVar40);
        local_f8 = 0x3f800000;
        local_118._4_4_ = _UNK_140278d34;
        local_118._0_4_ = _DAT_140278d30;
        local_118._8_4_ = _UNK_140278d38;
        local_118._12_4_ = _UNK_140278d3c;
        local_108._4_4_ = _UNK_140278d34;
        local_108._0_4_ = _DAT_140278d30;
        local_108._8_4_ = _UNK_140278d38;
        local_108._12_4_ = _UNK_140278d3c;
        local_540 = fVar44;
        local_530 = fVar44;
        iVar13 = FUN_140053840(&local_538,local_118,uVar34);
        lVar24 = (longlong)iVar13;
        *(int *)((longlong)&DAT_151620cfc + uVar37) = iVar13;
        uVar12 = 1;
        *(undefined4 *)((longlong)&DAT_151624420 + uVar37) = 1;
        if (uVar29 != 0) {
          *(undefined4 *)((longlong)&DAT_151624420 + uVar37) = 1;
        }
        *(undefined4 *)((longlong)&DAT_151624420 + uVar37 + 4) = 1;
        iVar13 = iVar32;
        if (uVar29 != 1) {
          iVar13 = (uVar29 != 0) + 1;
        }
        *(int *)((longlong)&DAT_151624428 + uVar37) = iVar13;
        if (uVar29 != 0) {
          iVar13 = uVar29 - 1;
          lVar31 = (longlong)
                   (iVar13 + (iVar13 / 6 + (iVar13 >> 0x1f) +
                             (int)(((longlong)iVar13 / 6 + ((longlong)iVar13 >> 0x3f) & 0xffffffffU)
                                  >> 0x1f)) * -6);
          uVar12 = *(undefined4 *)(&DAT_1402b2980 + lVar31 * 4);
          iVar13 = *(int *)(&DAT_1402b29a0 + lVar31 * 4);
          *(undefined4 *)((longlong)&DAT_151624420 + uVar37 + 4) = uVar12;
          *(int *)((longlong)&DAT_151624428 + uVar37) = iVar13;
        }
        uVar3 = *(undefined4 *)((longlong)&DAT_151624434 + uVar37);
        *(undefined4 *)(&DAT_1832a52a0 + lVar24 * 0x6ff8) = 1;
        (&DAT_1832a52a4)[lVar24 * 0x1bfe] = uVar12;
        (&DAT_1832a52a8)[lVar24 * 0x1bfe] = iVar13;
        *(undefined4 *)(&DAT_1832a52b0 + lVar24 * 0x6ff8) = uVar3;
        uVar3 = DAT_18329e530;
        uVar12 = DAT_18329e52c;
        if (uVar29 == 0) {
          local_118._0_8_ = CONCAT44(_UNK_140278d34,_DAT_140278d30);
          local_118._8_8_ = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
          local_f8 = 0x3f800000;
          local_108._0_8_ = local_118._0_8_;
          local_108._8_8_ = local_118._8_8_;
          uVar12 = FUN_140054130(3,&local_538,0,local_118);
          FUN_1400e35d0(uVar12,0xffffffff,*(undefined4 *)((longlong)&DAT_151620cfc + uVar37),0);
          uVar12 = FUN_140054130(4,&local_538,0,local_118);
          FUN_1400e35d0(uVar12,0xffffffff,*(undefined4 *)((longlong)&DAT_151620cfc + uVar37),1);
          uVar12 = FUN_140054130(4,&local_538,0,local_118);
          FUN_1400e35d0(uVar12,0xffffffff,*(undefined4 *)((longlong)&DAT_151620cfc + uVar37),3);
          uVar12 = FUN_140054130(4,&local_538,0,local_118);
          FUN_1400e35d0(uVar12,0xffffffff,*(undefined4 *)((longlong)&DAT_151620cfc + uVar37),3);
          uVar12 = FUN_140054130(4,&local_538,0,local_118);
          FUN_1400e35d0(uVar12,0xffffffff,*(undefined4 *)((longlong)&DAT_151620cfc + uVar37),4);
          uVar12 = FUN_140054130(4,&local_538,0,local_118);
          FUN_1400e35d0(uVar12,0xffffffff,*(undefined4 *)((longlong)&DAT_151620cfc + uVar37),4);
          uVar12 = FUN_140054130(0xd,&local_538,0,local_118);
          FUN_1400e35d0(uVar12,0xffffffff,*(undefined4 *)((longlong)&DAT_151620cfc + uVar37),5);
          uVar12 = FUN_140054130(0xd,&local_538,0,local_118);
          FUN_1400e35d0(uVar12,0xffffffff,*(undefined4 *)((longlong)&DAT_151620cfc + uVar37),5);
          local_548 = fVar43 + DAT_140278730;
          local_f8 = 0x3f800000;
          fVar40 = fVar44 - fVar4;
          local_118._8_8_ = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
          local_118._0_8_ = CONCAT44(_UNK_140278d34,_DAT_140278d30);
          local_108._8_8_ = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
          local_108._0_8_ = CONCAT44(_UNK_140278d34,_DAT_140278d30);
          local_540 = fVar40;
          FUN_140061950();
          local_578 = 3;
          _DAT_16a7dbd90 = FUN_14005bca0(6,&local_548,0,local_118);
          fVar43 = fVar43 + fVar4;
          local_548 = fVar43;
          FUN_140054130(0x29,&local_548,0,local_118);
          local_538 = CONCAT44(fVar10 + DAT_140278280,fVar43);
          local_530 = fVar40;
          iVar13 = FUN_140054130(0x27,&local_538,0,local_118);
          piVar17 = &DAT_181feebc0;
          uVar34 = uVar33;
          uVar28 = uVar33;
          do {
            iVar36 = (int)uVar34;
            if (*piVar17 == 0) {
              if (iVar36 != -1) {
                FUN_1401fcd30(&DAT_181feebc0 + (longlong)iVar36 * 0xa0a,0,0x2828);
                (&DAT_181feebc0)[uVar28 * 0xa0a] = 1;
                (&DAT_181feebc4)[uVar28 * 0xa0a] = 20000;
              }
              goto LAB_14012a451;
            }
            uVar34 = (ulonglong)(iVar36 + 1);
            uVar28 = uVar28 + 1;
            piVar17 = piVar17 + 0xa0a;
          } while ((longlong)piVar17 < 0x1829f8bc0);
          iVar36 = -1;
          uVar28 = 0xffffffffffffffff;
LAB_14012a451:
          *(int *)(&DAT_182bbb4b4 + (longlong)iVar13 * 0x1b80) = iVar36;
          if ((int)(&DAT_181fefbcc)[uVar28 * 0xa0a] < 0x100) {
            *(undefined4 *)
             (&DAT_181fefbd0 +
             uVar28 * 0x2828 + (longlong)(int)(&DAT_181fefbcc)[uVar28 * 0xa0a] * 0x18) = 0;
            pcVar23 = "SNAKE.EXE";
            pcVar30 = &DAT_181fefbd4 +
                      (longlong)iVar36 * 0x2828 +
                      (longlong)(int)(&DAT_181fefbcc)[uVar28 * 0xa0a] * 0x18;
            do {
              cVar1 = *pcVar23;
              pcVar23 = pcVar23 + 1;
              *pcVar30 = cVar1;
              pcVar30 = pcVar30 + 1;
            } while (cVar1 != '\0');
            *(undefined4 *)
             (&DAT_181fefbe4 +
             uVar28 * 0x2828 + (longlong)(int)(&DAT_181fefbcc)[uVar28 * 0xa0a] * 0x18) = 0;
            (&DAT_181fefbcc)[uVar28 * 0xa0a] = (&DAT_181fefbcc)[uVar28 * 0xa0a] + 1;
          }
          uVar12 = FUN_140054130(0x22,&local_548,0,local_118);
          local_518[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0];
          local_518[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[1];
          local_518[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[2];
          local_518[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[3];
          local_518[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[4];
          local_518[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[5];
          local_518[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[6];
          local_518[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[7];
          acStack_510[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[8];
          acStack_510[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[9];
          acStack_510[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[10];
          acStack_510[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xb];
          acStack_510[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xc];
          acStack_510[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xd];
          acStack_510[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xe];
          acStack_510[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xf];
          local_508[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x10];
          local_508[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x11];
          local_508[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x12];
          local_508[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x13];
          local_508[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x14];
          local_508[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x15];
          local_508[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x16];
          local_508[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x17];
          acStack_500[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x18];
          acStack_500[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x19];
          acStack_500[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x1a];
          acStack_500[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x1b];
          acStack_500[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x1c];
          acStack_500[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x1d];
          acStack_500[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x1e];
          acStack_500[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x1f];
          local_4f8[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x20];
          local_4f8[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x21];
          local_4f8[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x22];
          local_4f8[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x23];
          local_4f8[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x24];
          local_4f8[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x25];
          local_4f8[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x26];
          local_4f8[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x27];
          acStack_4f0[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x28];
          acStack_4f0[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x29];
          acStack_4f0[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x2a];
          acStack_4f0[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x2b];
          acStack_4f0[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x2c];
          acStack_4f0[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x2d];
          acStack_4f0[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x2e];
          acStack_4f0[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x2f];
          local_4e8[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x30];
          local_4e8[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x31];
          local_4e8[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x32];
          local_4e8[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x33];
          local_4e8[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x34];
          local_4e8[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x35];
          local_4e8[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x36];
          local_4e8[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x37];
          acStack_4e0[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x38];
          acStack_4e0[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x39];
          acStack_4e0[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x3a];
          acStack_4e0[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x3b];
          acStack_4e0[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x3c];
          acStack_4e0[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x3d];
          acStack_4e0[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x3e];
          acStack_4e0[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x3f];
          local_4d8[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x40];
          local_4d8[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x41];
          local_4d8[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x42];
          local_4d8[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x43];
          local_4d8[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x44];
          local_4d8[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x45];
          local_4d8[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x46];
          local_4d8[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x47];
          acStack_4d0[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x48];
          acStack_4d0[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x49];
          acStack_4d0[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x4a];
          acStack_4d0[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x4b];
          acStack_4d0[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x4c];
          acStack_4d0[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x4d];
          acStack_4d0[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x4e];
          acStack_4d0[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x4f];
          local_4c8[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x50];
          local_4c8[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x51];
          local_4c8[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x52];
          local_4c8[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x53];
          local_4c8[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x54];
          local_4c8[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x55];
          local_4c8[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x56];
          local_4c8[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x57];
          acStack_4c0[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x58];
          acStack_4c0[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x59];
          acStack_4c0[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x5a];
          acStack_4c0[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x5b];
          acStack_4c0[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x5c];
          acStack_4c0[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x5d];
          acStack_4c0[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x5e];
          acStack_4c0[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x5f];
          local_4b8[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x60];
          local_4b8[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x61];
          local_4b8[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x62];
          local_4b8[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[99];
          local_4b8[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[100];
          local_4b8[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x65];
          local_4b8[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x66];
          local_4b8[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x67];
          acStack_4b0[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x68];
          acStack_4b0[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x69];
          acStack_4b0[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x6a];
          acStack_4b0[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x6b];
          acStack_4b0[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x6c];
          acStack_4b0[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x6d];
          acStack_4b0[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x6e];
          acStack_4b0[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x6f];
          local_4a8[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x70];
          local_4a8[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x71];
          local_4a8[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x72];
          local_4a8[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x73];
          local_4a8[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x74];
          local_4a8[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x75];
          local_4a8[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x76];
          local_4a8[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x77];
          acStack_4a0[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x78];
          acStack_4a0[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x79];
          acStack_4a0[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x7a];
          acStack_4a0[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x7b];
          acStack_4a0[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x7c];
          acStack_4a0[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x7d];
          acStack_4a0[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x7e];
          acStack_4a0[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x7f];
          local_498[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x80];
          local_498[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x81];
          local_498[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x82];
          local_498[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x83];
          local_498[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x84];
          local_498[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x85];
          local_498[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x86];
          local_498[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x87];
          acStack_490[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x88];
          acStack_490[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x89];
          acStack_490[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x8a];
          acStack_490[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x8b];
          acStack_490[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x8c];
          acStack_490[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x8d];
          acStack_490[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x8e];
          acStack_490[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x8f];
          local_488[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x90];
          local_488[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x91];
          local_488[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x92];
          local_488[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x93];
          local_488[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x94];
          local_488[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x95];
          local_488[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x96];
          local_488[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x97];
          acStack_480[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x98];
          acStack_480[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x99];
          acStack_480[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x9a];
          acStack_480[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x9b];
          acStack_480[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x9c];
          acStack_480[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x9d];
          acStack_480[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x9e];
          acStack_480[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0x9f];
          local_478[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xa0];
          local_478[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xa1];
          local_478[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xa2];
          local_478[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xa3];
          local_478[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xa4];
          local_478[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xa5];
          local_478[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xa6];
          local_478[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xa7];
          acStack_470[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xa8];
          acStack_470[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xa9];
          acStack_470[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xaa];
          acStack_470[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xab];
          acStack_470[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xac];
          acStack_470[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xad];
          acStack_470[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xae];
          acStack_470[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xaf];
          local_468[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xb0];
          local_468[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xb1];
          local_468[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xb2];
          local_468[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xb3];
          local_468[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xb4];
          local_468[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xb5];
          local_468[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xb6];
          local_468[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xb7];
          acStack_460[0] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xb8];
          acStack_460[1] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xb9];
          acStack_460[2] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xba];
          acStack_460[3] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xbb];
          acStack_460[4] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xbc];
          acStack_460[5] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xbd];
          acStack_460[6] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xbe];
          acStack_460[7] = s_TEST_TEST_TEST_NEXT_LINE_LOTS_OF_140274e20[0xbf];
          FUN_1400584b0(uVar12,local_518);
          local_540 = fVar40 + DAT_1402783f4;
          uVar12 = FUN_140054130(0x1d,&local_548,0,local_118);
          FUN_1400584b0(uVar12,&DAT_183e93124);
          local_540 = fVar44;
          FUN_140054130(0x1a,&local_548,0,local_118);
          local_540 = fVar40 + DAT_140278644;
          FUN_140054130(0x1a,&local_548,0,local_118);
          local_540 = fVar40 + DAT_140278688;
          iVar13 = FUN_140054130(0x1a,&local_548,0,local_118);
          local_540 = fVar40 + DAT_1402786bc;
          (&DAT_182bbb4e8)[(longlong)iVar13 * 0x6e0] = 1;
          iVar13 = FUN_140054130(0x1a,&local_548,0,local_118);
          local_540 = fVar40 + DAT_1402786f0;
          (&DAT_182bbb4e8)[(longlong)iVar13 * 0x6e0] = 1;
          iVar13 = FUN_140054130(0x1a,&local_548,0,local_118);
          local_540 = fVar40 + _DAT_140278714;
          (&DAT_182bbb4e8)[(longlong)iVar13 * 0x6e0] = 1;
          iVar13 = FUN_140054130(0x19,&local_548,0,local_118);
          fVar45 = DAT_140278728;
          local_540 = fVar40 + DAT_140278728;
          (&DAT_182bbb2e0)[(longlong)iVar13 * 0x6e0] = 0x457;
          iVar13 = FUN_140054130(0x19,&local_548,0,local_118);
          local_540 = fVar40 + DAT_14027872c;
          (&DAT_182bbb2e0)[(longlong)iVar13 * 0x6e0] = 0x8ae;
          (&DAT_182bbb3f8)[(longlong)iVar13 * 0x6e0] = 1;
          iVar13 = FUN_140054130(0x19,&local_548,0,local_118);
          local_540 = fVar40 + DAT_140278730;
          (&DAT_182bbb2e0)[(longlong)iVar13 * 0x6e0] = 0xd05;
          iVar13 = FUN_140054130(0x12,&local_548,0,local_118);
          local_540 = fVar40 + _DAT_14027873c;
          *(undefined4 *)(&DAT_182bbb428 + (longlong)iVar13 * 0x1b80) = 0x6002001;
          *(undefined4 *)(&DAT_182bbb424 + (longlong)iVar13 * 0x1b80) = 9;
          iVar13 = FUN_140054130(0x12,&local_548,0,local_118);
          local_540 = fVar40 + DAT_140278750;
          *(undefined4 *)(&DAT_182bbb428 + (longlong)iVar13 * 0x1b80) = 0x6002001;
          *(undefined4 *)(&DAT_182bbb424 + (longlong)iVar13 * 0x1b80) = 9;
          iVar13 = FUN_140054130(0x12,&local_548,0,local_118);
          local_540 = fVar40 + DAT_140278754;
          *(undefined4 *)(&DAT_182bbb428 + (longlong)iVar13 * 0x1b80) = 0x6002001;
          *(undefined4 *)(&DAT_182bbb424 + (longlong)iVar13 * 0x1b80) = 9;
          iVar13 = FUN_140054130(0x12,&local_548,0,local_118);
          local_540 = fVar40 + DAT_140278760;
          *(undefined4 *)(&DAT_182bbb428 + (longlong)iVar13 * 0x1b80) = 0x6002001;
          *(undefined4 *)(&DAT_182bbb424 + (longlong)iVar13 * 0x1b80) = 9;
          iVar13 = FUN_140054130(0x12,&local_548,0,local_118);
          local_540 = fVar40 + DAT_140278770;
          *(undefined4 *)(&DAT_182bbb428 + (longlong)iVar13 * 0x1b80) = 0x6002001;
          *(undefined4 *)(&DAT_182bbb424 + (longlong)iVar13 * 0x1b80) = 9;
          FUN_140054130(0xd,&local_548,0,local_118);
          local_540 = fVar40 + DAT_140278774;
          FUN_140054130(0xd,&local_548,0,local_118);
          local_540 = fVar40 + _DAT_140278778;
          FUN_140054130(0xd,&local_548,0,local_118);
          local_540 = fVar40 + _DAT_140278794;
          FUN_140054130(0xf,&local_548,0,local_118);
          local_530 = (float)DAT_16b2a2234 - fVar45;
          local_538 = CONCAT44((float)DAT_16b2a2230 + fVar45,(float)DAT_16b2a222c + DAT_1402786f0);
          FUN_14007b2a0(local_118,local_118 + 0xc,DAT_140278bd8);
          FUN_14007b2a0(local_118,local_118,DAT_140278230);
          local_540 = fVar40 + DAT_14027879c;
          local_118._4_4_ = _UNK_140278d34;
          local_118._0_4_ = _DAT_140278d30;
          local_118._8_4_ = _UNK_140278d38;
          local_118._12_4_ = _UNK_140278d3c;
          local_f8 = 0x3f800000;
          local_108 = local_118;
          FUN_140054130(0x23,&local_548,0,local_118);
          local_540 = fVar40 + DAT_1402787a0;
          FUN_140054130(0x11,&local_548,0,local_118);
          local_540 = fVar40 + DAT_1402787a4;
          FUN_140054130(0x11,&local_548,0,local_118);
          local_540 = fVar40 + DAT_1402787b0;
          FUN_140054130(0x11,&local_548,0,local_118);
          local_540 = fVar40 + DAT_1402787b4;
          FUN_140054130(0x11,&local_548,0,local_118);
          local_540 = fVar40 + fVar6;
          FUN_140054130(0x11,&local_548,0,local_118);
          local_540 = fVar40 + DAT_1402787c0;
          FUN_140054130(0x15,&local_548,0,local_118);
          local_540 = fVar40 + _DAT_1402787c8;
          FUN_140054130(9,&local_548,0,local_118);
          local_540 = fVar40 + DAT_1402787cc;
          FUN_140054130(10,&local_548,0,local_118);
          local_540 = fVar40 + _DAT_1402787d0;
          FUN_140054130(10,&local_548,0,local_118);
          fVar45 = DAT_1402787d4;
          local_540 = fVar40 + DAT_1402787d4;
          FUN_140054130(10,&local_548,0,local_118);
          local_540 = fVar40 + _DAT_1402787d8;
          FUN_140054130(0xe,&local_548,0,local_118);
          local_540 = fVar40 + _DAT_1402787dc;
        }
        else if (uVar29 != 0) {
          *(undefined8 *)((longlong)&DAT_151623994 + uVar37) = 0;
          *(undefined4 *)((longlong)&DAT_15162399c + uVar37) = 0x438c8000;
          *(undefined4 *)((longlong)&DAT_1516239a0 + uVar37) = 0x41d00000;
          *(undefined4 *)
           (&DAT_1516239a4 +
           (longlong)*(int *)((longlong)&DAT_151623994 + uVar37 + 4) * 0x20 + uVar37) = 0x43000000;
          lVar24 = (longlong)*(int *)((longlong)&DAT_151623994 + uVar37 + 4) * 0x20 + uVar37;
          *(undefined4 *)((longlong)&DAT_15162399c + lVar24) = uVar12;
          *(undefined4 *)(&DAT_1516239a4 + lVar24) = DAT_18329e534;
          *(undefined4 *)((longlong)&DAT_1516239a0 + lVar24) = uVar3;
          piVar17 = (int *)((longlong)&DAT_151623994 + uVar37 + 4);
          *piVar17 = *piVar17 + 1;
        }
        uVar37 = uVar37 + 0x3834;
        uVar34 = (ulonglong)(uVar29 + 1);
      } while ((int)(uVar29 + 1) < 2);
      if (0 < DAT_1760c55f4) {
        piVar17 = &DAT_1760c5638;
        uVar37 = uVar33;
        do {
          if (*piVar17 == 4) break;
          uVar29 = (int)uVar37 + 1;
          uVar37 = (ulonglong)uVar29;
          piVar17 = piVar17 + 0x36c3;
        } while ((int)uVar29 < DAT_1760c55f4);
        if (DAT_183ebfaac == 2) {
          FUN_14012e620(uVar37,0x18,10000000);
        }
      }
      FUN_14012e960(0x80);
      iVar13 = DAT_1ad04adc0;
      uVar12 = DAT_183ebfd34;
      if (DAT_1ad04adc0 != 0) {
        lVar24 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar24 * 0x20] = 10;
        (&DAT_1873de464)[lVar24 * 0x20] = uVar12;
        (&DAT_1873de480)[lVar24 * 0x20] = 0;
        (&DAT_1873de484)[lVar24 * 0x20] = 1;
      }
      DAT_183ebfdc0 = 1;
      if (iVar13 != 0) {
        lVar24 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar24 * 0x20] = 10;
        (&DAT_1873de464)[lVar24 * 0x20] = uVar12;
        (&DAT_1873de480)[lVar24 * 0x20] = 1;
        (&DAT_1873de484)[lVar24 * 0x20] = 1;
      }
      DAT_183ec5984 = 1;
      if (iVar13 != 0) {
        lVar24 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar24 * 0x20] = 10;
        (&DAT_1873de464)[lVar24 * 0x20] = uVar12;
        (&DAT_1873de480)[lVar24 * 0x20] = 2;
        (&DAT_1873de484)[lVar24 * 0x20] = 1;
      }
      DAT_183ecb548 = 1;
    }
    if (iVar13 != 0) {
      FUN_14008c030();
      FUN_14008c310();
      FUN_140052090();
      do {
        if (*piVar15 != 0) {
          FUN_140051dc0(uVar33);
          FUN_140051f50(uVar33);
        }
        uVar29 = (int)uVar33 + 1;
        uVar33 = (ulonglong)uVar29;
        piVar15 = piVar15 + 0xe0d;
      } while ((int)uVar29 < 0x100);
    }
  }
  return;
}



===== FUN_14003b920 @ 14003b920 root=true =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_14003b920(int param_1)

{
  int *piVar1;
  longlong lVar2;
  bool bVar3;
  int *piVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  int *piVar8;
  int *piVar9;
  undefined8 uVar10;
  double dVar11;
  int iVar12;
  longlong lVar13;
  ulonglong uVar14;
  uint uVar15;
  longlong lVar16;
  int *piVar17;
  ulonglong uVar18;
  int iVar19;
  undefined4 *puVar20;
  float fVar21;
  float fVar22;
  float fVar23;
  float fVar24;
  float fVar25;
  float fVar26;
  float fVar27;
  float fVar28;
  float local_58;
  float local_54;
  float local_50;
  
  uVar15 = 0x10;
  if (DAT_183ebfd50 != 0) {
    uVar15 = 100;
  }
  uVar18 = 0;
  if (DAT_144cbfaa4 != 0) {
    if (DAT_183f7c969 != '\0') {
      uVar15 = 3;
    }
    if (DAT_183f7c96a != '\0') {
      uVar15 = 0;
    }
  }
  iVar12 = SDL_GetTicks();
  if ((uint)(iVar12 - DAT_183ebfd40) < uVar15) {
    return 0;
  }
  if ((uint)(iVar12 - DAT_183ebfd40) < 0xfa) {
    iVar12 = DAT_183ebfd40 + uVar15;
  }
  DAT_183ebfd40 = iVar12;
  _DAT_16b27df84 = SDL_GetTicks();
  if (param_1 != 0) {
    if (DAT_183f7c540 == -1) {
      FUN_140104ea0(0);
    }
    if (DAT_189f0eea0 != 0) {
      FUN_140104ea0(2);
    }
    if ((DAT_183f7c9a4 != '\0') && (DAT_183f7c7a4 == '\0')) {
      DAT_151e461d4 = DAT_151e461d4 ^ 1;
      DAT_183f7c7a4 = '\x01';
    }
    if ((DAT_183f7c99a != '\0') && (DAT_183f7c79a == '\0')) {
      DAT_151e461d0 = DAT_151e461d0 ^ 1;
      DAT_183f7c79a = '\x01';
    }
    if ((DAT_183f7c99c != '\0') && (DAT_183f7c79c == '\0')) {
      DAT_183f7c2fc = DAT_183f7c2fc ^ 1;
      DAT_183f7c79c = '\x01';
    }
    if ((DAT_183f7c99d != '\0') && (DAT_183f7c79d == '\0')) {
      DAT_183f7aee0 = DAT_183f7aee0 ^ 1;
      DAT_183f7c79d = '\x01';
    }
    if (DAT_144cbfaa4 != 0) {
      iVar12 = 0;
      if ((DAT_183f7c975 != '\0') && (iVar12 = 0, DAT_183f7c775 == '\0')) {
        iVar12 = 5;
        DAT_183f7c775 = '\x01';
      }
      if ((DAT_183f7c977 != '\0') && (DAT_183f7c777 == '\0')) {
        iVar12 = 0xf;
        DAT_183f7c777 = '\x01';
      }
      if ((DAT_183f7c97c == '\0') || (DAT_183f7c77c != '\0')) {
        if (iVar12 == 0) {
          if ((DAT_183f7c99e != '\0') && (DAT_183f7c79e == '\0')) {
            DAT_144cbfac0 = 0;
            goto LAB_14003bae9;
          }
          goto LAB_14003bb1c;
        }
      }
      else {
        iVar12 = 0x1e;
        DAT_183f7c77c = '\x01';
      }
      uVar15 = DAT_183ebfd34 + iVar12 * -0x3c;
      uVar14 = (ulonglong)uVar15;
      if ((int)uVar15 < 0) {
        uVar14 = uVar18;
      }
      DAT_144cbfac0 = (int)uVar14;
LAB_14003bae9:
      DAT_144cbfab0 = 0;
      FUN_140127300();
      FUN_140127910();
      return 1;
    }
LAB_14003bb1c:
    if (((DAT_1ad04adc0 != 0) && (DAT_183f7c99e != '\0')) && (DAT_183f7c79e == '\0')) {
      if ((DAT_183ebfaac == 1) && (DAT_183f7ca41 == '\0')) {
        FUN_140026e70();
        FUN_140010110();
        FUN_1400e65f0();
        FUN_140026830(&DAT_1ad2c94a0,&DAT_1abd4aca0,0);
        FUN_140028bd0();
        FUN_140029120();
        FUN_140023ac0(0,0x24 - DAT_1ad2c94ec,6 - DAT_1ad2c94f0,0x24 - DAT_1ad2c94f4,DAT_1ae1c94f8,
                      DAT_1ae1c94fc,DAT_1ae1c9500,0,0);
      }
      else {
        FUN_140127910();
      }
    }
  }
  fVar22 = DAT_140278338;
  if (DAT_183ebfd4c == 0) {
    if (DAT_183ebfd48 == 0) goto LAB_14003bc17;
LAB_14003bc20:
    if ((DAT_144cbfaa4 == 0) || (DAT_144cbfac0 <= DAT_183ebfd34)) goto LAB_14003c346;
  }
  else {
    _DAT_183ebfd48 = (ulonglong)DAT_183ebfd4c << 0x20;
LAB_14003bc17:
    if (DAT_189f0eea0 != 0) goto LAB_14003bc20;
  }
  DAT_16b165f70 = 0;
  DAT_16b1f5f74 = 0;
  if (DAT_1ad04adc0 == 0) {
    if (DAT_144cbfaa4 == 0) {
      FUN_140044920();
      FUN_140042930();
      if (DAT_183ebfccc == 2) {
        DAT_183ebfcd8 = DAT_183ebfcd8 + 1;
      }
      if (DAT_1a4d2dce4 != DAT_183ebfcc8) {
        FUN_140127910();
      }
    }
    else {
      if (DAT_183ebfccc != 3) {
        FUN_140127300();
        if (DAT_144cbfab0 < DAT_144cbfab4) {
          do {
            if (DAT_144cbfac8 != 0) break;
            FUN_140127300();
          } while (DAT_144cbfab0 < DAT_144cbfab4);
        }
        if (((0 < DAT_144cbfac0) && (DAT_144cbfab0 < DAT_144cbfab4)) &&
           (DAT_183ebfd34 < DAT_144cbfac0)) {
          do {
            if (DAT_144cbfac0 + -1 <= DAT_183ebfd34) break;
            FUN_140127300();
          } while (DAT_144cbfab0 < DAT_144cbfab4);
          FUN_14008f1b0();
          FUN_14008f050();
          FUN_140127300();
        }
      }
      if (DAT_183ebfccc == 2) {
        DAT_183ebfcd8 = DAT_183ebfcd8 + 1;
      }
    }
  }
  else {
    DAT_183ebfd34 = DAT_183ebfd34 + 1;
    if (DAT_183ebfccc == 2) {
      piVar17 = &DAT_151623978;
      uVar14 = uVar18;
      do {
        if ((piVar17[-0xb46] != 0) && (*piVar17 != 0)) {
          FUN_1401178f0(uVar14);
        }
        uVar15 = (int)uVar14 + 1;
        uVar14 = (ulonglong)uVar15;
        piVar17 = piVar17 + 0xe0d;
      } while ((int)uVar15 < 0x100);
    }
    FUN_140132f90();
    FUN_140133090();
    FUN_14011b2a0();
    if (DAT_183ebfccc < 3) {
      FUN_140116210();
    }
    FUN_1400f5820();
    FUN_140136450();
    if (DAT_183ebfaac != 4) {
      DAT_16b2a2ec0 = DAT_16b2a2ec0 + 3;
    }
  }
  DAT_18402cca0 = (float)((double)DAT_18402cca0 + _DAT_140278420);
  if (DAT_1402785e0 < (double)DAT_18402cca0) {
    DAT_18402cca0 = (float)((double)DAT_18402cca0 - _DAT_140278618);
  }
  _DAT_1a4d2dce0 = _DAT_1a4d2dce0 + 1;
  if (DAT_183ebfccc < 3) {
    FUN_14002b9c0();
  }
  FUN_14008f1b0();
  FUN_14008f050();
  if ((DAT_1ad04adc0 == 0) || (DAT_144cbfaa4 != 0)) {
    FUN_1400c2210();
    FUN_1400cf160();
  }
  if (DAT_183ebfccc < 3) {
    FUN_1401597f0();
    FUN_140158cd0();
    FUN_14002ce50();
    if (0 < DAT_1a7971d80) {
      piVar17 = &DAT_1a771f384;
      uVar14 = uVar18;
      do {
        iVar12 = *piVar17;
        if (iVar12 < 0xffff) {
          iVar12 = iVar12 + -1;
          *piVar17 = iVar12;
        }
        iVar19 = (int)uVar14;
        if (iVar12 < 1) {
          if (-1 < iVar19) {
            if ((DAT_1a7971d80 <= iVar19) ||
               (DAT_1a7971d80 = DAT_1a7971d80 + -1, iVar19 == DAT_1a7971d80)) break;
            lVar13 = (longlong)DAT_1a7971d80;
            lVar16 = lVar13 * 0x94;
            uVar10 = *(undefined8 *)(&DAT_1a771f388 + lVar13 * 0x25);
            *(undefined8 *)(piVar17 + -1) = *(undefined8 *)(&DAT_1a771f380 + lVar13 * 0x25);
            *(undefined8 *)(piVar17 + 1) = uVar10;
            uVar10 = *(undefined8 *)(&DAT_1a771f398 + lVar13 * 0x25);
            *(undefined8 *)(piVar17 + 3) = *(undefined8 *)(&DAT_1a771f390 + lVar13 * 0x25);
            *(undefined8 *)(piVar17 + 5) = uVar10;
            uVar10 = *(undefined8 *)(lVar16 + 0x1a771f3a8);
            *(undefined8 *)(piVar17 + 7) = *(undefined8 *)(&DAT_1a771f3a0 + lVar13 * 0x25);
            *(undefined8 *)(piVar17 + 9) = uVar10;
            uVar10 = *(undefined8 *)(&DAT_1a771f3b8 + lVar13 * 0x25);
            *(undefined8 *)(piVar17 + 0xb) = *(undefined8 *)(&DAT_1a771f3b0 + lVar13 * 0x25);
            *(undefined8 *)(piVar17 + 0xd) = uVar10;
            uVar10 = *(undefined8 *)(&DAT_1a771f3c8 + lVar13 * 0x25);
            *(undefined8 *)(piVar17 + 0xf) = *(undefined8 *)(&DAT_1a771f3c0 + lVar13 * 0x25);
            *(undefined8 *)(piVar17 + 0x11) = uVar10;
            uVar10 = *(undefined8 *)(&DAT_1a771f3d8 + lVar13 * 0x25);
            *(undefined8 *)(piVar17 + 0x13) = *(undefined8 *)(&DAT_1a771f3d0 + lVar13 * 0x25);
            *(undefined8 *)(piVar17 + 0x15) = uVar10;
            uVar10 = *(undefined8 *)(&DAT_1a771f3e8 + lVar13 * 0x25);
            *(undefined8 *)(piVar17 + 0x17) = *(undefined8 *)(&DAT_1a771f3e0 + lVar13 * 0x25);
            *(undefined8 *)(piVar17 + 0x19) = uVar10;
            *(undefined1 (*) [16])(piVar17 + 0x1b) = *(undefined1 (*) [16])(&DAT_1a771f3f0 + lVar16)
            ;
            uVar10 = *(undefined8 *)(&DAT_1a771f408 + lVar13 * 0x25);
            *(undefined8 *)(piVar17 + 0x1f) = *(undefined8 *)(&DAT_1a771f400 + lVar16);
            *(undefined8 *)(piVar17 + 0x21) = uVar10;
            piVar17[0x23] = (&DAT_1a771f410)[lVar13 * 0x25];
          }
        }
        else {
          uVar14 = (ulonglong)(iVar19 + 1);
          piVar17 = piVar17 + 0x25;
        }
      } while ((int)uVar14 < DAT_1a7971d80);
    }
    iVar12 = -1;
    DAT_18399eb60 = -1;
    if (DAT_183f7c540 != -1) {
      lVar13 = (longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d];
      if (((&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] != -1) &&
         (lVar16 = lVar13 * 0x6ff8, (&DAT_18329e330)[lVar13 * 0x1bfe] == -1)) {
        lVar2 = (ulonglong)
                (-(uint)(((&DAT_151620d80)[(longlong)DAT_183f7c540 * 0xe0d] & 0x10) != 0) & 0x28) +
                lVar16;
        iVar19 = *(int *)((longlong)&DAT_1832a4dd8 + lVar2);
        if (0 < iVar19) {
          uVar14 = 0x28;
          if (((&DAT_151620d80)[(longlong)DAT_183f7c540 * 0xe0d] & 0x10) != 0) {
            uVar14 = uVar18;
          }
          if (0 < *(int *)((longlong)&DAT_1832a4dd8 + uVar14 + lVar16)) goto LAB_14003c160;
        }
        puVar20 = &DAT_182bbb1dc;
        local_58 = (float)(&DAT_18329e8d4)[lVar13 * 0x1bfe] -
                   *(float *)(&DAT_18329e91c + lVar16) * DAT_140278478;
        piVar17 = &DAT_182bbb1a4;
        local_54 = (float)(&DAT_18329e8d8)[lVar13 * 0x1bfe] -
                   *(float *)(&DAT_18329e920 + lVar16) * DAT_140278478;
        local_50 = (float)(&DAT_18329e8dc)[lVar13 * 0x1bfe] -
                   *(float *)(&DAT_18329e924 + lVar16) * DAT_140278478;
        do {
          if ((((piVar17[-9] != 0) && (*piVar17 == -1)) &&
              ((piVar17[1] == -1 || ((&DAT_182bbb1a4)[(longlong)piVar17[1] * 0x6e0] == -1)))) &&
             (fVar21 = (float)FUN_14007aba0(&DAT_18329e8d4 + lVar13 * 0x1bfe,&local_58,puVar20),
             fVar21 < fVar22)) {
            fVar22 = fVar21;
            iVar12 = (int)uVar18;
          }
          uVar15 = (int)uVar18 + 1;
          uVar18 = (ulonglong)uVar15;
          puVar20 = puVar20 + 0x6e0;
          piVar17 = piVar17 + 0x6e0;
        } while ((int)uVar15 < 0x400);
        DAT_18399eb60 = iVar12;
        if (((iVar12 != -1) && (0 < iVar19)) &&
           (*(int *)(&DAT_182a7e29c +
                    ((longlong)
                     (int)(&DAT_182bbb194)
                          [(longlong)*(int *)((longlong)&DAT_1832a4ddc + lVar2) * 0x6e0] * 0x4f4 +
                    (longlong)(int)(&DAT_182bbb194)[(longlong)iVar12 * 0x6e0]) * 4) == 0)) {
          DAT_18399eb60 = -1;
        }
      }
    }
  }
LAB_14003c160:
  if (DAT_183ebfd34 != DAT_1a4d3bd30) {
    FUN_140040490();
  }
  _DAT_183ebfd38 = _DAT_183ebfd38 + 1;
  if (0x1f < (uint)(DAT_183ebfd34 - _DAT_183ebfd3c)) {
    _DAT_183ebfd3c = DAT_183ebfd34 + -1;
  }
  if ((DAT_183f7c540 == -1) || ((&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] == -1)) {
    DAT_183f79df8 = 0;
  }
  else {
    iVar12 = (&DAT_18329e344)
             [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] * 0x1bfe];
    bVar3 = iVar12 < DAT_183f79df8;
    DAT_183f79df8 = iVar12;
    if (bVar3) {
      DAT_183f79dfc = DAT_1402783f4;
    }
  }
  if (DAT_183f79dfc <= DAT_1402781bc) {
    DAT_183f79dfc = 0.0;
  }
  else {
    DAT_183f79dfc = DAT_183f79dfc + DAT_140278b7c;
  }
  if (((DAT_183f7c540 == -1) || ((&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] == -1)) ||
     ((int)(&DAT_18329e380)
           [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] * 0x1bfe] < 1)) {
    DAT_183f7aed8 = 0.0;
  }
  else {
    DAT_183f7aed8 =
         (float)(int)(&DAT_18329e380)
                     [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] * 0x1bfe] *
         DAT_140278148;
    if (DAT_1402783a0 < DAT_183f7aed8) {
      DAT_183f7aed8 = DAT_1402783a0;
    }
  }
  if (((DAT_183f7c540 == -1) || ((&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] == -1)) ||
     (0x4a < (int)(&DAT_1832a5058)
                  [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] * 0x1bfe])) {
LAB_14003c306:
    if (DAT_1402783f4 < DAT_183f7aed8) {
      DAT_183f7aed8 = 1.0;
    }
  }
  else {
    fVar22 = (float)((&DAT_1832a5058)
                     [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] * 0x1bfe] +
                    -0x32) * DAT_140278198;
    if (fVar22 <= 0.0) {
      fVar22 = 0.0;
    }
    if (DAT_1402783f4 <= fVar22) {
      fVar22 = DAT_1402783f4;
    }
    DAT_183f7aed8 = DAT_1402783f4 - fVar22;
    if (DAT_183f7aed8 <= DAT_1402783b8) goto LAB_14003c306;
    DAT_183f7aed8 = 0.875;
  }
  if (DAT_183f7aedc <= 0.0) {
    DAT_183f7aedc = 0.0;
  }
  else {
    DAT_183f7aedc = DAT_183f7aedc + _DAT_140278b58;
  }
LAB_14003c346:
  piVar17 = (int *)&DAT_192e8f700;
  lVar13 = 0x80;
  do {
    if (0 < piVar17[-0x26]) {
      piVar17[-0x26] = piVar17[-0x26] + -1;
    }
    if (0 < *piVar17) {
      *piVar17 = *piVar17 + -1;
    }
    piVar17 = piVar17 + 0x4c;
    lVar13 = lVar13 + -1;
  } while (lVar13 != 0);
  if (0 < DAT_18399ef78) {
    DAT_18399ef78 = DAT_18399ef78 + -1;
  }
  if (0 < DAT_18399f184) {
    DAT_18399f184 = DAT_18399f184 + -1;
  }
  if (0 < DAT_18399f390) {
    DAT_18399f390 = DAT_18399f390 + -1;
  }
  if (0 < DAT_18399f59c) {
    DAT_18399f59c = DAT_18399f59c + -1;
  }
  if (0 < DAT_18399f7a8) {
    DAT_18399f7a8 = DAT_18399f7a8 + -1;
  }
  if (0 < DAT_18399f9b4) {
    DAT_18399f9b4 = DAT_18399f9b4 + -1;
  }
  if (0 < DAT_18399fbc0) {
    DAT_18399fbc0 = DAT_18399fbc0 + -1;
  }
  if (0 < DAT_18399fdcc) {
    DAT_18399fdcc = DAT_18399fdcc + -1;
  }
  if (0 < DAT_18399ffd8) {
    DAT_18399ffd8 = DAT_18399ffd8 + -1;
  }
  if (0 < DAT_1839a01e4) {
    DAT_1839a01e4 = DAT_1839a01e4 + -1;
  }
  if (0 < DAT_1839a03f0) {
    DAT_1839a03f0 = DAT_1839a03f0 + -1;
  }
  if (0 < DAT_1839a05fc) {
    DAT_1839a05fc = DAT_1839a05fc + -1;
  }
  if (0 < DAT_1839a0808) {
    DAT_1839a0808 = DAT_1839a0808 + -1;
  }
  if (0 < DAT_1839a0a14) {
    DAT_1839a0a14 = DAT_1839a0a14 + -1;
  }
  if (0 < DAT_1839a0c20) {
    DAT_1839a0c20 = DAT_1839a0c20 + -1;
  }
  if (0 < DAT_1839a0e2c) {
    DAT_1839a0e2c = DAT_1839a0e2c + -1;
  }
  if (0 < DAT_1839a1038) {
    DAT_1839a1038 = DAT_1839a1038 + -1;
  }
  if (0 < DAT_1839a1244) {
    DAT_1839a1244 = DAT_1839a1244 + -1;
  }
  if (0 < DAT_1839a1450) {
    DAT_1839a1450 = DAT_1839a1450 + -1;
  }
  if (0 < DAT_1839a165c) {
    DAT_1839a165c = DAT_1839a165c + -1;
  }
  if (0 < DAT_1839a1868) {
    DAT_1839a1868 = DAT_1839a1868 + -1;
  }
  if (0 < DAT_1839a1a74) {
    DAT_1839a1a74 = DAT_1839a1a74 + -1;
  }
  if (0 < DAT_1839a1c80) {
    DAT_1839a1c80 = DAT_1839a1c80 + -1;
  }
  if (0 < DAT_1839a1e8c) {
    DAT_1839a1e8c = DAT_1839a1e8c + -1;
  }
  if (0 < DAT_1839a2098) {
    DAT_1839a2098 = DAT_1839a2098 + -1;
  }
  if (0 < DAT_1839a22a4) {
    DAT_1839a22a4 = DAT_1839a22a4 + -1;
  }
  if (0 < DAT_1839a24b0) {
    DAT_1839a24b0 = DAT_1839a24b0 + -1;
  }
  if (0 < DAT_1839a26bc) {
    DAT_1839a26bc = DAT_1839a26bc + -1;
  }
  if (0 < DAT_1839a28c8) {
    DAT_1839a28c8 = DAT_1839a28c8 + -1;
  }
  if (0 < DAT_1839a2ad4) {
    DAT_1839a2ad4 = DAT_1839a2ad4 + -1;
  }
  if (0 < DAT_1839a2ce0) {
    DAT_1839a2ce0 = DAT_1839a2ce0 + -1;
  }
  if (0 < DAT_1839a2eec) {
    DAT_1839a2eec = DAT_1839a2eec + -1;
  }
  DAT_183ebfd58 = 0x3f000000;
  dVar11 = _DAT_1402782e8;
  if (DAT_183ebfaac == 4) {
    dVar11 = _DAT_1402782d8;
  }
  DAT_183ebfd54 = (float)((double)DAT_16b2a2ec0 * dVar11 + DAT_1402785e8);
  if (DAT_183ebfd4c != 0) {
    _DAT_183ebfd48 = 1;
  }
  iVar12 = SDL_GetTicks();
  fVar22 = 0.0;
  fVar21 = 0.0;
  fVar23 = 0.0;
  fVar24 = 0.0;
  fVar25 = 0.0;
  fVar26 = 0.0;
  fVar27 = 0.0;
  fVar28 = 0.0;
  *(int *)(&DAT_16b27e098 + (longlong)(int)DAT_16b27e094 * 4) = iVar12 - _DAT_16b27df84;
  DAT_16b27e094 = DAT_16b27e094 + 1 & 0x1f;
  piVar17 = (int *)&DAT_16b27e0a8;
  do {
    piVar1 = piVar17 + -4;
    piVar4 = piVar17 + -3;
    piVar5 = piVar17 + -2;
    piVar6 = piVar17 + -1;
    iVar12 = *piVar17;
    piVar7 = piVar17 + 1;
    piVar8 = piVar17 + 2;
    piVar9 = piVar17 + 3;
    piVar17 = piVar17 + 8;
    fVar22 = fVar22 + (float)*piVar1;
    fVar21 = fVar21 + (float)*piVar4;
    fVar23 = fVar23 + (float)*piVar5;
    fVar24 = fVar24 + (float)*piVar6;
    fVar25 = fVar25 + (float)iVar12;
    fVar26 = fVar26 + (float)*piVar7;
    fVar27 = fVar27 + (float)*piVar8;
    fVar28 = fVar28 + (float)*piVar9;
  } while ((longlong)piVar17 < 0x16b27e128);
  DAT_16b27e198 =
       (fVar23 + fVar27 + fVar22 + fVar25 + fVar24 + fVar28 + fVar21 + fVar26) * DAT_140278178;
  return 1;
}



===== FUN_14007f970 @ 14007f970 root=true =====

void FUN_14007f970(uint param_1)

{
  int iVar1;
  int *piVar2;
  longlong lVar3;
  uint uVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  
  lVar3 = (longlong)(int)param_1;
  if (param_1 < 0x400) {
    if ((*(int *)(&DAT_182bbb498 + lVar3 * 0x1b80) != 0) &&
       (0 < (int)(&DAT_182bbb2b8)[lVar3 * 0x6e0])) {
      FUN_1400cdff0(param_1);
    }
    if ((&DAT_182bbb194)[lVar3 * 0x6e0] == 0x1d) {
      DAT_183f7aee8 = DAT_183f7aee8 + -1;
    }
    if ((&DAT_182bbb1a4)[lVar3 * 0x6e0] != -1) {
      FUN_1400ca7c0(param_1,(&DAT_182bbb1a4)[lVar3 * 0x6e0],(&DAT_182bbb1ac)[lVar3 * 0x6e0]);
    }
    iVar1 = DAT_1ad04adc0;
    uVar4 = (&DAT_182bbb1b4)[lVar3 * 0x6e0];
    if (0 < (int)uVar4) {
      do {
        (&DAT_182bbb1b4)[lVar3 * 0x6e0] = uVar4 - 1;
        uVar4 = (&DAT_182bbb1b4)[(ulonglong)uVar4 + lVar3 * 0x6e0];
        (&DAT_182bbb1a8)[(longlong)(int)uVar4 * 0x6e0] = 0xffffffff;
        if ((iVar1 != 0) && (uVar4 < 0x400)) {
          (&DAT_18329b1e0)[(int)uVar4] = (&DAT_18329b1e0)[(int)uVar4] + 1;
        }
        uVar4 = (&DAT_182bbb1b4)[lVar3 * 0x6e0];
      } while (0 < (int)uVar4);
    }
    if ((&DAT_182bbb1a8)[lVar3 * 0x6e0] != -1) {
      FUN_1400ca9b0(param_1);
    }
    lVar6 = lVar3 * 0x6e0;
    uVar4 = 1;
    piVar2 = (int *)(&DAT_182bbb300 + lVar3 * 0x1b80);
    lVar5 = 2;
    lVar7 = 4;
    do {
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 + -2 >> 5) + lVar6) * 4) & uVar4) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar2[-2] * 0x9c) = 0;
      }
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 + -1 >> 5) + lVar6) * 4) & uVar4 << 1) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar2[-1] * 0x9c) = 0;
      }
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 >> 5) + lVar6) * 4) & uVar4 << 2) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)*piVar2 * 0x9c) = 0;
      }
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 + 1 >> 5) + lVar6) * 4) & uVar4 << 3) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar2[1] * 0x9c) = 0;
      }
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 + 2 >> 5) + lVar6) * 4) & uVar4 << 4) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar2[2] * 0x9c) = 0;
      }
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 + 3 >> 5) + lVar6) * 4) & uVar4 << 5) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar2[3] * 0x9c) = 0;
      }
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 + 4 >> 5) + lVar6) * 4) & uVar4 << 6) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar2[4] * 0x9c) = 0;
      }
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 + 5 >> 5) + lVar6) * 4) & uVar4 << 7) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar2[5] * 0x9c) = 0;
      }
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 + 6 >> 5) + lVar6) * 4) & uVar4 << 8) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar2[6] * 0x9c) = 0;
      }
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 + 7 >> 5) + lVar6) * 4) & uVar4 << 9) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar2[7] * 0x9c) = 0;
      }
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 + 8 >> 5) + lVar6) * 4) & uVar4 << 10) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar2[8] * 0x9c) = 0;
      }
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 + 9 >> 5) + lVar6) * 4) & uVar4 << 0xb) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar2[9] * 0x9c) = 0;
      }
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 + 10 >> 5) + lVar6) * 4) & uVar4 << 0xc) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar2[10] * 0x9c) = 0;
      }
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 + 0xb >> 5) + lVar6) * 4) & uVar4 << 0xd) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar2[0xb] * 0x9c) = 0;
      }
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 + 0xc >> 5) + lVar6) * 4) & uVar4 << 0xe) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar2[0xc] * 0x9c) = 0;
      }
      if ((*(uint *)(&DAT_182bbb2f0 + ((lVar5 + 0xd >> 5) + lVar6) * 4) & uVar4 << 0xf) != 0) {
        *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar2[0xd] * 0x9c) = 0;
      }
      lVar5 = lVar5 + 0x10;
      uVar4 = uVar4 << 0x10 | uVar4 >> 0x10;
      piVar2 = piVar2 + 0x10;
      lVar7 = lVar7 + -1;
    } while (lVar7 != 0);
    if (((&DAT_182bbb194)[lVar3 * 0x6e0] == 0x1b) && ((uint)(&DAT_182bbb400)[lVar3 * 0x6e0] < 0x200)
       ) {
      (&DAT_15f2d921c)[(longlong)(int)(&DAT_182bbb400)[lVar3 * 0x6e0] * 0x145a] = 0;
    }
    uVar4 = (&DAT_182bbb1d8)[lVar3 * 0x6e0];
    if ((uVar4 != 0xffffffff) && (uVar4 < 0x2000)) {
      (&DAT_1449816e0)[(longlong)(int)uVar4 * 0x2f] = 0;
    }
    (&DAT_182bbb180)[lVar3 * 0x6e0] = 0;
    if (iVar1 != 0) {
      (&DAT_18329b1e0)[lVar3] = (&DAT_18329b1e0)[lVar3] + 1;
    }
  }
  return;
}



===== FUN_1400f99a0 @ 1400f99a0 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400f99a0(void)

{
  float fVar1;
  float fVar2;
  bool bVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  byte bVar7;
  int iVar8;
  uint uVar9;
  undefined4 uVar10;
  float *pfVar11;
  undefined4 *puVar12;
  int *piVar13;
  float *pfVar14;
  longlong lVar15;
  int *piVar16;
  int iVar17;
  ulonglong uVar18;
  ulonglong uVar19;
  uint uVar20;
  ulonglong uVar21;
  ulonglong uVar22;
  ulonglong uVar23;
  ulonglong uVar24;
  int iVar25;
  ulonglong uVar26;
  bool bVar27;
  float fVar28;
  undefined1 auStack_e8 [32];
  float local_c8;
  float local_c4;
  float local_c0;
  undefined8 local_b8;
  undefined8 uStack_b0;
  undefined8 local_a8;
  undefined8 uStack_a0;
  undefined4 local_98;
  ulonglong local_90;
  
  local_90 = DAT_1403020a0 ^ (ulonglong)auStack_e8;
  piVar13 = &DAT_151620ce8;
  lVar15 = 0x100;
  do {
    if ((piVar13[-0x22] != 0) && (0 < *piVar13)) {
      *piVar13 = *piVar13 + -1;
    }
    fVar6 = DAT_1402784b0;
    fVar5 = DAT_140278280;
    fVar4 = DAT_140278164;
    piVar13 = piVar13 + 0xe0d;
    lVar15 = lVar15 + -1;
  } while (lVar15 != 0);
  if (DAT_183ebfccc != 1) {
    if (DAT_183ebfccc != 2) {
      if (DAT_183ebfccc != 3) {
        return;
      }
      DAT_183ebfcd4 = DAT_183ebfcd4 + -1;
      if (0 < DAT_183ebfcd4) {
        return;
      }
      uVar19 = 0;
      puVar12 = &DAT_151620cf0;
      do {
        if (puVar12[-0x24] != 0) {
          *puVar12 = 0;
        }
        if (puVar12[0xde9] != 0) {
          puVar12[0xe0d] = 0;
        }
        puVar12 = puVar12 + 0x1c1a;
      } while ((longlong)puVar12 < 0x1519a40f0);
      piVar13 = &DAT_183ebfdc4;
      uVar18 = uVar19;
      do {
        uVar24 = 0xffffffff;
        piVar16 = &DAT_151620ce4;
        uVar26 = 0xffffffffffffffff;
        uVar21 = uVar19;
        uVar22 = uVar19;
        uVar23 = uVar19;
        do {
          if ((((piVar16[-0x21] != 0) && (*piVar16 == (int)uVar18)) && (piVar16[-0x12] != -1)) &&
             ((int)uVar23 < (int)(&DAT_160361384)[(longlong)piVar16[-0x12] * 0x1c])) {
            uVar23 = (ulonglong)(uint)(&DAT_160361384)[(longlong)piVar16[-0x12] * 0x1c];
            uVar24 = uVar21;
            uVar26 = uVar22;
          }
          uVar9 = (int)uVar21 + 1;
          uVar21 = (ulonglong)uVar9;
          uVar22 = uVar22 + 1;
          piVar16 = piVar16 + 0xe0d;
        } while ((int)uVar9 < 0x100);
        iVar17 = (int)uVar24;
        if (iVar17 != -1) {
          (&DAT_151620cf0)[uVar26 * 0xe0d] = 1;
        }
        if (*piVar13 != iVar17) {
          *piVar13 = iVar17;
          piVar13[0x1616] = 0;
        }
        uVar18 = (ulonglong)((int)uVar18 + 1);
        piVar13 = piVar13 + 0x16f1;
      } while ((longlong)piVar13 < 0x183ecb54c);
      piVar13 = &DAT_151623978;
      do {
        if ((piVar13[-0xb46] != 0) && (*piVar13 == 0)) {
          FUN_140117340(uVar19);
        }
        uVar9 = (int)uVar19 + 1;
        uVar19 = (ulonglong)uVar9;
        piVar13 = piVar13 + 0xe0d;
      } while ((int)uVar9 < 0x100);
      FUN_140127910();
      return;
    }
    bVar3 = true;
    bVar27 = true;
    DAT_183ebfcd8 = DAT_183ebfcd8 + 1;
    DAT_183ebfcd4 = DAT_183ebfcd4 + -1;
    if (DAT_183f7a5f8 != 0) {
      iVar17 = 0;
      piVar13 = &DAT_151623978;
      do {
        if (((piVar13[-0xb46] != 0) && (*piVar13 == 0)) && (piVar13[-0xb1f] == -1)) {
          iVar25 = piVar13[-0xb25];
          if ((iVar25 != -1) && (iVar25 < 2)) {
            lVar15 = (longlong)iVar25 * 0x5bc4;
            fVar28 = *(float *)(&DAT_183ebfda0 + lVar15);
            fVar1 = *(float *)(&DAT_183ebfda4 + lVar15);
            fVar2 = *(float *)(&DAT_183ebfda8 + lVar15);
            bVar7 = FUN_14023b1b0();
            local_c8 = (float)(int)(bVar7 - 0x7f) * fVar4 + fVar28;
            bVar7 = FUN_14023b1b0();
            local_c4 = fVar1 - fVar5;
            local_98 = 0x3f800000;
            local_c0 = (float)(int)(bVar7 - 0x7f) * fVar4 + fVar2;
            fVar28 = (float)(&DAT_183ebfd90)[(longlong)piVar13[-0xb25] * 0x16f1] + fVar6;
            local_b8 = CONCAT44(_UNK_140278d34,_DAT_140278d30);
            uStack_b0 = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
            local_a8 = CONCAT44(_UNK_140278d34,_DAT_140278d30);
            uStack_a0 = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
            FUN_14007b2a0(&local_b8,(longlong)&uStack_b0 + 4,fVar28);
            iVar25 = piVar13[-0xb25];
            piVar13[0x2aa] = 1;
            if (piVar13[0x2ab] < 3) {
              piVar13[0x2ab] = iVar25;
            }
            if (iVar25 == 0) {
              piVar13[0x2ac] = 2;
            }
            else if (iVar25 == 1) {
              piVar13[0x2ac] = 9;
            }
            else if (iVar25 == 2) {
              piVar13[0x2ac] = 8;
            }
            iVar25 = FUN_140053840(&local_c8,&local_b8,iVar17);
            piVar13[-0xb1f] = iVar25;
            piVar13[-0xaed] = 0;
            piVar13[-0xb2c] = 0;
            (&DAT_18329e3a0)[(longlong)iVar25 * 0x1bfe] = fVar28;
            FUN_140051dc0(iVar17);
          }
        }
        iVar17 = iVar17 + 1;
        piVar13 = piVar13 + 0xe0d;
      } while (iVar17 < 0x100);
    }
    pfVar14 = (float *)&DAT_182bbb1dc;
    do {
      if ((pfVar14[-0x17] != 0.0) && (pfVar14[-0x12] == 2.38221e-44)) {
        pfVar11 = (float *)&DAT_183ebfd84;
        do {
          if ((((pfVar11[-3] <= *pfVar14) && (*pfVar14 < *pfVar11)) && (pfVar11[-2] <= pfVar14[1]))
             && (((pfVar14[1] < pfVar11[1] && (pfVar11[-1] <= pfVar14[2])) &&
                 (pfVar14[2] < pfVar11[2])))) goto LAB_1400fa0f0;
          pfVar11 = pfVar11 + 0x16f1;
        } while ((longlong)pfVar11 < 0x183ecb50c);
        bVar27 = false;
      }
LAB_1400fa0f0:
      pfVar14 = pfVar14 + 0x6e0;
      if (0x18329b1db < (longlong)pfVar14) {
        if (bVar27) {
          DAT_183ebfcd4 = DAT_183ebfcd4 + -5;
        }
        uVar9 = 0;
        piVar13 = (int *)&local_b8;
        uVar20 = 0;
        do {
          iVar17 = 0;
          *piVar13 = 0;
          piVar16 = &DAT_151623978;
          do {
            if (((piVar16[-0xb46] != 0) && (*piVar16 == 0)) &&
               ((piVar16[-0xb25] == uVar20 &&
                (uVar9 = uVar9 | 1 << (uVar20 & 0x1f), piVar16[-0xb1f] != -1)))) {
              iVar17 = iVar17 + 1;
              *piVar13 = iVar17;
            }
            piVar16 = piVar16 + 0xe0d;
          } while ((longlong)piVar16 < 0x1519a6d78);
          uVar20 = uVar20 + 1;
          piVar13 = piVar13 + 1;
        } while ((int)uVar20 < 2);
        if (DAT_183f7a5f8 == 0) {
          if ((uVar9 - 1 < 2) && ((0 < (int)local_b8 || (0 < local_b8._4_4_)))) {
            bVar3 = false;
          }
          if ((((uVar9 != 3) || ((int)local_b8 < 1)) || (local_b8._4_4_ < 1)) &&
             ((bVar3 && (0x3c < DAT_183ebfcd4)))) {
            DAT_183ebfcd4 = 0x3c;
            return;
          }
        }
        if (0 < DAT_183ebfcd4) {
          return;
        }
        FUN_1400f5480();
        DAT_183ebfccc = 3;
        DAT_183ebfcd4 = 0x2d0;
        return;
      }
    } while( true );
  }
  piVar16 = &DAT_151623978;
  iVar17 = 0;
  piVar13 = &DAT_151623978;
  lVar15 = 0x100;
  bVar27 = true;
  do {
    if ((piVar13[-0xb46] != 0) && (*piVar13 == 0)) {
      if ((uint)piVar13[-0xb25] < 2) {
        iVar17 = iVar17 + 1;
      }
      if (piVar13[-0xb34] == 0) {
        bVar27 = false;
      }
    }
    piVar13 = piVar13 + 0xe0d;
    lVar15 = lVar15 + -1;
  } while (lVar15 != 0);
  DAT_183ebfcd4 = DAT_183ebfcd4 + -1;
  if ((bVar27) && (0x3c < DAT_183ebfcd4)) {
    DAT_183ebfcd4 = 0x3c;
  }
  if (iVar17 == 0) {
    DAT_183ebfcd4 = 0x708;
    return;
  }
  if (0 < DAT_183ebfcd4) {
    return;
  }
  iVar25 = 0;
  do {
    if (((piVar16[-0xb46] != 0) && (*piVar16 == 0)) && (piVar16[-0xb1f] == -1)) {
      iVar8 = piVar16[-0xb25];
      if ((iVar8 != -1) && (iVar8 < 2)) {
        lVar15 = (longlong)iVar8 * 0x5bc4;
        fVar28 = *(float *)(&DAT_183ebfda0 + lVar15);
        fVar1 = *(float *)(&DAT_183ebfda4 + lVar15);
        fVar2 = *(float *)(&DAT_183ebfda8 + lVar15);
        bVar7 = FUN_14023b1b0();
        local_c8 = (float)(int)(bVar7 - 0x7f) * fVar4 + fVar28;
        bVar7 = FUN_14023b1b0();
        local_c4 = fVar1 - fVar5;
        local_98 = 0x3f800000;
        local_c0 = (float)(int)(bVar7 - 0x7f) * fVar4 + fVar2;
        fVar28 = (float)(&DAT_183ebfd90)[(longlong)piVar16[-0xb25] * 0x16f1] + fVar6;
        local_b8 = CONCAT44(_UNK_140278d34,_DAT_140278d30);
        uStack_b0 = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
        local_a8 = CONCAT44(_UNK_140278d34,_DAT_140278d30);
        uStack_a0 = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
        FUN_14007b2a0(&local_b8,(longlong)&uStack_b0 + 4,fVar28);
        iVar8 = piVar16[-0xb25];
        piVar16[0x2aa] = 1;
        if (piVar16[0x2ab] < 3) {
          piVar16[0x2ab] = iVar8;
        }
        if (iVar8 == 0) {
          piVar16[0x2ac] = 2;
        }
        else if (iVar8 == 1) {
          piVar16[0x2ac] = 9;
        }
        else if (iVar8 == 2) {
          piVar16[0x2ac] = 8;
        }
        iVar8 = FUN_140053840(&local_c8,&local_b8,iVar25);
        piVar16[-0xb1f] = iVar8;
        piVar16[-0xaed] = 0;
        (&DAT_18329e3a0)[(longlong)iVar8 * 0x1bfe] = fVar28;
        FUN_140051dc0(iVar25);
        FUN_140117020(iVar25);
      }
    }
    fVar28 = DAT_14027836c;
    iVar25 = iVar25 + 1;
    piVar16 = piVar16 + 0xe0d;
  } while (iVar25 < 0x100);
  iVar17 = (iVar17 >> 2) + 2;
  local_98 = 0x3f800000;
  local_c8 = (DAT_183ec5964 + _DAT_183ebfda0) * DAT_140278338;
  if (0xc < iVar17) {
    iVar17 = 0xc;
  }
  local_c4 = (DAT_183ec5968 + _DAT_183ebfda4) * DAT_140278338;
  local_b8 = CONCAT44(_UNK_140278d34,_DAT_140278d30);
  uStack_b0 = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
  if (DAT_183ebfcc4 == 5) {
    iVar17 = iVar17 * 2;
  }
  if (iVar17 < 0x13) {
    local_c0 = (float)iVar17 * DAT_1402782b0;
    if (iVar17 < 0) goto LAB_1400f9e66;
  }
  else {
    iVar17 = 0x12;
    local_c0 = _DAT_1402786d8;
  }
  local_c0 = (DAT_183ec596c + _DAT_183ebfda8) * DAT_140278338 - local_c0;
  uVar19 = (ulonglong)(iVar17 + 1);
  local_a8 = local_b8;
  uStack_a0 = uStack_b0;
  do {
    fVar4 = local_c0;
    uVar9 = FUN_140054130(0xf,&local_c8,0,&local_b8);
    lVar15 = (longlong)(int)uVar9;
    (&DAT_182bbb194)[lVar15 * 0x6e0] = 0x10;
    uVar10 = FUN_140054130(0x11,&local_c8,0,&local_b8);
    FUN_1400e35d0(uVar9,uVar10,0xffffffff);
    uVar10 = FUN_140054130(0x11,&local_c8,0,&local_b8);
    FUN_1400e35d0(uVar9,uVar10,0xffffffff);
    uVar10 = FUN_140054130(0x11,&local_c8,0,&local_b8);
    FUN_1400e35d0(uVar9,uVar10,0xffffffff);
    uVar10 = FUN_140054130(0x11,&local_c8);
    FUN_1400e35d0(uVar9,uVar10);
    bVar27 = DAT_1ad04adc0 != 0;
    (&DAT_182bbb194)[lVar15 * 0x6e0] = 0xf;
    if ((bVar27) && (uVar9 < 0x400)) {
      (&DAT_18329b1e0)[lVar15] = (&DAT_18329b1e0)[lVar15] + 1;
    }
    local_c0 = fVar4 + fVar28;
    uVar19 = uVar19 - 1;
  } while (uVar19 != 0);
LAB_1400f9e66:
  DAT_183ebfcd4 = DAT_183f7a600 * 0xe10;
  DAT_183ebfccc = 2;
  return;
}



===== FUN_1400299c0 @ 1400299c0 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400299c0(void)

{
  float fVar1;
  float fVar2;
  float fVar3;
  ulonglong uVar4;
  double dVar5;
  double dVar6;
  double dVar7;
  float fVar8;
  float fVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  int iVar18;
  int iVar19;
  ulonglong uVar20;
  longlong lVar21;
  uint uVar22;
  int *piVar23;
  uint *puVar24;
  int *piVar25;
  undefined *puVar26;
  undefined4 *puVar27;
  int *piVar28;
  float *pfVar29;
  longlong lVar30;
  uint *puVar31;
  longlong lVar32;
  longlong lVar33;
  longlong lVar34;
  int iVar35;
  uint uVar36;
  uint uVar38;
  double dVar37;
  double dVar39;
  uint uVar40;
  undefined1 auStack_128 [32];
  undefined *local_108;
  undefined *local_100;
  float *local_f8;
  int *local_f0;
  int *local_e8;
  longlong local_e0;
  longlong local_d8;
  float local_d0;
  uint uStack_cc;
  uint uStack_c8;
  uint uStack_c4;
  ulonglong local_c0;
  
  uVar17 = DAT_140301df4;
  uVar16 = DAT_140301df0;
  uVar14 = _UNK_14027987c;
  uVar13 = _UNK_140279878;
  uVar12 = _UNK_140279874;
  uVar11 = DAT_140279870;
  uVar10 = DAT_140279840;
  fVar9 = DAT_140278b0c;
  fVar8 = DAT_140278aac;
  dVar7 = DAT_1402786f8;
  dVar6 = DAT_1402786c0;
  dVar5 = DAT_1402786b0;
  local_c0 = DAT_1403020a0 ^ (ulonglong)auStack_128;
  lVar32 = (longlong)(int)DAT_140301df4;
  lVar33 = (longlong)(int)DAT_140301df0;
  iVar35 = 2;
  uVar40 = (uint)DAT_140279850;
  uVar4 = (ulonglong)DAT_140279850 >> 0x20;
  local_d8 = (ulonglong)(byte)DAT_1ad04b20c * 0x4dc00;
  local_f0 = &DAT_18399dae0;
  piVar23 = (int *)(&DAT_160fc4968 + local_d8);
  local_f8 = (float *)&DAT_18329e52c;
  local_100 = &DAT_18329e600;
  local_108 = &DAT_160fc4974 + local_d8;
  local_e0 = 0x100;
  do {
    pfVar29 = local_f8;
    puVar26 = local_100;
    fVar3 = local_f8[-0x89];
    piVar23[-2] = (int)fVar3;
    local_e8 = piVar23;
    if (fVar3 != 0.0) {
      fVar3 = local_f8[2];
      fVar1 = local_f8[1];
      *piVar23 = (int)(*local_f8 * fVar8 + fVar9);
      piVar23[1] = (int)(fVar1 * fVar8);
      piVar23[2] = (int)(fVar3 * fVar8 + fVar9);
      FUN_140114d40(local_108,local_100 + -0xa4);
      pfVar29 = pfVar29 + 0x33;
      puVar31 = (uint *)(piVar23 + 8);
      puVar24 = (uint *)(piVar23 + 0x37);
      lVar34 = 0x10;
      do {
        fVar3 = *pfVar29;
        puVar31[-1] = (int)((double)pfVar29[-1] * dVar6 + dVar7) & 0x3fff;
        fVar1 = pfVar29[1];
        *puVar31 = (int)((double)fVar3 * dVar6 + dVar7) & 0x3fff;
        puVar31[1] = (int)((double)fVar1 * dVar6 + dVar7) & 0x3fff;
        FUN_14010e370(&local_d0,puVar26);
        uVar15 = DAT_140301de8;
        dVar39 = (double)(float)(uStack_cc & uVar10);
        uVar36 = SUB84((double)local_d0,0) & uVar40;
        uVar38 = (uint)((ulonglong)(double)local_d0 >> 0x20) & (uint)uVar4;
        dVar37 = (double)CONCAT44(uVar38,uVar36);
        if ((double)CONCAT44(uVar38,uVar36) < dVar39) {
          dVar37 = dVar39;
        }
        uVar22 = (uint)((double)CONCAT44(uVar38,uVar36) <= dVar39 &&
                       dVar39 != (double)CONCAT44(uVar38,uVar36));
        uVar20 = (ulonglong)
                 ((double)CONCAT44(uVar38,uVar36) <= dVar39 &&
                 dVar39 != (double)CONCAT44(uVar38,uVar36));
        if (dVar37 < (double)(float)(uStack_c8 & uVar10)) {
          uVar22 = 2;
          uVar20 = 2;
          dVar37 = (double)(float)(uStack_c8 & uVar10);
        }
        if (dVar37 < (double)(float)(uStack_c4 & uVar10)) {
          uVar22 = 3;
          uVar20 = 3;
        }
        if ((&local_d0)[uVar20] <= 0.0 && (&local_d0)[uVar20] != 0.0) {
          local_d0 = (float)((uint)local_d0 ^ uVar11);
          uStack_cc = uStack_cc ^ uVar12;
          uStack_c8 = uStack_c8 ^ uVar13;
          uStack_c4 = uStack_c4 ^ uVar14;
        }
        lVar30 = (longlong)(int)DAT_140301de8;
        lVar21 = 1;
        *puVar24 = uVar22;
        if (uVar15 != uVar22) {
          lVar21 = 2;
          puVar24[1] = (int)((double)(&local_d0)[lVar30] * dVar5);
        }
        if (DAT_140301dec != uVar22) {
          puVar24[lVar21] = (int)((double)(&local_d0)[(int)DAT_140301dec] * dVar5);
          lVar21 = lVar21 + 1;
        }
        if (uVar16 != uVar22) {
          puVar24[lVar21] = (int)((double)(&local_d0)[lVar33] * dVar5);
          lVar21 = lVar21 + 1;
        }
        if (uVar17 != uVar22) {
          puVar24[lVar21] = (int)((double)(&local_d0)[lVar32] * dVar5);
        }
        puVar26 = puVar26 + 0x138;
        puVar24 = puVar24 + 4;
        pfVar29 = pfVar29 + 0x4e;
        puVar31 = puVar31 + 3;
        lVar34 = lVar34 + -1;
      } while (lVar34 != 0);
      local_e8[-1] = *local_f0;
    }
    lVar34 = local_d8;
    fVar3 = DAT_1402788d4;
    dVar37 = DAT_140278668;
    local_108 = local_108 + 0x1e4;
    local_100 = local_100 + 0x6ff8;
    local_f8 = local_f8 + 0x1bfe;
    local_f0 = local_f0 + 1;
    piVar23 = local_e8 + 0x79;
    local_e0 = local_e0 + -1;
  } while (local_e0 != 0);
  pfVar29 = (float *)&DAT_15f2d922c;
  puVar27 = &DAT_15f2d9244;
  lVar32 = 0x200;
  piVar28 = (int *)(&DAT_160fe2d80 + local_d8);
  piVar25 = (int *)(&DAT_160fe2d88 + local_d8);
  puVar26 = &DAT_160fe2d70 + local_d8;
  local_e0 = 0;
  local_e8 = piVar23;
  do {
    fVar1 = pfVar29[-0xb];
    piVar28[-8] = (int)fVar1;
    if (fVar1 != 0.0) {
      fVar1 = pfVar29[2];
      fVar2 = pfVar29[1];
      piVar28[-7] = (int)(*pfVar29 * fVar8 + fVar9);
      piVar28[-6] = (int)(fVar2 * fVar8);
      piVar28[-5] = (int)(fVar1 * fVar8 + fVar9);
      FUN_140114d40(puVar26,puVar27);
      iVar18 = (int)((double)pfVar29[0xe44] * dVar37);
      *piVar28 = iVar18;
      if (iVar18 < -0xff) {
        *piVar28 = -0xff;
      }
      else if (0xff < iVar18) {
        *piVar28 = 0xff;
      }
      iVar18 = (int)(pfVar29[0xe62] * fVar3);
      piVar25[-1] = iVar18;
      if (iVar18 < 0) {
        piVar25[-1] = 0;
      }
      else {
        if (0xff < iVar18) {
          iVar18 = 0xff;
        }
        piVar25[-1] = iVar18;
      }
      iVar18 = (int)(pfVar29[0xe56] * fVar3);
      *piVar25 = iVar18;
      if (iVar18 < -0xff) {
        *piVar25 = -0xff;
      }
      else {
        if (0xff < iVar18) {
          iVar18 = 0xff;
        }
        *piVar25 = iVar18;
      }
      iVar18 = (int)(pfVar29[0xe67] * fVar3);
      piVar25[1] = iVar18;
      if (iVar18 < 0) {
        piVar25[1] = 0;
      }
      else {
        if (0xff < iVar18) {
          iVar18 = 0xff;
        }
        piVar25[1] = iVar18;
      }
      iVar18 = (int)(pfVar29[0xe8d] * fVar3);
      piVar25[2] = iVar18;
      if (iVar18 < 0) {
        piVar25[2] = 0;
      }
      else {
        if (0xff < iVar18) {
          iVar18 = 0xff;
        }
        piVar25[2] = iVar18;
      }
      iVar18 = (int)(pfVar29[0xe81] * fVar3);
      piVar25[3] = iVar18;
      if (iVar18 < -0xff) {
        piVar25[3] = -0xff;
      }
      else {
        if (0xff < iVar18) {
          iVar18 = 0xff;
        }
        piVar25[3] = iVar18;
      }
      iVar18 = (int)(pfVar29[0xe92] * fVar3);
      piVar25[4] = iVar18;
      if (iVar18 < 0) {
        piVar25[4] = 0;
      }
      else {
        if (0xff < iVar18) {
          iVar18 = 0xff;
        }
        piVar25[4] = iVar18;
      }
      iVar18 = (int)(pfVar29[0xeb8] * fVar3);
      piVar25[5] = iVar18;
      if (iVar18 < 0) {
        piVar25[5] = 0;
      }
      else {
        if (0xff < iVar18) {
          iVar18 = 0xff;
        }
        piVar25[5] = iVar18;
      }
      iVar18 = (int)(pfVar29[0xeac] * fVar3);
      piVar25[6] = iVar18;
      if (iVar18 < -0xff) {
        piVar25[6] = -0xff;
      }
      else {
        if (0xff < iVar18) {
          iVar18 = 0xff;
        }
        piVar25[6] = iVar18;
      }
      iVar18 = (int)(pfVar29[0xebd] * fVar3);
      piVar25[7] = iVar18;
      if (iVar18 < 0) {
        piVar25[7] = 0;
      }
      else {
        if (0xff < iVar18) {
          iVar18 = 0xff;
        }
        piVar25[7] = iVar18;
      }
      iVar18 = (int)(pfVar29[0xee3] * fVar3);
      piVar25[8] = iVar18;
      if (iVar18 < 0) {
        piVar25[8] = 0;
      }
      else {
        if (0xff < iVar18) {
          iVar18 = 0xff;
        }
        piVar25[8] = iVar18;
      }
      iVar18 = (int)(pfVar29[0xed7] * fVar3);
      piVar25[9] = iVar18;
      if (iVar18 < -0xff) {
        piVar25[9] = -0xff;
      }
      else {
        if (0xff < iVar18) {
          iVar18 = 0xff;
        }
        piVar25[9] = iVar18;
      }
      iVar18 = (int)(pfVar29[0xee8] * fVar3);
      piVar25[10] = iVar18;
      if (iVar18 < 0) {
        piVar25[10] = 0;
      }
      else {
        if (0xff < iVar18) {
          iVar18 = 0xff;
        }
        piVar25[10] = iVar18;
      }
    }
    puVar27 = puVar27 + 0x145a;
    puVar26 = puVar26 + 0xe4;
    piVar28 = piVar28 + 0x39;
    pfVar29 = pfVar29 + 0x145a;
    piVar25 = piVar25 + 0x39;
    lVar32 = lVar32 + -1;
  } while (lVar32 != 0);
  lVar32 = 0x400;
  piVar23 = (int *)(&DAT_160fff568 + lVar34);
  puVar26 = &DAT_160fff574 + lVar34;
  piVar25 = &DAT_18329b1e0;
  pfVar29 = (float *)&DAT_182bbb1dc;
  puVar27 = &DAT_182bbb224;
  do {
    fVar3 = pfVar29[-0x17];
    piVar23[-2] = (int)fVar3;
    if (fVar3 != 0.0) {
      fVar3 = pfVar29[2];
      fVar1 = pfVar29[1];
      *piVar23 = (int)(*pfVar29 * fVar8 + fVar9);
      piVar23[1] = (int)(fVar1 * fVar8);
      piVar23[2] = (int)(fVar3 * fVar8 + fVar9);
      FUN_140114d40(puVar26,puVar27);
      piVar23[-1] = *piVar25;
    }
    iVar18 = DAT_15fe95260;
    puVar27 = puVar27 + 0x6e0;
    puVar26 = puVar26 + 0x24;
    pfVar29 = pfVar29 + 0x6e0;
    piVar25 = piVar25 + 1;
    piVar23 = piVar23 + 9;
    lVar32 = lVar32 + -1;
  } while (lVar32 != 0);
  puVar31 = (uint *)(&DAT_161008588 + lVar34);
  piVar23 = (int *)(&DAT_16100856c + lVar34);
  piVar25 = &DAT_15fe95284;
  pfVar29 = (float *)&DAT_15fd16274;
  do {
    puVar31[-10] = (uint)(iVar35 + -2 < iVar18);
    if (iVar35 + -2 < iVar18) {
      fVar3 = pfVar29[1];
      fVar1 = *pfVar29;
      piVar23[-1] = (int)(pfVar29[-1] * fVar8 + fVar9);
      fVar2 = pfVar29[5];
      *piVar23 = (int)(fVar1 * fVar8);
      piVar23[1] = (int)(fVar3 * fVar8 + fVar9);
      iVar19 = (int)((double)fVar2 * dVar37);
      if (iVar19 < -0xff) {
        iVar19 = -0xff;
      }
      else if (0xff < iVar19) {
        iVar19 = 0xff;
      }
      piVar23[6] = iVar19;
    }
    piVar23[-2] = piVar25[-1];
    *puVar31 = (uint)(iVar35 + -1 < iVar18);
    if (iVar35 + -1 < iVar18) {
      fVar3 = pfVar29[0x180];
      fVar1 = pfVar29[0x17f];
      piVar23[9] = (int)(pfVar29[0x17e] * fVar8 + fVar9);
      fVar2 = pfVar29[0x184];
      piVar23[10] = (int)(fVar1 * fVar8);
      piVar23[0xb] = (int)(fVar3 * fVar8 + fVar9);
      iVar19 = (int)((double)fVar2 * dVar37);
      if (iVar19 < -0xff) {
        iVar19 = -0xff;
      }
      else if (0xff < iVar19) {
        iVar19 = 0xff;
      }
      piVar23[0x10] = iVar19;
    }
    piVar23[8] = *piVar25;
    puVar31[10] = (uint)(iVar35 < iVar18);
    if (iVar35 < iVar18) {
      fVar3 = pfVar29[0x2ff];
      fVar1 = pfVar29[0x2fe];
      piVar23[0x13] = (int)(pfVar29[0x2fd] * fVar8 + fVar9);
      fVar2 = pfVar29[0x303];
      piVar23[0x14] = (int)(fVar1 * fVar8);
      piVar23[0x15] = (int)(fVar3 * fVar8 + fVar9);
      iVar19 = (int)((double)fVar2 * dVar37);
      if (iVar19 < -0xff) {
        iVar19 = -0xff;
      }
      else if (0xff < iVar19) {
        iVar19 = 0xff;
      }
      piVar23[0x1a] = iVar19;
    }
    piVar23[0x12] = piVar25[1];
    puVar31[0x14] = (uint)(iVar35 + 1 < iVar18);
    if (iVar35 + 1 < iVar18) {
      fVar3 = pfVar29[0x47e];
      fVar1 = pfVar29[0x47d];
      piVar23[0x1d] = (int)(pfVar29[0x47c] * fVar8 + fVar9);
      fVar2 = pfVar29[0x482];
      piVar23[0x1e] = (int)(fVar1 * fVar8);
      piVar23[0x1f] = (int)(fVar3 * fVar8 + fVar9);
      iVar19 = (int)((double)fVar2 * dVar37);
      if (iVar19 < -0xff) {
        iVar19 = -0xff;
      }
      else if (0xff < iVar19) {
        iVar19 = 0xff;
      }
      piVar23[0x24] = iVar19;
    }
    piVar23[0x1c] = piVar25[2];
    puVar31[0x1e] = (uint)(iVar35 + 2 < iVar18);
    if (iVar35 + 2 < iVar18) {
      fVar3 = pfVar29[0x5fd];
      fVar1 = pfVar29[0x5fc];
      piVar23[0x27] = (int)(pfVar29[0x5fb] * fVar8 + fVar9);
      fVar2 = pfVar29[0x601];
      piVar23[0x28] = (int)(fVar1 * fVar8);
      piVar23[0x29] = (int)(fVar3 * fVar8 + fVar9);
      iVar19 = (int)((double)fVar2 * dVar37);
      if (iVar19 < -0xff) {
        iVar19 = -0xff;
      }
      else if (0xff < iVar19) {
        iVar19 = 0xff;
      }
      piVar23[0x2e] = iVar19;
    }
    piVar23[0x26] = piVar25[3];
    puVar31[0x28] = (uint)(iVar35 + 3 < iVar18);
    if (iVar35 + 3 < iVar18) {
      fVar3 = pfVar29[0x77c];
      fVar1 = pfVar29[0x77b];
      piVar23[0x31] = (int)(pfVar29[0x77a] * fVar8 + fVar9);
      fVar2 = pfVar29[0x780];
      piVar23[0x32] = (int)(fVar1 * fVar8);
      piVar23[0x33] = (int)(fVar3 * fVar8 + fVar9);
      iVar19 = (int)((double)fVar2 * dVar37);
      if (iVar19 < -0xff) {
        iVar19 = -0xff;
      }
      else if (0xff < iVar19) {
        iVar19 = 0xff;
      }
      piVar23[0x38] = iVar19;
    }
    piVar23[0x30] = piVar25[4];
    puVar31[0x32] = (uint)(iVar35 + 4 < iVar18);
    if (iVar35 + 4 < iVar18) {
      fVar3 = pfVar29[0x8fb];
      fVar1 = pfVar29[0x8fa];
      piVar23[0x3b] = (int)(pfVar29[0x8f9] * fVar8 + fVar9);
      fVar2 = pfVar29[0x8ff];
      piVar23[0x3c] = (int)(fVar1 * fVar8);
      piVar23[0x3d] = (int)(fVar3 * fVar8 + fVar9);
      iVar19 = (int)((double)fVar2 * dVar37);
      if (iVar19 < -0xff) {
        iVar19 = -0xff;
      }
      else if (0xff < iVar19) {
        iVar19 = 0xff;
      }
      piVar23[0x42] = iVar19;
    }
    piVar23[0x3a] = piVar25[5];
    puVar31[0x3c] = (uint)(iVar35 + 5 < iVar18);
    if (iVar35 + 5 < iVar18) {
      fVar3 = pfVar29[0xa7a];
      fVar1 = pfVar29[0xa79];
      piVar23[0x45] = (int)(pfVar29[0xa78] * fVar8 + fVar9);
      fVar2 = pfVar29[0xa7e];
      piVar23[0x46] = (int)(fVar1 * fVar8);
      piVar23[0x47] = (int)(fVar3 * fVar8 + fVar9);
      iVar19 = (int)((double)fVar2 * dVar37);
      if (iVar19 < -0xff) {
        iVar19 = -0xff;
      }
      else if (0xff < iVar19) {
        iVar19 = 0xff;
      }
      piVar23[0x4c] = iVar19;
    }
    pfVar29 = pfVar29 + 0xbf8;
    piVar23[0x44] = piVar25[6];
    piVar25 = piVar25 + 8;
    piVar23 = piVar23 + 0x50;
    puVar31 = puVar31 + 0x50;
    iVar35 = iVar35 + 8;
  } while ((longlong)pfVar29 < 0x15fe95274);
  return;
}



===== FUN_1400c3ab0 @ 1400c3ab0 root=true =====

undefined8 FUN_1400c3ab0(int param_1,int param_2,int param_3)

{
  byte bVar1;
  int iVar2;
  longlong lVar3;
  ulonglong uVar4;
  int iVar5;
  uint uVar6;
  
  lVar3 = (longlong)param_1 * 0x1b80;
  if (8 < *(int *)(&DAT_182bbb424 + lVar3)) {
    return 0;
  }
  iVar5 = *(int *)(&DAT_182bbb424 + lVar3) + 1;
  *(int *)(&DAT_182bbb424 + lVar3) = iVar5;
  if (param_2 < iVar5) {
    uVar6 = *(uint *)(&DAT_182bbb428 + lVar3);
    iVar2 = iVar5 * 3;
    uVar4 = (ulonglong)(uint)(iVar5 - param_2);
    do {
      bVar1 = (byte)iVar2;
      iVar2 = iVar2 + -3;
      uVar6 = uVar6 & ~(7 << (bVar1 & 0x1f)) | (uVar6 >> (bVar1 - 3 & 0x1f) & 7) << (bVar1 & 0x1f);
      uVar4 = uVar4 - 1;
    } while (uVar4 != 0);
    *(uint *)(&DAT_182bbb428 + lVar3) = uVar6;
    iVar5 = param_2;
  }
  bVar1 = (char)iVar5 * '\x03';
  *(uint *)(&DAT_182bbb428 + lVar3) =
       ~(7 << (bVar1 & 0x1f)) & *(uint *)(&DAT_182bbb428 + lVar3) | param_3 << (bVar1 & 0x1f);
  *(int *)(&DAT_182bbb420 + lVar3) = *(int *)(&DAT_182bbb420 + lVar3) + 1;
  return 1;
}



===== FUN_1400efad0 @ 1400efad0 root=true =====

int FUN_1400efad0(int param_1,int param_2)

{
  bool bVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  int iVar5;
  longlong lVar6;
  int *piVar7;
  undefined4 *puVar8;
  int iVar9;
  
  lVar3 = (longlong)param_2;
  bVar1 = false;
  iVar9 = 0;
  piVar7 = &DAT_182bbb194;
  iVar5 = 0;
  puVar8 = &DAT_182bbb1dc;
  lVar6 = (longlong)param_1;
  do {
    if ((piVar7[-5] != 0) && (iVar2 = FUN_14011b960(puVar8,param_1,0), iVar2 != 0)) {
      if (*piVar7 == 0x12) {
        iVar2 = FUN_1400c3d10(iVar5);
        iVar9 = iVar9 + iVar2;
      }
      else if (((&DAT_183ebff08)[lVar6 * 0x16f1 + lVar3 * 0x117] != 0) &&
              (iVar5 == (&DAT_183ebff0c)[lVar6 * 0x16f1 + lVar3 * 0x117])) {
        bVar1 = true;
      }
    }
    iVar5 = iVar5 + 1;
    puVar8 = puVar8 + 0x6e0;
    piVar7 = piVar7 + 0x6e0;
  } while (iVar5 < 0x400);
  if (0 < *(int *)(&DAT_1820eab6c + lVar6 * 0x2828)) {
    lVar4 = 0;
    piVar7 = (int *)(&DAT_1820eab70 + lVar6 * 0x2828);
    do {
      if (*piVar7 == *(int *)(&DAT_183ebff14 + lVar3 * 0x45c + lVar6 * 0x5bc4)) {
        bVar1 = true;
        break;
      }
      lVar4 = lVar4 + 1;
      piVar7 = piVar7 + 6;
    } while (lVar4 < *(int *)(&DAT_1820eab6c + lVar6 * 0x2828));
  }
  if ((uint)(&DAT_183ebff08)[lVar6 * 0x16f1 + lVar3 * 0x117] < 2) {
    if (bVar1) {
      iVar5 = (int)(&DAT_183ebff3c)[lVar6 * 0x16f1 + lVar3 * 0x117] / 10;
    }
    else {
      iVar5 = -10;
    }
    iVar5 = iVar5 + iVar9 / 10;
    if (bVar1) {
      return iVar5;
    }
  }
  else {
    iVar5 = iVar9 / 10 - (int)(&DAT_183ebff48)[lVar6 * 0x16f1 + lVar3 * 0x117] / 10;
    if ((&DAT_183ebff08)[lVar6 * 0x16f1 + lVar3 * 0x117] == 2) {
      iVar2 = iVar5 + 0x32;
      if (iVar5 < 0) {
        iVar2 = iVar5;
      }
      iVar5 = iVar2;
      if (bVar1) {
        if (iVar2 < -10) {
          return -10;
        }
        return iVar2 + 10;
      }
    }
    else if (bVar1) {
      return iVar5 + (int)(&DAT_183ebff3c)[lVar6 * 0x16f1 + lVar3 * 0x117] / 10;
    }
  }
  if ((iVar9 < 1) && (DAT_16b2a2ec0 <= (int)(&DAT_183ebff40)[lVar6 * 0x16f1 + lVar3 * 0x117])) {
    return -10000;
  }
  return iVar5;
}



===== FUN_14018db20 @ 14018db20 root=true =====

void FUN_14018db20(int param_1)

{
  int iVar1;
  longlong lVar2;
  int local_res8 [2];
  
  lVar2 = (longlong)param_1;
  FUN_140115ae0(&DAT_182bbb194 + lVar2 * 0x6e0,8);
  FUN_140115ae0(local_res8,10);
  iVar1 = local_res8[0];
  if (local_res8[0] == 0x3ff) {
    iVar1 = -1;
  }
  (&DAT_182bbb1a8)[lVar2 * 0x6e0] = iVar1;
  FUN_140115ae0(local_res8,10);
  if (local_res8[0] == 0x3ff) {
    local_res8[0] = -1;
  }
  (&DAT_182bbb1a4)[lVar2 * 0x6e0] = local_res8[0];
  FUN_140115ae0(&DAT_182bbb1ac + lVar2 * 0x6e0,4);
  if ((&DAT_182bbb194)[lVar2 * 0x6e0] == 0x27) {
    FUN_140115ae0(&DAT_182bbb4e8 + lVar2 * 0x6e0,5);
    FUN_140115ae0(&DAT_182bbb4ec + lVar2 * 0x6e0,5);
  }
  return;
}



===== FUN_1400c9b60 @ 1400c9b60 root=true =====

void FUN_1400c9b60(int param_1)

{
  int iVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  
  lVar3 = (longlong)param_1;
  iVar2 = (&DAT_182bbc7dc)[lVar3 * 0x6e0];
  if (iVar2 == 0) {
    FUN_1400c3ed0(param_1);
    iVar2 = (&DAT_182bbc7dc)[lVar3 * 0x6e0];
  }
  if (((iVar2 == 1) && (0 < (int)(&DAT_182bbcbec)[lVar3 * 0x6e0])) &&
     (iVar1 = (&DAT_182bbcbec)[lVar3 * 0x6e0] + -1, (&DAT_182bbcbec)[lVar3 * 0x6e0] = iVar1,
     iVar1 == 0)) {
    iVar2 = FUN_14023b1b0();
    iVar1 = 0;
    iVar2 = iVar2 % 0x1a;
    lVar4 = lVar3 * 0x6e0;
    do {
      if ((*(int *)(&DAT_182bbcae8 + (*(int *)(&DAT_182bbc9e8 + (iVar2 + lVar4) * 4) + lVar4) * 4)
           != 0) &&
         (*(int *)(&DAT_182bbcb68 + (*(int *)(&DAT_182bbc9e8 + (iVar2 + lVar4) * 4) + lVar4) * 4) ==
          -1)) break;
      iVar2 = FUN_14023b1b0();
      iVar1 = iVar1 + 1;
      iVar2 = iVar2 % 0x1a;
    } while (iVar1 < 1000);
    *(int *)(&DAT_182bbcb68 + (*(int *)(&DAT_182bbc9e8 + (iVar2 + lVar4) * 4) + lVar4) * 4) = iVar2;
    FUN_1400c5750(param_1);
    (&DAT_182bbb534)[lVar3 * 0x1b80] = 0;
    FUN_140050f90(param_1,1);
    iVar2 = (&DAT_182bbc7dc)[lVar3 * 0x6e0];
  }
  if (iVar2 == 2) {
    FUN_1400c8500(param_1);
    iVar2 = (&DAT_182bbc7dc)[lVar3 * 0x6e0];
  }
  if (iVar2 == 3) {
    FUN_1400c9820(param_1);
    return;
  }
  return;
}



===== FUN_14002db60 @ 14002db60 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_14002db60(float param_1,int param_2)

{
  float fVar1;
  float fVar2;
  float fVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  longlong lVar7;
  int *piVar8;
  ulonglong uVar9;
  longlong lVar10;
  longlong lVar11;
  ulonglong uVar12;
  longlong lVar13;
  int *piVar14;
  uint uVar15;
  ulonglong uVar16;
  int *piVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  float fVar22;
  float fVar23;
  float fVar24;
  float fVar25;
  float fVar26;
  float fVar27;
  float fVar28;
  undefined1 auStack_138 [32];
  int local_118;
  float local_110;
  float local_108;
  float local_f8;
  longlong local_f0;
  longlong local_e8;
  float local_e0;
  float local_dc;
  float local_d8;
  ulonglong local_d0;
  
  fVar23 = DAT_140278864;
  fVar3 = DAT_140278728;
  fVar2 = DAT_140278338;
  fVar1 = DAT_140278224;
  local_d0 = DAT_1403020a0 ^ (ulonglong)auStack_138;
  lVar7 = (longlong)(int)param_1;
  if (DAT_151e461c0 == 0) {
    (&DAT_1a8e3da7c)[lVar7 * 0xb878] = 0;
    (&DAT_1a8e3daa4)[lVar7 * 0xb878] = 0;
    (&DAT_1a8e3dacc)[lVar7 * 0xb878] = 0;
    (&DAT_1a8e3daf4)[lVar7 * 0xb878] = 0;
    (&DAT_1a8e3db1c)[lVar7 * 0xb878] = 0;
    (&DAT_1a8e3db44)[lVar7 * 0xb878] = 0;
    (&DAT_1a8e3db6c)[lVar7 * 0xb878] = 0;
    (&DAT_1a8e3db94)[lVar7 * 0xb878] = 0;
  }
  else {
    lVar10 = (longlong)(int)(&DAT_151620cfc)[(longlong)param_2 * 0xe0d];
    if ((&DAT_151620cfc)[(longlong)param_2 * 0xe0d] == -1) {
      lVar13 = (longlong)*(int *)(&DAT_1a8e3dbbc + lVar7 * 0x2e1e0);
      fVar26 = DAT_18329e8d4;
      fVar27 = DAT_18329e8d8;
      fVar28 = DAT_18329e8dc;
      if (*(int *)(&DAT_1a8e3dbbc + lVar7 * 0x2e1e0) != -1) {
        fVar26 = (&DAT_18329e8d4)[lVar13 * 0x1bfe];
        fVar27 = (&DAT_18329e8d8)[lVar13 * 0x1bfe];
        fVar28 = (&DAT_18329e8dc)[lVar13 * 0x1bfe];
      }
    }
    else {
      fVar26 = (&DAT_18329e8d4)[lVar10 * 0x1bfe];
      fVar27 = (&DAT_18329e8d8)[lVar10 * 0x1bfe];
      fVar28 = (&DAT_18329e8dc)[lVar10 * 0x1bfe];
    }
    lVar13 = 8;
    local_f0 = lVar7 * 0x2e1e0;
    piVar14 = &DAT_1a8e3da7c + lVar7 * 0xb878;
    uVar16 = 0;
    fVar21 = DAT_1402783f4;
    local_f8 = param_1;
    local_e0 = fVar26;
    local_dc = fVar27;
    local_d8 = fVar28;
    do {
      fVar18 = fVar21;
      if (*piVar14 != 0) {
        lVar7 = (longlong)piVar14[1];
        if ((&DAT_151620c60)[lVar7 * 0xe0d] == 0) {
          *piVar14 = 0;
        }
        lVar11 = (longlong)piVar14[3];
        if (piVar14[3] == -1) {
          param_1 = fVar3;
          if (((&DAT_187bde868)[lVar7 * 0x8085] != 0) &&
             (param_1 = DAT_140278814, (&DAT_187bde868)[lVar7 * 0x8085] != 1)) {
            param_1 = fVar23;
          }
          iVar4 = (&DAT_151620cfc)[lVar7 * 0xe0d];
          lVar11 = (longlong)iVar4;
          piVar14[2] = iVar4;
          if ((&DAT_187bde860)[lVar7 * 0x8085] != 0) {
            *piVar14 = 0;
          }
          if (DAT_183ebfccc != 3) {
            if (lVar10 == -1) {
              if (iVar4 != -1) goto LAB_14002ddf9;
            }
            else if (iVar4 == -1) {
              *piVar14 = 0;
            }
            else {
LAB_14002ddf9:
              if (DAT_18329e344 < 1) {
                *piVar14 = 0;
              }
              fVar21 = (&DAT_18329e8d4)[lVar11 * 0x1bfe];
              fVar18 = (&DAT_18329e8d8)[lVar11 * 0x1bfe];
              fVar25 = fVar26 - fVar21;
              fVar21 = fVar21 - fVar26;
              fVar22 = (&DAT_18329e8dc)[lVar11 * 0x1bfe] - fVar28;
              fVar19 = fVar18 - fVar27;
              fVar20 = fVar28 - (&DAT_18329e8dc)[lVar11 * 0x1bfe];
              piVar14[8] = (int)SQRT(fVar19 * fVar19 + fVar21 * fVar21 + fVar22 * fVar22);
              fVar21 = DAT_1402783f4;
              fVar18 = fVar27 - fVar18;
              fVar22 = fVar2;
              if ((fVar25 * fVar25 + fVar18 * fVar18 + fVar20 * fVar20 <= DAT_140278ac8) &&
                 (iVar4 = FUN_1400dc050(&DAT_18329e8d4 + lVar11 * 0x1bfe,&local_e0,0),
                 fVar22 = fVar21, fVar26 = local_e0, fVar27 = local_dc, fVar28 = local_d8,
                 iVar4 != 0)) {
                fVar22 = fVar2;
              }
              piVar14[9] = (int)((fVar22 - (float)piVar14[9]) * fVar1 + (float)piVar14[9]);
            }
            fVar18 = DAT_1402783f4;
            if (param_1 * (float)piVar14[9] < (float)piVar14[8]) goto LAB_14002e092;
          }
        }
        else {
          if ((&DAT_187bde860)[lVar7 * 0x8085] != 0) {
            *piVar14 = 0;
          }
          if ((&DAT_182bbb194)[lVar11 * 0x6e0] == 0x19) {
            lVar7 = (longlong)(int)(&DAT_182bbb2dc)[lVar11 * 0x6e0];
            if ((&DAT_182bbb2dc)[lVar11 * 0x6e0] != -1) {
              if ((&DAT_182bbb1a4)[lVar7 * 0x6e0] == -1) {
                *piVar14 = 0;
              }
              if ((&DAT_182bbb1ac)[lVar7 * 0x6e0] != 0) {
                *piVar14 = 0;
              }
              if ((&DAT_182bbb2dc)[lVar7 * 0x6e0] == -1) {
                *piVar14 = 0;
              }
              if ((&DAT_182bbb3fc)[lVar7 * 0x6e0] == 3) goto LAB_14002dfaa;
            }
LAB_14002dfa7:
            *piVar14 = 0;
          }
          else if ((&DAT_182bbb194)[lVar11 * 0x6e0] == 0x1a) {
            lVar7 = (longlong)piVar14[4];
            if ((&DAT_182bbb180)[lVar7 * 0x6e0] == 0) {
              *piVar14 = 0;
            }
            if ((&DAT_182bbb1a4)[lVar7 * 0x6e0] == -1) {
              *piVar14 = 0;
            }
            if (1 < (int)(&DAT_182bbb1ac)[lVar7 * 0x6e0]) {
              *piVar14 = 0;
            }
            if ((&DAT_182bbb4ec)[lVar7 * 0x6e0] == 0) goto LAB_14002dfa7;
          }
LAB_14002dfaa:
          fVar18 = (float)(&DAT_182bbb1dc)[lVar11 * 0x6e0];
          fVar20 = fVar18 - fVar26;
          fVar19 = (float)(&DAT_182bbb1e0)[lVar11 * 0x6e0] - fVar27;
          fVar22 = (float)(&DAT_182bbb1e4)[lVar11 * 0x6e0] - fVar28;
          fVar18 = fVar26 - fVar18;
          fVar25 = fVar28 - (float)(&DAT_182bbb1e4)[lVar11 * 0x6e0];
          fVar22 = SQRT(fVar19 * fVar19 + fVar20 * fVar20 + fVar22 * fVar22);
          fVar24 = fVar27 - (float)(&DAT_182bbb1e0)[lVar11 * 0x6e0];
          piVar14[8] = (int)fVar22;
          fVar20 = DAT_1402783f4;
          fVar19 = fVar2;
          if (fVar24 * fVar24 + fVar18 * fVar18 + fVar25 * fVar25 <= DAT_140278ac8) {
            iVar4 = FUN_1400dc050(&DAT_182bbb1dc + lVar11 * 0x6e0,&local_e0,0);
            if (iVar4 != 0) {
              fVar20 = fVar2;
            }
            fVar22 = (float)piVar14[8];
            fVar19 = fVar20;
            fVar26 = local_e0;
            fVar27 = local_dc;
            fVar28 = local_d8;
          }
          fVar18 = DAT_1402783f4;
          fVar20 = (fVar19 - (float)piVar14[9]) * fVar1 + (float)piVar14[9];
          piVar14[9] = (int)fVar20;
          param_1 = fVar21;
          if (fVar20 < fVar22) {
LAB_14002e092:
            *piVar14 = 0;
          }
        }
      }
      fVar22 = DAT_140278688;
      piVar14 = piVar14 + 10;
      lVar13 = lVar13 + -1;
      fVar21 = fVar18;
    } while (lVar13 != 0);
    piVar14 = &DAT_151620cfc;
    piVar17 = &DAT_187bde868;
    uVar9 = uVar16;
    do {
      fVar1 = DAT_1402783f4;
      iVar4 = (int)uVar9;
      fVar21 = param_1;
      if (((iVar4 != param_2) && (piVar14[-0x27] != 0)) && (piVar17[-2] == 0)) {
        piVar8 = (int *)(&DAT_1a8e3da80 + local_f0);
        uVar12 = uVar16;
        do {
          if (((piVar8[-1] != 0) && (*piVar8 == iVar4)) && (piVar8[1] == *piVar14))
          goto LAB_14002e292;
          uVar12 = uVar12 + 1;
          piVar8 = piVar8 + 10;
        } while ((longlong)uVar12 < 8);
        fVar20 = fVar22;
        if (DAT_183ebfccc == 3) {
LAB_14002e154:
          lVar7 = (longlong)*piVar14;
          if ((*piVar14 != -1) && (DAT_183ebfccc != 3)) {
            fVar21 = (&DAT_18329e8d4)[lVar7 * 0x1bfe];
            fVar20 = fVar21 - fVar26;
            fVar25 = (&DAT_18329e8d8)[lVar7 * 0x1bfe] - fVar27;
            fVar18 = (&DAT_18329e8dc)[lVar7 * 0x1bfe] - fVar28;
            fVar21 = fVar26 - fVar21;
            fVar19 = fVar28 - (&DAT_18329e8dc)[lVar7 * 0x1bfe];
            fVar20 = SQRT(fVar25 * fVar25 + fVar20 * fVar20 + fVar18 * fVar18);
            fVar25 = fVar27 - (&DAT_18329e8d8)[lVar7 * 0x1bfe];
            fVar18 = fVar2;
            if ((fVar25 * fVar25 + fVar21 * fVar21 + fVar19 * fVar19 <= DAT_140278ac8) &&
               (iVar5 = FUN_1400dc050(&DAT_18329e8d4 + lVar7 * 0x1bfe,&local_e0,0), fVar18 = fVar1,
               fVar26 = local_e0, fVar27 = local_dc, fVar28 = local_d8, iVar5 != 0)) {
              fVar18 = fVar2;
            }
          }
        }
        else {
          iVar5 = *piVar14;
          if (lVar10 != -1) {
            if (iVar5 == -1) goto LAB_14002e292;
LAB_14002e13f:
            if ((&DAT_18329e344)[(longlong)iVar5 * 0x1bfe] < 1) goto LAB_14002e292;
            goto LAB_14002e154;
          }
          if (iVar5 != -1) goto LAB_14002e13f;
        }
        iVar5 = *piVar17;
        fVar21 = fVar3;
        if (((iVar5 != 0) && (fVar21 = DAT_140278814, iVar5 != 1)) && (fVar21 = param_1, iVar5 == 2)
           ) {
          fVar21 = fVar23;
        }
        if (fVar20 < fVar18 * fVar21) {
          local_118 = -1;
          local_110 = fVar20;
          local_108 = fVar18;
          FUN_140007490(local_f8,uVar9,*piVar14,0xffffffff);
        }
      }
LAB_14002e292:
      uVar9 = (ulonglong)(iVar4 + 1U);
      piVar17 = piVar17 + 0x8085;
      piVar14 = piVar14 + 0xe0d;
      fVar18 = DAT_1402783f4;
      param_1 = fVar21;
    } while ((int)(iVar4 + 1U) < 0x100);
    piVar14 = &DAT_182bbb2dc;
    uVar9 = uVar16;
    do {
      fVar3 = DAT_140278ac8;
      fVar1 = DAT_1402783f4;
      iVar4 = (int)uVar9;
      if (piVar14[-0x57] != 0) {
        if (piVar14[-0x52] == 0x19) {
          iVar5 = *piVar14;
          lVar7 = (longlong)iVar5;
          if (((iVar5 != -1) && (piVar14[-0x4e] != -1)) &&
             ((piVar14[-0x4c] == 0 && (piVar14[0x48] == 3)))) {
            iVar6 = (&DAT_18329e310)[(longlong)piVar14[-0x4e] * 0x1bfe];
            if ((iVar6 != -1) && ((&DAT_187bde860)[(longlong)iVar6 * 0x8085] == 0)) {
              piVar17 = (int *)(&DAT_1a8e3da80 + local_f0);
              uVar9 = uVar16;
              do {
                if (((piVar17[-1] != 0) && (*piVar17 == iVar6)) && (piVar17[2] == iVar5))
                goto LAB_14002e69d;
                uVar9 = uVar9 + 1;
                piVar17 = piVar17 + 10;
              } while ((longlong)uVar9 < 8);
              if ((&DAT_182bbb2dc)[lVar7 * 0x6e0] == iVar4) {
                fVar23 = (float)(&DAT_182bbb1dc)[lVar7 * 0x6e0];
                fVar22 = fVar23 - fVar26;
                fVar20 = (float)(&DAT_182bbb1e0)[lVar7 * 0x6e0] - fVar27;
                fVar21 = (float)(&DAT_182bbb1e4)[lVar7 * 0x6e0] - fVar28;
                fVar23 = fVar26 - fVar23;
                fVar18 = fVar28 - (float)(&DAT_182bbb1e4)[lVar7 * 0x6e0];
                fVar20 = SQRT(fVar20 * fVar20 + fVar22 * fVar22 + fVar21 * fVar21);
                fVar22 = fVar27 - (float)(&DAT_182bbb1e0)[lVar7 * 0x6e0];
                fVar21 = fVar2;
                if ((fVar22 * fVar22 + fVar23 * fVar23 + fVar18 * fVar18 <= DAT_140278ac8) &&
                   (iVar6 = FUN_1400dc050(&DAT_182bbb1dc + lVar7 * 0x6e0,&local_e0,0),
                   fVar21 = fVar1, fVar26 = local_e0, fVar27 = local_dc, fVar28 = local_d8,
                   iVar6 != 0)) {
                  fVar21 = fVar2;
                }
                if (fVar20 < fVar21) {
                  local_118 = (&DAT_182bbb2dc)[lVar7 * 0x6e0];
                  local_110 = fVar20;
                  local_108 = fVar21;
                  FUN_140007490(local_f8,(&DAT_18329e310)[(longlong)piVar14[-0x4e] * 0x1bfe],
                                0xffffffff,iVar5);
                }
              }
            }
          }
        }
        if (((piVar14[-0x52] == 0x1a) && (piVar14[0x84] != 0)) &&
           ((piVar14[-0x4e] != -1 &&
            ((((piVar14[-0x4c] < 2 && ((&DAT_18329e310)[(longlong)piVar14[-0x4e] * 0x1bfe] != -1))
              && ((&DAT_187bde860)
                  [(longlong)(int)(&DAT_18329e310)[(longlong)piVar14[-0x4e] * 0x1bfe] * 0x8085] == 0
                 )) && (lVar7 = (longlong)piVar14[0x83] * 0x404, local_e8 = lVar7,
                       0 < *(int *)(&DAT_1816760a0 + lVar7))))))) {
          piVar17 = (int *)(&DAT_1816760a4 + lVar7);
          uVar9 = uVar16;
          do {
            fVar1 = DAT_1402783f4;
            iVar5 = *piVar17;
            lVar10 = (longlong)iVar5;
            if (iVar4 != iVar5) {
              piVar8 = (int *)(&DAT_1a8e3da80 + local_f0);
              uVar12 = uVar16;
              do {
                if (((piVar8[-1] != 0) &&
                    (*piVar8 == (&DAT_18329e310)[(longlong)piVar14[-0x4e] * 0x1bfe])) &&
                   (piVar8[2] == iVar5)) goto LAB_14002e688;
                uVar12 = uVar12 + 1;
                piVar8 = piVar8 + 10;
              } while ((longlong)uVar12 < 8);
              fVar23 = (float)(&DAT_182bbb1dc)[lVar10 * 0x6e0];
              fVar22 = fVar23 - fVar26;
              fVar20 = (float)(&DAT_182bbb1e0)[lVar10 * 0x6e0] - fVar27;
              fVar21 = (float)(&DAT_182bbb1e4)[lVar10 * 0x6e0] - fVar28;
              fVar23 = fVar26 - fVar23;
              fVar18 = fVar28 - (float)(&DAT_182bbb1e4)[lVar10 * 0x6e0];
              fVar20 = SQRT(fVar20 * fVar20 + fVar22 * fVar22 + fVar21 * fVar21);
              fVar22 = fVar27 - (float)(&DAT_182bbb1e0)[lVar10 * 0x6e0];
              fVar21 = fVar2;
              if ((fVar22 * fVar22 + fVar23 * fVar23 + fVar18 * fVar18 <= fVar3) &&
                 (iVar6 = FUN_1400dc050(&DAT_182bbb1dc + lVar10 * 0x6e0,&local_e0,0),
                 lVar7 = local_e8, fVar21 = fVar1, fVar26 = local_e0, fVar27 = local_dc,
                 fVar28 = local_d8, iVar6 != 0)) {
                fVar21 = fVar2;
              }
              if (fVar20 < fVar21) {
                local_118 = iVar4;
                local_110 = fVar20;
                local_108 = fVar21;
                FUN_140007490(local_f8,(&DAT_18329e310)[(longlong)piVar14[-0x4e] * 0x1bfe],
                              0xffffffff,iVar5);
                lVar7 = local_e8;
              }
            }
LAB_14002e688:
            uVar15 = (int)uVar9 + 1;
            uVar9 = (ulonglong)uVar15;
            piVar17 = piVar17 + 1;
          } while ((int)uVar15 < *(int *)(&DAT_1816760a0 + lVar7));
        }
      }
LAB_14002e69d:
      uVar9 = (ulonglong)(iVar4 + 1U);
      piVar14 = piVar14 + 0x6e0;
    } while ((int)(iVar4 + 1U) < 0x400);
  }
  return;
}



===== FUN_140041b80 @ 140041b80 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_140041b80(void)

{
  float fVar1;
  undefined4 uVar2;
  float fVar3;
  int iVar4;
  int iVar5;
  longlong lVar6;
  uint uVar7;
  longlong lVar8;
  ulonglong uVar9;
  float *pfVar10;
  ulonglong uVar11;
  float *pfVar12;
  float fVar13;
  uint uVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  float fVar22;
  undefined1 auStack_128 [32];
  longlong local_108;
  longlong local_100;
  float local_f8;
  float local_f4;
  float local_f0;
  float local_e8;
  float local_e4;
  float local_e0;
  ulonglong local_d8;
  
  fVar3 = DAT_140278814;
  fVar18 = DAT_1402787d4;
  fVar16 = DAT_140278728;
  fVar20 = DAT_1402785b8;
  uVar2 = DAT_1402784b0;
  fVar1 = DAT_1402783f4;
  local_d8 = DAT_1403020a0 ^ (ulonglong)auStack_128;
  uVar9 = 0;
  if (0 < DAT_15fe95260) {
    pfVar10 = (float *)&DAT_15fd16854;
    uVar11 = uVar9;
    uVar7 = DAT_140279870;
    do {
      fVar19 = pfVar10[-6];
      pfVar10[-0x165] = 3.0;
      uVar14 = DAT_140279870;
      fVar22 = *(float *)(&DAT_192eb1f14 + (longlong)(int)pfVar10[-0x17d] * 0x185c0) * DAT_1402783b8
               - *(float *)(&DAT_192eb1f20 + (longlong)(int)pfVar10[-0x17d] * 0x185c0);
      if ((int)fVar19 < DAT_183ebfd34) {
        fVar21 = pfVar10[-5] - pfVar10[-1];
        fVar15 = pfVar10[-4] - *pfVar10;
        fVar17 = pfVar10[-3] - pfVar10[1];
        if (0.0 < (float)((int)fVar19 - (int)pfVar10[-2])) {
          fVar13 = fVar1 / (float)((int)fVar19 - (int)pfVar10[-2]);
          fVar21 = fVar21 * fVar13;
          fVar15 = fVar15 * fVar13;
          fVar17 = fVar17 * fVar13;
        }
        fVar13 = (float)(DAT_183ebfd34 - (int)fVar19);
        if (fVar3 <= (float)(DAT_183ebfd34 - (int)fVar19)) {
          fVar13 = fVar3;
        }
        local_e8 = fVar21 * fVar13 + pfVar10[-5];
        pfVar10[-0x179] = local_e8;
        pfVar10[-0x178] = fVar15 * fVar13 + pfVar10[-4];
        pfVar10[-0x177] = fVar17 * fVar13 + pfVar10[-3];
        uVar7 = uVar14;
      }
      else {
        local_e8 = pfVar10[-0x179];
      }
      local_f8 = DAT_1402f6188 * fVar20 + local_e8;
      local_e8 = local_e8 - DAT_1402f6188 * fVar16;
      local_f4 = DAT_1402f618c * fVar20 + pfVar10[-0x178];
      local_e4 = pfVar10[-0x178] - DAT_1402f618c * fVar16;
      local_f0 = DAT_1402f6190 * fVar20 + pfVar10[-0x177];
      local_e0 = pfVar10[-0x177] - DAT_1402f6190 * fVar16;
      iVar4 = FUN_1400dc050(&local_f8,&local_e8,0);
      if (iVar4 != 0) {
        pfVar10[-0x178] = DAT_151a84884 + fVar22;
      }
      lVar6 = (longlong)(int)uVar11 * 0x5fc;
      pfVar10[-0x172] = 1.0;
      pfVar10[-0x171] = 0.0;
      lVar8 = lVar6 + 0x15fd16298;
      pfVar10[-0x170] = 0.0;
      pfVar10[-0x16f] = 0.0;
      lVar6 = (longlong)&DAT_15fd1628c + lVar6;
      pfVar10[-0x16e] = 1.0;
      pfVar10[-0x16d] = 0.0;
      pfVar10[-0x16c] = 0.0;
      pfVar10[-0x16b] = 0.0;
      pfVar10[-0x16a] = 1.0;
      FUN_14007b2a0(lVar6,lVar8,uVar2);
      FUN_14007b2a0(lVar6,lVar8,pfVar10[-0x173]);
      fVar19 = (float)((uint)pfVar10[-0x165] ^ uVar7);
      local_f8 = fVar19 * pfVar10[-0x16c] + pfVar10[-0x179];
      local_f4 = fVar19 * pfVar10[-0x16b] + pfVar10[-0x178];
      local_f0 = fVar19 * pfVar10[-0x16a] + pfVar10[-0x177];
      local_e8 = local_f8 - DAT_1402f6188 * fVar18;
      local_e0 = local_f0 - DAT_1402f6190 * fVar18;
      local_e4 = local_f4 - DAT_1402f618c * fVar18;
      iVar4 = FUN_1400dc050(&local_f8,&local_e8,0);
      if (iVar4 != 0) {
        local_f4 = DAT_151a84884 + fVar22;
        uVar14 = FUN_14023f704(local_f4 - pfVar10[-0x178]);
        FUN_14007b2a0(lVar6,lVar6,uVar14 ^ uVar7);
      }
      uVar14 = (int)uVar11 + 1;
      uVar11 = (ulonglong)uVar14;
      pfVar10 = pfVar10 + 0x17f;
    } while ((int)uVar14 < DAT_15fe95260);
  }
  local_100 = 0x100;
  local_108 = 0x100;
  uVar11 = uVar9;
  iVar4 = DAT_183ebfd34;
  do {
    if ((*(int *)((longlong)&DAT_18329e308 + uVar9) != 0) &&
       (iVar5 = *(int *)((longlong)&DAT_1832a52b8 + uVar9), iVar5 < iVar4)) {
      fVar16 = *(float *)((longlong)&DAT_1832a52bc + uVar9) -
               *(float *)((longlong)&DAT_1832a52cc + uVar9);
      fVar18 = *(float *)((longlong)&DAT_1832a52c0 + uVar9) -
               *(float *)((longlong)&DAT_1832a52d0 + uVar9);
      fVar19 = *(float *)((longlong)&DAT_1832a52c4 + uVar9) -
               *(float *)((longlong)&DAT_1832a52d4 + uVar9);
      fVar20 = (float)(iVar5 - *(int *)((longlong)&DAT_1832a52c8 + uVar9));
      if (0.0 < fVar20) {
        fVar20 = fVar1 / fVar20;
        fVar16 = fVar16 * fVar20;
        fVar18 = fVar18 * fVar20;
        fVar19 = fVar19 * fVar20;
      }
      uVar7 = 1;
      lVar6 = 0x138;
      pfVar12 = (float *)&DAT_18399df58;
      pfVar10 = (float *)((longlong)&DAT_18329e668 + uVar9);
      fVar20 = (float)(iVar4 - iVar5);
      if (fVar3 <= (float)(iVar4 - iVar5)) {
        fVar20 = fVar3;
      }
      *(float *)((longlong)&DAT_18329e52c + uVar9) =
           fVar16 * fVar20 + *(float *)((longlong)&DAT_1832a52bc + uVar9);
      *(float *)((longlong)&DAT_18329e530 + uVar9) =
           fVar18 * fVar20 + *(float *)((longlong)&DAT_1832a52c0 + uVar9);
      *(float *)((longlong)&DAT_18329e534 + uVar9) =
           fVar19 * fVar20 + *(float *)((longlong)&DAT_1832a52c4 + uVar9);
      do {
        if ((*(int *)((longlong)&DAT_18329e330 + uVar9) == -1) || (uVar7 < 10)) {
          fVar20 = pfVar12[-1];
          fVar18 = pfVar12[-5];
          fVar16 = *pfVar12;
          lVar8 = uVar9 + (longlong)(int)fVar18 * 0x138;
          fVar22 = fVar20 * *(float *)((longlong)&DAT_18329e55c + lVar8) +
                   *(float *)((longlong)&DAT_18329e52c + lVar8);
          pfVar10[-1] = fVar22;
          fVar19 = fVar20 * *(float *)((longlong)&DAT_18329e560 + lVar8) +
                   *(float *)((longlong)&DAT_18329e530 + lVar8);
          *pfVar10 = fVar19;
          fVar15 = fVar20 * *(float *)((longlong)&DAT_18329e564 + lVar8) +
                   *(float *)((longlong)&DAT_18329e534 + lVar8);
          pfVar10[1] = fVar15;
          fVar22 = fVar16 * *(float *)((longlong)&DAT_18329e568 + lVar8) + fVar22;
          fVar20 = pfVar12[1];
          pfVar10[-1] = fVar22;
          fVar19 = fVar16 * *(float *)((longlong)&DAT_18329e56c + lVar8) + fVar19;
          *pfVar10 = fVar19;
          fVar15 = fVar16 * *(float *)((longlong)&DAT_18329e570 + lVar8) + fVar15;
          pfVar10[1] = fVar15;
          pfVar10[-1] = fVar20 * *(float *)((longlong)&DAT_18329e574 + lVar8) + fVar22;
          *pfVar10 = fVar20 * *(float *)((longlong)&DAT_18329e578 + lVar8) + fVar19;
          pfVar10[1] = fVar20 * *(float *)((longlong)&DAT_18329e57c + lVar8) + fVar15;
          FUN_14007a010((longlong)&DAT_18329e55c + lVar6 + uVar11,&DAT_18329e600 + lVar6 + uVar11,
                        (longlong)&DAT_18329e55c + uVar11 + (longlong)(int)fVar18 * 0x138);
          local_f8 = pfVar12[-4] - pfVar12[-1];
          local_f4 = pfVar12[-3] - *pfVar12;
          local_f0 = pfVar12[-2] - pfVar12[1];
          fVar16 = local_f8 * pfVar10[0xb] + pfVar10[-1];
          pfVar10[-1] = fVar16;
          fVar20 = local_f8 * pfVar10[0xc] + *pfVar10;
          *pfVar10 = fVar20;
          fVar18 = local_f8 * pfVar10[0xd] + pfVar10[1];
          pfVar10[1] = fVar18;
          fVar16 = local_f4 * pfVar10[0xe] + fVar16;
          pfVar10[-1] = fVar16;
          fVar20 = local_f4 * pfVar10[0xf] + fVar20;
          *pfVar10 = fVar20;
          fVar18 = local_f4 * pfVar10[0x10] + fVar18;
          pfVar10[1] = fVar18;
          pfVar10[-1] = local_f0 * pfVar10[0x11] + fVar16;
          *pfVar10 = local_f0 * pfVar10[0x12] + fVar20;
          pfVar10[1] = local_f0 * pfVar10[0x13] + fVar18;
        }
        uVar7 = uVar7 + 1;
        lVar6 = lVar6 + 0x138;
        pfVar12 = pfVar12 + 0x19;
        pfVar10 = pfVar10 + 0x4e;
        iVar4 = DAT_183ebfd34;
      } while ((int)uVar7 < 0x10);
    }
    uVar11 = uVar11 + 0x6ff8;
    uVar9 = uVar9 + 0x6ff8;
    local_108 = local_108 + -1;
  } while (local_108 != 0);
  pfVar10 = (float *)&DAT_15f2de360;
  lVar6 = 0x200;
  local_108 = 0;
  do {
    if (((pfVar10[-0x1458] != 0.0) && (fVar20 = pfVar10[-7], fVar20 != -NAN)) &&
       (pfVar10[-3] != -NAN)) {
      fVar16 = pfVar10[-4];
      fVar18 = pfVar10[-6];
      fVar19 = pfVar10[-5];
      fVar15 = fVar18 - pfVar10[-2];
      local_108 = CONCAT44(local_108._4_4_,fVar16);
      fVar17 = fVar19 - pfVar10[-1];
      fVar21 = fVar16 - *pfVar10;
      fVar22 = (float)((int)fVar20 - (int)pfVar10[-3]);
      if (0.0 < fVar22) {
        fVar22 = fVar1 / fVar22;
        fVar15 = fVar15 * fVar22;
        fVar17 = fVar17 * fVar22;
        fVar21 = fVar21 * fVar22;
      }
      pfVar10[-0x1435] = fVar15;
      pfVar10[-0x1434] = fVar17;
      pfVar10[-0x1433] = fVar21;
      if ((int)fVar20 < iVar4) {
        fVar13 = *(float *)(&DAT_192eb1f20 + (longlong)(int)pfVar10[-0x1457] * 0x185c0) -
                 *(float *)(&DAT_192eb1f14 + (longlong)(int)pfVar10[-0x1457] * 0x185c0) *
                 DAT_1402783b8;
        local_f8 = fVar18 + DAT_1402f6188;
        local_f4 = fVar19 + DAT_1402f618c;
        local_f0 = fVar16 + DAT_1402f6190;
        fVar22 = (float)(iVar4 - (int)fVar20);
        if (fVar3 <= (float)(iVar4 - (int)fVar20)) {
          fVar22 = fVar3;
        }
        local_e8 = fVar13 * DAT_1402f6188 + fVar18 + fVar15 * fVar22;
        local_e4 = fVar13 * DAT_1402f618c + fVar19 + fVar17 * fVar22;
        local_e0 = fVar13 * DAT_1402f6190 + fVar16 + fVar21 * fVar22;
        iVar5 = FUN_1400dc050(&local_f8,&local_e8,0);
        iVar4 = DAT_183ebfd34;
        if (iVar5 != 0) {
          fVar20 = (float)((uint)(fVar15 * DAT_151a8488c + fVar17 * DAT_151a84890 +
                                 fVar21 * DAT_151a84894) ^ DAT_140279870);
          fVar15 = fVar15 + DAT_151a8488c * fVar20;
          fVar17 = fVar17 + DAT_151a84890 * fVar20;
          fVar21 = fVar21 + DAT_151a84894 * fVar20;
        }
        pfVar10[-0x144d] = fVar15 * fVar22 + pfVar10[-6];
        pfVar10[-0x144c] = fVar17 * fVar22 + pfVar10[-5];
        pfVar10[-0x144b] = fVar21 * fVar22 + pfVar10[-4];
      }
    }
    pfVar10 = pfVar10 + 0x145a;
    lVar6 = lVar6 + -1;
  } while (lVar6 != 0);
  pfVar10 = (float *)&DAT_182bbb4e0;
  do {
    if (((pfVar10[-0xd8] != 0.0) && (fVar20 = pfVar10[-7], (int)fVar20 < iVar4)) &&
       ((fVar20 != -NAN && (pfVar10[-2] != -NAN)))) {
      fVar18 = pfVar10[-6] - pfVar10[-1];
      fVar19 = pfVar10[-5] - *pfVar10;
      fVar22 = pfVar10[-4] - pfVar10[1];
      fVar16 = (float)((int)fVar20 - (int)pfVar10[-2]);
      if (0.0 < fVar16) {
        fVar16 = fVar1 / fVar16;
        fVar18 = fVar18 * fVar16;
        fVar19 = fVar19 * fVar16;
        fVar22 = fVar22 * fVar16;
      }
      fVar16 = (float)(iVar4 - (int)fVar20);
      if (fVar3 <= (float)(iVar4 - (int)fVar20)) {
        fVar16 = fVar3;
      }
      pfVar10[-0xc1] = fVar18 * fVar16 + pfVar10[-6];
      pfVar10[-0xc0] = fVar19 * fVar16 + pfVar10[-5];
      pfVar10[-0xbf] = fVar22 * fVar16 + pfVar10[-4];
    }
    if (((pfVar10[0x608] != 0.0) && (fVar20 = pfVar10[0x6d9], (int)fVar20 < iVar4)) &&
       ((fVar20 != -NAN && (pfVar10[0x6de] != -NAN)))) {
      fVar18 = pfVar10[0x6da] - pfVar10[0x6df];
      fVar19 = pfVar10[0x6db] - pfVar10[0x6e0];
      fVar22 = pfVar10[0x6dc] - pfVar10[0x6e1];
      fVar16 = (float)((int)fVar20 - (int)pfVar10[0x6de]);
      if (0.0 < fVar16) {
        fVar16 = fVar1 / fVar16;
        fVar18 = fVar18 * fVar16;
        fVar19 = fVar19 * fVar16;
        fVar22 = fVar22 * fVar16;
      }
      fVar16 = (float)(iVar4 - (int)fVar20);
      if (fVar3 <= (float)(iVar4 - (int)fVar20)) {
        fVar16 = fVar3;
      }
      pfVar10[0x61f] = fVar18 * fVar16 + pfVar10[0x6da];
      pfVar10[0x620] = fVar19 * fVar16 + pfVar10[0x6db];
      pfVar10[0x621] = fVar22 * fVar16 + pfVar10[0x6dc];
    }
    if ((((pfVar10[0xce8] != 0.0) && (fVar20 = pfVar10[0xdb9], (int)fVar20 < iVar4)) &&
        (fVar20 != -NAN)) && (pfVar10[0xdbe] != -NAN)) {
      fVar18 = pfVar10[0xdba] - pfVar10[0xdbf];
      fVar19 = pfVar10[0xdbb] - pfVar10[0xdc0];
      fVar22 = pfVar10[0xdbc] - pfVar10[0xdc1];
      fVar16 = (float)((int)fVar20 - (int)pfVar10[0xdbe]);
      if (0.0 < fVar16) {
        fVar16 = fVar1 / fVar16;
        fVar18 = fVar18 * fVar16;
        fVar19 = fVar19 * fVar16;
        fVar22 = fVar22 * fVar16;
      }
      fVar16 = (float)(iVar4 - (int)fVar20);
      if (fVar3 <= (float)(iVar4 - (int)fVar20)) {
        fVar16 = fVar3;
      }
      pfVar10[0xcff] = fVar18 * fVar16 + pfVar10[0xdba];
      pfVar10[0xd00] = fVar19 * fVar16 + pfVar10[0xdbb];
      pfVar10[0xd01] = fVar22 * fVar16 + pfVar10[0xdbc];
    }
    if (((pfVar10[0x13c8] != 0.0) && (fVar20 = pfVar10[0x1499], (int)fVar20 < iVar4)) &&
       ((fVar20 != -NAN && (pfVar10[0x149e] != -NAN)))) {
      fVar18 = pfVar10[0x149a] - pfVar10[0x149f];
      fVar19 = pfVar10[0x149b] - pfVar10[0x14a0];
      fVar22 = pfVar10[0x149c] - pfVar10[0x14a1];
      fVar16 = (float)((int)fVar20 - (int)pfVar10[0x149e]);
      if (0.0 < fVar16) {
        fVar16 = fVar1 / fVar16;
        fVar18 = fVar18 * fVar16;
        fVar19 = fVar19 * fVar16;
        fVar22 = fVar22 * fVar16;
      }
      fVar16 = (float)(iVar4 - (int)fVar20);
      if (fVar3 <= (float)(iVar4 - (int)fVar20)) {
        fVar16 = fVar3;
      }
      pfVar10[0x13df] = fVar18 * fVar16 + pfVar10[0x149a];
      pfVar10[0x13e0] = fVar19 * fVar16 + pfVar10[0x149b];
      pfVar10[0x13e1] = fVar22 * fVar16 + pfVar10[0x149c];
    }
    pfVar10 = pfVar10 + 0x1b80;
    local_100 = local_100 + -1;
  } while (local_100 != 0);
  return;
}



===== FUN_140105c20 @ 140105c20 root=true =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140105c20(int param_1,float *param_2)

{
  int iVar1;
  float fVar2;
  float fVar3;
  longlong lVar4;
  longlong lVar5;
  uint uVar6;
  int *piVar7;
  float *pfVar8;
  ulonglong uVar9;
  int *piVar10;
  int iVar11;
  longlong lVar12;
  longlong lVar13;
  undefined4 *puVar14;
  
  lVar13 = (longlong)param_1;
  _DAT_144cba9a0 = 0;
  uRam0000000144cba9a8 = 0;
  _DAT_144cba9b0 = 0;
  uRam0000000144cba9b8 = 0;
  iVar11 = 0;
  piVar7 = (int *)(&DAT_1a8e5d7dc + lVar13 * 0x2e1e0);
  piVar10 = &DAT_18329e308;
  do {
    if (((piVar7[-1] != 0) && (*piVar7 == 0)) &&
       (iVar1 = piVar7[1],
       (&DAT_144cba9a0)[(longlong)iVar1 >> 5] =
            (&DAT_144cba9a0)[(longlong)iVar1 >> 5] | 1 << ((byte)iVar1 & 0x1f),
       (&DAT_18329e308)[(longlong)iVar1 * 0x1bfe] == 0)) {
      FUN_1401060f0(param_1,iVar11);
    }
    iVar11 = iVar11 + 1;
    piVar7 = piVar7 + 4;
  } while (iVar11 < 0x400);
  iVar11 = 0;
  uVar9 = 0;
  uVar6 = 1;
  do {
    if ((*piVar10 != 0) && (((&DAT_144cba9a0)[uVar9 >> 5] & uVar6) == 0)) {
      FUN_140105ab0(param_1,0,0,iVar11);
    }
    fVar3 = DAT_140278ae0;
    iVar11 = iVar11 + 1;
    uVar6 = uVar6 << 1 | (uint)((int)uVar6 < 0);
    uVar9 = uVar9 + 1;
    piVar10 = piVar10 + 0x1bfe;
  } while (iVar11 < 0x100);
  iVar11 = 0;
  _DAT_144cba9a0 = 0;
  uRam0000000144cba9a8 = 0;
  lVar12 = 0;
  _DAT_144cba9b0 = 0;
  uRam0000000144cba9b8 = 0;
  _DAT_144cba9c0 = 0;
  uRam0000000144cba9c8 = 0;
  _DAT_144cba9d0 = 0;
  uRam0000000144cba9d8 = 0;
  _DAT_144cba9e0 = 0;
  uRam0000000144cba9e8 = 0;
  _DAT_144cba9f0 = 0;
  uRam0000000144cba9f8 = 0;
  _DAT_144cbaa00 = 0;
  uRam0000000144cbaa08 = 0;
  _DAT_144cbaa10 = 0;
  uRam0000000144cbaa18 = 0;
  do {
    lVar4 = lVar13 * 0x2e1e + lVar12;
    if (((&DAT_1a8e5d7d8)[lVar4 * 4] != 0) && (*(int *)(&DAT_1a8e5d7dc + lVar4 * 0x10) == 1)) {
      lVar5 = (longlong)*(int *)(&DAT_1a8e5d7e0 + lVar4 * 0x10);
      (&DAT_144cba9a0)[lVar5 >> 5] =
           (&DAT_144cba9a0)[lVar5 >> 5] |
           1 << ((byte)*(int *)(&DAT_1a8e5d7e0 + lVar4 * 0x10) & 0x1f);
      if ((((&DAT_182bbb180)[lVar5 * 0x6e0] == 0) || ((&DAT_182bbb1b0)[lVar5 * 0x6e0] != 0)) ||
         ((param_1 != 0xff &&
          (fVar3 < ((float)(&DAT_182bbb1e0)[lVar5 * 0x6e0] - param_2[1]) *
                   ((float)(&DAT_182bbb1e0)[lVar5 * 0x6e0] - param_2[1]) +
                   ((float)(&DAT_182bbb1dc)[lVar5 * 0x6e0] - *param_2) *
                   ((float)(&DAT_182bbb1dc)[lVar5 * 0x6e0] - *param_2) +
                   ((float)(&DAT_182bbb1e4)[lVar5 * 0x6e0] - param_2[2]) *
                   ((float)(&DAT_182bbb1e4)[lVar5 * 0x6e0] - param_2[2]))))) {
        if ((*(int *)(&DAT_1a8e617d8 + lVar13 * 0x5c3c) + 1U & 0x7ff) !=
            (&DAT_1a8e617e0)[lVar13 * 0xb878]) {
          *(undefined4 *)
           (&DAT_1a8e617e4 +
           lVar13 * 0x2e1e0 + (longlong)*(int *)(&DAT_1a8e617d8 + lVar13 * 0x5c3c) * 0x14) = 1;
          *(int *)(&DAT_1a8e617e8 +
                  lVar13 * 0x2e1e0 + (longlong)*(int *)(&DAT_1a8e617d8 + lVar13 * 0x5c3c) * 0x14) =
               iVar11;
          *(uint *)(&DAT_1a8e617d8 + lVar13 * 0x5c3c) =
               *(int *)(&DAT_1a8e617d8 + lVar13 * 0x5c3c) + 1U & 0x7ff;
        }
      }
    }
    fVar2 = DAT_140278adc;
    iVar11 = iVar11 + 1;
    lVar12 = lVar12 + 1;
  } while (iVar11 < 0x400);
  iVar11 = 0;
  pfVar8 = (float *)&DAT_182bbb1e4;
  uVar9 = 0;
  puVar14 = &DAT_1a8e3f7c0 + lVar13 * 0xb878;
  uVar6 = 1;
  do {
    if ((((pfVar8[-0x19] != 0.0) && (((&DAT_144cba9a0)[uVar9 >> 5] & uVar6) == 0)) &&
        (pfVar8[-0xd] == 0.0)) &&
       ((param_1 == 0xff ||
        ((pfVar8[-1] - param_2[1]) * (pfVar8[-1] - param_2[1]) +
         (pfVar8[-2] - *param_2) * (pfVar8[-2] - *param_2) +
         (*pfVar8 - param_2[2]) * (*pfVar8 - param_2[2]) < fVar2)))) {
      FUN_140105ab0(param_1,1,pfVar8[-0x14],iVar11);
      *puVar14 = 0xffffffff;
    }
    iVar11 = iVar11 + 1;
    uVar6 = uVar6 << 1 | (uint)((int)uVar6 < 0);
    uVar9 = uVar9 + 1;
    pfVar8 = pfVar8 + 0x6e0;
    puVar14 = puVar14 + 5;
  } while (iVar11 < 0x400);
  lVar12 = lVar13 * 0x2e1e0;
  uVar6 = *(uint *)((longlong)&DAT_1a8e617d8 + lVar12 + 4);
  if (uVar6 != *(uint *)(&DAT_1a8e617d8 + lVar13 * 0x5c3c)) {
    do {
      lVar4 = lVar12 + (longlong)(int)uVar6 * 0x14;
      iVar11 = *(int *)(&DAT_1a8e617e8 + lVar4);
      if (*(int *)(&DAT_1a8e617e4 + lVar4) == 0) {
        lVar4 = lVar13 * 0x2e1e + (longlong)iVar11;
        (&DAT_1a8e5d7d8)[lVar4 * 4] = 1;
        *(undefined4 *)(&DAT_1a8e5d7dc + lVar4 * 0x10) =
             *(undefined4 *)
              (&DAT_1a8e617ec +
              lVar12 + (longlong)*(int *)((longlong)&DAT_1a8e617d8 + lVar12 + 4) * 0x14);
        *(undefined4 *)(&DAT_1a8e5d7e0 + lVar4 * 0x10) =
             *(undefined4 *)
              (&DAT_1a8e617f4 +
              lVar12 + (longlong)*(int *)((longlong)&DAT_1a8e617d8 + lVar12 + 4) * 0x14);
        *(undefined4 *)(&DAT_1a8e5d7e4 + lVar4 * 0x10) = 0x10000;
        uVar6 = *(uint *)((longlong)&DAT_1a8e617d8 + lVar12 + 4);
      }
      if (*(int *)(&DAT_1a8e617e4 + lVar12 + (longlong)(int)uVar6 * 0x14) == 1) {
        (&DAT_1a8e5d7d8)[(lVar13 * 0x2e1e + (longlong)iVar11) * 4] = 0;
        uVar6 = *(uint *)((longlong)&DAT_1a8e617d8 + lVar12 + 4);
      }
      uVar6 = uVar6 + 1 & 0x7ff;
      *(uint *)((longlong)&DAT_1a8e617d8 + lVar12 + 4) = uVar6;
    } while (uVar6 != *(uint *)(&DAT_1a8e617d8 + lVar13 * 0x5c3c));
  }
  return;
}



===== FUN_1400f3d10 @ 1400f3d10 root=true =====

void FUN_1400f3d10(int param_1)

{
  int iVar1;
  int *piVar2;
  longlong lVar3;
  
  piVar2 = &DAT_182bbb2dc;
  lVar3 = 0x400;
  do {
    if ((piVar2[-0x57] != 0) && (piVar2[-0x52] == 0x19)) {
      iVar1 = piVar2[1];
      if (iVar1 == param_1 * 0x457 + 0x457) {
        if (*piVar2 != -1) {
          (&DAT_182bbb3fc)[(longlong)*piVar2 * 0x6e0] = 0;
          (&DAT_182bbb2dc)[(longlong)*piVar2 * 0x6e0] = 0xffffffff;
          *(undefined4 *)(&DAT_182bbb2e8 + (longlong)*piVar2 * 0x1b80) = 0;
          FUN_140051940(*piVar2);
          iVar1 = piVar2[1];
        }
        piVar2[0x48] = 0;
        *piVar2 = -1;
        piVar2[-0x50] = 0;
      }
      if (iVar1 == param_1 * 0x457 + 0x458) {
        if (*piVar2 != -1) {
          (&DAT_182bbb3fc)[(longlong)*piVar2 * 0x6e0] = 0;
          (&DAT_182bbb2dc)[(longlong)*piVar2 * 0x6e0] = 0xffffffff;
          *(undefined4 *)(&DAT_182bbb2e8 + (longlong)*piVar2 * 0x1b80) = 0;
          FUN_140051940(*piVar2);
        }
        piVar2[0x48] = 0;
        *piVar2 = -1;
        piVar2[-0x50] = 0;
      }
    }
    piVar2 = piVar2 + 0x6e0;
    lVar3 = lVar3 + -1;
  } while (lVar3 != 0);
  return;
}



===== FUN_1400c9d20 @ 1400c9d20 root=true =====

void FUN_1400c9d20(void)

{
  float fVar1;
  float fVar2;
  float fVar3;
  int iVar4;
  longlong lVar5;
  float *pfVar6;
  undefined4 *puVar7;
  float *pfVar8;
  longlong lVar9;
  longlong lVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  
  fVar3 = DAT_140278adc;
  fVar2 = DAT_140278280;
  pfVar6 = (float *)&DAT_182bbb284;
  puVar7 = &DAT_182bbb1e8;
  pfVar8 = (float *)&DAT_182bbb238;
  lVar10 = 0x400;
  fVar14 = DAT_140278d2c;
  do {
    fVar15 = fVar14;
    if ((pfVar8[-0x2e] != 0.0) && (pfVar8[-0x2d] != 0.0)) {
      pfVar8[-0x14] = pfVar8[-0x17];
      pfVar8[-0x13] = pfVar8[-0x16];
      pfVar8[-0x12] = pfVar8[-0x15];
      lVar5 = (longlong)(int)pfVar8[-0x18];
      pfVar8[-0x17] = (float)(&DAT_1449816f8)[lVar5 * 0x2f];
      pfVar8[-0x16] = (float)(&DAT_1449816fc)[lVar5 * 0x2f];
      pfVar8[-0x15] = (float)(&DAT_144981700)[lVar5 * 0x2f];
      pfVar8[-0xe] = (float)(&DAT_144981704)[lVar5 * 0x2f];
      pfVar8[-0xd] = (float)(&DAT_144981708)[lVar5 * 0x2f];
      pfVar8[-0xc] = (float)(&DAT_14498170c)[lVar5 * 0x2f];
      pfVar8[-5] = (float)(&DAT_14498171c)[lVar5 * 0x2f];
      pfVar8[-4] = (float)(&DAT_144981720)[lVar5 * 0x2f];
      pfVar8[-3] = (float)(&DAT_144981724)[lVar5 * 0x2f];
      pfVar8[-2] = (float)(&DAT_144981728)[lVar5 * 0x2f];
      pfVar8[-1] = (float)(&DAT_14498172c)[lVar5 * 0x2f];
      *pfVar8 = (float)(&DAT_144981730)[lVar5 * 0x2f];
      pfVar8[1] = (float)(&DAT_144981734)[lVar5 * 0x2f];
      pfVar8[2] = (float)(&DAT_144981738)[lVar5 * 0x2f];
      pfVar8[3] = (float)(&DAT_14498173c)[lVar5 * 0x2f];
      pfVar8[4] = (float)(&DAT_14498174c)[lVar5 * 0x2f];
      pfVar8[5] = (float)(&DAT_144981750)[lVar5 * 0x2f];
      pfVar8[6] = (float)(&DAT_144981754)[lVar5 * 0x2f];
      iVar4 = FUN_1400dc050(puVar7,puVar7 + -3);
      if (iVar4 != 0) {
        fVar13 = DAT_151a84898 * DAT_1402783d8;
        fVar12 = (pfVar8[-0x17] - pfVar8[-0x14]) * fVar13 + pfVar8[-0x14];
        fVar11 = (pfVar8[-0x16] - pfVar8[-0x13]) * fVar13 + pfVar8[-0x13];
        fVar13 = (pfVar8[-0x15] - pfVar8[-0x12]) * fVar13 + pfVar8[-0x12];
        pfVar8[-0x17] = fVar12;
        (&DAT_1449816f8)[lVar5 * 0x2f] = fVar12;
        pfVar8[-0x16] = fVar11;
        (&DAT_1449816fc)[lVar5 * 0x2f] = fVar11;
        pfVar8[-0x15] = fVar13;
        (&DAT_144981700)[lVar5 * 0x2f] = fVar13;
      }
      *pfVar6 = 65536.0;
      iVar4 = 0;
      pfVar6[3] = -65536.0;
      pfVar6[1] = 65536.0;
      pfVar6[4] = -65536.0;
      pfVar6[2] = 65536.0;
      pfVar6[5] = -65536.0;
      lVar5 = (longlong)(int)pfVar8[-0x29];
      fVar13 = fVar3;
      if (0 < (int)(&DAT_182a7f088)[lVar5 * 0x4f4]) {
        lVar9 = 0;
        fVar11 = fVar3;
        fVar12 = fVar14;
        fVar17 = fVar14;
        fVar18 = fVar3;
        fVar19 = fVar14;
        fVar20 = fVar3;
        do {
          lVar5 = (&DAT_182a7f090)[(longlong)(int)lVar5 * 0x27a];
          fVar15 = *(float *)(lVar5 + lVar9);
          fVar13 = *(float *)(lVar5 + 4 + lVar9);
          fVar1 = *(float *)(lVar5 + 8 + lVar9);
          fVar16 = fVar15 * pfVar8[-5] + pfVar8[-0x17] + fVar13 * pfVar8[-2] + fVar1 * pfVar8[1];
          fVar14 = fVar15 * pfVar8[-3] + pfVar8[-0x15] + fVar13 * *pfVar8 + fVar1 * pfVar8[3];
          fVar15 = fVar15 * pfVar8[-4] + pfVar8[-0x16] + fVar13 * pfVar8[-1] + fVar1 * pfVar8[2];
          if (fVar20 <= fVar16) {
            fVar13 = *pfVar6;
          }
          else {
            *pfVar6 = fVar16;
            fVar13 = fVar16;
            fVar20 = fVar16;
          }
          if (fVar19 < fVar16) {
            pfVar6[3] = fVar16;
            fVar19 = fVar16;
          }
          if (fVar15 < fVar18) {
            pfVar6[1] = fVar15;
            fVar18 = fVar15;
          }
          if (fVar17 < fVar15) {
            pfVar6[4] = fVar15;
            fVar17 = fVar15;
          }
          if (fVar14 < fVar11) {
            pfVar6[2] = fVar14;
            fVar11 = fVar14;
          }
          if (fVar14 <= fVar12) {
            fVar14 = pfVar6[5];
          }
          else {
            pfVar6[5] = fVar14;
            fVar12 = fVar14;
          }
          lVar5 = (longlong)(int)pfVar8[-0x29];
          iVar4 = iVar4 + 1;
          lVar9 = lVar9 + 0xc;
          fVar15 = DAT_140278d2c;
        } while (iVar4 < (int)(&DAT_182a7f088)[lVar5 * 0x4f4]);
      }
      pfVar6[6] = (float)(int)(fVar13 * fVar2);
      pfVar6[9] = (float)(int)(pfVar6[3] * fVar2);
      pfVar6[7] = (float)(int)(pfVar6[1] * fVar2);
      pfVar6[10] = (float)(int)(pfVar6[4] * fVar2);
      pfVar6[8] = (float)(int)(pfVar6[2] * fVar2);
      pfVar6[0xb] = (float)(int)(fVar14 * fVar2);
    }
    puVar7 = puVar7 + 0x6e0;
    pfVar8 = pfVar8 + 0x6e0;
    pfVar6 = pfVar6 + 0x6e0;
    lVar10 = lVar10 + -1;
    fVar14 = fVar15;
  } while (lVar10 != 0);
  return;
}



===== FUN_14007fe00 @ 14007fe00 root=true =====

void FUN_14007fe00(uint param_1)

{
  int iVar1;
  uint uVar2;
  uint *puVar3;
  int *piVar4;
  longlong lVar5;
  longlong lVar6;
  ulonglong uVar7;
  longlong lVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  
  lVar6 = (longlong)(int)param_1;
  if (param_1 < 0x200) {
    if (0 < (int)(&DAT_15f2d92ec)[lVar6 * 0x145a]) {
      uVar7 = (ulonglong)(uint)(&DAT_15f2d92ec)[lVar6 * 0x145a];
      piVar4 = &DAT_15f2d92f0 + lVar6 * 0x145a;
      do {
        iVar1 = *piVar4;
        piVar4 = piVar4 + 1;
        (&DAT_151a84924)[(longlong)iVar1 * 0x3c] = 0;
        uVar7 = uVar7 - 1;
      } while (uVar7 != 0);
    }
    puVar3 = &DAT_18329e330;
    do {
      if ((puVar3[-10] != 0) && (*puVar3 == param_1)) {
        *puVar3 = 0xffffffff;
      }
      if ((puVar3[0x1bf4] != 0) && (puVar3[0x1bfe] == param_1)) {
        puVar3[0x1bfe] = 0xffffffff;
      }
      if ((puVar3[0x37f2] != 0) && (puVar3[0x37fc] == param_1)) {
        puVar3[0x37fc] = 0xffffffff;
      }
      if ((puVar3[0x53f0] != 0) && (puVar3[0x53fa] == param_1)) {
        puVar3[0x53fa] = 0xffffffff;
      }
      puVar3 = puVar3 + 0x6ff8;
    } while ((longlong)puVar3 < 0x18399db30);
    uVar7 = (ulonglong)DAT_15fe95260;
    if (0 < (int)DAT_15fe95260) {
      puVar3 = &DAT_15fd16268;
      do {
        if (*puVar3 == param_1) {
          *puVar3 = 0xffffffff;
        }
        puVar3 = puVar3 + 0x17f;
        uVar7 = uVar7 - 1;
      } while (uVar7 != 0);
    }
    (&DAT_15f2d9200)[lVar6 * 0x145a] = 0;
    if (0 < (int)(&DAT_15f2dcb40)[lVar6 * 0x145a]) {
      uVar7 = (ulonglong)(uint)(&DAT_15f2dcb40)[lVar6 * 0x145a];
      puVar3 = &DAT_15f2dcb44 + lVar6 * 0x145a;
      do {
        uVar2 = *puVar3;
        if ((uVar2 != 0xffffffff) && (uVar2 < 0x2000)) {
          (&DAT_1449816e0)[(longlong)(int)uVar2 * 0x2f] = 0;
        }
        puVar3 = puVar3 + 0x2b;
        uVar7 = uVar7 - 1;
      } while (uVar7 != 0);
    }
    uVar2 = (&DAT_15f2d9228)[lVar6 * 0x145a];
    if ((uVar2 != 0xffffffff) && (uVar2 < 0x2000)) {
      (&DAT_1449816e0)[(longlong)(int)uVar2 * 0x2f] = 0;
    }
    piVar4 = &DAT_182bbb194;
    do {
      if (((piVar4[-5] != 0) && (*piVar4 == 0x1b)) && (piVar4[0x9b] == param_1)) {
        piVar4[2] = 0;
        piVar4[0x9b] = -1;
      }
      uVar9 = DAT_183ebfd34;
      piVar4 = piVar4 + 0x6e0;
    } while ((longlong)piVar4 < 0x18329b194);
    if (DAT_1ad04adc0 != 0) {
      lVar8 = (longlong)(int)DAT_189c1dc64;
      lVar5 = lVar8 * 0x80;
      (&DAT_1873de460)[lVar8 * 0x20] = 4;
      (&DAT_1873de464)[lVar8 * 0x20] = uVar9;
      (&DAT_1873de480)[lVar8 * 0x20] = param_1;
      *(undefined8 *)(&DAT_1873de484 + lVar8 * 0x20) = 3;
      if (&DAT_15f2d922c + lVar6 * 0x145a == (undefined4 *)0x0) {
        uVar9 = 0;
        uVar10 = 0;
        uVar11 = 0;
      }
      else {
        uVar9 = (&DAT_15f2d9234)[lVar6 * 0x145a];
        uVar10 = (&DAT_15f2d9230)[lVar6 * 0x145a];
        uVar11 = (&DAT_15f2d922c)[lVar6 * 0x145a];
      }
      *(undefined4 *)(&DAT_1873de468 + lVar5) = uVar11;
      *(undefined4 *)(&DAT_1873de46c + lVar5) = uVar10;
      *(undefined4 *)(&DAT_1873de470 + lVar5) = uVar9;
      DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
      *(undefined8 *)(&DAT_1873de474 + lVar5) = 0;
      *(undefined4 *)(&DAT_1873de47c + lVar5) = 0;
    }
  }
  return;
}



===== FUN_14010be50 @ 14010be50 root=true =====

void FUN_14010be50(void)

{
  uint uVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  uint *puVar5;
  int *piVar6;
  longlong lVar7;
  longlong lVar8;
  uint uVar9;
  ulonglong uVar10;
  int *piVar11;
  ulonglong uVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  
  iVar4 = DAT_1ad04adc0;
  uVar3 = DAT_183ebfd34;
  uVar2 = DAT_15fe95260;
  uVar12 = (ulonglong)DAT_15fe95260;
  piVar11 = &DAT_15f2d921c;
  uVar9 = 0;
  do {
    if (piVar11[-7] != 0) {
      iVar13 = *piVar11;
      if (iVar13 < 0xffff) {
        iVar13 = iVar13 + -1;
        *piVar11 = iVar13;
      }
      if ((iVar13 < 1) && (uVar9 < 0x200)) {
        if (0 < piVar11[0x34]) {
          piVar6 = piVar11 + 0x35;
          uVar10 = (ulonglong)(uint)piVar11[0x34];
          do {
            iVar13 = *piVar6;
            piVar6 = piVar6 + 1;
            (&DAT_151a84924)[(longlong)iVar13 * 0x3c] = 0;
            uVar10 = uVar10 - 1;
          } while (uVar10 != 0);
        }
        puVar5 = &DAT_18329e330;
        do {
          if ((puVar5[-10] != 0) && (*puVar5 == uVar9)) {
            *puVar5 = 0xffffffff;
          }
          if ((puVar5[0x1bf4] != 0) && (puVar5[0x1bfe] == uVar9)) {
            puVar5[0x1bfe] = 0xffffffff;
          }
          if ((puVar5[0x37f2] != 0) && (puVar5[0x37fc] == uVar9)) {
            puVar5[0x37fc] = 0xffffffff;
          }
          if ((puVar5[0x53f0] != 0) && (puVar5[0x53fa] == uVar9)) {
            puVar5[0x53fa] = 0xffffffff;
          }
          puVar5 = puVar5 + 0x6ff8;
        } while ((longlong)puVar5 < 0x18399db30);
        if (0 < (int)uVar2) {
          puVar5 = &DAT_15fd16268;
          uVar10 = uVar12;
          do {
            if (*puVar5 == uVar9) {
              *puVar5 = 0xffffffff;
            }
            puVar5 = puVar5 + 0x17f;
            uVar10 = uVar10 - 1;
          } while (uVar10 != 0);
        }
        piVar11[-7] = 0;
        if (0 < piVar11[0xe49]) {
          puVar5 = (uint *)(piVar11 + 0xe4a);
          uVar10 = (ulonglong)(uint)piVar11[0xe49];
          do {
            uVar1 = *puVar5;
            if ((uVar1 != 0xffffffff) && (uVar1 < 0x2000)) {
              (&DAT_1449816e0)[(longlong)(int)uVar1 * 0x2f] = 0;
            }
            puVar5 = puVar5 + 0x2b;
            uVar10 = uVar10 - 1;
          } while (uVar10 != 0);
        }
        uVar1 = piVar11[3];
        if ((uVar1 != 0xffffffff) && (uVar1 < 0x2000)) {
          (&DAT_1449816e0)[(longlong)(int)uVar1 * 0x2f] = 0;
        }
        piVar6 = &DAT_182bbb194;
        do {
          if (((piVar6[-5] != 0) && (*piVar6 == 0x1b)) && (piVar6[0x9b] == uVar9)) {
            piVar6[2] = 0;
            piVar6[0x9b] = -1;
          }
          piVar6 = piVar6 + 0x6e0;
        } while ((longlong)piVar6 < 0x18329b194);
        if (iVar4 != 0) {
          lVar8 = (longlong)(int)DAT_189c1dc64;
          lVar7 = lVar8 * 0x80;
          (&DAT_1873de460)[lVar8 * 0x20] = 4;
          (&DAT_1873de464)[lVar8 * 0x20] = uVar3;
          (&DAT_1873de480)[lVar8 * 0x20] = uVar9;
          *(undefined8 *)(&DAT_1873de484 + lVar8 * 0x20) = 3;
          if (piVar11 + 4 == (int *)0x0) {
            iVar13 = 0;
            iVar14 = 0;
            iVar15 = 0;
          }
          else {
            iVar13 = piVar11[6];
            iVar14 = piVar11[5];
            iVar15 = piVar11[4];
          }
          *(int *)(&DAT_1873de468 + lVar7) = iVar15;
          *(int *)(&DAT_1873de46c + lVar7) = iVar14;
          *(int *)(&DAT_1873de470 + lVar7) = iVar13;
          DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
          *(undefined8 *)(&DAT_1873de474 + lVar7) = 0;
          *(undefined4 *)(&DAT_1873de47c + lVar7) = 0;
        }
      }
    }
    uVar9 = uVar9 + 1;
    piVar11 = piVar11 + 0x145a;
  } while ((int)uVar9 < 0x200);
  return;
}



===== FUN_1400f3e60 @ 1400f3e60 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1400f3e60(undefined8 param_1,int *param_2)

{
  int iVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  uint uVar8;
  int *piVar9;
  float *pfVar10;
  uint uVar11;
  int iVar13;
  int *piVar14;
  int iVar15;
  uint uVar16;
  int *piVar17;
  uint *puVar18;
  longlong lVar19;
  int iVar20;
  float fVar21;
  undefined1 auVar23 [12];
  undefined1 auVar22 [16];
  undefined1 auStack_e8 [32];
  int local_c8 [8];
  uint local_a8 [8];
  ulonglong local_88;
  int *piVar12;
  
  fVar7 = DAT_14027895c;
  fVar6 = DAT_1402787f8;
  fVar5 = DAT_140278730;
  fVar4 = DAT_1402783f4;
  fVar3 = DAT_140278254;
  fVar2 = DAT_140278060;
  local_88 = DAT_1403020a0 ^ (ulonglong)auStack_e8;
  piVar17 = (int *)0x0;
  if (DAT_183f7a5b8 == 0) {
    local_c8[2] = 1;
    local_c8[0] = 1;
    local_c8[1] = 1;
  }
  else {
    uVar16 = 0x100;
    puVar18 = local_a8;
    param_2 = piVar17;
    piVar14 = piVar17;
    do {
      *puVar18 = 0;
      piVar9 = &DAT_151623978;
      piVar12 = piVar17;
      do {
        if (((piVar9[-0xb46] != 0) && (*piVar9 == 0)) && (piVar9[-0xb25] == (int)param_2)) {
          uVar11 = (int)piVar12 + 1;
          piVar12 = (int *)(ulonglong)uVar11;
          *puVar18 = uVar11;
        }
        piVar9 = piVar9 + 0xe0d;
      } while ((longlong)piVar9 < 0x1519a6d78);
      uVar11 = (uint)piVar12;
      if (0 < (int)uVar11) {
        uVar8 = uVar11;
        if ((int)uVar11 <= (int)(uint)piVar14) {
          uVar8 = (uint)piVar14;
        }
        piVar14 = (int *)(ulonglong)uVar8;
        if ((int)uVar11 < (int)uVar16) {
          uVar16 = uVar11;
        }
      }
      uVar11 = (int)param_2 + 1;
      param_2 = (int *)(ulonglong)uVar11;
      puVar18 = puVar18 + 1;
    } while ((int)uVar11 < 3);
    local_c8[2] = 1;
    if ((int)uVar16 < 1) {
      uVar16 = 1;
    }
    if ((int)local_a8[0] < 1) {
      local_c8[0] = 1;
    }
    else {
      param_2 = (int *)((longlong)(int)local_a8[0] % (longlong)(int)uVar16 & 0xffffffff);
      local_c8[0] = (int)local_a8[0] / (int)uVar16;
    }
    if ((int)local_a8[1] < 1) {
      local_c8[1] = 1;
    }
    else {
      local_c8[1] = (int)local_a8[1] / (int)uVar16;
      param_2 = (int *)((longlong)(int)local_a8[1] % (longlong)(int)uVar16 & 0xffffffff);
    }
    if (0 < (int)local_a8[2]) {
      local_c8[2] = (int)local_a8[2] / (int)uVar16;
      param_2 = (int *)((longlong)(int)local_a8[2] % (longlong)(int)uVar16 & 0xffffffff);
    }
  }
  piVar14 = piVar17;
  piVar12 = piVar17;
  iVar15 = DAT_183ebfcb0;
  do {
    pfVar10 = (float *)&DAT_182bbcd64;
    iVar20 = (&DAT_183ebfdac)[(longlong)piVar12 * 0x16f1];
    do {
      if ((pfVar10[-0x6f9] != 0.0) && (pfVar10[-0x6f4] == 2.38221e-44)) {
        if (((float)(&DAT_183ebfd60)[(longlong)piVar12 * 0x16f1] <= pfVar10[-0x6e2]) &&
           (pfVar10[-0x6e2] < (float)(&DAT_183ebfd6c)[(longlong)piVar12 * 0x16f1])) {
          if (((float)(&DAT_183ebfd68)[(longlong)piVar12 * 0x16f1] <= pfVar10[-0x6e0]) &&
             (pfVar10[-0x6e0] < (float)(&DAT_183ebfd74)[(longlong)piVar12 * 0x16f1])) {
            iVar20 = iVar20 + 0xfa;
          }
        }
      }
      if ((pfVar10[-0x19] != 0.0) && (pfVar10[-0x14] == 2.38221e-44)) {
        if (((float)(&DAT_183ebfd60)[(longlong)piVar12 * 0x16f1] <= pfVar10[-2]) &&
           (pfVar10[-2] < (float)(&DAT_183ebfd6c)[(longlong)piVar12 * 0x16f1])) {
          if (((float)(&DAT_183ebfd68)[(longlong)piVar12 * 0x16f1] <= *pfVar10) &&
             (*pfVar10 < (float)(&DAT_183ebfd74)[(longlong)piVar12 * 0x16f1])) {
            iVar20 = iVar20 + 0xfa;
          }
        }
      }
      if ((pfVar10[0x6c7] != 0.0) && (pfVar10[0x6cc] == 2.38221e-44)) {
        if (((float)(&DAT_183ebfd60)[(longlong)piVar12 * 0x16f1] <= pfVar10[0x6de]) &&
           (pfVar10[0x6de] < (float)(&DAT_183ebfd6c)[(longlong)piVar12 * 0x16f1])) {
          if (((float)(&DAT_183ebfd68)[(longlong)piVar12 * 0x16f1] <= pfVar10[0x6e0]) &&
             (pfVar10[0x6e0] < (float)(&DAT_183ebfd74)[(longlong)piVar12 * 0x16f1])) {
            iVar20 = iVar20 + 0xfa;
          }
        }
      }
      if ((pfVar10[0xda7] != 0.0) && (pfVar10[0xdac] == 2.38221e-44)) {
        if (((float)(&DAT_183ebfd60)[(longlong)piVar12 * 0x16f1] <= pfVar10[0xdbe]) &&
           (pfVar10[0xdbe] < (float)(&DAT_183ebfd6c)[(longlong)piVar12 * 0x16f1])) {
          if (((float)(&DAT_183ebfd68)[(longlong)piVar12 * 0x16f1] <= pfVar10[0xdc0]) &&
             (pfVar10[0xdc0] < (float)(&DAT_183ebfd74)[(longlong)piVar12 * 0x16f1])) {
            iVar20 = iVar20 + 0xfa;
          }
        }
      }
      pfVar10 = pfVar10 + 0x1b80;
    } while ((longlong)pfVar10 < 0x18329cd64);
    lVar19 = 4;
    piVar9 = &DAT_183ebff0c + (longlong)piVar12 * 0x16f1;
    do {
      if ((piVar9[-4] != 0) && (*piVar9 != -1)) {
        param_2 = (int *)((longlong)*piVar9 * 0x1b80);
        if (((float)(&DAT_183ebfd60)[(longlong)piVar12 * 0x16f1] <= (float)param_2[0x60aeec77]) &&
           ((float)param_2[0x60aeec77] < (float)(&DAT_183ebfd6c)[(longlong)piVar12 * 0x16f1])) {
          if (((float)(&DAT_183ebfd68)[(longlong)piVar12 * 0x16f1] <= (float)param_2[0x60aeec79]) &&
             ((float)param_2[0x60aeec79] < (float)(&DAT_183ebfd74)[(longlong)piVar12 * 0x16f1])) {
            if ((piVar9[-1] - 7U < 3) && (piVar9[1] != -1)) {
              param_2 = (int *)((longlong)piVar9[1] * 0x1b80);
              if (((float)(&DAT_183ebfd60)[(longlong)piVar12 * 0x16f1] <= (float)param_2[0x60aeec77]
                  ) && ((float)param_2[0x60aeec77] <
                        (float)(&DAT_183ebfd6c)[(longlong)piVar12 * 0x16f1])) {
                if (((float)(&DAT_183ebfd68)[(longlong)piVar12 * 0x16f1] <=
                     (float)param_2[0x60aeec79]) &&
                   ((float)param_2[0x60aeec79] < (float)(&DAT_183ebfd74)[(longlong)piVar12 * 0x16f1]
                   )) goto LAB_1400f4201;
              }
            }
            else {
LAB_1400f4201:
              iVar20 = iVar20 + piVar9[0xc];
            }
          }
        }
      }
      if ((piVar9[0x113] != 0) && (piVar9[0x117] != -1)) {
        param_2 = (int *)((longlong)piVar9[0x117] * 0x1b80);
        if (((float)(&DAT_183ebfd60)[(longlong)piVar12 * 0x16f1] <= (float)param_2[0x60aeec77]) &&
           ((float)param_2[0x60aeec77] < (float)(&DAT_183ebfd6c)[(longlong)piVar12 * 0x16f1])) {
          if (((float)(&DAT_183ebfd68)[(longlong)piVar12 * 0x16f1] <= (float)param_2[0x60aeec79]) &&
             ((float)param_2[0x60aeec79] < (float)(&DAT_183ebfd74)[(longlong)piVar12 * 0x16f1])) {
            if ((piVar9[0x116] - 7U < 3) && (piVar9[0x118] != -1)) {
              param_2 = (int *)((longlong)piVar9[0x118] * 0x1b80);
              if (((float)(&DAT_183ebfd60)[(longlong)piVar12 * 0x16f1] <= (float)param_2[0x60aeec77]
                  ) && ((float)param_2[0x60aeec77] <
                        (float)(&DAT_183ebfd6c)[(longlong)piVar12 * 0x16f1])) {
                if (((float)(&DAT_183ebfd68)[(longlong)piVar12 * 0x16f1] <=
                     (float)param_2[0x60aeec79]) &&
                   ((float)param_2[0x60aeec79] < (float)(&DAT_183ebfd74)[(longlong)piVar12 * 0x16f1]
                   )) goto LAB_1400f42b3;
              }
            }
            else {
LAB_1400f42b3:
              iVar20 = iVar20 + piVar9[0x123];
            }
          }
        }
      }
      if ((piVar9[0x22a] != 0) && (piVar9[0x22e] != -1)) {
        param_2 = (int *)((longlong)piVar9[0x22e] * 0x1b80);
        if (((float)(&DAT_183ebfd60)[(longlong)piVar12 * 0x16f1] <= (float)param_2[0x60aeec77]) &&
           ((float)param_2[0x60aeec77] < (float)(&DAT_183ebfd6c)[(longlong)piVar12 * 0x16f1])) {
          if (((float)(&DAT_183ebfd68)[(longlong)piVar12 * 0x16f1] <= (float)param_2[0x60aeec79]) &&
             ((float)param_2[0x60aeec79] < (float)(&DAT_183ebfd74)[(longlong)piVar12 * 0x16f1])) {
            if ((piVar9[0x22d] - 7U < 3) && (piVar9[0x22f] != -1)) {
              param_2 = (int *)((longlong)piVar9[0x22f] * 0x1b80);
              if (((float)(&DAT_183ebfd60)[(longlong)piVar12 * 0x16f1] <= (float)param_2[0x60aeec77]
                  ) && ((float)param_2[0x60aeec77] <
                        (float)(&DAT_183ebfd6c)[(longlong)piVar12 * 0x16f1])) {
                if (((float)(&DAT_183ebfd68)[(longlong)piVar12 * 0x16f1] <=
                     (float)param_2[0x60aeec79]) &&
                   ((float)param_2[0x60aeec79] < (float)(&DAT_183ebfd74)[(longlong)piVar12 * 0x16f1]
                   )) goto LAB_1400f4368;
              }
            }
            else {
LAB_1400f4368:
              iVar20 = iVar20 + piVar9[0x23a];
            }
          }
        }
      }
      if ((piVar9[0x341] != 0) && (piVar9[0x345] != -1)) {
        param_2 = (int *)((longlong)piVar9[0x345] * 0x1b80);
        if (((float)(&DAT_183ebfd60)[(longlong)piVar12 * 0x16f1] <= (float)param_2[0x60aeec77]) &&
           ((float)param_2[0x60aeec77] < (float)(&DAT_183ebfd6c)[(longlong)piVar12 * 0x16f1])) {
          if (((float)(&DAT_183ebfd68)[(longlong)piVar12 * 0x16f1] <= (float)param_2[0x60aeec79]) &&
             ((float)param_2[0x60aeec79] < (float)(&DAT_183ebfd74)[(longlong)piVar12 * 0x16f1])) {
            if ((piVar9[0x344] - 7U < 3) && (piVar9[0x346] != -1)) {
              param_2 = (int *)((longlong)piVar9[0x346] * 0x1b80);
              if (((float)(&DAT_183ebfd60)[(longlong)piVar12 * 0x16f1] <= (float)param_2[0x60aeec77]
                  ) && ((float)param_2[0x60aeec77] <
                        (float)(&DAT_183ebfd6c)[(longlong)piVar12 * 0x16f1])) {
                if (((float)(&DAT_183ebfd68)[(longlong)piVar12 * 0x16f1] <=
                     (float)param_2[0x60aeec79]) &&
                   ((float)param_2[0x60aeec79] < (float)(&DAT_183ebfd74)[(longlong)piVar12 * 0x16f1]
                   )) goto LAB_1400f441d;
              }
            }
            else {
LAB_1400f441d:
              iVar20 = iVar20 + piVar9[0x351];
            }
          }
        }
      }
      piVar9 = piVar9 + 0x45c;
      lVar19 = lVar19 + -1;
    } while (lVar19 != 0);
    piVar9 = &DAT_151620cac;
    lVar19 = 0x100;
    do {
      iVar13 = (int)piVar14;
      if ((piVar9[-0x13] != 0) && (piVar9[0xe] == iVar13)) {
        iVar1 = iVar20 / local_c8[(longlong)piVar12];
        param_2 = (int *)((longlong)iVar20 % (longlong)local_c8[(longlong)piVar12] & 0xffffffff);
        *piVar9 = *piVar9 + iVar1 + 0xfa;
        if ((iVar15 == 1) && (piVar9[-4] != -1)) {
          param_2 = (int *)((longlong)piVar9[-4] * 0x70);
          param_2[0x580d84e1] = param_2[0x580d84e1] + iVar1;
        }
      }
      piVar9 = piVar9 + 0xe0d;
      lVar19 = lVar19 + -1;
    } while (lVar19 != 0);
    (&DAT_183ebfdb0)[(longlong)piVar12 * 0x16f1] = iVar20;
    iVar15 = DAT_183ebfcb0;
    auVar23 = ZEXT812(0);
    fVar21 = ((float)iVar20 * fVar2 + fVar4) * (float)(&DAT_19021f0c4)[(longlong)piVar12 * 6];
    if (fVar21 < fVar6) {
      auVar23 = (undefined1  [12])0x0;
      fVar21 = fVar6;
    }
    (&DAT_19021f0c4)[(longlong)piVar12 * 6] = fVar21;
    if ((iVar15 != 1) && (fVar7 <= fVar21)) {
      fVar21 = fVar21 * fVar3;
      param_2 = &DAT_151620cec;
      (&DAT_19021f0c4)[(longlong)piVar12 * 6] = fVar21;
      do {
        if ((param_2[-0x23] != 0) && (param_2[-2] == iVar13)) {
          *param_2 = *param_2 * 5;
        }
        param_2 = param_2 + 0xe0d;
      } while ((longlong)param_2 < 0x1519a40ec);
    }
    auVar22._0_4_ = fVar21 * fVar5;
    auVar22._4_12_ = auVar23;
    piVar14 = (int *)(ulonglong)(iVar13 + 1U);
    (&DAT_19021f0cc)[(longlong)piVar12 * 6] = (int)auVar22._0_4_;
    piVar12 = (int *)((longlong)piVar12 + 1);
    if (2 < (int)(iVar13 + 1U)) {
      FUN_140052090(auVar22._0_8_,param_2);
      piVar14 = &DAT_151620c60;
      do {
        if (*piVar14 != 0) {
          FUN_140051f50(piVar17);
        }
        uVar16 = (int)piVar17 + 1;
        piVar17 = (int *)(ulonglong)uVar16;
        piVar14 = piVar14 + 0xe0d;
      } while ((int)uVar16 < 0x100);
      return;
    }
  } while( true );
}



===== FUN_140037fe0 @ 140037fe0 root=true =====

void FUN_140037fe0(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  
  iVar7 = 0;
  DAT_1a4bf0920 = 0;
  iVar6 = 0;
  iVar3 = DAT_15ada9278;
  iVar1 = DAT_15ada927c;
  iVar2 = DAT_15ada9274;
  if (0 < DAT_15ada9278) {
    do {
      iVar5 = 0;
      if (0 < iVar1) {
        do {
          iVar3 = 0;
          if (0 < iVar2) {
            do {
              iVar1 = (iVar1 * iVar6 + iVar5) * iVar2 + iVar3;
              iVar3 = iVar3 + 1;
              *(undefined4 *)(DAT_1a4bf0900 + (longlong)iVar1 * 4) = 0xffffffff;
              iVar1 = DAT_15ada927c;
              iVar2 = DAT_15ada9274;
            } while (iVar3 < DAT_15ada9274);
          }
          iVar5 = iVar5 + 1;
          iVar3 = DAT_15ada9278;
        } while (iVar5 < iVar1);
      }
      iVar6 = iVar6 + 1;
    } while (iVar6 < iVar3);
  }
  DAT_1a4cf0924 = 0;
  piVar4 = &DAT_182bbb2a8;
  do {
    if (((piVar4[-0x4a] != 0) && ((&DAT_182a7e18c)[(longlong)piVar4[-0x45] * 0x4f4] != 0)) &&
       (iVar3 = piVar4[-2], iVar3 <= piVar4[1])) {
      do {
        iVar1 = piVar4[-1];
        if (iVar1 <= piVar4[2]) {
          iVar2 = *piVar4;
          do {
            iVar6 = piVar4[-3];
            if (iVar6 <= iVar2) {
              do {
                FUN_140037de0(0,iVar6,iVar3,iVar1,(ushort)iVar7 | 0x8000);
                iVar2 = *piVar4;
                iVar6 = iVar6 + 1;
              } while (iVar6 <= iVar2);
            }
            iVar1 = iVar1 + 1;
          } while (iVar1 <= piVar4[2]);
        }
        iVar3 = iVar3 + 1;
      } while (iVar3 <= piVar4[1]);
    }
    iVar7 = iVar7 + 1;
    piVar4 = piVar4 + 0x6e0;
  } while (iVar7 < 0x400);
  return;
}



===== FUN_14008f050 @ 14008f050 root=true =====

void FUN_14008f050(void)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  longlong lVar4;
  longlong lVar5;
  undefined *puVar6;
  longlong lVar7;
  
  piVar3 = &DAT_1857bd750;
  puVar6 = &DAT_1857bd75c;
  lVar7 = 0x4000;
  do {
    if ((piVar3[-4] != 0) && (piVar3[-3] == 0)) {
      if (piVar3[-2] == 0) {
        iVar2 = *piVar3;
        lVar4 = (longlong)iVar2 * 0x1b80;
        FUN_1401fc920((longlong)&DAT_182bbb4e8 + (piVar3[1] << 6) + lVar4,puVar6,(longlong)piVar3[2]
                     );
        (&DAT_182bbb8e7)[lVar4] = 0;
        (&DAT_182bbb4c0)[(longlong)iVar2 * 0x6e0] = 0;
      }
      else if (piVar3[-2] == 1) {
        iVar2 = piVar3[2];
        if (0x3f < iVar2) {
          iVar2 = 0x3f;
          piVar3[2] = 0x3f;
        }
        iVar1 = *piVar3;
        lVar4 = (longlong)iVar2;
        lVar5 = ((longlong)piVar3[1] + (longlong)iVar1 * 0x6e) * 0x40;
        FUN_1401fc920(&DAT_182bbb4f4 + lVar5,puVar6,lVar4);
        (&DAT_182bbb4f4)[lVar5 + lVar4] = 0;
        FUN_1401fc920(&DAT_182bbbcf4 + lVar5,puVar6 + 0x40,lVar4);
        (&DAT_182bbb4c0)[(longlong)iVar1 * 0x6e0] = 0;
      }
      piVar3[-3] = 1;
    }
    puVar6 = puVar6 + 0x9c;
    piVar3 = piVar3 + 0x27;
    lVar7 = lVar7 + -1;
  } while (lVar7 != 0);
  return;
}



===== FUN_1400c90d0 @ 1400c90d0 root=true =====

void FUN_1400c90d0(int param_1)

{
  *(undefined8 *)(&DAT_182bbb4e8 + (longlong)param_1 * 0x6e0) = 0;
  FUN_1401fcd30(&DAT_182bbc7e0 + (longlong)param_1 * 0x1b80,0,0x520);
  FUN_1400c92b0(param_1);
  return;
}



===== FUN_1400c9120 @ 1400c9120 root=true =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400c9120(int param_1,uint param_2)

{
  undefined8 uVar1;
  undefined8 uVar2;
  int iVar3;
  undefined8 *puVar4;
  longlong lVar5;
  undefined1 *puVar6;
  
  lVar5 = (longlong)param_1;
  if ((param_2 >> 8 & 1) == 0) {
    if (param_2 == 0x13) {
      if (*(int *)(&DAT_182bbc7f4 + lVar5 * 0x1b80) != 2) {
        *(undefined4 *)(&DAT_182bbc7f4 + lVar5 * 0x1b80) = 0;
        return;
      }
    }
    else if (param_2 == 0x12) {
      if (*(int *)(&DAT_182bbc7f4 + lVar5 * 0x1b80) != 0) {
        *(undefined4 *)(&DAT_182bbc7f4 + lVar5 * 0x1b80) = 2;
        return;
      }
    }
    else if (param_2 == 0x11) {
      if (*(int *)(&DAT_182bbc7f4 + lVar5 * 0x1b80) != 3) {
        *(undefined4 *)(&DAT_182bbc7f4 + lVar5 * 0x1b80) = 1;
        return;
      }
    }
    else if ((param_2 == 0x10) && (*(int *)(&DAT_182bbc7f4 + lVar5 * 0x1b80) != 1)) {
      *(undefined4 *)(&DAT_182bbc7f4 + lVar5 * 0x1b80) = 3;
    }
  }
  else {
    iVar3 = toupper(param_2 & 0xff);
    if (iVar3 == 0x58) {
      iVar3 = 0;
      puVar6 = &DAT_182bbb4f4 + lVar5 * 0x1b80;
      (&DAT_182bbc7dc)[lVar5 * 0x6e0] = 0;
      puVar4 = (undefined8 *)(&DAT_182bbbcf4 + lVar5 * 0x1b80);
      do {
        uVar2 = _UNK_140279208;
        uVar1 = _DAT_140279200;
        *puVar6 = 0;
        *puVar4 = uVar1;
        puVar4[1] = uVar2;
        puVar4[2] = uVar1;
        puVar4[3] = uVar2;
        puVar4[4] = uVar1;
        puVar4[5] = uVar2;
        puVar4[6] = uVar1;
        *(int *)(puVar4 + 7) = (int)uVar1;
        *(short *)((longlong)puVar4 + 0x3c) = (short)uVar1;
        *(char *)((longlong)puVar4 + 0x3e) = (char)uVar1;
        FUN_140050f90(param_1,iVar3);
        iVar3 = iVar3 + 1;
        puVar4 = puVar4 + 8;
        puVar6 = puVar6 + 0x40;
      } while (iVar3 < 0x18);
      return;
    }
  }
  return;
}



===== FUN_1400cf160 @ 1400cf160 root=true =====

void FUN_1400cf160(void)

{
  float fVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  undefined4 uVar14;
  float fVar15;
  float fVar16;
  uint uVar17;
  longlong lVar18;
  undefined4 *puVar19;
  longlong lVar20;
  float *pfVar21;
  longlong lVar22;
  longlong lVar23;
  float fVar24;
  float fVar25;
  float fVar26;
  float fVar27;
  
  uVar17 = DAT_140279870;
  fVar24 = DAT_140278280;
  puVar19 = &DAT_182bbb22c;
  lVar23 = 0x400;
  lVar22 = 0x400;
  do {
    if (puVar19[-0x2b] != 0) {
      if (0 < (int)puVar19[0x2b]) {
        puVar19[0x2b] = puVar19[0x2b] + -1;
      }
      lVar18 = (longlong)(int)puVar19[-0x22];
      if (((puVar19[-0x22] != -1) &&
          (lVar20 = lVar18 * 0x6ff8, (&DAT_18329e308)[lVar18 * 0x1bfe] != 0)) &&
         (1 < (int)puVar19[-0x20])) {
        fVar1 = (float)(&DAT_18329e79c)[lVar18 * 0x1bfe];
        uVar2 = *(uint *)(&DAT_18329e7e4 + lVar20);
        uVar3 = *(uint *)(&DAT_18329e7e8 + lVar20);
        uVar4 = *(uint *)(&DAT_18329e7ec + lVar20);
        puVar19[-2] = *(undefined4 *)(&DAT_18329e7cc + lVar20);
        puVar19[-1] = *(undefined4 *)(&DAT_18329e7d0 + lVar20);
        *puVar19 = *(undefined4 *)(&DAT_18329e7d4 + lVar20);
        uVar14 = *(undefined4 *)(&DAT_18329e7d8 + lVar20);
        puVar19[1] = uVar2 ^ uVar17;
        puVar19[2] = uVar3 ^ uVar17;
        puVar19[3] = uVar4 ^ uVar17;
        puVar19[4] = uVar14;
        puVar19[5] = *(undefined4 *)(&DAT_18329e7dc + lVar20);
        puVar19[6] = *(undefined4 *)(&DAT_18329e7e0 + lVar20);
        puVar19[-0x14] = fVar1 - (float)(uVar2 ^ uVar17) * fVar24;
        puVar19[-0x13] = (float)(&DAT_18329e7a0)[lVar18 * 0x1bfe] - (float)(uVar3 ^ uVar17) * fVar24
        ;
        puVar19[-0x12] = (float)(&DAT_18329e7a4)[lVar18 * 0x1bfe] - (float)(uVar4 ^ uVar17) * fVar24
        ;
      }
    }
    fVar16 = DAT_14027825c;
    fVar15 = DAT_1402781f4;
    fVar1 = DAT_1402781bc;
    puVar19 = puVar19 + 0x6e0;
    lVar22 = lVar22 + -1;
  } while (lVar22 != 0);
  pfVar21 = (float *)&DAT_182bbb238;
  do {
    fVar24 = DAT_182aaeb50;
    if ((pfVar21[-0x2e] != 0.0) && (lVar22 = (longlong)(int)pfVar21[-0x24], pfVar21[-0x24] != -NAN))
    {
      fVar25 = (float)(&DAT_182bbb1dc)[lVar22 * 0x6e0];
      pfVar21[-0x17] = fVar25;
      fVar26 = (float)(&DAT_182bbb1e0)[lVar22 * 0x6e0];
      pfVar21[-0x16] = fVar26;
      fVar27 = (float)(&DAT_182bbb1e4)[lVar22 * 0x6e0];
      pfVar21[-0x15] = fVar27;
      fVar5 = (float)(&DAT_182bbb224)[lVar22 * 0x6e0];
      pfVar21[-5] = fVar5;
      fVar6 = (float)(&DAT_182bbb228)[lVar22 * 0x6e0];
      pfVar21[-4] = fVar6;
      fVar7 = (float)(&DAT_182bbb22c)[lVar22 * 0x6e0];
      pfVar21[-3] = fVar7;
      fVar8 = (float)(&DAT_182bbb230)[lVar22 * 0x6e0];
      pfVar21[-2] = fVar8;
      fVar9 = (float)(&DAT_182bbb234)[lVar22 * 0x6e0];
      pfVar21[-1] = fVar9;
      fVar10 = (float)(&DAT_182bbb238)[lVar22 * 0x6e0];
      *pfVar21 = fVar10;
      fVar11 = (float)(&DAT_182bbb23c)[lVar22 * 0x6e0];
      pfVar21[1] = fVar11;
      fVar12 = (float)(&DAT_182bbb240)[lVar22 * 0x6e0];
      pfVar21[2] = fVar12;
      fVar13 = (float)(&DAT_182bbb244)[lVar22 * 0x6e0];
      pfVar21[3] = fVar13;
      if ((&DAT_182bbb194)[lVar22 * 0x6e0] - 0xf < 2) {
        if (pfVar21[-0x29] == 2.38221e-44) {
          fVar24 = (float)(int)pfVar21[-0x23] * fVar15 - fVar16;
          fVar25 = fVar5 * fVar24 + fVar25;
          fVar26 = fVar6 * fVar24 + fVar26;
          pfVar21[-0x17] = fVar25;
          pfVar21[-0x16] = fVar26;
          fVar27 = fVar7 * fVar24 + fVar27;
          pfVar21[-0x15] = fVar27;
        }
        if (pfVar21[-0x29] == 2.52234e-44) {
          fVar24 = (float)(int)pfVar21[-0x23] * fVar15 - fVar16;
          pfVar21[-0x17] = fVar5 * fVar24 + fVar25;
          pfVar21[-0x16] = fVar6 * fVar24 + fVar26;
          pfVar21[-0x15] = fVar7 * fVar24 + fVar27;
        }
      }
      else if ((&DAT_182bbb194)[lVar22 * 0x6e0] == 0x27) {
        fVar25 = fVar8 * fVar24 + fVar25;
        fVar26 = fVar9 * fVar24 + fVar26;
        fVar27 = fVar10 * fVar24 + fVar27;
        pfVar21[-0x17] = fVar25;
        pfVar21[-0x16] = fVar26;
        pfVar21[-0x15] = fVar27;
        fVar24 = *(float *)(&DAT_182a7e6a4 +
                           (longlong)(int)(&DAT_182bbb194)[lVar22 * 0x6e0] * 0x13d0);
        pfVar21[-0x17] = fVar24 * fVar11 + fVar25;
        pfVar21[-0x16] = fVar24 * fVar12 + fVar26;
        pfVar21[-0x15] = fVar24 * fVar13 + fVar27;
      }
      else {
        fVar25 = fVar25 - fVar8 * fVar1;
        fVar26 = fVar26 - fVar9 * fVar1;
        fVar27 = fVar27 - fVar10 * fVar1;
        pfVar21[-0x17] = fVar25 - fVar11 * fVar1;
        pfVar21[-0x16] = fVar26 - fVar12 * fVar1;
        pfVar21[-0x15] = fVar27 - fVar13 * fVar1;
        if ((&DAT_182bbb194)[lVar22 * 0x6e0] == 0xb) {
          pfVar21[-0x17] = fVar25;
          pfVar21[-0x16] = fVar26;
          pfVar21[-0x15] = fVar27;
        }
      }
    }
    pfVar21 = pfVar21 + 0x6e0;
    lVar23 = lVar23 + -1;
  } while (lVar23 != 0);
  return;
}



===== FUN_14008f1b0 @ 14008f1b0 root=true =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_14008f1b0(void)

{
  undefined1 auVar1 [16];
  char cVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  float fVar9;
  float fVar10;
  float fVar11;
  undefined4 uVar12;
  undefined4 uVar13;
  uint uVar14;
  int iVar15;
  int iVar16;
  uint uVar17;
  longlong lVar18;
  int *piVar19;
  ulonglong uVar20;
  char *pcVar21;
  longlong lVar22;
  longlong lVar23;
  int iVar24;
  longlong lVar25;
  ulonglong uVar26;
  undefined4 *puVar27;
  uint uVar28;
  int iVar29;
  uint uVar30;
  bool bVar31;
  float fVar32;
  float local_118;
  float local_114;
  float local_110;
  undefined4 local_108;
  undefined4 uStack_104;
  undefined4 uStack_100;
  undefined4 uStack_fc;
  undefined4 local_f8;
  undefined4 uStack_f4;
  undefined4 uStack_f0;
  undefined4 uStack_ec;
  undefined4 local_e8;
  
  uVar13 = DAT_1402783f4;
  uVar12 = DAT_140278180;
  fVar11 = DAT_140278178;
  fVar10 = DAT_140278168;
  fVar9 = DAT_14027814c;
  fVar8 = DAT_140278148;
  fVar7 = DAT_14027808c;
  fVar6 = DAT_140278084;
  if (DAT_189c1dc60 != DAT_189c1dc64) {
    iVar24 = DAT_183ebfd34;
    if ((DAT_144cbfaa4 != 0) && (DAT_183ebfd34 < DAT_144cbfac0)) {
      iVar24 = DAT_144cbfac0;
    }
    do {
      uVar26 = 0;
      uVar17 = DAT_189c1dc60;
      if ((&DAT_1873de460)[(longlong)(int)DAT_189c1dc60 * 0x20] == 0x14) {
        lVar23 = 0x80;
        do {
          FUN_1400a56b0(&local_118,DAT_1402781c4);
          uVar14 = FUN_14023b1b0();
          uVar17 = DAT_189c1dc60;
          lVar25 = (longlong)(int)DAT_189c1dc60;
          lVar22 = (longlong)DAT_1a7971d80;
          lVar18 = lVar25 * 0x80;
          puVar27 = (undefined4 *)(&DAT_1873de468 + lVar18);
          fVar32 = (float)(uVar14 & 0x1f) * fVar6 + fVar8;
          if (DAT_1a7971d80 < 0x4000) {
            uVar3 = *puVar27;
            DAT_1a7971d80 = DAT_1a7971d80 + 1;
            (&DAT_1a771f380)[lVar22 * 0x25] = 2;
            (&DAT_1a771f38c)[lVar22 * 0x25] = uVar3;
            (&DAT_1a771f390)[lVar22 * 0x25] = *(undefined4 *)(&DAT_1873de46c + lVar18);
            (&DAT_1a771f394)[lVar22 * 0x25] = *(undefined4 *)(&DAT_1873de470 + lVar18);
            (&DAT_1a771f398)[lVar22 * 0x25] = local_118;
            (&DAT_1a771f3a0)[lVar22 * 0x25] = local_110;
            (&DAT_1a771f39c)[lVar22 * 0x25] = local_114;
            (&DAT_1a771f384)[lVar22 * 0x25] = 0x3c;
            (&DAT_1a771f40c)[lVar22 * 0x25] = fVar32;
            (&DAT_1a771f410)[lVar22 * 0x25] = fVar32;
            (&DAT_1a771f388)[lVar22 * 0x25] = 0x3b326750;
            (&DAT_1a771f408)[lVar22 * 0x25] = 0x3f79999a;
          }
          lVar23 = lVar23 + -1;
        } while (lVar23 != 0);
        if ((uint)(iVar24 - (&DAT_1873de464)[lVar25 * 0x20]) < 100) {
          FUN_14005ed40(DAT_183e936ec,puVar27,0,puVar27,uVar13);
          uVar17 = DAT_189c1dc60;
        }
      }
      lVar23 = (longlong)(int)uVar17;
      if (((&DAT_1873de460)[lVar23 * 0x20] == 9) &&
         ((uint)(iVar24 - (&DAT_1873de464)[lVar23 * 0x20]) < 100)) {
        FUN_14005ed40((&DAT_1873de480)[lVar23 * 0x20],&DAT_1873de468 + lVar23 * 0x80,0);
        uVar17 = DAT_189c1dc60;
      }
      lVar23 = (longlong)(int)uVar17;
      if (((&DAT_1873de460)[lVar23 * 0x20] == 0x13) &&
         ((uint)(iVar24 - (&DAT_1873de464)[lVar23 * 0x20]) < 100)) {
        iVar16 = (&DAT_1873de484)[lVar23 * 0x20];
        lVar18 = (longlong)iVar16;
        if ((&DAT_182bbb180)[lVar18 * 0x6e0] != 0) {
          iVar15 = FUN_14005ed40((&DAT_1873de480)[lVar23 * 0x20],&DAT_182bbb1dc + lVar18 * 0x6e0,
                                 &DAT_182bbb200 + lVar18 * 0x6e0);
          uVar17 = DAT_189c1dc60;
          *(int *)(&DAT_1510a974c + (longlong)iVar15 * 0x20) = iVar16;
        }
      }
      lVar23 = (longlong)(int)uVar17;
      lVar18 = lVar23 * 0x80;
      if ((&DAT_1873de460)[lVar23 * 0x20] == 0) {
        lVar22 = (longlong)(int)(&DAT_1873de484)[lVar23 * 0x20];
        if (DAT_1ad04adc0 == 0) {
          FUN_14004e8a0((&DAT_1873de480)[lVar23 * 0x20],&DAT_1873de468 + lVar18,
                        &DAT_1873de474 + lVar18,0);
        }
        FUN_1400a56b0(&local_118,fVar9);
        local_118 = (float)(&DAT_182bbb224)[lVar22 * 0x6e0] * fVar10 + local_118 +
                    (float)(&DAT_182bbb230)[lVar22 * 0x6e0] * fVar10 +
                    (float)(&DAT_182bbb200)[lVar22 * 0x6e0];
        local_114 = (float)(&DAT_182bbb228)[lVar22 * 0x6e0] * fVar10 + local_114 +
                    (float)(&DAT_182bbb234)[lVar22 * 0x6e0] * fVar10 +
                    (float)(&DAT_182bbb204)[lVar22 * 0x6e0];
        local_110 = (float)(&DAT_182bbb22c)[lVar22 * 0x6e0] * fVar10 + local_110 +
                    (float)(&DAT_182bbb238)[lVar22 * 0x6e0] * fVar10 +
                    (float)(&DAT_182bbb208)[lVar22 * 0x6e0];
        FUN_14005f150(0,&DAT_1873de468 + (longlong)(int)DAT_189c1dc60 * 0x80,&local_118);
        lVar23 = (longlong)(int)DAT_189c1dc60;
        if ((uint)(iVar24 - (&DAT_1873de464)[lVar23 * 0x20]) < 100) {
          uVar3 = DAT_183e935ac;
          if ((&DAT_182bbb194)[(longlong)(int)(&DAT_1873de484)[lVar23 * 0x20] * 0x6e0] - 1 < 0xb) {
            iVar16 = FUN_14023b1b0();
            uVar3 = *(undefined4 *)
                     (&DAT_183e93738 +
                     ((longlong)
                      (int)(&DAT_182bbb194)
                           [(longlong)(int)(&DAT_1873de484)[(longlong)(int)DAT_189c1dc60 * 0x20] *
                            0x6e0] * 0x10 +
                     (longlong)
                     (iVar16 + (iVar16 / 6 + (iVar16 >> 0x1f) +
                               (int)(((longlong)iVar16 / 6 + ((longlong)iVar16 >> 0x3f) &
                                     0xffffffffU) >> 0x1f)) * -6)) * 4);
          }
          FUN_14005ed40(uVar3,&DAT_1873de468 + lVar23 * 0x80,0);
        }
        uVar17 = DAT_189c1dc60;
        lVar18 = (longlong)(int)DAT_189c1dc60 * 0x80;
        (&DAT_182bbb2d8)
        [(longlong)(int)(&DAT_1873de484)[(longlong)(int)DAT_189c1dc60 * 0x20] * 0x6e0] = 4;
      }
      fVar32 = DAT_1402783a0;
      if (*(int *)((longlong)&DAT_1873de460 + lVar18) == 4) {
        iVar16 = *(int *)((longlong)&DAT_1873de484 + lVar18);
        iVar15 = *(int *)((longlong)&DAT_1873de480 + lVar18);
        lVar23 = (longlong)iVar15;
        if (iVar16 == 4) {
          if (DAT_1ad04adc0 == 0) {
            *(undefined4 *)
             (&DAT_15f2d9a38 + (longlong)*(int *)(&DAT_1873de488 + lVar18) * 0x40 + lVar23 * 0x5168)
                 = 0;
          }
        }
        else if (iVar16 == 5) {
          if (DAT_1ad04adc0 == 0) {
            *(undefined4 *)
             (&DAT_15f2d9a38 + (longlong)*(int *)(&DAT_1873de488 + lVar18) * 0x40 + lVar23 * 0x5168)
                 = 8;
          }
        }
        else if (iVar16 == 6) {
          if (DAT_1ad04adc0 == 0) {
            (&DAT_15f2db9fc)[(longlong)*(int *)(&DAT_1873de488 + lVar18) + lVar23 * 0x145a] = 0;
          }
        }
        else if (iVar16 == 0) {
          if (DAT_1ad04adc0 == 0) {
            if (*(int *)(&DAT_192e9a680 + (longlong)(int)(&DAT_15f2d9204)[lVar23 * 0x145a] * 0x185c0
                        ) == 0) {
              *(undefined4 *)
               (&DAT_15f2d9a38 +
               (longlong)*(int *)(&DAT_1873de488 + lVar18) * 0x40 + lVar23 * 0x5168) = 0;
            }
            else {
              (&DAT_15f2db9fc)[lVar23 * 0x145a + (longlong)*(int *)(&DAT_1873de488 + lVar18)] = 1;
            }
          }
          fVar32 = DAT_1402783a0;
          if ((&DAT_15f2d9204)[lVar23 * 0x145a] != 0xd) {
            FUN_140067970(iVar15,*(undefined4 *)(&DAT_1873de488 + lVar18),&DAT_1873de468 + lVar18);
            FUN_14023b1b0();
            fVar32 = DAT_1402783a0;
            uVar17 = DAT_189c1dc60;
            if ((uint)(iVar24 - (&DAT_1873de464)[(longlong)(int)DAT_189c1dc60 * 0x20]) < 100) {
              FUN_14005ed40(DAT_183e93658,&DAT_1873de468 + (longlong)(int)DAT_189c1dc60 * 0x80,0);
              fVar32 = DAT_1402783a0;
              uVar17 = DAT_189c1dc60;
            }
          }
        }
        lVar18 = (longlong)(int)uVar17 * 0x80;
        iVar16 = (&DAT_1873de484)[(longlong)(int)uVar17 * 0x20];
        if (iVar16 == 1) {
          if (DAT_1ad04adc0 == 0) {
            lVar22 = (longlong)*(int *)(&DAT_1873de488 + lVar18);
            (&DAT_15f2dcb50)[lVar22 * 0x2b + lVar23 * 0x145a] =
                 (&DAT_15f2dcb50)[lVar22 * 0x2b + lVar23 * 0x145a] | 1;
            (&DAT_15f2dcb78)[lVar22 * 0x2b + lVar23 * 0x145a] =
                 (float)(&DAT_15f2dcb78)[lVar22 * 0x2b + lVar23 * 0x145a] * fVar32;
          }
        }
        else if (iVar16 == 2) {
          if (DAT_1ad04adc0 == 0) {
            (&DAT_15f2d920c)[lVar23 * 0x145a] = *(undefined4 *)(&DAT_1873de488 + lVar18);
          }
        }
        else if ((iVar16 == 3) && (DAT_1ad04adc0 == 0)) {
          if (*(int *)(&DAT_15f2dc848 + lVar23 * 0x5168) != -1) {
            (&DAT_15fd16268)[(longlong)*(int *)(&DAT_15f2dc848 + lVar23 * 0x5168) * 0x17f] =
                 0xffffffff;
          }
          (&DAT_15f2d9200)[lVar23 * 0x145a] = 0;
        }
      }
      iVar16 = *(int *)((longlong)&DAT_1873de460 + lVar18);
      if (iVar16 == 0x15) {
        uVar14 = *(uint *)((longlong)&DAT_1873de480 + lVar18);
        if ((0xff < uVar14) || (uVar14 != DAT_183f7c540)) goto LAB_14008fa23;
        iVar15 = *(int *)((longlong)&DAT_1873de484 + lVar18);
        if (iVar15 == 0) {
          iVar15 = *(int *)(&DAT_1873de488 + lVar18);
          (&DAT_151620ce4)[(longlong)(int)uVar14 * 0xe0d] = iVar15;
          if (iVar15 == 2) {
            DAT_183f7a564 = *(uint *)(&DAT_1873de48c + lVar18) & 0xff;
            DAT_183f7a568 = (int)*(uint *)(&DAT_1873de48c + lVar18) >> 10 & 0xff;
          }
          goto LAB_14008fa23;
        }
        if (iVar15 == 1) {
          DAT_183f7a570 = *(undefined4 *)(&DAT_1873de468 + lVar18);
          DAT_183f7a574 = *(undefined4 *)(&DAT_1873de46c + lVar18);
          DAT_183f7a578 = *(undefined4 *)(&DAT_1873de470 + lVar18);
          goto LAB_14008fa23;
        }
        if (iVar15 != 2) goto LAB_14008fa23;
        uVar14 = *(uint *)(&DAT_1873de48c + lVar18);
        uVar30 = *(uint *)(&DAT_1873de488 + lVar18);
        uVar26 = (ulonglong)(uVar30 & 7);
        (&DAT_183f7a324)[uVar26 * 9] = uVar14 & 0xff;
        bVar31 = DAT_1ad04adc0 == 0;
        (&DAT_183f7a32c)[uVar26 * 9] = (int)uVar14 >> 0x14 & 0xff;
        (&DAT_183f7a328)[uVar26 * 9] = (int)uVar14 >> 10 & 0xff;
        if ((bVar31) && (iVar16 = (uVar30 & 7) + 1, DAT_183f7a320 < iVar16)) {
          DAT_183f7a320 = iVar16;
        }
      }
      else {
LAB_14008fa23:
        if (DAT_1ad04adc0 == 0) {
          if (iVar16 == 3) {
            iVar16 = *(int *)((longlong)&DAT_1873de484 + lVar18);
            lVar23 = (longlong)*(int *)((longlong)&DAT_1873de480 + lVar18);
            uVar3 = *(undefined4 *)(&DAT_1873de488 + lVar18);
            (&DAT_15f2d9200)[lVar23 * 0x145a] = 1;
            (&DAT_15f2d920c)[lVar23 * 0x145a] = 100;
            (&DAT_15f2d9204)[lVar23 * 0x145a] = iVar16;
            (&DAT_15f2d9218)[lVar23 * 0x145a] = uVar3;
            if (0 < *(int *)(&DAT_192e9bad8 + (longlong)iVar16 * 0x185c0)) {
              puVar27 = (undefined4 *)(&DAT_15f2d9a38 + lVar23 * 0x5168);
              uVar20 = uVar26;
              do {
                *puVar27 = 100;
                puVar27 = puVar27 + 0x10;
                iVar16 = (&DAT_15f2d9204)[lVar23 * 0x145a];
                uVar14 = (int)uVar20 + 1;
                uVar20 = (ulonglong)uVar14;
              } while ((int)uVar14 < *(int *)(&DAT_192e9bad8 + (longlong)iVar16 * 0x185c0));
            }
            if (0 < *(int *)(&DAT_1902b4c64 + (longlong)iVar16 * 0x2c040)) {
              puVar27 = &DAT_15f2db9fc + lVar23 * 0x145a;
              uVar20 = uVar26;
              do {
                *puVar27 = 0;
                puVar27 = puVar27 + 1;
                iVar16 = (&DAT_15f2d9204)[lVar23 * 0x145a];
                uVar14 = (int)uVar20 + 1;
                uVar20 = (ulonglong)uVar14;
              } while ((int)uVar14 < *(int *)(&DAT_1902b4c64 + (longlong)iVar16 * 0x2c040));
            }
            if (0 < *(int *)(&DAT_192eb1ef8 + (longlong)iVar16 * 0x185c0)) {
              puVar27 = &DAT_15f2dcb78 + lVar23 * 0x145a;
              uVar20 = uVar26;
              do {
                uVar14 = (int)uVar20 + 1;
                uVar20 = (ulonglong)uVar14;
                puVar27[-10] = *(undefined4 *)
                                (&DAT_192eb1f3c +
                                (longlong)(int)(&DAT_15f2d9204)[lVar23 * 0x145a] * 0x185c0 + uVar26)
                ;
                lVar18 = (longlong)(int)(&DAT_15f2d9204)[lVar23 * 0x145a] * 0x185c0 + uVar26;
                uVar26 = uVar26 + 0x50;
                *puVar27 = *(undefined4 *)(&DAT_192eb1f14 + lVar18);
                puVar27 = puVar27 + 0x2b;
              } while ((int)uVar14 <
                       *(int *)(&DAT_192eb1ef8 +
                               (longlong)(int)(&DAT_15f2d9204)[lVar23 * 0x145a] * 0x185c0));
            }
            (&DAT_15f2de344)[lVar23 * 0x145a] = 0xffffffff;
            (&DAT_15f2de354)[lVar23 * 0x145a] = 0xffffffff;
          }
          else if (iVar16 == 5) {
            uVar14 = *(uint *)((longlong)&DAT_1873de480 + lVar18);
            uVar26 = (ulonglong)(uVar14 & 0x3ff);
            uVar30 = (int)uVar14 >> 10 & 1;
            iVar16 = (&DAT_182bbb180)[uVar26 * 0x6e0];
            (&DAT_182bbb180)[uVar26 * 0x6e0] = uVar30;
            if ((uVar30 != 0) && (iVar16 == 0)) {
              *(undefined8 *)(&DAT_182bbb1dc + uVar26 * 0x6e0) = 0;
              (&DAT_182bbb1e4)[uVar26 * 0x6e0] = 0;
              *(undefined8 *)(&DAT_182bbb4c8 + uVar26 * 0x6e0) = 0;
              (&DAT_182bbb4d0)[uVar26 * 0x6e0] = 0;
              *(undefined8 *)(&DAT_182bbb4dc + uVar26 * 0x6e0) = 0;
              (&DAT_182bbb4e4)[uVar26 * 0x6e0] = 0;
            }
            (&DAT_182bbb1a4)[uVar26 * 0x6e0] = *(undefined4 *)((longlong)&DAT_1873de484 + lVar18);
            (&DAT_182bbb1a8)[uVar26 * 0x6e0] = *(undefined4 *)(&DAT_1873de488 + lVar18);
            (&DAT_182bbb1ac)[uVar26 * 0x6e0] = *(undefined4 *)(&DAT_1873de48c + lVar18);
            (&DAT_182bbb194)[uVar26 * 0x6e0] = (int)uVar14 >> 0xb & 0x3f;
          }
          else if (iVar16 == 6) {
            uVar26 = (ulonglong)(*(uint *)((longlong)&DAT_1873de480 + lVar18) & 0x3ff);
            (&DAT_182bbb3fc)[uVar26 * 0x6e0] = *(undefined4 *)((longlong)&DAT_1873de484 + lVar18);
            *(undefined4 *)(&DAT_182bbb2e8 + uVar26 * 0x1b80) =
                 *(undefined4 *)(&DAT_1873de488 + lVar18);
            (&DAT_182bbb3f8)[uVar26 * 0x6e0] = *(undefined4 *)(&DAT_1873de48c + lVar18);
          }
          else if (iVar16 == 7) {
            uVar14 = *(uint *)((longlong)&DAT_1873de480 + lVar18);
            uVar26 = (ulonglong)(uVar14 & 0xff);
            lVar23 = uVar26 * 0x3834;
            uVar30 = (int)uVar14 >> 9 & 1;
            (&DAT_151620c60)[uVar26 * 0xe0d] = uVar30;
            if (uVar30 != 0) {
              uVar30 = *(uint *)(&DAT_1873de488 + lVar18);
              auVar1 = *(undefined1 (*) [16])(&DAT_1873de4a0 + lVar18);
              uVar4 = *(undefined8 *)(&DAT_1873de4b0 + lVar18);
              uVar5 = *(undefined8 *)(&DAT_1873de4b8 + lVar18);
              (&DAT_151623978)[uVar26 * 0xe0d] = (int)uVar14 >> 8 & 1;
              (&DAT_151620cfc)[uVar26 * 0xe0d] = *(undefined4 *)((longlong)&DAT_1873de484 + lVar18);
              (&DAT_151620ce4)[uVar26 * 0xe0d] = ((int)uVar14 >> 10) + -1;
              (&DAT_15162440c)[uVar26 * 0xe0d] = uVar30 & 1;
              *(uint *)(&DAT_151624430 + lVar23) = (int)uVar30 >> 1 & 0xf;
              *(uint *)(&DAT_151624410 + lVar23) = (int)uVar30 >> 6 & 7;
              *(uint *)(&DAT_151624418 + lVar23) = (int)uVar30 >> 9 & 0xf;
              uVar14 = *(uint *)(&DAT_1873de48c + lVar18);
              *(uint *)(&DAT_15162441c + lVar23) = uVar14 & 7;
              *(uint *)(&DAT_151624414 + lVar23) = (int)uVar14 >> 3 & 0xf;
              *(uint *)((longlong)&DAT_151624420 + lVar23) = (int)uVar14 >> 7 & 0x1f;
              *(uint *)((longlong)&DAT_151624420 + lVar23 + 4) = (int)uVar14 >> 0xc & 0xf;
              (&DAT_151624428)[uVar26 * 0xe0d] = (int)uVar14 >> 0x10 & 0xf;
              (&DAT_151624434)[uVar26 * 0xe0d] = (int)uVar14 >> 0x14 & 0xf;
              *(undefined4 *)(&DAT_15162434c + lVar23) = 0x3d400000;
              *(undefined4 *)(&DAT_151624350 + lVar23) = 0x3d400000;
              *(undefined4 *)(&DAT_151624354 + lVar23) = 0xbe19999a;
              *(undefined4 *)(&DAT_151624364 + lVar23) = 0xbd400000;
              *(undefined4 *)(&DAT_151624368 + lVar23) = 0x3d400000;
              *(undefined4 *)(&DAT_15162436c + lVar23) = 0xbe19999a;
              *(undefined4 *)(&DAT_151624358 + lVar23) = 0x3f800000;
              *(undefined4 *)(&DAT_15162435c + lVar23) = 0x3f800000;
              *(undefined4 *)(&DAT_151624360 + lVar23) = 0x3f800000;
              *(undefined4 *)(&DAT_151624370 + lVar23) = 0x3f800000;
              *(undefined4 *)(&DAT_151624374 + lVar23) = 0x3f800000;
              *(undefined4 *)(&DAT_151624378 + lVar23) = 0x3f800000;
              *(undefined1 (*) [16])(&DAT_151620c64 + uVar26 * 0xe0d) = auVar1;
              *(undefined8 *)(&DAT_151620c74 + lVar23) = uVar4;
              *(undefined8 *)(&DAT_151620c7c + lVar23) = uVar5;
              (&DAT_151620c83)[lVar23] = 0;
            }
          }
          else if (iVar16 == 0x11) {
            iVar16 = *(int *)((longlong)&DAT_1873de484 + lVar18);
            iVar15 = *(int *)((longlong)&DAT_1873de480 + lVar18);
            lVar22 = (longlong)iVar15;
            iVar29 = *(int *)(&DAT_1873de488 + lVar18);
            lVar23 = (longlong)iVar29;
            lVar18 = lVar22 * 0x6ff8;
            (&DAT_18329e308)[lVar22 * 0x1bfe] = iVar16;
            if (iVar16 == 0) {
              if (iVar29 != -1) {
                (&DAT_151620cfc)[lVar23 * 0xe0d] = 0xffffffff;
              }
            }
            else {
              (&DAT_18329e310)[lVar22 * 0x1bfe] = iVar29;
              if (iVar29 != -1) {
                lVar22 = lVar23 * 0x3834;
                (&DAT_151620cfc)[lVar23 * 0xe0d] = iVar15;
                *(undefined4 *)(&DAT_1832a4f88 + lVar18) = *(undefined4 *)(&DAT_15162434c + lVar22);
                *(undefined4 *)(&DAT_1832a4f8c + lVar18) = *(undefined4 *)(&DAT_151624350 + lVar22);
                *(undefined4 *)(&DAT_1832a4f90 + lVar18) = *(undefined4 *)(&DAT_151624354 + lVar22);
                *(undefined4 *)(&DAT_1832a4f94 + lVar18) = *(undefined4 *)(&DAT_151624358 + lVar22);
                *(undefined4 *)(&DAT_1832a4f98 + lVar18) = *(undefined4 *)(&DAT_15162435c + lVar22);
                *(undefined4 *)(&DAT_1832a4f9c + lVar18) = *(undefined4 *)(&DAT_151624360 + lVar22);
                *(undefined4 *)(&DAT_1832a4fa0 + lVar18) = *(undefined4 *)(&DAT_151624364 + lVar22);
                *(undefined4 *)(&DAT_1832a4fa4 + lVar18) = *(undefined4 *)(&DAT_151624368 + lVar22);
                *(undefined4 *)(&DAT_1832a4fa8 + lVar18) = *(undefined4 *)(&DAT_15162436c + lVar22);
                *(undefined4 *)(&DAT_1832a4fac + lVar18) = *(undefined4 *)(&DAT_151624370 + lVar22);
                *(undefined4 *)(&DAT_1832a4fb0 + lVar18) = *(undefined4 *)(&DAT_151624374 + lVar22);
                *(undefined4 *)(&DAT_1832a4fb4 + lVar18) = *(undefined4 *)(&DAT_151624378 + lVar22);
              }
            }
          }
          else if (iVar16 == 8) {
            lVar23 = (longlong)*(int *)((longlong)&DAT_1873de480 + lVar18);
            uVar3 = *(undefined4 *)((longlong)&DAT_1873de484 + lVar18);
            (&DAT_183f7aef4)[lVar23] = 0;
            iVar15 = DAT_183f7b2f4;
            (&DAT_151620cac)[lVar23 * 0xe0d] = uVar3;
            (&DAT_151620cec)[lVar23 * 0xe0d] = *(undefined4 *)(&DAT_1873de488 + lVar18);
            iVar16 = *(int *)(&DAT_1873de48c + lVar18);
            (&DAT_151620c90)[lVar23 * 0xe0d] = iVar16;
            if (0 < iVar15) {
              piVar19 = &DAT_183f7b2f8;
              do {
                if (iVar16 == *piVar19) {
                  (&DAT_183f7aef4)[lVar23] = 1;
                  iVar15 = DAT_183f7b2f4;
                }
                uVar14 = (int)uVar26 + 1;
                uVar26 = (ulonglong)uVar14;
                piVar19 = piVar19 + 1;
              } while ((int)uVar14 < iVar15);
            }
          }
          else if (iVar16 == 0xc) {
            uVar14 = *(uint *)((longlong)&DAT_1873de480 + lVar18);
            uVar26 = (ulonglong)((int)uVar14 >> 1 & 7);
            uVar20 = (ulonglong)((int)uVar14 >> 4 & 0xf);
            lVar23 = uVar26 * 0x45c + uVar20 * 0x5bc4;
            (&DAT_183ebfefc)[uVar20 * 0x16f1 + uVar26 * 0x117] = uVar14 & 1;
            if ((uVar14 & 1) != 0) {
              uVar30 = *(uint *)((longlong)&DAT_1873de484 + lVar18);
              uVar28 = *(uint *)(&DAT_1873de488 + lVar18);
              (&DAT_183ebff08)[uVar20 * 0x16f1 + uVar26 * 0x117] = (int)uVar14 >> 8 & 0xf;
              *(uint *)(&DAT_183ebff38 + lVar23) = (int)uVar14 >> 0x10 & 0xff;
              *(uint *)(&DAT_183ebff18 + lVar23) = uVar30 & 0xf;
              *(uint *)(&DAT_183ebff1c + lVar23) = (int)uVar30 >> 4 & 0xf;
              (&DAT_183ebff3c)[uVar20 * 0x16f1 + uVar26 * 0x117] = (int)uVar30 >> 8;
              *(uint *)(&DAT_183ebff44 + lVar23) = ((int)uVar28 >> 0x10 & 0xffffU) - 1;
              (&DAT_183ebff48)[uVar20 * 0x16f1 + uVar26 * 0x117] =
                   *(undefined4 *)(&DAT_1873de48c + lVar18);
              (&DAT_183ebff40)[uVar20 * 0x16f1 + uVar26 * 0x117] = (uVar28 & 0xffff) * 0x3c;
            }
          }
          else if (iVar16 == 0x16) {
            uVar26 = (ulonglong)(*(uint *)((longlong)&DAT_1873de480 + lVar18) & 0xf);
            uVar20 = (ulonglong)((int)*(uint *)((longlong)&DAT_1873de480 + lVar18) >> 8 & 0xf);
            (&DAT_183ebfefc)[uVar26 * 0x16f1 + uVar20 * 0x117] = 1;
            lVar23 = (longlong)(*(int *)((longlong)&DAT_1873de484 + lVar18) << 6) + uVar20 * 0x45c +
                     uVar26 * 0x5bc4;
            FUN_1401fc920(&DAT_183ebff58 + lVar23,&DAT_1873de4a0 + lVar18,
                          (longlong)*(int *)(&DAT_1873de488 + lVar18));
            (&DAT_183ebff98)[lVar23] = 0;
          }
          else {
            if (iVar16 != 0xd) goto LAB_1400902c9;
            DAT_19021f0cc = *(uint *)((longlong)&DAT_1873de480 + lVar18) & 0xffff;
            DAT_19021f0e4 = (int)*(uint *)((longlong)&DAT_1873de480 + lVar18) >> 0x10;
            DAT_19021f0fc = *(uint *)((longlong)&DAT_1873de484 + lVar18) & 0xffff;
            _DAT_19021f114 = (int)*(uint *)((longlong)&DAT_1873de484 + lVar18) >> 0x10;
            _DAT_19021f12c = (uint)*(ushort *)(&DAT_1873de488 + lVar18);
          }
        }
        else {
LAB_1400902c9:
          if (iVar16 == 1) {
            iVar16 = *(int *)((longlong)&DAT_1873de484 + lVar18);
            if (iVar16 == 0) {
              uVar14 = FUN_14023b1b0();
              FUN_14005ee40(0,&DAT_1873de468 + (longlong)(int)uVar17 * 0x80,
                            &DAT_1873de474 + (longlong)(int)uVar17 * 0x80,
                            (float)(uVar14 & 0x1f) * DAT_140278094 + fVar11);
              lVar23 = (longlong)(int)DAT_189c1dc60;
              if ((uint)(iVar24 - (&DAT_1873de464)[lVar23 * 0x20]) < 100) {
                uVar17 = FUN_14023b1b0();
                FUN_14005ed40((&DAT_183e935d8)[uVar17 & 7],&DAT_1873de468 + lVar23 * 0x80,0);
              }
              lVar23 = 3;
              do {
                FUN_1400a56b0(&local_118,DAT_1402781ac);
                lVar18 = (longlong)(int)DAT_189c1dc60 * 0x80;
                local_e8 = 0x3f800000;
                local_118 = local_118 + *(float *)(&DAT_1873de474 + lVar18) * fVar9;
                local_114 = local_114 + *(float *)(&DAT_1873de478 + lVar18) * fVar9;
                local_110 = local_110 + *(float *)(&DAT_1873de47c + lVar18) * fVar9;
                local_108 = _DAT_140278d30;
                uStack_104 = _UNK_140278d34;
                uStack_100 = _UNK_140278d38;
                uStack_fc = _UNK_140278d3c;
                local_f8 = _DAT_140278d30;
                uStack_f4 = _UNK_140278d34;
                uStack_f0 = _UNK_140278d38;
                uStack_ec = _UNK_140278d3c;
                FUN_14005f150(1,&DAT_1873de468 + lVar18,&local_118);
                lVar23 = lVar23 + -1;
                uVar17 = DAT_189c1dc60;
              } while (lVar23 != 0);
            }
            else if (iVar16 == 1) {
              if ((uint)(iVar24 - *(int *)((longlong)&DAT_1873de464 + lVar18)) < 100) {
                uVar17 = FUN_14023b1b0();
                FUN_14005ed40((&DAT_183e93628)[uVar17 & 1],&DAT_1873de468 + lVar18,0);
              }
              lVar23 = 0x10;
              do {
                FUN_1400a56b0(&local_118,uVar12);
                uVar14 = FUN_14023b1b0();
                uVar17 = DAT_189c1dc60;
                lVar22 = (longlong)DAT_1a7971d80;
                lVar18 = (longlong)(int)DAT_189c1dc60 * 0x80;
                if (DAT_1a7971d80 < 0x4000) {
                  uVar3 = *(undefined4 *)(&DAT_1873de468 + lVar18);
                  DAT_1a7971d80 = DAT_1a7971d80 + 1;
                  (&DAT_1a771f380)[lVar22 * 0x25] = 1;
                  (&DAT_1a771f38c)[lVar22 * 0x25] = uVar3;
                  (&DAT_1a771f390)[lVar22 * 0x25] = *(undefined4 *)(&DAT_1873de46c + lVar18);
                  (&DAT_1a771f394)[lVar22 * 0x25] = *(undefined4 *)(&DAT_1873de470 + lVar18);
                  (&DAT_1a771f398)[lVar22 * 0x25] = local_118;
                  (&DAT_1a771f3a0)[lVar22 * 0x25] = local_110;
                  (&DAT_1a771f39c)[lVar22 * 0x25] = local_114;
                  (&DAT_1a771f384)[lVar22 * 0x25] = 0xffff;
                  (&DAT_1a771f40c)[lVar22 * 0x25] = (float)(uVar14 & 0x3f) * fVar6 + fVar8;
                  (&DAT_1a771f410)[lVar22 * 0x25] = (float)(uVar14 & 0x3f) * fVar7 + fVar11;
                  (&DAT_1a771f388)[lVar22 * 0x25] = 0x3b326750;
                  (&DAT_1a771f408)[lVar22 * 0x25] = 0x3f7f5c29;
                }
                lVar23 = lVar23 + -1;
              } while (lVar23 != 0);
            }
            else if (iVar16 == 2) {
              if ((uint)(iVar24 - *(int *)((longlong)&DAT_1873de464 + lVar18)) < 100) {
                uVar17 = FUN_14023b1b0();
                FUN_14005ed40((&DAT_183e93638)[uVar17 & 1],&DAT_1873de468 + lVar18,0);
              }
              lVar23 = 8;
              do {
                FUN_1400a56b0(&local_118,uVar12);
                uVar14 = FUN_14023b1b0();
                uVar17 = DAT_189c1dc60;
                lVar22 = (longlong)DAT_1a7971d80;
                lVar18 = (longlong)(int)DAT_189c1dc60 * 0x80;
                fVar32 = (float)(uVar14 & 0x1f) * fVar6 + fVar8;
                if (DAT_1a7971d80 < 0x4000) {
                  uVar3 = *(undefined4 *)(&DAT_1873de468 + lVar18);
                  DAT_1a7971d80 = DAT_1a7971d80 + 1;
                  (&DAT_1a771f380)[lVar22 * 0x25] = 2;
                  (&DAT_1a771f38c)[lVar22 * 0x25] = uVar3;
                  (&DAT_1a771f390)[lVar22 * 0x25] = *(undefined4 *)(&DAT_1873de46c + lVar18);
                  (&DAT_1a771f394)[lVar22 * 0x25] = *(undefined4 *)(&DAT_1873de470 + lVar18);
                  (&DAT_1a771f398)[lVar22 * 0x25] = local_118;
                  (&DAT_1a771f3a0)[lVar22 * 0x25] = local_110;
                  (&DAT_1a771f39c)[lVar22 * 0x25] = local_114;
                  (&DAT_1a771f384)[lVar22 * 0x25] = 0x3c;
                  (&DAT_1a771f40c)[lVar22 * 0x25] = fVar32;
                  (&DAT_1a771f410)[lVar22 * 0x25] = fVar32;
                  (&DAT_1a771f388)[lVar22 * 0x25] = 0x3b326750;
                  (&DAT_1a771f408)[lVar22 * 0x25] = 0x3f79999a;
                }
                lVar23 = lVar23 + -1;
              } while (lVar23 != 0);
            }
            else if (iVar16 == 3) {
              lVar23 = 4;
              do {
                FUN_1400a56b0(&local_118,uVar12);
                uVar14 = FUN_14023b1b0();
                uVar17 = DAT_189c1dc60;
                lVar22 = (longlong)DAT_1a7971d80;
                lVar18 = (longlong)(int)DAT_189c1dc60 * 0x80;
                if (DAT_1a7971d80 < 0x4000) {
                  uVar3 = *(undefined4 *)(&DAT_1873de468 + lVar18);
                  DAT_1a7971d80 = DAT_1a7971d80 + 1;
                  (&DAT_1a771f380)[lVar22 * 0x25] = 1;
                  (&DAT_1a771f38c)[lVar22 * 0x25] = uVar3;
                  (&DAT_1a771f390)[lVar22 * 0x25] = *(undefined4 *)(&DAT_1873de46c + lVar18);
                  (&DAT_1a771f394)[lVar22 * 0x25] = *(undefined4 *)(&DAT_1873de470 + lVar18);
                  (&DAT_1a771f398)[lVar22 * 0x25] = local_118;
                  (&DAT_1a771f3a0)[lVar22 * 0x25] = local_110;
                  (&DAT_1a771f39c)[lVar22 * 0x25] = local_114;
                  (&DAT_1a771f384)[lVar22 * 0x25] = 0xffff;
                  (&DAT_1a771f40c)[lVar22 * 0x25] = (float)(uVar14 & 0x3f) * fVar6 + fVar8;
                  (&DAT_1a771f410)[lVar22 * 0x25] = (float)(uVar14 & 0x3f) * fVar7 + fVar11;
                  (&DAT_1a771f388)[lVar22 * 0x25] = 0x3b326750;
                  (&DAT_1a771f408)[lVar22 * 0x25] = 0x3f7f5c29;
                }
                lVar23 = lVar23 + -1;
              } while (lVar23 != 0);
            }
          }
        }
      }
      lVar23 = (longlong)(int)uVar17;
      lVar18 = lVar23 * 0x80;
      if ((&DAT_1873de460)[lVar23 * 0x20] == 0xf) {
        uVar3 = *(undefined4 *)(&DAT_1873de488 + lVar18);
        uVar30 = (&DAT_1873de480)[lVar23 * 0x20] & 0xffff;
        uVar14 = (&DAT_1873de484)[lVar23 * 0x20] & 0xffff;
        iVar16 = (int)(&DAT_1873de480)[lVar23 * 0x20] >> 0x10;
        iVar15 = (int)(&DAT_1873de484)[lVar23 * 0x20] >> 0x10;
        if (DAT_1ad04adc0 == 0) {
          if (*(int *)(&DAT_1873de48c + lVar18) == 0) {
            FUN_140016c80(uVar30,iVar16,uVar14,iVar15,uVar3);
            uVar17 = DAT_189c1dc60;
          }
          lVar18 = (longlong)(int)uVar17 * 0x80;
          if (*(int *)(&DAT_1873de48c + lVar18) == 1) {
            FUN_140017110(uVar30,iVar16,uVar14,iVar15,uVar3);
          }
        }
      }
      if (*(int *)((longlong)&DAT_1873de460 + lVar18) == 0x10) {
        uVar14 = *(uint *)((longlong)&DAT_1873de484 + lVar18) & 0xffff;
        uVar28 = *(uint *)((longlong)&DAT_1873de480 + lVar18) & 0xffff;
        iVar15 = (int)*(uint *)((longlong)&DAT_1873de480 + lVar18) >> 0x10;
        iVar29 = (int)*(uint *)((longlong)&DAT_1873de484 + lVar18) >> 0x10;
        uVar30 = FUN_140016450(uVar28,iVar15,uVar14);
        iVar16 = *(int *)(&DAT_1873de48c + lVar18);
        if ((uVar30 & 0xe0000000) == 0x80000000) {
          if (iVar16 != -1) {
            FUN_1400689a0(uVar28,iVar15,uVar14,iVar29,uVar30,iVar16,&DAT_1873de468 + lVar18,
                          &DAT_1873de474 + lVar18);
            FUN_14023b1b0();
            if ((uint)(iVar24 - (&DAT_1873de464)[(longlong)(int)DAT_189c1dc60 * 0x20]) < 100) {
              FUN_14005ed40(DAT_183e93658,&DAT_1873de468 + (longlong)(int)DAT_189c1dc60 * 0x80,0);
            }
            uVar17 = DAT_189c1dc60;
            uVar30 = uVar30 | 0x10000 << ((byte)iVar16 & 0x1f);
            FUN_140016af0(uVar28,iVar15,uVar14,iVar29,iVar16);
          }
          if (DAT_1ad04adc0 == 0) {
            FUN_140016e30(uVar28,iVar15,uVar14,iVar29,uVar30);
          }
        }
      }
      lVar23 = (longlong)(int)uVar17;
      if (((&DAT_1873de460)[lVar23 * 0x20] == 0x12) && (DAT_1ad04adc0 == 0)) {
        FUN_140016f60((&DAT_1873de480)[lVar23 * 0x20] & 0xffff,
                      (int)(&DAT_1873de480)[lVar23 * 0x20] >> 0x10,
                      (&DAT_1873de484)[lVar23 * 0x20] & 0xffff,
                      (int)(&DAT_1873de484)[lVar23 * 0x20] >> 0x10,
                      *(undefined4 *)(&DAT_1873de488 + lVar23 * 0x80));
        uVar17 = DAT_189c1dc60;
      }
      lVar23 = (longlong)(int)uVar17;
      if (((&DAT_1873de460)[lVar23 * 0x20] == 2) &&
         (((uint)(iVar24 - (&DAT_1873de464)[lVar23 * 0x20]) < 100 ||
          (((&DAT_1873de484)[lVar23 * 0x20] - 3 & 0xfffffffd) == 0)))) {
        iVar16 = (&DAT_1873de484)[lVar23 * 0x20];
        if (iVar16 < 3) {
          if (((iVar16 == 0) && (*(int *)(&DAT_1873de488 + lVar23 * 0x80) != -1)) &&
             ((&DAT_183f7aef4)[*(int *)(&DAT_1873de488 + lVar23 * 0x80)] != 0)) goto LAB_140090bfe;
          FUN_1400588f0(iVar16,&DAT_1873de4a0 + lVar23 * 0x80);
          uVar17 = DAT_189c1dc60;
        }
        if ((&DAT_1873de484)[(longlong)(int)uVar17 * 0x20] == 3) {
          FUN_1400588f0(3,&DAT_1873de4a0 + (longlong)(int)uVar17 * 0x80);
          uVar17 = DAT_189c1dc60;
        }
        if ((&DAT_1873de484)[(longlong)(int)uVar17 * 0x20] == 4) {
          FUN_1400588f0(4,&DAT_1873de4a0 + (longlong)(int)uVar17 * 0x80);
          uVar17 = DAT_189c1dc60;
        }
        lVar23 = (longlong)(int)uVar17 * 0x80;
        if ((&DAT_1873de484)[(longlong)(int)uVar17 * 0x20] == 5) {
          pcVar21 = &DAT_1873de4a0 + lVar23;
          lVar23 = (longlong)&DAT_183ebfcf0 - (longlong)pcVar21;
          do {
            cVar2 = *pcVar21;
            pcVar21[lVar23] = cVar2;
            pcVar21 = pcVar21 + 1;
          } while (cVar2 != '\0');
          _DAT_183e93524 = 0;
          DAT_183ebfcff = 0;
        }
        else if ((&DAT_1873de484)[(longlong)(int)uVar17 * 0x20] == 6) {
          FUN_1400588f0(6,&DAT_1873de4a0 + lVar23);
          uVar17 = DAT_189c1dc60;
        }
      }
LAB_140090bfe:
      lVar23 = (longlong)(int)uVar17;
      if ((&DAT_1873de460)[lVar23 * 0x20] == 10) {
        FUN_140023a20((&DAT_1873de480)[lVar23 * 0x20],(&DAT_1873de484)[lVar23 * 0x20]);
        uVar17 = DAT_189c1dc60;
      }
      DAT_189c1dc60 = uVar17 + 1 & 0xffff;
    } while (DAT_189c1dc60 != DAT_189c1dc64);
    DAT_183f7aef0 = DAT_189c1dc60;
  }
  return;
}



===== FUN_14018f1b0 @ 14018f1b0 root=true =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_14018f1b0(void)

{
  undefined4 uVar1;
  float fVar2;
  double dVar3;
  float fVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  longlong lVar8;
  longlong lVar9;
  longlong lVar10;
  undefined *puVar11;
  int iVar12;
  int *piVar13;
  int *piVar14;
  longlong lVar15;
  uint uVar16;
  int iVar17;
  ulonglong uVar18;
  uint uVar19;
  uint uVar20;
  int iVar21;
  int iVar22;
  int iVar23;
  longlong lVar24;
  int iVar25;
  float *pfVar26;
  float *pfVar27;
  undefined4 *puVar28;
  float fVar29;
  float fVar30;
  float fVar31;
  float fVar32;
  float fVar33;
  uint local_res10 [2];
  undefined8 local_res18;
  uint local_res20;
  uint local_b8;
  uint local_b4;
  uint local_b0;
  longlong local_a8;
  int *local_a0;
  
  FUN_140115ae0(&DAT_165d84960,4);
  FUN_140115ae0(&DAT_165d84964,4);
  FUN_140115ae0(&DAT_16b2a2248,1);
  FUN_140115ae0(&DAT_16b2a224c,1);
  if ((DAT_1853ad41c < 0x10000) && (DAT_1853ad41c + 4 <= DAT_1853ad418)) {
    if (0 < DAT_1853ad420) {
      DAT_1853ad41c = DAT_1853ad41c + 1;
      DAT_1853ad420 = 0;
    }
    lVar8 = (longlong)DAT_1853ad41c;
    DAT_1853ad41c = DAT_1853ad41c + 4;
    DAT_1ad04b20c = *(uint *)(&DAT_1853ad424 + lVar8);
  }
  uVar5 = DAT_1ad04b20c & 0xff;
  FUN_140115ae0(&local_res18,0xb);
  FUN_140115ae0(local_res10,0xb);
  uVar16 = (uint)local_res18;
  local_b8 = local_res10[0];
  if (0 < (int)(uint)local_res18) {
    uVar18 = local_res18 & 0xffffffff;
    do {
      lVar8 = (longlong)(int)local_b8;
      FUN_140115ae0(&DAT_1a4d31d20 + lVar8 * 0x14,10);
      FUN_140115ae0(&DAT_1a4d31d1c + lVar8 * 0x14,2);
      FUN_140115ae0(&DAT_1a4d31d24 + lVar8 * 0x14,3);
      FUN_140115ae0(&DAT_1a4d31d28 + lVar8 * 0x14,10);
      FUN_140115ae0(&DAT_1a4d31d2c + lVar8 * 0x14,0x10);
      if (local_b8 == DAT_1a4d31d14) {
        DAT_1a4d31d14 = DAT_1a4d31d14 + 1 & 0x7ff;
      }
      local_b8 = local_b8 + 1 & 0x7ff;
      uVar18 = uVar18 - 1;
    } while (uVar18 != 0);
  }
  uVar19 = DAT_1a4d31d14;
  if (DAT_1a4d31d18 != DAT_1a4d31d14) {
    do {
      lVar8 = (longlong)(int)DAT_1a4d31d18;
      lVar24 = (longlong)*(int *)(&DAT_1a4d31d20 + lVar8 * 0x14);
      if (*(int *)(&DAT_1a4d31d1c + lVar8 * 0x14) == 0) {
        iVar21 = *(int *)(&DAT_1a4d31d24 + lVar8 * 0x14);
        if (iVar21 == 0) {
          (&DAT_18329e308)[(longlong)*(int *)(&DAT_1a4d31d2c + lVar8 * 0x14) * 0x1bfe] = 1;
        }
        if (iVar21 == 1) {
          lVar9 = (longlong)*(int *)(&DAT_1a4d31d2c + lVar8 * 0x14);
          uVar1 = *(undefined4 *)(&DAT_1a4d31d28 + lVar8 * 0x14);
          (&DAT_182bbb180)[lVar9 * 0x6e0] = 1;
          (&DAT_182bbb194)[lVar9 * 0x6e0] = uVar1;
          *(undefined4 *)(&DAT_182bbb4d4 + lVar9 * 0x1b80) = 0;
          *(undefined8 *)(&DAT_182bbb1a4 + lVar9 * 0x6e0) = 0xffffffffffffffff;
          (&DAT_182bbb4bc)[lVar9 * 0x6e0] = 0xffffffff;
        }
        (&DAT_1a4d2dd14)[lVar24 * 4] = 1;
        (&DAT_1a4d2dd18)[lVar24 * 4] =
             *(undefined4 *)(&DAT_1a4d31d24 + (longlong)(int)DAT_1a4d31d18 * 0x14);
        (&DAT_1a4d2dd1c)[lVar24 * 4] =
             *(undefined4 *)(&DAT_1a4d31d2c + (longlong)(int)DAT_1a4d31d18 * 0x14);
        uVar19 = DAT_1a4d31d14;
      }
      if (*(int *)(&DAT_1a4d31d1c + (longlong)(int)DAT_1a4d31d18 * 0x14) == 1) {
        if ((&DAT_1a4d2dd18)[lVar24 * 4] == 0) {
          (&DAT_18329e308)[(longlong)(int)(&DAT_1a4d2dd1c)[lVar24 * 4] * 0x1bfe] = 0;
        }
        else if ((&DAT_1a4d2dd18)[lVar24 * 4] == 1) {
          iVar21 = (&DAT_1a4d2dd1c)[lVar24 * 4];
          if ((&DAT_182bbb4bc)[(longlong)iVar21 * 0x6e0] != -1) {
            (&DAT_182a7d580)[(longlong)(int)(&DAT_182bbb4bc)[(longlong)iVar21 * 0x6e0] * 3] = 0;
          }
          (&DAT_182bbb180)[(longlong)iVar21 * 0x6e0] = 0;
        }
        (&DAT_1a4d2dd14)[lVar24 * 4] = 0;
        uVar19 = DAT_1a4d31d14;
      }
      DAT_1a4d31d18 = DAT_1a4d31d18 + 1 & 0x7ff;
    } while (DAT_1a4d31d18 != uVar19);
  }
  uVar19 = 8;
  if ((DAT_1853ad41c < 0x10000) && (DAT_1853ad41c + 1 <= DAT_1853ad418)) {
    uVar16 = 0;
    iVar21 = 0;
    do {
      uVar6 = 8 - DAT_1853ad420;
      uVar16 = uVar16 | ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >>
                               ((byte)DAT_1853ad420 & 0x1f)) & ~(-1 << ((byte)uVar19 & 0x1f))) <<
                        ((byte)iVar21 & 0x1f);
      if (uVar19 < uVar6) {
        DAT_1853ad420 = DAT_1853ad420 + uVar19;
        break;
      }
      if (uVar19 == uVar6) {
        DAT_1853ad41c = DAT_1853ad41c + 1;
        DAT_1853ad420 = 0;
        break;
      }
      DAT_1853ad41c = DAT_1853ad41c + 1;
      uVar19 = uVar19 - uVar6;
      iVar21 = iVar21 + uVar6;
      DAT_1853ad420 = 0;
    } while (0 < (int)uVar19);
  }
  uVar19 = 8;
  if ((DAT_1853ad41c < 0x10000) && (DAT_1853ad41c + 1 <= DAT_1853ad418)) {
    local_b8 = 0;
    iVar21 = 0;
    do {
      uVar6 = 8 - DAT_1853ad420;
      local_b8 = local_b8 |
                 ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >> ((byte)DAT_1853ad420 & 0x1f)) &
                 ~(-1 << ((byte)uVar19 & 0x1f))) << ((byte)iVar21 & 0x1f);
      if (uVar19 < uVar6) {
        DAT_1853ad420 = DAT_1853ad420 + uVar19;
        break;
      }
      if (uVar19 == uVar6) {
        DAT_1853ad41c = DAT_1853ad41c + 1;
        DAT_1853ad420 = 0;
        break;
      }
      DAT_1853ad41c = DAT_1853ad41c + 1;
      uVar19 = uVar19 - uVar6;
      iVar21 = iVar21 + uVar6;
      DAT_1853ad420 = 0;
    } while (0 < (int)uVar19);
  }
  iVar21 = DAT_1853ad418;
  iVar17 = DAT_1853ad420;
  iVar12 = DAT_1853ad41c;
  if (0 < (int)uVar16) {
    local_res18 = (ulonglong)uVar16;
    uVar16 = uVar5;
    uVar19 = uVar5;
    uVar6 = uVar5;
    do {
      uVar20 = 0x10;
      if ((iVar12 < 0x10000) && (iVar12 + 2 <= iVar21)) {
        uVar16 = 0;
        iVar22 = 0;
        do {
          uVar7 = 8 - iVar17;
          uVar16 = uVar16 | ((uint)((byte)(&DAT_1853ad424)[iVar12] >> ((byte)DAT_1853ad420 & 0x1f))
                            & ~(-1 << ((byte)uVar20 & 0x1f))) << ((byte)iVar22 & 0x1f);
          if (uVar20 < uVar7) {
            iVar17 = iVar17 + uVar20;
            DAT_1853ad420 = iVar17;
            break;
          }
          if (uVar20 == uVar7) {
            iVar12 = iVar12 + 1;
            iVar17 = 0;
            DAT_1853ad41c = iVar12;
            DAT_1853ad420 = iVar17;
            break;
          }
          iVar12 = iVar12 + 1;
          iVar17 = 0;
          uVar20 = uVar20 - uVar7;
          iVar22 = iVar22 + uVar7;
          DAT_1853ad420 = 0;
          DAT_1853ad41c = iVar12;
        } while (0 < (int)uVar20);
      }
      uVar20 = 6;
      if ((iVar12 < 0x10000) && (iVar12 <= iVar21)) {
        uVar6 = 0;
        iVar22 = 0;
        do {
          uVar7 = 8 - iVar17;
          uVar6 = uVar6 | ((uint)((byte)(&DAT_1853ad424)[iVar12] >> ((byte)DAT_1853ad420 & 0x1f)) &
                          ~(-1 << ((byte)uVar20 & 0x1f))) << ((byte)iVar22 & 0x1f);
          if (uVar20 < uVar7) {
            iVar17 = iVar17 + uVar20;
            DAT_1853ad420 = iVar17;
            break;
          }
          if (uVar20 == uVar7) {
            iVar12 = iVar12 + 1;
            iVar17 = 0;
            DAT_1853ad41c = iVar12;
            DAT_1853ad420 = iVar17;
            break;
          }
          iVar12 = iVar12 + 1;
          iVar17 = 0;
          uVar20 = uVar20 - uVar7;
          iVar22 = iVar22 + uVar7;
          DAT_1853ad420 = 0;
          DAT_1853ad41c = iVar12;
        } while (0 < (int)uVar20);
      }
      uVar20 = 0x1c;
      if ((iVar12 < 0x10000) && (iVar12 + 3 <= iVar21)) {
        uVar19 = 0;
        iVar22 = 0;
        do {
          uVar7 = 8 - iVar17;
          uVar19 = uVar19 | ((uint)((byte)(&DAT_1853ad424)[iVar12] >> ((byte)DAT_1853ad420 & 0x1f))
                            & ~(-1 << ((byte)uVar20 & 0x1f))) << ((byte)iVar22 & 0x1f);
          if (uVar20 < uVar7) {
            iVar17 = iVar17 + uVar20;
            DAT_1853ad420 = iVar17;
            break;
          }
          if (uVar20 == uVar7) {
            iVar12 = iVar12 + 1;
            iVar17 = 0;
            DAT_1853ad41c = iVar12;
            DAT_1853ad420 = iVar17;
            break;
          }
          iVar12 = iVar12 + 1;
          iVar17 = 0;
          uVar20 = uVar20 - uVar7;
          iVar22 = iVar22 + uVar7;
          DAT_1853ad420 = 0;
          DAT_1853ad41c = iVar12;
        } while (0 < (int)uVar20);
      }
      lVar8 = (longlong)(int)uVar16;
      if ((*(int *)((longlong)&DAT_1857bd740 + lVar8 * 0x9c) == 0) ||
         ((uint)(&DAT_1857bd74c)[lVar8 * 0x27] < uVar19)) {
        (&DAT_1857bd748)[lVar8 * 0x27] = uVar6;
        (&DAT_1857bd74c)[lVar8 * 0x27] = uVar19;
        *(undefined8 *)((longlong)&DAT_1857bd740 + lVar8 * 0x9c) = 1;
        uVar20 = uVar16;
      }
      else {
        uVar20 = 0x4000;
      }
      if (uVar6 == 0) {
        lVar8 = (longlong)(int)uVar20;
        lVar24 = lVar8 * 0x9c;
        FUN_140115ae0(&DAT_1857bd750 + lVar8 * 0x27,0xc);
        FUN_140115ae0(&DAT_1857bd754 + lVar8 * 0x27,6);
        FUN_140115ae0(&DAT_1857bd758 + lVar8 * 0x27,7);
        iVar21 = DAT_1853ad418;
        iVar17 = DAT_1853ad420;
        iVar12 = DAT_1853ad41c;
        if ((DAT_1853ad41c < 0x10000) &&
           (local_res10[0] = (&DAT_1857bd758)[lVar8 * 0x27],
           (int)(local_res10[0] + DAT_1853ad41c) <= DAT_1853ad418)) {
          if (0 < DAT_1853ad420) {
            DAT_1853ad41c = DAT_1853ad41c + 1;
            DAT_1853ad420 = 0;
          }
          puVar11 = &DAT_1857bd75c;
          iVar17 = DAT_1853ad420;
LAB_14018fa33:
          iVar12 = DAT_1853ad41c;
          FUN_1401fc920(puVar11 + lVar24,&DAT_1853ad424 + DAT_1853ad41c,
                        (longlong)(int)local_res10[0]);
          DAT_1853ad41c = iVar12 + local_res10[0];
          iVar12 = DAT_1853ad41c;
        }
      }
      else if (uVar6 == 1) {
        lVar8 = (longlong)(int)uVar20;
        lVar24 = lVar8 * 0x9c;
        FUN_140115ae0(&DAT_1857bd750 + lVar8 * 0x27,0xc);
        FUN_140115ae0(&DAT_1857bd754 + lVar8 * 0x27,5);
        FUN_140115ae0(&DAT_1857bd758 + lVar8 * 0x27,7);
        iVar21 = DAT_1853ad418;
        iVar17 = DAT_1853ad420;
        if (DAT_1853ad41c < 0x10000) {
          local_res10[0] = (&DAT_1857bd758)[lVar8 * 0x27];
          if ((int)(local_res10[0] + DAT_1853ad41c) <= DAT_1853ad418) {
            if (0 < DAT_1853ad420) {
              DAT_1853ad41c = DAT_1853ad41c + 1;
              DAT_1853ad420 = 0;
            }
            iVar17 = DAT_1853ad420;
            iVar12 = DAT_1853ad41c;
            FUN_1401fc920(&DAT_1857bd75c + lVar24,&DAT_1853ad424 + DAT_1853ad41c,
                          (longlong)(int)local_res10[0]);
            DAT_1853ad41c = iVar12 + local_res10[0];
          }
        }
        iVar12 = DAT_1853ad41c;
        if ((DAT_1853ad41c < 0x10000) &&
           (local_res10[0] = (&DAT_1857bd758)[lVar8 * 0x27],
           (int)(local_res10[0] + DAT_1853ad41c) <= iVar21)) {
          if (0 < iVar17) {
            DAT_1853ad41c = DAT_1853ad41c + 1;
            iVar17 = 0;
            DAT_1853ad420 = 0;
          }
          puVar11 = &DAT_1857bd79c;
          goto LAB_14018fa33;
        }
      }
      if (local_b8 == _DAT_1a4d3bd1c) {
        _DAT_1a4d3bd1c = _DAT_1a4d3bd1c + 1 & 0xff;
      }
      local_res18 = local_res18 - 1;
      local_b8 = local_b8 + 1 & 0xff;
    } while (local_res18 != 0);
  }
  fVar4 = DAT_140278aac;
  fVar2 = DAT_140278084;
  local_a0 = &DAT_1a4d2dd18;
  DAT_16b2a2a58 = 0;
  _DAT_1a4d2dd10 = 0;
  uVar16 = uVar5;
  uVar19 = uVar5;
  uVar6 = uVar5;
  local_res10[0] = uVar5;
  local_res20 = uVar5;
  local_b4 = uVar5;
  local_b0 = uVar5;
  local_res18._0_4_ = uVar5;
  do {
    if (local_a0[-1] != 0) {
      _DAT_1a4d2dd10 = _DAT_1a4d2dd10 + 1;
      uVar20 = 1;
      iVar22 = iVar17;
      if ((iVar12 < 0x10000) && (iVar12 <= iVar21)) {
        local_b4 = 0;
        iVar23 = 0;
        do {
          uVar7 = 8 - iVar17;
          local_b4 = local_b4 |
                     ((uint)((byte)(&DAT_1853ad424)[iVar12] >> ((byte)DAT_1853ad420 & 0x1f)) &
                     ~(-1 << ((byte)uVar20 & 0x1f))) << ((byte)iVar23 & 0x1f);
          if (uVar20 < uVar7) {
            DAT_1853ad420 = iVar17 + uVar20;
            iVar22 = DAT_1853ad420;
            break;
          }
          if (uVar20 == uVar7) {
            iVar12 = iVar12 + 1;
            DAT_1853ad420 = 0;
            iVar22 = DAT_1853ad420;
            DAT_1853ad41c = iVar12;
            break;
          }
          iVar12 = iVar12 + 1;
          iVar17 = 0;
          uVar20 = uVar20 - uVar7;
          iVar23 = iVar23 + uVar7;
          DAT_1853ad420 = 0;
          iVar22 = DAT_1853ad420;
          DAT_1853ad41c = iVar12;
        } while (0 < (int)uVar20);
      }
      iVar17 = iVar22;
      if (local_b4 != 0) {
        if (*local_a0 == 0) {
          iVar17 = local_a0[1];
          lVar8 = (longlong)iVar17;
          uVar19 = 1;
          if ((iVar12 < 0x10000) && (iVar12 <= iVar21)) {
            uVar16 = 0;
            iVar23 = 0;
            do {
              uVar6 = 8 - iVar22;
              uVar16 = uVar16 | ((uint)((byte)(&DAT_1853ad424)[iVar12] >>
                                       ((byte)DAT_1853ad420 & 0x1f)) &
                                ~(-1 << ((byte)uVar19 & 0x1f))) << ((byte)iVar23 & 0x1f);
              local_res10[0] = uVar16;
              if (uVar19 < uVar6) {
                iVar22 = iVar22 + uVar19;
                DAT_1853ad420 = iVar22;
                break;
              }
              if (uVar19 == uVar6) {
                iVar12 = iVar12 + 1;
                iVar22 = 0;
                DAT_1853ad41c = iVar12;
                DAT_1853ad420 = iVar22;
                break;
              }
              iVar12 = iVar12 + 1;
              iVar22 = 0;
              uVar19 = uVar19 - uVar6;
              iVar23 = iVar23 + uVar6;
              DAT_1853ad420 = 0;
              DAT_1853ad41c = iVar12;
            } while (0 < (int)uVar19);
          }
          if (uVar16 != 0) {
            uVar16 = 8;
            if ((iVar12 < 0x10000) && (iVar12 + 1 <= iVar21)) {
              local_b0 = 0;
              iVar21 = 0;
              do {
                uVar19 = 8 - iVar22;
                local_b0 = local_b0 |
                           ((uint)((byte)(&DAT_1853ad424)[iVar12] >> ((byte)DAT_1853ad420 & 0x1f)) &
                           ~(-1 << ((byte)uVar16 & 0x1f))) << ((byte)iVar21 & 0x1f);
                if (uVar16 < uVar19) {
                  DAT_1853ad420 = iVar22 + uVar16;
                  break;
                }
                if (uVar16 == uVar19) {
                  DAT_1853ad420 = 0;
                  DAT_1853ad41c = iVar12 + 1;
                  break;
                }
                iVar12 = iVar12 + 1;
                iVar22 = 0;
                uVar16 = uVar16 - uVar19;
                iVar21 = iVar21 + uVar19;
                DAT_1853ad420 = 0;
                DAT_1853ad41c = iVar12;
              } while (0 < (int)uVar16);
            }
            uVar16 = local_b0;
            if (local_b0 == 0xff) {
              uVar16 = 0xffffffff;
            }
            (&DAT_18329e310)[lVar8 * 0x1bfe] = uVar16;
            FUN_140115ae0(&DAT_1832a5288 + lVar8 * 0x1bfe,1);
            FUN_140115ae0(&DAT_1832a528c + lVar8 * 0x1bfe,5);
            FUN_140115ae0(&DAT_1832a5290 + lVar8 * 0x1bfe,3);
            FUN_140115ae0(&DAT_1832a5298 + lVar8 * 0x1bfe,4);
            FUN_140115ae0(&DAT_1832a529c + lVar8 * 0x1bfe,3);
            FUN_140115ae0(&DAT_1832a5294 + lVar8 * 0x1bfe,4);
            FUN_140115ae0(&DAT_1832a52a0 + lVar8 * 0x6ff8,5);
            FUN_140115ae0(&DAT_1832a52a4 + lVar8 * 0x1bfe,4);
            FUN_140115ae0(&DAT_1832a52a8 + lVar8 * 0x1bfe,4);
            FUN_140115ae0(&DAT_1832a52b0 + lVar8 * 0x6ff8,4);
            FUN_140115ae0(&DAT_1832a52b4 + lVar8 * 0x1bfe,2);
          }
          FUN_14018ef40((ulonglong)uVar5,iVar17);
          (&DAT_18329e344)[lVar8 * 0x1bfe] = (&DAT_18329e344)[lVar8 * 0x1bfe] * 100;
          (&DAT_1832a52c8)[lVar8 * 0x1bfe] = (&DAT_1832a52b8)[lVar8 * 0x1bfe];
          (&DAT_1832a52cc)[lVar8 * 0x1bfe] = (&DAT_1832a52bc)[lVar8 * 0x1bfe];
          (&DAT_1832a52d0)[lVar8 * 0x1bfe] = (&DAT_1832a52c0)[lVar8 * 0x1bfe];
          (&DAT_1832a52d4)[lVar8 * 0x1bfe] = (&DAT_1832a52c4)[lVar8 * 0x1bfe];
          (&DAT_1832a52b8)[lVar8 * 0x1bfe] = DAT_183ebfd34;
          lVar9 = (ulonglong)uVar5 * 0x4dc00;
          lVar24 = lVar9 + lVar8 * 0x1e4;
          iVar21 = *(int *)(&DAT_160fc4968 + lVar24);
          (&DAT_18329e530)[lVar8 * 0x1bfe] = (float)*(int *)(&DAT_160fc496c + lVar24) * fVar2;
          iVar17 = *(int *)(&DAT_160fc4970 + lVar24);
          fVar30 = (float)iVar21 * fVar2 - fVar4;
          (&DAT_18329e52c)[lVar8 * 0x1bfe] = fVar30;
          (&DAT_18329e534)[lVar8 * 0x1bfe] = (float)iVar17 * fVar2 - fVar4;
          (&DAT_1832a52bc)[lVar8 * 0x1bfe] = fVar30;
          (&DAT_1832a52c0)[lVar8 * 0x1bfe] = (&DAT_18329e530)[lVar8 * 0x1bfe];
          (&DAT_1832a52c4)[lVar8 * 0x1bfe] = (&DAT_18329e534)[lVar8 * 0x1bfe];
          FUN_140191f90(&DAT_18329e55c + lVar8 * 0x1bfe,&DAT_160fc4974 + lVar24);
          local_a8 = 0xf;
          local_b8 = 0x10;
          pfVar26 = (float *)&DAT_18399df58;
          pfVar27 = (float *)(&DAT_18329e668 + lVar8 * 0x1bfe);
          do {
            lVar9 = lVar9 + 0x10;
            FUN_140192160(pfVar27 + 0x34,&DAT_160fc4a44 + lVar8 * 0x1e4 + lVar9,0xc);
            fVar30 = pfVar26[-1];
            fVar32 = *pfVar26;
            lVar24 = (longlong)(int)pfVar26[-5];
            fVar31 = fVar30 * (float)(&DAT_18329e55c)[lVar8 * 0x1bfe + lVar24 * 0x4e] +
                     (float)(&DAT_18329e52c)[lVar8 * 0x1bfe + lVar24 * 0x4e];
            pfVar27[-1] = fVar31;
            fVar29 = fVar30 * (float)(&DAT_18329e560)[lVar8 * 0x1bfe + lVar24 * 0x4e] +
                     (float)(&DAT_18329e530)[lVar8 * 0x1bfe + lVar24 * 0x4e];
            *pfVar27 = fVar29;
            fVar33 = fVar30 * (float)(&DAT_18329e564)[lVar8 * 0x1bfe + lVar24 * 0x4e] +
                     (float)(&DAT_18329e534)[lVar8 * 0x1bfe + lVar24 * 0x4e];
            pfVar27[1] = fVar33;
            fVar31 = fVar32 * (float)(&DAT_18329e568)[lVar8 * 0x1bfe + lVar24 * 0x4e] + fVar31;
            fVar30 = pfVar26[1];
            pfVar27[-1] = fVar31;
            fVar29 = fVar32 * (float)(&DAT_18329e56c)[lVar8 * 0x1bfe + lVar24 * 0x4e] + fVar29;
            *pfVar27 = fVar29;
            fVar33 = fVar32 * (float)(&DAT_18329e570)[lVar8 * 0x1bfe + lVar24 * 0x4e] + fVar33;
            pfVar27[1] = fVar33;
            pfVar27[-1] = fVar30 * (float)(&DAT_18329e574)[lVar8 * 0x1bfe + lVar24 * 0x4e] + fVar31;
            *pfVar27 = fVar30 * (float)(&DAT_18329e578)[lVar8 * 0x1bfe + lVar24 * 0x4e] + fVar29;
            pfVar27[1] = fVar30 * (float)(&DAT_18329e57c)[lVar8 * 0x1bfe + lVar24 * 0x4e] + fVar33;
            FUN_14007a010(pfVar27 + 0xb,pfVar27 + 0x34);
            fVar29 = pfVar26[-4] - pfVar26[-1];
            fVar33 = pfVar26[-3] - *pfVar26;
            fVar31 = pfVar26[-2] - pfVar26[1];
            fVar32 = fVar29 * pfVar27[0xb] + pfVar27[-1];
            pfVar27[-1] = fVar32;
            fVar30 = fVar29 * pfVar27[0xc] + *pfVar27;
            *pfVar27 = fVar30;
            fVar29 = fVar29 * pfVar27[0xd] + pfVar27[1];
            pfVar27[1] = fVar29;
            fVar32 = fVar33 * pfVar27[0xe] + fVar32;
            pfVar27[-1] = fVar32;
            fVar30 = fVar33 * pfVar27[0xf] + fVar30;
            *pfVar27 = fVar30;
            pfVar26 = pfVar26 + 0x19;
            fVar29 = fVar33 * pfVar27[0x10] + fVar29;
            pfVar27[1] = fVar29;
            pfVar27[-1] = fVar31 * pfVar27[0x11] + fVar32;
            *pfVar27 = fVar31 * pfVar27[0x12] + fVar30;
            pfVar27[1] = fVar31 * pfVar27[0x13] + fVar29;
            pfVar27 = pfVar27 + 0x4e;
            local_a8 = local_a8 + -1;
            iVar21 = DAT_1853ad418;
            iVar22 = DAT_1853ad420;
            iVar12 = DAT_1853ad41c;
            uVar16 = local_res10[0];
            uVar19 = (uint)local_res18;
            uVar6 = local_res20;
          } while (local_a8 != 0);
        }
        iVar17 = iVar22;
        if (*local_a0 == 1) {
          iVar17 = local_a0[1];
          uVar20 = 1;
          if ((iVar12 < 0x10000) && (iVar12 <= iVar21)) {
            uVar16 = 0;
            iVar21 = 0;
            do {
              uVar7 = 8 - iVar22;
              uVar16 = uVar16 | ((uint)((byte)(&DAT_1853ad424)[iVar12] >>
                                       ((byte)DAT_1853ad420 & 0x1f)) &
                                ~(-1 << ((byte)uVar20 & 0x1f))) << ((byte)iVar21 & 0x1f);
              local_res10[0] = uVar16;
              if (uVar20 < uVar7) {
                DAT_1853ad420 = iVar22 + uVar20;
                break;
              }
              if (uVar20 == uVar7) {
                DAT_1853ad420 = 0;
                DAT_1853ad41c = iVar12 + 1;
                break;
              }
              iVar12 = iVar12 + 1;
              iVar22 = 0;
              uVar20 = uVar20 - uVar7;
              iVar21 = iVar21 + uVar7;
              DAT_1853ad420 = 0;
              DAT_1853ad41c = iVar12;
            } while (0 < (int)uVar20);
          }
          if (uVar16 != 0) {
            lVar8 = (longlong)iVar17;
            FUN_140115ae0(&DAT_182bbb194 + lVar8 * 0x6e0,8);
            iVar21 = DAT_1853ad418;
            uVar20 = 10;
            if ((DAT_1853ad41c < 0x10000) && (DAT_1853ad41c + 1 <= DAT_1853ad418)) {
              uVar19 = 0;
              iVar12 = 0;
              do {
                uVar7 = 8 - DAT_1853ad420;
                uVar19 = uVar19 | ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >>
                                         ((byte)DAT_1853ad420 & 0x1f)) &
                                  ~(-1 << ((byte)uVar20 & 0x1f))) << ((byte)iVar12 & 0x1f);
                local_res18._0_4_ = uVar19;
                if (uVar20 < uVar7) {
                  DAT_1853ad420 = DAT_1853ad420 + uVar20;
                  break;
                }
                if (uVar20 == uVar7) {
                  DAT_1853ad41c = DAT_1853ad41c + 1;
                  DAT_1853ad420 = 0;
                  break;
                }
                DAT_1853ad41c = DAT_1853ad41c + 1;
                uVar20 = uVar20 - uVar7;
                iVar12 = iVar12 + uVar7;
                DAT_1853ad420 = 0;
              } while (0 < (int)uVar20);
            }
            iVar22 = DAT_1853ad420;
            iVar12 = DAT_1853ad41c;
            uVar7 = 10;
            uVar20 = uVar19;
            if (uVar19 == 0x3ff) {
              uVar20 = 0xffffffff;
            }
            (&DAT_182bbb1a8)[lVar8 * 0x6e0] = uVar20;
            if ((iVar12 < 0x10000) && (iVar12 + 1 <= iVar21)) {
              uVar6 = 0;
              iVar21 = 0;
              do {
                uVar20 = 8 - iVar22;
                uVar6 = uVar6 | ((uint)((byte)(&DAT_1853ad424)[iVar12] >>
                                       ((byte)DAT_1853ad420 & 0x1f)) & ~(-1 << ((byte)uVar7 & 0x1f))
                                ) << ((byte)iVar21 & 0x1f);
                local_res20 = uVar6;
                if (uVar7 < uVar20) {
                  DAT_1853ad420 = iVar22 + uVar7;
                  break;
                }
                if (uVar7 == uVar20) {
                  DAT_1853ad41c = iVar12 + 1;
                  DAT_1853ad420 = 0;
                  break;
                }
                DAT_1853ad41c = iVar12 + 1;
                iVar22 = 0;
                uVar7 = uVar7 - uVar20;
                iVar21 = iVar21 + uVar20;
                DAT_1853ad420 = 0;
                iVar12 = DAT_1853ad41c;
              } while (0 < (int)uVar7);
            }
            uVar20 = uVar6;
            if (uVar6 == 0x3ff) {
              uVar20 = 0xffffffff;
            }
            (&DAT_182bbb1a4)[lVar8 * 0x6e0] = uVar20;
            FUN_140115ae0(&DAT_182bbb1ac + lVar8 * 0x6e0,4);
            if ((&DAT_182bbb194)[lVar8 * 0x6e0] == 0x27) {
              FUN_140115ae0(&DAT_182bbb4e8 + lVar8 * 0x6e0,5);
              FUN_140115ae0(&DAT_182bbb4ec + lVar8 * 0x6e0,5);
            }
          }
          FUN_14018d6d0(uVar5,iVar17);
          iVar21 = DAT_1853ad418;
          iVar17 = DAT_1853ad420;
          iVar12 = DAT_1853ad41c;
        }
      }
    }
    local_a0 = local_a0 + 4;
  } while ((longlong)local_a0 < 0x1a4d31d18);
  *(int *)(&DAT_16b2a2658 + (longlong)(int)DAT_16b2a2654 * 4) =
       (int)(DAT_16b2a2a58 + (DAT_16b2a2a58 >> 0x1f & 7U)) >> 3;
  DAT_16b2a2654 = DAT_16b2a2654 + 1 & 0xff;
  FUN_140115ae0(&DAT_160fb5da4,8);
  dVar3 = DAT_140278410;
  fVar30 = DAT_1402780d4;
  local_res20 = 0;
  uVar16 = uVar5;
  local_res10[0] = uVar5;
  if (0 < DAT_160fb5da4) {
    local_res18._0_4_ = uVar5;
    do {
      iVar21 = DAT_1853ad418;
      uVar19 = 10;
      if ((DAT_1853ad41c < 0x10000) && (DAT_1853ad41c + 1 <= DAT_1853ad418)) {
        local_res10[0] = 0;
        iVar17 = 0;
        do {
          uVar6 = 8 - DAT_1853ad420;
          local_res10[0] =
               local_res10[0] |
               ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >> ((byte)DAT_1853ad420 & 0x1f)) &
               ~(-1 << ((byte)uVar19 & 0x1f))) << ((byte)iVar17 & 0x1f);
          if (uVar19 < uVar6) {
            DAT_1853ad420 = DAT_1853ad420 + uVar19;
            break;
          }
          if (uVar19 == uVar6) {
            DAT_1853ad41c = DAT_1853ad41c + 1;
            DAT_1853ad420 = 0;
            break;
          }
          DAT_1853ad41c = DAT_1853ad41c + 1;
          uVar19 = uVar19 - uVar6;
          iVar17 = iVar17 + uVar6;
          DAT_1853ad420 = 0;
        } while (0 < (int)uVar19);
      }
      uVar19 = local_res10[0];
      uVar6 = 2;
      if ((DAT_1853ad41c < 0x10000) && (iVar17 = DAT_1853ad420, DAT_1853ad41c <= DAT_1853ad418)) {
        do {
          uVar20 = 8 - iVar17;
          if (uVar6 < uVar20) {
            DAT_1853ad420 = iVar17 + uVar6;
            break;
          }
          if (uVar6 == uVar20) {
            DAT_1853ad41c = DAT_1853ad41c + 1;
            DAT_1853ad420 = 0;
            break;
          }
          DAT_1853ad41c = DAT_1853ad41c + 1;
          iVar17 = 0;
          uVar6 = uVar6 - uVar20;
          DAT_1853ad420 = 0;
        } while (0 < (int)uVar6);
      }
      lVar8 = (longlong)(int)local_res10[0];
      uVar6 = 10;
      if ((DAT_1853ad41c < 0x10000) && (DAT_1853ad41c + 1 <= DAT_1853ad418)) {
        local_res18._0_4_ = 0;
        iVar17 = 0;
        do {
          uVar20 = 8 - DAT_1853ad420;
          local_res18._0_4_ =
               (uint)local_res18 |
               ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >> ((byte)DAT_1853ad420 & 0x1f)) &
               ~(-1 << ((byte)uVar6 & 0x1f))) << ((byte)iVar17 & 0x1f);
          if (uVar6 < uVar20) {
            DAT_1853ad420 = DAT_1853ad420 + uVar6;
            break;
          }
          if (uVar6 == uVar20) {
            DAT_1853ad41c = DAT_1853ad41c + 1;
            DAT_1853ad420 = 0;
            break;
          }
          DAT_1853ad41c = DAT_1853ad41c + 1;
          uVar6 = uVar6 - uVar20;
          iVar17 = iVar17 + uVar20;
          DAT_1853ad420 = 0;
        } while (0 < (int)uVar6);
      }
      iVar12 = DAT_1853ad420;
      iVar17 = DAT_1853ad41c;
      uVar6 = (uint)local_res18;
      if ((uint)local_res18 == 0x3ff) {
        uVar6 = 0xffffffff;
      }
      *(uint *)(&DAT_15f2dc848 + lVar8 * 0x5168) = uVar6;
      uVar6 = 8;
      (&DAT_15f2de354)[lVar8 * 0x145a] = (&DAT_15f2de344)[lVar8 * 0x145a];
      (&DAT_15f2de358)[lVar8 * 0x145a] = (&DAT_15f2de348)[lVar8 * 0x145a];
      (&DAT_15f2de35c)[lVar8 * 0x145a] = (&DAT_15f2de34c)[lVar8 * 0x145a];
      (&DAT_15f2de360)[lVar8 * 0x145a] = (&DAT_15f2de350)[lVar8 * 0x145a];
      (&DAT_15f2de344)[lVar8 * 0x145a] = DAT_183ebfd34;
      if ((iVar17 < 0x10000) && (iVar17 + 1 <= iVar21)) {
        uVar16 = 0;
        iVar21 = 0;
        do {
          uVar20 = 8 - iVar12;
          uVar16 = uVar16 | ((uint)((byte)(&DAT_1853ad424)[iVar17] >> ((byte)DAT_1853ad420 & 0x1f))
                            & ~(-1 << ((byte)uVar6 & 0x1f))) << ((byte)iVar21 & 0x1f);
          if (uVar6 < uVar20) {
            DAT_1853ad420 = iVar12 + uVar6;
            break;
          }
          if (uVar6 == uVar20) {
            DAT_1853ad420 = 0;
            DAT_1853ad41c = iVar17 + 1;
            break;
          }
          iVar17 = iVar17 + 1;
          iVar12 = 0;
          uVar6 = uVar6 - uVar20;
          iVar21 = iVar21 + uVar20;
          DAT_1853ad420 = 0;
          DAT_1853ad41c = iVar17;
        } while (0 < (int)uVar6);
      }
      lVar9 = lVar8 * 0xe4;
      lVar15 = (longlong)(int)uVar16 * 0x4dc00 + lVar9;
      lVar24 = lVar9 + (ulonglong)uVar5 * 0x4dc00;
      FUN_14018d510(&DAT_160fe2d64 + lVar24,*(undefined4 *)(&DAT_160fe2d64 + lVar15),0x1c);
      FUN_14018d510(&DAT_160fe2d68 + lVar24,*(undefined4 *)(&DAT_160fe2d68 + lVar15),0x1c);
      FUN_14018d510(&DAT_160fe2d6c + lVar24,*(undefined4 *)(&DAT_160fe2d6c + lVar15),0x1c);
      lVar9 = (ulonglong)uVar5 * 0x4dc00 + lVar9;
      (&DAT_15f2d922c)[lVar8 * 0x145a] = (float)*(int *)(&DAT_160fe2d64 + lVar9) * fVar2 - fVar4;
      (&DAT_15f2d9230)[lVar8 * 0x145a] = (float)*(int *)(&DAT_160fe2d68 + lVar9) * fVar2;
      (&DAT_15f2d9234)[lVar8 * 0x145a] = (float)*(int *)(&DAT_160fe2d6c + lVar9) * fVar2 - fVar4;
      FUN_140115ae0(&DAT_160fe2d70 + lVar24,2);
      FUN_14018d5e0(&DAT_160fe2d74 + lVar24,*(undefined4 *)(&DAT_160fe2d74 + lVar15),0xe);
      FUN_14018d5e0(&DAT_160fe2d78 + lVar24,*(undefined4 *)(&DAT_160fe2d78 + lVar15),0xe);
      FUN_14018d5e0(&DAT_160fe2d7c + lVar24,*(undefined4 *)(&DAT_160fe2d7c + lVar15),0xe);
      FUN_140191f90(&DAT_15f2d9244 + lVar8 * 0x145a,&DAT_160fe2d70 + lVar24);
      if ((((&DAT_15f2d9200)[lVar8 * 0x145a] != 0) &&
          (lVar10 = (longlong)*(int *)(&DAT_15f2dc848 + lVar8 * 0x5168),
          *(int *)(&DAT_15f2dc848 + lVar8 * 0x5168) != -1)) &&
         ((&DAT_15fd16268)[lVar10 * 0x17f] != uVar19)) {
        (&DAT_15f2d9204)[lVar8 * 0x145a] = (&DAT_15fd16260)[lVar10 * 0x17f];
        (&DAT_15f2d9218)[lVar8 * 0x145a] = (&DAT_15fd16838)[lVar10 * 0x17f];
        (&DAT_15f2de358)[lVar8 * 0x145a] = (&DAT_15f2d922c)[lVar8 * 0x145a];
        (&DAT_15f2de35c)[lVar8 * 0x145a] = (&DAT_15f2d9230)[lVar8 * 0x145a];
        (&DAT_15f2de360)[lVar8 * 0x145a] = (&DAT_15f2d9234)[lVar8 * 0x145a];
        (&DAT_15fd16268)[lVar10 * 0x17f] = uVar19;
      }
      uVar1 = *(undefined4 *)(&DAT_160fe2d80 + lVar15);
      (&DAT_15f2de348)[lVar8 * 0x145a] = (&DAT_15f2d922c)[lVar8 * 0x145a];
      (&DAT_15f2de34c)[lVar8 * 0x145a] = (&DAT_15f2d9230)[lVar8 * 0x145a];
      (&DAT_15f2de350)[lVar8 * 0x145a] = (&DAT_15f2d9234)[lVar8 * 0x145a];
      FUN_14018d5e0(&DAT_160fe2d80 + lVar24,uVar1,9);
      piVar13 = (int *)(&DAT_160fe2d88 + lVar9);
      puVar28 = (undefined4 *)(&DAT_160fe2d88 + lVar15);
      local_b8 = 4;
      (&DAT_15f2dcb3c)[lVar8 * 0x145a] = (float)((double)*(int *)(&DAT_160fe2d80 + lVar9) * dVar3);
      lVar24 = 4;
      piVar14 = piVar13;
      pfVar26 = (float *)(&DAT_15f2dcb84 + lVar8 * 0x145a);
      do {
        FUN_14018d510(piVar13 + -1,puVar28[-1],8);
        FUN_14018d5e0(piVar13,*puVar28,9);
        FUN_14018d510(piVar13 + 1,puVar28[1],8);
        iVar21 = *piVar14;
        puVar28 = puVar28 + 3;
        piVar13 = piVar13 + 3;
        pfVar26[0xc] = (float)piVar14[-1] * fVar30;
        iVar17 = piVar14[1];
        *pfVar26 = (float)iVar21 * fVar30;
        pfVar26[0x11] = (float)iVar17 * fVar30;
        lVar24 = lVar24 + -1;
        piVar14 = piVar14 + 3;
        pfVar26 = pfVar26 + 0x2b;
      } while (lVar24 != 0);
      FUN_140115ae0(&DAT_15f2dcb30 + lVar8 * 0x145a,0xd);
      local_res20 = local_res20 + 1;
    } while ((int)local_res20 < DAT_160fb5da4);
  }
  uVar19 = local_res10[0];
  FUN_140115ae0(&DAT_160fb61a8,8);
  FUN_140115ae0(&DAT_15fe95260,10);
  FUN_140115ae0(&DAT_160fc37b4,8);
  iVar22 = 0;
  uVar6 = 0;
  local_res18 = (ulonglong)local_res18._4_4_ << 0x20;
  iVar21 = DAT_1853ad418;
  iVar12 = DAT_1853ad420;
  iVar17 = DAT_1853ad41c;
  if (0 < DAT_15fe95260) {
    lVar8 = 0;
    pfVar26 = (float *)&DAT_15fd16844;
    iVar23 = DAT_15fe95260;
    do {
      if ((int)uVar6 < 1) {
        uVar19 = 1;
        if ((iVar17 < 0x10000) && (iVar17 <= iVar21)) {
          local_b8 = 0;
          iVar25 = 0;
          do {
            uVar20 = 8 - iVar12;
            local_b8 = local_b8 |
                       ((uint)((byte)(&DAT_1853ad424)[iVar17] >> ((byte)DAT_1853ad420 & 0x1f)) &
                       ~(-1 << ((byte)uVar19 & 0x1f))) << ((byte)iVar25 & 0x1f);
            if (uVar19 < uVar20) {
              DAT_1853ad420 = iVar12 + uVar19;
              iVar12 = DAT_1853ad420;
              break;
            }
            if (uVar19 == uVar20) {
              DAT_1853ad41c = iVar17 + 1;
              DAT_1853ad420 = 0;
              iVar12 = DAT_1853ad420;
              iVar17 = DAT_1853ad41c;
              break;
            }
            DAT_1853ad41c = iVar17 + 1;
            iVar12 = 0;
            uVar19 = uVar19 - uVar20;
            iVar25 = iVar25 + uVar20;
            DAT_1853ad420 = 0;
            iVar17 = DAT_1853ad41c;
          } while (0 < (int)uVar19);
        }
        if (local_b8 == 0) {
          uVar19 = 10;
          if ((iVar17 < 0x10000) && (iVar17 + 1 <= iVar21)) {
            uVar6 = 0;
            iVar25 = 0;
            do {
              uVar20 = 8 - iVar12;
              uVar6 = uVar6 | ((uint)((byte)(&DAT_1853ad424)[iVar17] >> ((byte)DAT_1853ad420 & 0x1f)
                                     ) & ~(-1 << ((byte)uVar19 & 0x1f))) << ((byte)iVar25 & 0x1f);
              if (uVar19 < uVar20) {
                DAT_1853ad420 = iVar12 + uVar19;
                iVar12 = DAT_1853ad420;
                goto LAB_140190ddd;
              }
              if (uVar19 == uVar20) {
                DAT_1853ad41c = iVar17 + 1;
                iVar12 = 0;
                uVar6 = uVar6 - 1;
                DAT_1853ad420 = 0;
                iVar17 = DAT_1853ad41c;
                goto LAB_1401911c0;
              }
              DAT_1853ad41c = iVar17 + 1;
              iVar12 = 0;
              uVar19 = uVar19 - uVar20;
              iVar25 = iVar25 + uVar20;
              DAT_1853ad420 = 0;
              iVar17 = DAT_1853ad41c;
            } while (0 < (int)uVar19);
            uVar6 = uVar6 - 1;
          }
          else {
LAB_140190ddd:
            uVar6 = uVar6 - 1;
          }
        }
        else {
          uVar19 = 8;
          pfVar26[2] = pfVar26[-2];
          pfVar26[3] = pfVar26[-1];
          pfVar26[4] = *pfVar26;
          pfVar26[5] = pfVar26[1];
          pfVar26[-2] = DAT_183ebfd34;
          if ((iVar17 < 0x10000) && (iVar17 + 1 <= iVar21)) {
            uVar16 = 0;
            iVar23 = 0;
            do {
              uVar20 = 8 - iVar12;
              uVar16 = uVar16 | ((uint)((byte)(&DAT_1853ad424)[iVar17] >>
                                       ((byte)DAT_1853ad420 & 0x1f)) &
                                ~(-1 << ((byte)uVar19 & 0x1f))) << ((byte)iVar23 & 0x1f);
              if (uVar19 < uVar20) {
                DAT_1853ad420 = iVar12 + uVar19;
                iVar12 = DAT_1853ad420;
                break;
              }
              if (uVar19 == uVar20) {
                DAT_1853ad41c = iVar17 + 1;
                DAT_1853ad420 = 0;
                iVar12 = DAT_1853ad420;
                iVar17 = DAT_1853ad41c;
                break;
              }
              DAT_1853ad41c = iVar17 + 1;
              iVar12 = 0;
              uVar19 = uVar19 - uVar20;
              iVar23 = iVar23 + uVar20;
              DAT_1853ad420 = 0;
              iVar17 = DAT_1853ad41c;
            } while (0 < (int)uVar19);
          }
          uVar19 = 1;
          if ((iVar17 < 0x10000) && (iVar17 <= iVar21)) {
            local_b8 = 0;
            iVar23 = 0;
            do {
              uVar20 = 8 - iVar12;
              local_b8 = local_b8 |
                         ((uint)((byte)(&DAT_1853ad424)[iVar17] >> ((byte)DAT_1853ad420 & 0x1f)) &
                         ~(-1 << ((byte)uVar19 & 0x1f))) << ((byte)iVar23 & 0x1f);
              if (uVar19 < uVar20) {
                DAT_1853ad420 = iVar12 + uVar19;
                iVar12 = DAT_1853ad420;
                break;
              }
              if (uVar19 == uVar20) {
                DAT_1853ad41c = iVar17 + 1;
                DAT_1853ad420 = 0;
                iVar12 = DAT_1853ad420;
                iVar17 = DAT_1853ad41c;
                break;
              }
              DAT_1853ad41c = iVar17 + 1;
              iVar12 = 0;
              uVar19 = uVar19 - uVar20;
              iVar23 = iVar23 + uVar20;
              DAT_1853ad420 = 0;
              iVar17 = DAT_1853ad41c;
            } while (0 < (int)uVar19);
          }
          if (local_b8 == 0) {
            pfVar26[-0x177] = -NAN;
          }
          uVar19 = 1;
          if ((iVar17 < 0x10000) && (iVar17 <= iVar21)) {
            local_b8 = 0;
            iVar21 = 0;
            do {
              uVar20 = 8 - iVar12;
              local_b8 = local_b8 |
                         ((uint)((byte)(&DAT_1853ad424)[iVar17] >> ((byte)DAT_1853ad420 & 0x1f)) &
                         ~(-1 << ((byte)uVar19 & 0x1f))) << ((byte)iVar21 & 0x1f);
              if (uVar19 < uVar20) {
                DAT_1853ad420 = iVar12 + uVar19;
                break;
              }
              if (uVar19 == uVar20) {
                DAT_1853ad41c = iVar17 + 1;
                DAT_1853ad420 = 0;
                break;
              }
              DAT_1853ad41c = iVar17 + 1;
              iVar12 = 0;
              uVar19 = uVar19 - uVar20;
              iVar21 = iVar21 + uVar20;
              DAT_1853ad420 = 0;
              iVar17 = DAT_1853ad41c;
            } while (0 < (int)uVar19);
          }
          if (local_b8 != 0) {
            FUN_140115ae0(&DAT_15fd16260 + (longlong)iVar22 * 0x17f,6);
            FUN_140115ae0(&DAT_15fd16838 + (longlong)iVar22 * 0x17f,4);
          }
          fVar30 = pfVar26[-0x177];
          if (fVar30 != -NAN) {
            (&DAT_15f2d9204)[(longlong)(int)fVar30 * 0x145a] = pfVar26[-0x179];
            (&DAT_15f2d9218)[(longlong)(int)fVar30 * 0x145a] = pfVar26[-3];
          }
          lVar9 = (longlong)(int)uVar16 * 0x4dc00 + lVar8;
          lVar24 = (ulonglong)uVar5 * 0x4dc00 + (longlong)(int)(uint)local_res18 * 0x28;
          FUN_14018d510(&DAT_161008568 + lVar24,*(undefined4 *)(&DAT_161008568 + lVar9),0x1c);
          FUN_14018d510(&DAT_16100856c + lVar24,*(undefined4 *)(&DAT_16100856c + lVar9),0x1c);
          FUN_14018d510(&DAT_161008570 + lVar24,*(undefined4 *)(&DAT_161008570 + lVar9),0x1c);
          uVar1 = *(undefined4 *)(&DAT_161008584 + lVar9);
          lVar9 = (ulonglong)uVar5 * 0x4dc00 + lVar8;
          iVar21 = *(int *)(&DAT_161008570 + lVar9);
          iVar17 = *(int *)(&DAT_16100856c + lVar9);
          fVar32 = (float)*(int *)(&DAT_161008568 + lVar9) * fVar2 - fVar4;
          pfVar26[-0x174] = (float)iVar17 * fVar2;
          fVar30 = (float)iVar21 * fVar2 - fVar4;
          pfVar26[-0x175] = fVar32;
          pfVar26[-0x173] = fVar30;
          pfVar26[-1] = fVar32;
          *pfVar26 = (float)iVar17 * fVar2;
          pfVar26[1] = fVar30;
          FUN_14018d5e0(&DAT_161008584 + lVar24,uVar1,9);
          iVar12 = DAT_1853ad420;
          iVar17 = DAT_1853ad41c;
          iVar21 = DAT_1853ad418;
          iVar23 = DAT_15fe95260;
          pfVar26[-0x16f] = (float)((double)*(int *)(&DAT_161008584 + lVar9) * dVar3);
          iVar22 = (uint)local_res18;
        }
      }
      else {
        uVar6 = uVar6 - 1;
      }
LAB_1401911c0:
      iVar22 = iVar22 + 1;
      lVar8 = lVar8 + 0x28;
      pfVar26 = pfVar26 + 0x17f;
      local_res18 = CONCAT44(local_res18._4_4_,iVar22);
      uVar19 = local_res10[0];
    } while (iVar22 < iVar23);
  }
  uVar16 = 10;
  if ((iVar17 < 0x10000) && (iVar17 + 1 <= iVar21)) {
    uVar19 = 0;
    iVar21 = 0;
    do {
      uVar5 = 8 - iVar12;
      uVar19 = uVar19 | ((uint)((byte)(&DAT_1853ad424)[iVar17] >> ((byte)DAT_1853ad420 & 0x1f)) &
                        ~(-1 << ((byte)uVar16 & 0x1f))) << ((byte)iVar21 & 0x1f);
      if (uVar16 < uVar5) {
        DAT_1853ad420 = iVar12 + uVar16;
        break;
      }
      if (uVar16 == uVar5) {
        DAT_1853ad41c = iVar17 + 1;
        DAT_1853ad420 = 0;
        break;
      }
      DAT_1853ad41c = iVar17 + 1;
      iVar12 = 0;
      uVar16 = uVar16 - uVar5;
      iVar21 = iVar21 + uVar5;
      DAT_1853ad420 = 0;
      iVar17 = DAT_1853ad41c;
    } while (0 < (int)uVar16);
  }
  lVar8 = (longlong)(int)uVar19;
  FUN_140115ae0(&DAT_175fd14b4 + lVar8 * 0x22,2);
  FUN_140115ae0(&DAT_175fd14b8 + lVar8 * 0x22,2);
  FUN_140115ae0(&DAT_175fd14bc + lVar8 * 0x22,2);
  FUN_140115ae0(&DAT_175fd14c0 + lVar8 * 0x22,2);
  if ((DAT_144cbfaa4 == 0) || (DAT_144cbfac0 <= (int)DAT_183ebfd34)) {
    FUN_140041b80();
  }
  return;
}



===== FUN_1400c92b0 @ 1400c92b0 root=true =====

void FUN_1400c92b0(int param_1)

{
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  ulonglong uVar9;
  undefined *puVar10;
  longlong lVar11;
  int local_res10;
  
  lVar2 = (longlong)param_1;
  lVar11 = lVar2 * 0x1b80;
  uVar9 = 0;
  puVar10 = &DAT_182bbca00 + lVar11;
  do {
    lVar3 = 0;
    do {
      puVar10[lVar3] = 0;
      if ((uVar9 == 0) || (uVar9 == 0x15)) {
        puVar10[lVar3] = 1;
      }
      if ((uVar9 < 0x15) && ((lVar3 == 0 || (lVar3 == 0x1e)))) {
        (&DAT_182bbca00)[(lVar2 * 0xdc + uVar9) * 0x20 + lVar3] = 1;
      }
      lVar3 = lVar3 + 1;
    } while (lVar3 < 0x20);
    uVar9 = uVar9 + 1;
    puVar10 = puVar10 + 0x20;
  } while ((longlong)uVar9 < 0x18);
  lVar3 = lVar2 * 0x1b80;
  uVar8 = *(uint *)(&DAT_182bbc7e8 + lVar3) & 7;
  if (uVar8 != 0) {
    (&DAT_182bbca48)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbca68)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbca88)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcaa8)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcac8)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcae8)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcb08)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcc76)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcc56)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcc36)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcc16)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcbf6)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcbd6)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcbb6)[lVar2 * 0x1b80] = 1;
  }
  if (1 < uVar8) {
    (&DAT_182bbca56)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbca76)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbca96)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcab6)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcad6)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcaf6)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcb16)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcc68)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcc48)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcc28)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcc08)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcbe8)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcbc8)[lVar2 * 0x1b80] = 1;
    (&DAT_182bbcba8)[lVar2 * 0x1b80] = 1;
  }
  if (2 < uVar8) {
    *(undefined4 *)(&DAT_182bbcb61 + lVar3) = 0x1010101;
    *(undefined4 *)(&DAT_182bbcb65 + lVar3) = 0x1010101;
  }
  if (3 < uVar8) {
    *(undefined4 *)(&DAT_182bbcb7a + lVar3) = 0x1010101;
    *(undefined4 *)(&DAT_182bbcb76 + lVar3) = 0x1010101;
  }
  if (4 < uVar8) {
    *(undefined4 *)(&DAT_182bbca8b + lVar3) = 0x1010101;
    *(undefined4 *)(&DAT_182bbca8f + lVar3) = 0x1010101;
    (&DAT_182bbca93)[lVar3] = 1;
  }
  if (5 < uVar8) {
    *(undefined4 *)(&DAT_182bbcc2b + lVar11) = 0x1010101;
    *(undefined4 *)(&DAT_182bbcc2f + lVar11) = 0x1010101;
    (&DAT_182bbcc33)[lVar11] = 1;
  }
  if (6 < uVar8) {
    (&DAT_182bbcb96)[lVar3] = 1;
    (&DAT_182bbca28)[lVar3] = 1;
  }
  local_res10 = 0;
  do {
    if (local_res10 == 0) {
      iVar5 = 1;
      iVar6 = 1;
    }
    else {
      iVar5 = 0x11;
      if (local_res10 == 1) {
        iVar6 = 1;
      }
      else {
        iVar6 = 0xb;
        if (local_res10 != 2) {
          iVar5 = 1;
        }
      }
    }
    lVar11 = 2;
    do {
      iVar1 = FUN_14023b1b0();
      iVar4 = iVar1 % 0xc + iVar5;
      iVar1 = FUN_14023b1b0();
      iVar1 = iVar1 % 9 + iVar6;
      iVar7 = 0;
      do {
        if ((&DAT_182bbca00)[((longlong)iVar1 + lVar2 * 0xdc) * 0x20 + (longlong)iVar4] == '\0')
        break;
        iVar1 = FUN_14023b1b0();
        iVar4 = iVar1 % 0xc + iVar5;
        iVar1 = FUN_14023b1b0();
        iVar7 = iVar7 + 1;
        iVar1 = iVar1 % 9 + iVar6;
      } while (iVar7 < 0x200);
      lVar3 = ((longlong)iVar1 + lVar2 * 0xdc) * 0x20 + (longlong)iVar4;
      if ((&DAT_182bbca00)[lVar3] == '\0') {
        (&DAT_182bbca00)[lVar3] = 4;
        *(int *)(&DAT_182bbc7e4 + lVar2 * 0x1b80) = *(int *)(&DAT_182bbc7e4 + lVar2 * 0x1b80) + 1;
      }
      lVar11 = lVar11 + -1;
    } while (lVar11 != 0);
    local_res10 = local_res10 + 1;
    if (3 < local_res10) {
      lVar3 = lVar2 * 0x1b80;
      *(undefined8 *)(&DAT_182bbc7f8 + lVar3) = 0;
      *(undefined4 *)(&DAT_182bbc800 + lVar2 * 0x1b80) = 0xf;
      *(undefined4 *)(&DAT_182bbc804 + lVar2 * 0x1b80) = 10;
      uVar8 = *(int *)(&DAT_182bbc7f8 + lVar3) + 1U & 0x3f;
      *(uint *)(&DAT_182bbc7f8 + lVar3) = uVar8;
      lVar11 = (ulonglong)uVar8 + lVar2 * 0x370;
      *(undefined4 *)(&DAT_182bbc800 + lVar11 * 8) = 0xf;
      *(undefined4 *)(&DAT_182bbc804 + lVar11 * 8) = 10;
      uVar8 = *(int *)(&DAT_182bbc7f8 + lVar3) + 1U & 0x3f;
      *(uint *)(&DAT_182bbc7f8 + lVar3) = uVar8;
      lVar2 = (ulonglong)uVar8 + lVar2 * 0x370;
      *(undefined4 *)(&DAT_182bbc800 + lVar2 * 8) = 0xf;
      *(undefined4 *)(&DAT_182bbc804 + lVar2 * 8) = 10;
      (&DAT_182bbcb4f)[lVar3] = 3;
      *(undefined4 *)(&DAT_182bbc7f4 + lVar3) = 0;
      *(int *)(&DAT_182bbc7e8 + lVar3) = *(int *)(&DAT_182bbc7e8 + lVar3) + 1;
      *(undefined4 *)(&DAT_182bbc7ec + lVar3) = 0x40;
      FUN_1400c8e10(param_1);
      return;
    }
  } while( true );
}



===== FUN_1400932d0 @ 1400932d0 root=true =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400932d0(void)

{
  double dVar1;
  double dVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  longlong lVar7;
  longlong lVar8;
  undefined *puVar9;
  float *pfVar10;
  int *piVar11;
  longlong lVar12;
  longlong lVar13;
  float *pfVar14;
  longlong lVar15;
  longlong lVar16;
  ulonglong uVar17;
  longlong lVar18;
  ulonglong uVar19;
  longlong lVar20;
  float fVar21;
  float fVar22;
  float fVar23;
  float fVar24;
  float fVar25;
  float fVar26;
  float fVar27;
  int *local_res10;
  longlong local_res18;
  
  uVar4 = 0x10;
  if (DAT_183ebfd50 != 0) {
    uVar4 = 100;
  }
  iVar3 = SDL_GetTicks();
  iVar3 = iVar3 - _DAT_1a4d3bd20;
  _DAT_1a4d3bd20 = SDL_GetTicks();
  dVar2 = DAT_140278620;
  dVar1 = DAT_1402785e8;
  lVar12 = 0;
  iVar5 = 0;
  if (-1 < iVar3) {
    iVar5 = iVar3;
  }
  fVar26 = (float)uVar4;
  iVar3 = uVar4 * 4;
  if (iVar5 <= (int)(uVar4 * 4)) {
    iVar3 = iVar5;
  }
  DAT_1a4d3bd24 = DAT_1a4d3bd24 + iVar3;
  iVar5 = DAT_183ebfd34 * uVar4;
  fVar25 = (float)iVar5;
  if (fVar25 - fVar26 * DAT_140278224 < (float)DAT_1a4d3bd24) {
    DAT_1a4d3bd24 = DAT_1a4d3bd24 - (uVar4 >> 3);
  }
  if ((float)DAT_1a4d3bd24 < fVar25 - (DAT_1a4d3bd28 + DAT_140278224) * fVar26) {
    DAT_1a4d3bd24 = DAT_1a4d3bd24 + (uVar4 >> 4);
  }
  if (iVar5 < DAT_1a4d3bd24) {
    DAT_1a4d3bd24 = iVar5;
  }
  if (DAT_1a4d3bd24 < (int)((DAT_183ebfd34 - 0x14) * uVar4)) {
    DAT_1a4d3bd24 = (int)(fVar25 - fVar26 * DAT_140278798);
  }
  if ((DAT_144cbfaa4 != 0) && (DAT_1a4d3bd24 < (int)((DAT_183ebfd34 - 1) * uVar4))) {
    DAT_1a4d3bd24 = (int)(fVar25 - fVar26);
  }
  uVar6 = DAT_1a4d3bd24 / (int)uVar4;
  if ((int)DAT_183ebfd34 < DAT_1a4d3bd24 / (int)uVar4) {
    uVar6 = DAT_183ebfd34;
  }
  fVar26 = (float)(int)(DAT_1a4d3bd24 - uVar6 * uVar4) / fVar26;
  if (fVar26 <= 0.0) {
    fVar26 = 0.0;
  }
  if (DAT_1402783f4 < fVar26) {
    fVar26 = DAT_1402783f4;
  }
  uVar4 = uVar6 & 0x3f;
  if ((DAT_151e46204 == 0) || (uVar6 = uVar6 + 1 & 0x3f, DAT_16b165f68 != 0)) {
    uVar4 = DAT_183ebfd34 & 0x3f;
    uVar6 = uVar4;
    fVar26 = DAT_1402783f4;
  }
  uVar19 = (ulonglong)uVar4;
  uVar17 = (ulonglong)uVar6;
  local_res10 = &DAT_18329e308;
  local_res18 = 0x100;
  lVar18 = lVar12;
  do {
    if (*local_res10 != 0) {
      lVar20 = uVar17 * 0x89880;
      lVar13 = uVar19 * 0x89880 + lVar12;
      fVar25 = *(float *)(&DAT_1a4d3bd3c + lVar13);
      lVar7 = lVar20 + lVar12;
      fVar22 = *(float *)(&DAT_1a4d3bd3c + lVar7);
      if (dVar1 <= (double)(fVar25 - fVar22)) {
        fVar22 = (float)((double)fVar22 + dVar2);
      }
      fVar23 = fVar25;
      if (dVar1 <= (double)(fVar22 - fVar25)) {
        fVar23 = (float)((double)fVar25 + dVar2);
      }
      fVar21 = *(float *)(&DAT_1a4d3bd44 + lVar13);
      *(float *)((longlong)&DAT_18430a530 + lVar12) = (fVar22 - fVar23) * fVar26 + fVar25;
      fVar25 = *(float *)(&DAT_1a4d3bd44 + lVar7);
      if (dVar1 <= (double)(fVar21 - fVar25)) {
        fVar25 = (float)((double)fVar25 + dVar2);
      }
      fVar22 = fVar21;
      if (dVar1 <= (double)(fVar25 - fVar21)) {
        fVar22 = (float)((double)fVar21 + dVar2);
      }
      fVar23 = *(float *)(&DAT_1a4d3bd4c + lVar7);
      fVar24 = *(float *)(&DAT_1a4d3bd5c + lVar13);
      lVar8 = uVar19 * 0x89880 + lVar18;
      fVar27 = *(float *)(&DAT_1a4d3bd60 + lVar13);
      *(float *)((longlong)&DAT_18430a538 + lVar12) = (fVar25 - fVar22) * fVar26 + fVar21;
      fVar25 = *(float *)(&DAT_1a4d3bd50 + lVar13);
      *(float *)((longlong)&DAT_18430a540 + lVar12) =
           (fVar23 - *(float *)(&DAT_1a4d3bd4c + lVar13)) * fVar26 +
           *(float *)(&DAT_1a4d3bd4c + lVar13);
      fVar22 = *(float *)(&DAT_1a4d3bd54 + lVar13);
      *(float *)((longlong)&DAT_18430a544 + lVar12) =
           (*(float *)(&DAT_1a4d3bd50 + lVar7) - fVar25) * fVar26 + fVar25;
      fVar25 = *(float *)(&DAT_1a4d3bd58 + lVar13);
      *(float *)((longlong)&DAT_18430a548 + lVar12) =
           (*(float *)(&DAT_1a4d3bd54 + lVar7) - fVar22) * fVar26 + fVar22;
      fVar22 = *(float *)(&DAT_1a4d3bd5c + lVar7);
      *(float *)((longlong)&DAT_18430a54c + lVar12) =
           (*(float *)(&DAT_1a4d3bd58 + lVar7) - fVar25) * fVar26 + fVar25;
      fVar25 = *(float *)(&DAT_1a4d3bd60 + lVar7);
      *(float *)((longlong)&DAT_18430a550 + lVar12) = (fVar22 - fVar24) * fVar26 + fVar24;
      *(float *)((longlong)&DAT_18430a554 + lVar12) = (fVar25 - fVar27) * fVar26 + fVar27;
      FUN_1400c2f90(&DAT_18430a558 + lVar18,&DAT_1a4d3bd64 + lVar8,&DAT_1a4d3bd64 + lVar20 + lVar18)
      ;
      puVar9 = &DAT_1a4d3bddc + lVar8;
      lVar13 = 0xf;
      do {
        FUN_1400c2f90(puVar9 + uVar19 * -0x89880 + -0x20a3180c,puVar9,
                      puVar9 + lVar20 + uVar19 * -0x89880);
        puVar9 = puVar9 + 0x54;
        lVar13 = lVar13 + -1;
      } while (lVar13 != 0);
      lVar13 = 0xf;
      pfVar10 = (float *)((longlong)&DAT_18430a5a4 + lVar12);
      pfVar14 = (float *)&DAT_18399df58;
      puVar9 = &DAT_18430a558 + lVar18;
      do {
        fVar25 = pfVar14[-1];
        fVar23 = pfVar14[-5];
        fVar22 = *pfVar14;
        lVar7 = lVar12 + (longlong)(int)fVar23 * 0x54;
        fVar24 = fVar25 * *(float *)(&DAT_18430a558 + lVar7) +
                 *(float *)((longlong)&DAT_18430a54c + lVar7);
        pfVar10[-1] = fVar24;
        fVar21 = fVar25 * *(float *)(&DAT_18430a55c + lVar7) +
                 *(float *)((longlong)&DAT_18430a550 + lVar7);
        *pfVar10 = fVar21;
        fVar27 = fVar25 * *(float *)(&DAT_18430a560 + lVar7) +
                 *(float *)((longlong)&DAT_18430a554 + lVar7);
        pfVar10[1] = fVar27;
        fVar24 = fVar22 * *(float *)(&DAT_18430a564 + lVar7) + fVar24;
        fVar25 = pfVar14[1];
        pfVar10[-1] = fVar24;
        fVar21 = fVar22 * *(float *)(&DAT_18430a568 + lVar7) + fVar21;
        *pfVar10 = fVar21;
        fVar27 = fVar22 * *(float *)(&DAT_18430a56c + lVar7) + fVar27;
        pfVar10[1] = fVar27;
        pfVar10[-1] = fVar25 * *(float *)(&DAT_18430a570 + lVar7) + fVar24;
        *pfVar10 = fVar25 * *(float *)(&DAT_18430a574 + lVar7) + fVar21;
        pfVar10[1] = fVar25 * *(float *)(&DAT_18430a578 + lVar7) + fVar27;
        FUN_14007a010(puVar9 + 0x54,puVar9 + 0x78,
                      &DAT_18430a558 + (longlong)(int)fVar23 * 0x54 + lVar18);
        fVar23 = pfVar14[-4] - pfVar14[-1];
        fVar24 = pfVar14[-3] - *pfVar14;
        fVar21 = pfVar14[-2] - pfVar14[1];
        fVar22 = fVar23 * pfVar10[2] + pfVar10[-1];
        pfVar10[-1] = fVar22;
        fVar25 = fVar23 * pfVar10[3] + *pfVar10;
        *pfVar10 = fVar25;
        fVar23 = fVar23 * pfVar10[4] + pfVar10[1];
        pfVar10[1] = fVar23;
        fVar22 = fVar24 * pfVar10[5] + fVar22;
        pfVar10[-1] = fVar22;
        fVar25 = fVar24 * pfVar10[6] + fVar25;
        *pfVar10 = fVar25;
        fVar23 = fVar24 * pfVar10[7] + fVar23;
        pfVar10[1] = fVar23;
        pfVar10[-1] = fVar21 * pfVar10[8] + fVar22;
        *pfVar10 = fVar21 * pfVar10[9] + fVar25;
        pfVar14 = pfVar14 + 0x19;
        pfVar10[1] = fVar21 * pfVar10[10] + fVar23;
        pfVar10 = pfVar10 + 0x15;
        lVar13 = lVar13 + -1;
        puVar9 = puVar9 + 0x54;
      } while (lVar13 != 0);
    }
    local_res10 = local_res10 + 0x1bfe;
    lVar18 = lVar18 + 0x560;
    lVar12 = lVar12 + 0x560;
    local_res18 = local_res18 + -1;
  } while (local_res18 != 0);
  piVar11 = &DAT_15f2d9200;
  lVar13 = 0;
  lVar18 = 0x200;
  lVar12 = lVar13;
  do {
    if (*piVar11 != 0) {
      lVar7 = uVar19 * 0x89880 + lVar12;
      fVar25 = *(float *)(&DAT_1a4d91d3c + lVar7);
      fVar22 = *(float *)(&DAT_1a4d91d44 + lVar7);
      fVar23 = *(float *)(&DAT_1a4d91d40 + lVar7);
      *(undefined4 *)((longlong)&DAT_18436052c + lVar12) = *(undefined4 *)(&DAT_1a4d91d38 + lVar7);
      lVar7 = uVar17 * 0x89880 + lVar12;
      fVar21 = *(float *)(&DAT_1a4d91d40 + lVar7);
      *(float *)((longlong)&DAT_184360530 + lVar12) =
           (*(float *)(&DAT_1a4d91d3c + lVar7) - fVar25) * fVar26 + fVar25;
      fVar25 = *(float *)(&DAT_1a4d91d44 + lVar7);
      *(float *)((longlong)&DAT_184360534 + lVar12) = (fVar21 - fVar23) * fVar26 + fVar23;
      *(float *)((longlong)&DAT_184360538 + lVar12) = (fVar25 - fVar22) * fVar26 + fVar22;
      FUN_1400c2f90((longlong)&DAT_18436053c + lVar13,&DAT_1a4d91d48 + uVar19 * 0x89880 + lVar13,
                    &DAT_1a4d91d48 + uVar17 * 0x89880 + lVar13);
      lVar15 = uVar17 * 0x8988;
      lVar16 = uVar19 * 0x8988;
      lVar20 = uVar17 * 0x89880 + lVar12;
      lVar7 = uVar19 * 0x89880 + lVar12;
      fVar25 = *(float *)(&DAT_1a4d91d70 + lVar7);
      *(float *)((longlong)&DAT_184360560 + lVar12) =
           fVar26 * *(float *)(&DAT_1a4d91d78 + lVar20) + *(float *)(&DAT_1a4d91d6c + lVar7);
      fVar22 = *(float *)(&DAT_1a4d91d74 + lVar7);
      lVar7 = (lVar16 + 1) * 0x10 + lVar12;
      *(float *)((longlong)&DAT_184360564 + lVar12) =
           (*(float *)(&DAT_1a4d91d70 + lVar20) - fVar25) * fVar26 + fVar25;
      lVar8 = (lVar15 + 1) * 0x10 + lVar12;
      fVar25 = *(float *)(&DAT_1a4d91d70 + lVar7);
      *(float *)((longlong)&DAT_184360568 + lVar12) =
           (*(float *)(&DAT_1a4d91d74 + lVar20) - fVar22) * fVar26 + fVar22;
      *(float *)((longlong)&DAT_184360570 + lVar12) =
           fVar26 * *(float *)(&DAT_1a4d91d78 + lVar8) + *(float *)(&DAT_1a4d91d6c + lVar7);
      fVar22 = *(float *)(&DAT_1a4d91d74 + lVar7);
      *(float *)((longlong)&DAT_184360574 + lVar12) =
           (*(float *)(&DAT_1a4d91d70 + lVar8) - fVar25) * fVar26 + fVar25;
      *(float *)((longlong)&DAT_184360578 + lVar12) =
           (*(float *)(&DAT_1a4d91d74 + lVar8) - fVar22) * fVar26 + fVar22;
      lVar20 = (lVar15 + 2) * 0x10 + lVar12;
      lVar7 = (lVar16 + 2) * 0x10 + lVar12;
      fVar25 = *(float *)(&DAT_1a4d91d70 + lVar7);
      *(float *)((longlong)&DAT_184360580 + lVar12) =
           fVar26 * *(float *)(&DAT_1a4d91d78 + lVar20) + *(float *)(&DAT_1a4d91d6c + lVar7);
      fVar22 = *(float *)(&DAT_1a4d91d74 + lVar7);
      *(float *)((longlong)&DAT_184360584 + lVar12) =
           (*(float *)(&DAT_1a4d91d70 + lVar20) - fVar25) * fVar26 + fVar25;
      lVar8 = (lVar15 + 3) * 0x10 + lVar12;
      lVar7 = (lVar16 + 3) * 0x10 + lVar12;
      fVar25 = *(float *)(&DAT_1a4d91d70 + lVar7);
      *(float *)((longlong)&DAT_184360588 + lVar12) =
           (*(float *)(&DAT_1a4d91d74 + lVar20) - fVar22) * fVar26 + fVar22;
      *(float *)((longlong)&DAT_184360590 + lVar12) =
           fVar26 * *(float *)(&DAT_1a4d91d78 + lVar8) + *(float *)(&DAT_1a4d91d6c + lVar7);
      fVar22 = *(float *)(&DAT_1a4d91d74 + lVar7);
      *(float *)((longlong)&DAT_184360594 + lVar12) =
           (*(float *)(&DAT_1a4d91d70 + lVar8) - fVar25) * fVar26 + fVar25;
      *(float *)((longlong)&DAT_184360598 + lVar12) =
           (*(float *)(&DAT_1a4d91d74 + lVar8) - fVar22) * fVar26 + fVar22;
    }
    lVar13 = lVar13 + 0x134;
    piVar11 = piVar11 + 0x145a;
    lVar12 = lVar12 + 0x134;
    lVar18 = lVar18 + -1;
  } while (lVar18 != 0);
  lVar18 = 0;
  piVar11 = &DAT_182bbb180;
  lVar13 = 0x400;
  lVar12 = lVar18;
  do {
    if (*piVar11 != 0) {
      lVar7 = lVar12 + uVar19 * 0x89880;
      lVar20 = lVar12 + uVar17 * 0x89880;
      fVar25 = *(float *)((longlong)&DAT_1a4db8540 + lVar20);
      fVar22 = *(float *)((longlong)&DAT_1a4db8540 + lVar7);
      fVar23 = *(float *)((longlong)&DAT_1a4db8540 + lVar7);
      *(float *)((longlong)&DAT_184386d30 + lVar12) =
           (*(float *)((longlong)&DAT_1a4db853c + lVar20) -
           *(float *)((longlong)&DAT_1a4db853c + lVar7)) * fVar26 +
           *(float *)((longlong)&DAT_1a4db853c + lVar7);
      fVar21 = *(float *)((longlong)&DAT_1a4db8544 + lVar20);
      fVar24 = *(float *)((longlong)&DAT_1a4db8544 + lVar7);
      *(float *)((longlong)&DAT_184386d34 + lVar12) = (fVar25 - fVar22) * fVar26 + fVar23;
      *(float *)((longlong)&DAT_184386d38 + lVar12) =
           (fVar21 - fVar24) * fVar26 + *(float *)((longlong)&DAT_1a4db8544 + lVar7);
      FUN_1400c2f90(&DAT_184386d3c + lVar18,(longlong)&DAT_1a4db8548 + uVar19 * 0x89880 + lVar18,
                    (longlong)&DAT_1a4db8548 + uVar17 * 0x89880 + lVar18);
    }
    lVar18 = lVar18 + 0x34;
    piVar11 = piVar11 + 0x6e0;
    lVar12 = lVar12 + 0x34;
    lVar13 = lVar13 + -1;
  } while (lVar13 != 0);
  lVar18 = uVar17 * 0x89880;
  lVar12 = uVar19 * 0x89880;
  DAT_183f7c58c =
       (*(float *)(&DAT_1a4dc553c + lVar18) - *(float *)(&DAT_1a4dc553c + lVar12)) * fVar26 +
       *(float *)(&DAT_1a4dc553c + lVar12);
  DAT_183f7c590 =
       (*(float *)(&DAT_1a4dc5540 + lVar18) - *(float *)(&DAT_1a4dc5540 + lVar12)) * fVar26 +
       *(float *)(&DAT_1a4dc5540 + lVar12);
  DAT_183f7c594 =
       (*(float *)(&DAT_1a4dc5544 + lVar18) - *(float *)(&DAT_1a4dc5544 + lVar12)) * fVar26 +
       *(float *)(&DAT_1a4dc5544 + lVar12);
  FUN_1400c2f90(&DAT_183f7c5a4,&DAT_1a4dc5554 + lVar12,&DAT_1a4dc5554 + lVar18);
  return;
}



===== FUN_1400212e0 @ 1400212e0 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400212e0(void)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  double dVar8;
  longlong lVar9;
  longlong lVar10;
  longlong lVar11;
  ulonglong uVar12;
  undefined4 *puVar13;
  int iVar14;
  float *pfVar15;
  int iVar16;
  undefined4 *puVar17;
  float *pfVar18;
  ulonglong uVar19;
  int *piVar20;
  undefined8 *puVar21;
  longlong lVar22;
  float *pfVar23;
  int iVar24;
  int *piVar25;
  uint uVar26;
  undefined8 uVar27;
  float fVar28;
  float fVar29;
  float fVar30;
  undefined4 uVar31;
  float fVar32;
  float fVar33;
  float fVar34;
  float fVar35;
  float fVar36;
  float fVar37;
  float fVar38;
  float fVar39;
  float fVar40;
  float fVar41;
  undefined1 auStack_178 [32];
  undefined4 *local_158;
  int local_148;
  int local_144;
  undefined8 local_138;
  float local_130;
  float local_128;
  int *local_120;
  longlong local_118;
  undefined4 *local_110;
  longlong local_108;
  longlong local_100;
  undefined1 local_f8 [8];
  undefined8 uStack_f0;
  undefined1 local_e8 [8];
  undefined8 uStack_e0;
  float local_d8;
  ulonglong local_d0;
  
  local_d0 = DAT_1403020a0 ^ (ulonglong)auStack_178;
  iVar24 = 0;
  piVar25 = &DAT_183ebbbc4;
  DAT_18417e1b4 = 0;
  piVar20 = &DAT_18329e308;
  DAT_1841fa224 = 0;
  puVar17 = &DAT_183ebbbc4;
  iVar14 = iVar24;
  do {
    if (*piVar20 != 0) {
      FUN_140022df0(iVar14,*puVar17);
    }
    fVar36 = DAT_140278224;
    fVar28 = DAT_1402781bc;
    fVar33 = DAT_1402781a4;
    fVar40 = DAT_140278178;
    iVar14 = iVar14 + 1;
    piVar20 = piVar20 + 0x1bfe;
    puVar17 = puVar17 + 1;
  } while (iVar14 < 0x100);
  puVar17 = (undefined4 *)&DAT_18430a654;
  pfVar15 = (float *)&DAT_18329e9fc;
  pfVar23 = (float *)&DAT_18430a668;
  iVar14 = iVar24;
  do {
    if (pfVar15[-0x1bd] != 0.0) {
      local_148 = DAT_183ebf174;
      local_144 = DAT_183ebf174;
      local_158 = (undefined4 *)local_f8;
      local_138 = 0;
      local_130 = 0.0;
      uStack_f0 = _UNK_140278d38;
      local_f8 = (undefined1  [8])_DAT_140278d30;
      local_d8 = 1.0;
      uStack_e0 = _UNK_140278d38;
      local_e8 = (undefined1  [8])_DAT_140278d30;
      FUN_140092140(*piVar25,&local_148,1,&local_138);
      *(float *)(&DAT_184182220 + (longlong)(int)(DAT_18417e1b4 - 1) * 0x78) =
           (float)(int)pfVar15[0x1a25] * fVar28 + fVar40;
      fVar41 = pfVar15[0x1a2a];
      (&DAT_1841821bc)[(longlong)(int)(DAT_18417e1b4 - 1) * 0x1e] =
           *(undefined4 *)(&DAT_16ad0be5c + (longlong)*piVar25 * 0xe30);
      *(float *)(&DAT_184182224 + (longlong)(int)(DAT_18417e1b4 - 1) * 0x78) =
           (float)(int)fVar41 * fVar28 + fVar40;
      if (0 < (int)pfVar15[0x1a2b]) {
        *(float *)(&DAT_184182228 + (longlong)(int)(DAT_18417e1b4 - 1) * 0x78) =
             (float)((int)pfVar15[0x1a2b] + -1) * fVar28 + fVar40;
      }
      uVar27 = 1;
      if (((((DAT_183f7c2f8 == 0) && (DAT_183f7c540 != -1)) &&
           ((&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] != -1)) &&
          ((DAT_16b165f6c == 0 && ((&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] == iVar14))))
         && ((0 < (int)pfVar15[-0x1ae] || (0 < DAT_183f79de8)))) {
        uVar27 = 3;
      }
      local_148 = DAT_183ebf17c;
      local_144 = DAT_183ebf17c;
      fVar30 = pfVar23[-2] * fVar36 + pfVar15[-2];
      fVar32 = pfVar23[-1] * fVar36 + pfVar15[-1];
      fVar35 = *pfVar23 * fVar36 + *pfVar15;
      local_138 = CONCAT44(fVar32,fVar30);
      local_158 = puVar17;
      local_130 = fVar35;
      FUN_140092140((&DAT_183ebc244)[(int)pfVar15[0x1a24] + (int)pfVar15[0x1a23] * 0x10],&local_148,
                    uVar27,&local_138);
      fVar41 = pfVar15[0x1a26];
      *(float *)(&DAT_184182220 + (longlong)(int)(DAT_18417e1b4 - 1) * 0x78) =
           (float)(int)pfVar15[0x1a25] * fVar28 + fVar40;
      fVar38 = pfVar15[0x1a28];
      *(float *)(&DAT_184182224 + (longlong)(int)(DAT_18417e1b4 - 1) * 0x78) =
           (float)(int)fVar41 * fVar28 + fVar40;
      fVar41 = pfVar15[0x1a23];
      *(float *)(&DAT_184182228 + (longlong)(int)(DAT_18417e1b4 - 1) * 0x78) =
           (float)(int)fVar38 * fVar28 + fVar40;
      local_158 = puVar17;
      FUN_140092140((&DAT_183ebc2c4)[(int)pfVar15[0x1a27] + (int)fVar41 * 0x10],&local_148,uVar27,
                    &local_138);
      fVar41 = pfVar15[0x1a26];
      *(float *)(&DAT_184182220 + (longlong)(int)(DAT_18417e1b4 - 1) * 0x78) =
           (float)(int)pfVar15[0x1a25] * fVar28 + fVar40;
      fVar38 = pfVar15[0x1a28];
      *(float *)(&DAT_184182224 + (longlong)(int)(DAT_18417e1b4 - 1) * 0x78) =
           (float)(int)fVar41 * fVar28 + fVar40;
      *(float *)(&DAT_184182228 + (longlong)(int)(DAT_18417e1b4 - 1) * 0x78) =
           (float)(int)fVar38 * fVar28 + fVar40;
      if (pfVar15[0x1a2c] != 0.0) {
        local_148 = DAT_183ebf0f4;
        local_144 = DAT_183ebf0f4;
        local_130 = fVar35 - pfVar15[-0x39] * fVar33;
        local_138 = CONCAT44(fVar32 - pfVar15[-0x3a] * fVar33,fVar30 - pfVar15[-0x3b] * fVar33);
        local_158 = puVar17;
        FUN_140092140(DAT_183ebc3cc,&local_148,uVar27,&local_138);
      }
    }
    fVar41 = DAT_140278478;
    iVar14 = iVar14 + 1;
    puVar17 = puVar17 + 0x158;
    piVar25 = piVar25 + 1;
    pfVar23 = pfVar23 + 0x158;
    pfVar15 = pfVar15 + 0x1bfe;
  } while (iVar14 < 0x100);
  if (0 < DAT_15fe95260) {
    puVar21 = &DAT_15fd16294;
    iVar14 = iVar24;
    do {
      iVar16 = *(int *)((longlong)puVar21 + -0x2c);
      if (((iVar16 == -1) || ((&DAT_18436052c)[(longlong)iVar16 * 0x4d] == 0)) ||
         (*(int *)(&DAT_15f2dc848 + (longlong)iVar16 * 0x5168) != iVar14)) {
        iVar16 = *(int *)((longlong)puVar21 + -0x34);
        local_d8 = *(float *)(puVar21 + 3);
        uStack_f0 = *puVar21;
        local_f8 = (undefined1  [8])puVar21[-1];
        local_148 = DAT_183ebf050;
        _local_e8 = *(undefined1 (*) [16])(puVar21 + 1);
        local_144 = DAT_183ebf050;
        local_158 = (undefined4 *)local_f8;
        fVar33 = *(float *)((longlong)puVar21 + -0x24) - *(float *)(puVar21 + 2) * fVar41;
        fVar36 = *(float *)(puVar21 + -4) - *(float *)((longlong)puVar21 + 0x14) * fVar41;
        fVar38 = *(float *)((longlong)puVar21 + -0x1c) - local_d8 * fVar41;
        local_138 = CONCAT44(fVar36,fVar33);
        local_130 = fVar38;
        FUN_140092140((&DAT_183ebb1c4)[iVar16],&local_148,1,&local_138);
        *(float *)(&DAT_184182220 + (longlong)(int)(DAT_18417e1b4 - 1) * 0x78) =
             (float)*(int *)((longlong)puVar21 + 0x5a4) * fVar28 + fVar40;
        local_148 = DAT_183ebf0f0;
        local_144 = DAT_183ebf0f0;
        if (0 < *(int *)(&DAT_192eb1ef8 + (longlong)*(int *)((longlong)puVar21 + -0x34) * 0x185c0))
        {
          pfVar15 = (float *)(&DAT_192eb1f20 + (longlong)iVar16 * 0x185c0);
          iVar16 = iVar24;
          do {
            fVar30 = pfVar15[-1];
            local_158 = (undefined4 *)local_f8;
            fVar32 = *pfVar15;
            fVar35 = pfVar15[1];
            local_138 = CONCAT44((float)local_f8._4_4_ * fVar30 + fVar36 +
                                 (float)local_e8._0_4_ * fVar32 + fVar35 * uStack_e0._4_4_,
                                 (float)local_f8._0_4_ * fVar30 + fVar33 + uStack_f0._4_4_ * fVar32
                                 + fVar35 * (float)uStack_e0);
            local_130 = (float)uStack_f0 * fVar30 + fVar38 + (float)local_e8._4_4_ * fVar32 +
                        fVar35 * local_d8;
            FUN_140092140((&DAT_183ebbac4)[(int)pfVar15[7]],&local_148,0,&local_138);
            iVar16 = iVar16 + 1;
            pfVar15 = pfVar15 + 0x14;
          } while (iVar16 < *(int *)(&DAT_192eb1ef8 +
                                    (longlong)*(int *)((longlong)puVar21 + -0x34) * 0x185c0));
        }
      }
      iVar14 = iVar14 + 1;
      puVar21 = (undefined8 *)((longlong)puVar21 + 0x5fc);
    } while (iVar14 < DAT_15fe95260);
  }
  pfVar15 = (float *)&DAT_184360550;
  local_120 = &DAT_15f2d9208;
  local_110 = &DAT_184360530;
  local_118 = 0x200;
  fVar36 = DAT_183f7c544;
  fVar28 = DAT_183f7c54c;
  fVar33 = DAT_183f7c548;
  do {
    piVar20 = local_120;
    uVar31 = DAT_140278654;
    uVar19 = 0;
    if (((local_120[-2] != 0) && (pfVar15[-9] != 0.0)) && (*local_120 != 3)) {
      fVar38 = pfVar15[-8];
      fVar30 = pfVar15[-7];
      fVar32 = pfVar15[-6];
      local_148 = DAT_183ebf050;
      local_144 = DAT_183ebf050;
      local_128 = (float)local_120[-1];
      lVar9 = (longlong)(int)local_128;
      local_158 = local_110 + 3;
      local_100 = lVar9;
      FUN_140092140((&DAT_183ebb0c4)[lVar9],&local_148,1,local_110);
      iVar14 = piVar20[1];
      *(float *)(&DAT_184182220 + (longlong)(int)(DAT_18417e1b4 - 1) * 0x78) =
           (float)piVar20[4] * DAT_1402781bc + fVar40;
      if (iVar14 < 1) {
        *(undefined4 *)(&DAT_184182220 + (longlong)(int)(DAT_18417e1b4 - 1) * 0x78) = 0x3ed00000;
      }
      if ((piVar20[-1] == 0x11) && (0 < piVar20[0x13af])) {
        lVar10 = (longlong)piVar20[0x13b0];
        local_138 = *(undefined8 *)(&DAT_1449816f8 + lVar10 * 0x2f);
        local_130 = (float)(&DAT_144981700)[lVar10 * 0x2f];
        _local_f8 = *(undefined1 (*) [16])(&DAT_14498171c + lVar10 * 0x2f);
        _local_e8 = *(undefined1 (*) [16])(&DAT_14498172c + lVar10 * 0x2f);
        local_d8 = (float)(&DAT_14498173c)[lVar10 * 0x2f];
        local_158 = (undefined4 *)local_f8;
        FUN_140092140(DAT_183ebb3d4,&local_148,1,&local_138);
      }
      fVar40 = DAT_140278ac8;
      lVar10 = lVar9 * 0x185c0;
      local_148 = DAT_183ebf0f0;
      local_144 = DAT_183ebf0f0;
      local_108 = lVar10;
      if (0 < *(int *)(&DAT_192eb1ef8 + lVar10)) {
        piVar25 = piVar20 + 0xe52;
        pfVar18 = (float *)(&DAT_192eb1f20 + lVar10);
        pfVar23 = pfVar15 + 5;
        uVar12 = uVar19;
        do {
          fVar41 = pfVar18[-1];
          fVar35 = pfVar18[1];
          _local_f8 = *(undefined1 (*) [16])(pfVar15 + -5);
          fVar39 = pfVar15[-1];
          local_d8 = pfVar15[3];
          fVar29 = pfVar23[1] + *pfVar18;
          local_e8._0_4_ = fVar39;
          uStack_e0._0_4_ = pfVar15[1];
          uStack_e0._4_4_ = pfVar15[2];
          local_e8._4_4_ = *pfVar15;
          local_130 = local_d8 * fVar35 + *pfVar15 * fVar29 + pfVar15[-3] * fVar41 + pfVar15[-6];
          local_138 = CONCAT44(fVar39 * fVar29 + pfVar15[2] * fVar35 +
                               pfVar15[-4] * fVar41 + pfVar15[-7],
                               pfVar15[1] * fVar35 + pfVar15[-2] * fVar29 +
                               *(float *)*(undefined1 (*) [16])(pfVar15 + -5) * fVar41 + pfVar15[-8]
                              );
          FUN_14012bd30(local_f8,local_f8 + 0xc,*pfVar23);
          FUN_14012bd30(local_f8,local_f8,pfVar23[-1]);
          local_158 = (undefined4 *)local_f8;
          FUN_140092140((&DAT_183ebbac4)[*piVar25],&local_148,
                        (fVar30 - fVar33) * (fVar30 - fVar33) +
                        (fVar38 - fVar36) * (fVar38 - fVar36) +
                        (fVar32 - fVar28) * (fVar32 - fVar28) < fVar40,&local_138);
          uVar26 = (int)uVar12 + 1;
          uVar12 = (ulonglong)uVar26;
          pfVar18 = pfVar18 + 0x14;
          pfVar23 = pfVar23 + 4;
          piVar25 = piVar25 + 0x2b;
          lVar9 = local_100;
          piVar20 = local_120;
          uVar31 = DAT_140278654;
          fVar41 = DAT_140278478;
        } while ((int)uVar26 < *(int *)(&DAT_192eb1ef8 + lVar10));
      }
      lVar10 = local_108;
      if (local_128 == 1.68156e-44) {
        local_f8 = (undefined1  [8])(local_f8._4_8_ << 0x20);
        local_e8._4_4_ = *pfVar15;
        local_e8._0_4_ = pfVar15[-1];
        uStack_f0._0_4_ = pfVar15[-3];
        uStack_f0._4_4_ = pfVar15[-2];
        local_f8 = (undefined1  [8])*(undefined8 *)(pfVar15 + -5);
        local_130 = *pfVar15 * fVar41 + pfVar15[-6];
        uStack_e0._0_4_ = pfVar15[1];
        local_d8 = pfVar15[3];
        uStack_e0._4_4_ = pfVar15[2];
        local_138 = CONCAT44(pfVar15[-1] * fVar41 + pfVar15[-7],pfVar15[-2] * fVar41 + pfVar15[-8]);
        FUN_14012bd30(local_f8,local_f8 + 0xc,piVar20[0xe60]);
        local_158 = (undefined4 *)local_f8;
        FUN_140092140(DAT_183ebc3dc,&local_148,1,&local_138);
        FUN_14012bd30(local_f8,local_f8 + 0xc,uVar31);
        local_158 = (undefined4 *)local_f8;
        FUN_140092140(DAT_183ebc3dc,&local_148,1,&local_138);
      }
      fVar28 = DAT_183f7c54c;
      fVar33 = DAT_183f7c548;
      fVar36 = DAT_183f7c544;
      if (*(int *)(&DAT_192e9a680 + lVar10) != 0) {
        lVar10 = (longlong)*(int *)(&DAT_1902b4c64 + lVar9 * 0x2c040);
        if (0 < lVar10) {
          piVar25 = piVar20 + 0x9fd;
          local_128 = DAT_183f7c544;
          iVar14 = DAT_1841fa224;
          do {
            fVar40 = local_128;
            lVar22 = 0;
            if ((*piVar25 == 0) && (iVar14 < 0x4000)) {
              fVar36 = 0.0;
              pfVar23 = (float *)(&DAT_1902b4c74 + lVar9 * 0x2c040 + uVar19);
              fVar41 = 0.0;
              fVar38 = 0.0;
              do {
                fVar30 = pfVar23[-2];
                fVar32 = pfVar23[-1];
                fVar35 = pfVar15[-4];
                fVar39 = pfVar15[-3];
                fVar29 = *pfVar23;
                fVar1 = pfVar23[3];
                fVar34 = pfVar15[2];
                fVar2 = pfVar15[3];
                fVar37 = fVar29 * pfVar15[1] + fVar30 * pfVar15[-5] +
                         fVar32 * pfVar15[-2] + pfVar15[-8];
                lVar11 = (longlong)iVar14 * 0x44 + lVar22;
                fVar3 = pfVar15[-1];
                fVar4 = *pfVar15;
                fVar5 = pfVar15[-7];
                fVar6 = pfVar23[1];
                fVar7 = pfVar15[-6];
                *(float *)((longlong)&DAT_1841fa228 + lVar11) = fVar37;
                fVar34 = fVar30 * fVar35 + fVar29 * fVar34 + fVar32 * fVar3 + fVar5;
                fVar39 = fVar29 * fVar2 + fVar30 * fVar39 + fVar32 * fVar4 + fVar7;
                fVar30 = pfVar23[2];
                pfVar23 = pfVar23 + 6;
                *(float *)((longlong)&DAT_1841fa22c + lVar11) = fVar34;
                *(float *)((longlong)&DAT_1841fa230 + lVar11) = fVar39;
                fVar35 = fVar6 * pfVar15[-5] + fVar1 * pfVar15[1] +
                         fVar30 * pfVar15[-2] + pfVar15[-8];
                fVar32 = fVar6 * pfVar15[-4] + fVar1 * pfVar15[2] +
                         fVar30 * pfVar15[-1] + pfVar15[-7];
                fVar36 = fVar37 + fVar36 + fVar35;
                lVar11 = (longlong)DAT_1841fa224 * 0x44 + lVar22;
                fVar30 = fVar1 * pfVar15[3] + fVar6 * pfVar15[-3] + fVar30 * *pfVar15 + pfVar15[-6];
                lVar22 = lVar22 + 0x18;
                fVar41 = fVar34 + fVar41 + fVar32;
                *(float *)((longlong)&DAT_1841fa234 + lVar11) = fVar35;
                *(float *)((longlong)&DAT_1841fa238 + lVar11) = fVar32;
                fVar38 = fVar39 + fVar38 + fVar30;
                *(float *)((longlong)&DAT_1841fa23c + lVar11) = fVar30;
                iVar14 = DAT_1841fa224;
              } while (lVar22 < 0x30);
              fVar30 = local_128 - fVar36 * DAT_140278280;
              fVar41 = fVar33 - fVar41 * DAT_140278280;
              fVar36 = fVar28 - fVar38 * DAT_140278280;
              (&DAT_1841fa264)[(longlong)DAT_1841fa224 * 0x11] =
                   SQRT(fVar41 * fVar41 + fVar30 * fVar30 + fVar36 * fVar36);
              lVar22 = (longlong)DAT_1841fa224;
              pfVar23 = (float *)(&DAT_1841fa258 + lVar22 * 0x11);
              fVar30 = (float)(&DAT_1841fa240)[lVar22 * 0x11] -
                       (float)(&DAT_1841fa228)[lVar22 * 0x11];
              fVar38 = (float)(&DAT_1841fa244)[lVar22 * 0x11] -
                       (float)(&DAT_1841fa22c)[lVar22 * 0x11];
              fVar35 = (float)(&DAT_1841fa234)[lVar22 * 0x11] -
                       (float)(&DAT_1841fa228)[lVar22 * 0x11];
              fVar32 = (float)(&DAT_1841fa238)[lVar22 * 0x11] -
                       (float)(&DAT_1841fa22c)[lVar22 * 0x11];
              fVar36 = (float)(&DAT_1841fa248)[lVar22 * 0x11] -
                       (float)(&DAT_1841fa230)[lVar22 * 0x11];
              fVar41 = (float)(&DAT_1841fa23c)[lVar22 * 0x11] -
                       (float)(&DAT_1841fa230)[lVar22 * 0x11];
              *pfVar23 = fVar38 * fVar41 - fVar36 * fVar32;
              (&DAT_1841fa25c)[lVar22 * 0x11] = fVar36 * fVar35 - fVar30 * fVar41;
              (&DAT_1841fa260)[lVar22 * 0x11] = fVar30 * fVar32 - fVar38 * fVar35;
              FUN_14007a240(pfVar23,pfVar23);
              lVar22 = (longlong)DAT_1841fa224;
              (&DAT_1841fa268)[lVar22 * 0x11] =
                   (uint)(0.0 <= (fVar33 - (float)(&DAT_1841fa22c)[lVar22 * 0x11]) *
                                 (float)(&DAT_1841fa25c)[lVar22 * 0x11] +
                                 (fVar40 - (float)(&DAT_1841fa228)[lVar22 * 0x11]) *
                                 (float)(&DAT_1841fa258)[lVar22 * 0x11] +
                                 (fVar28 - (float)(&DAT_1841fa230)[lVar22 * 0x11]) *
                                 (float)(&DAT_1841fa260)[lVar22 * 0x11]);
              iVar14 = DAT_1841fa224 + 1;
              fVar36 = fVar40;
              DAT_1841fa224 = iVar14;
            }
            piVar25 = piVar25 + 1;
            uVar19 = uVar19 + 0x34;
            lVar10 = lVar10 + -1;
            piVar20 = local_120;
          } while (lVar10 != 0);
        }
      }
    }
    uVar19 = 0;
    local_110 = local_110 + 0x4d;
    local_120 = piVar20 + 0x145a;
    pfVar15 = pfVar15 + 0x4d;
    local_118 = local_118 + -1;
    fVar41 = DAT_140278478;
    fVar40 = DAT_140278178;
  } while (local_118 != 0);
  iVar14 = 0;
  local_148 = DAT_183ebf118;
  local_144 = DAT_183ebf118;
  local_118 = 0;
  if (0 < DAT_1a8e379d4) {
    piVar20 = &DAT_1a8a879c0;
    do {
      local_158 = (undefined4 *)(&DAT_1a8a879f8 + (longlong)iVar14 * 0x5c);
      FUN_140092140((&DAT_183ebbfc4)[*piVar20],&local_148,0,&DAT_1a8a879d4 + (longlong)iVar14 * 0x17
                   );
      iVar14 = iVar14 + 1;
      piVar20 = piVar20 + 0x17;
    } while (iVar14 < DAT_1a8e379d4);
  }
  dVar8 = DAT_1402785a0;
  fVar40 = DAT_140278140;
  piVar20 = &DAT_182bbb1a8;
  puVar17 = &DAT_184386d30;
  pfVar15 = (float *)&DAT_184386d38;
  lVar9 = 0x400;
  iVar14 = DAT_183ebf178;
  fVar33 = DAT_14027810c;
  do {
    if (((piVar20[-10] != 0) &&
        (((iVar24 = *piVar20, iVar24 == -1 || ((&DAT_182bbb1a4)[(longlong)iVar24 * 0x6e0] == -1)) ||
         ((int)(&DAT_182bbb1ac)[(longlong)iVar24 * 0x6e0] < 3)))) &&
       ((piVar20[-1] == -1 || (piVar20[1] < 3)))) {
      uVar26 = piVar20[-5];
      uVar12 = (ulonglong)(int)uVar26;
      local_144 = DAT_183ebf114;
      if (uVar26 - 1 < 0xc) {
        local_144 = iVar14;
      }
      iVar24 = iVar14;
      if ((uVar26 != 0) && (iVar24 = DAT_183ebf118, uVar26 != 6)) {
        if ((uVar26 < 0x2e) && ((0x200800002000U >> (uVar12 & 0x3f) & 1) != 0)) {
          local_144 = (&DAT_183ebf580)[uVar12];
        }
        if (uVar26 == 0x12) {
          iVar24 = 0;
          local_f8 = (undefined1  [8])(local_f8._4_8_ << 0x20);
          uStack_f0._0_4_ = pfVar15[3];
          uStack_e0._0_4_ = pfVar15[7];
          local_d8 = pfVar15[9];
          uStack_f0._4_4_ = pfVar15[4];
          local_e8 = (undefined1  [8])*(undefined8 *)(pfVar15 + 5);
          local_f8 = (undefined1  [8])*(undefined8 *)(pfVar15 + 1);
          uStack_e0._4_4_ = pfVar15[8];
          fVar28 = (float)piVar20[0x9f];
          fVar36 = pfVar15[4] * fVar28 * fVar33 + pfVar15[-2];
          fVar41 = pfVar15[5] * fVar28 * fVar33 + pfVar15[-1];
          fVar28 = pfVar15[6] * fVar28 * fVar33 + *pfVar15;
          local_138 = CONCAT44(fVar41,fVar36);
          local_148 = local_144;
          local_130 = fVar28;
          if (-1 < piVar20[0x9f]) {
            do {
              local_158 = (undefined4 *)local_f8;
              local_148 = (&DAT_183ebf134)
                          [(uint)piVar20[0xa0] >> ((char)iVar24 * '\x03' & 0x3fU) & 7];
              local_144 = local_148;
              FUN_140092140((&DAT_183ebb6c4)[piVar20[-5]],&local_148,1,&local_138);
              fVar36 = fVar36 - uStack_f0._4_4_ * fVar40;
              fVar41 = fVar41 - (float)local_e8._0_4_ * fVar40;
              local_138 = CONCAT44(fVar41,fVar36);
              fVar28 = fVar28 - (float)local_e8._4_4_ * fVar40;
              local_130 = fVar28;
              local_128 = fVar28;
              if (piVar20[-1] != -1) {
                fVar33 = DAT_140278b60;
                if ((piVar20[1] != 0) && (fVar33 = DAT_140278178, piVar20[1] != 1)) {
                  fVar33 = 0.0;
                }
                FUN_14007b2a0(local_f8,local_f8 + 0xc,(float)((double)fVar33 * dVar8));
                if (iVar24 == piVar20[0x9e] + -1) {
                  FUN_14007b2a0(local_f8,local_f8 + 0xc,(float)((double)fVar33 * dVar8));
                  fVar36 = (float)local_f8._0_4_ * fVar33 + fVar36;
                  fVar41 = (float)local_f8._4_4_ * fVar33 + fVar41;
                  fVar28 = (float)uStack_f0 * fVar33 + local_128;
                  local_138 = CONCAT44(fVar41,fVar36);
                  local_130 = fVar28;
                }
              }
              iVar24 = iVar24 + 1;
              iVar14 = DAT_183ebf178;
              fVar33 = DAT_14027810c;
            } while (iVar24 <= piVar20[0x9f]);
          }
          goto LAB_140022858;
        }
        if ((uVar26 - 0x25 < 2) || (uVar26 == 0x2c)) {
          local_144 = DAT_183ebf10c;
        }
        if (uVar26 == 0x2b) {
          local_144 = DAT_183ebf10c;
          iVar24 = local_144;
        }
        else {
          if ((uVar26 - 0x27 < 2) &&
             (local_144 = DAT_183ebf57c, (&DAT_182a7d580)[(longlong)piVar20[0xc5] * 3] != 0)) {
            local_144 = (&DAT_183ebf180)[piVar20[0xc5]];
          }
          iVar24 = DAT_183ebf148;
          if (uVar26 != 0x11) {
            if (uVar26 - 0x13 < 6) {
              local_144 = DAT_183ebf0f4 + -0x13 + uVar26;
            }
            iVar24 = DAT_183ebc404;
            if ((uVar26 != 0xe) && (iVar24 = DAT_183ebf16c, uVar26 != 0x1e)) {
              if ((uVar26 - 0x19 & 0xfffffff7) == 0) {
                local_144 = DAT_183ebf10c;
              }
              iVar24 = DAT_183ebf110;
              if (uVar26 != 0x1a) {
                if (uVar26 == 0x1c) {
                  local_144 = DAT_183ebf0f4;
                  iVar24 = local_144;
                }
                else if (uVar26 == 0x1b) {
                  local_144 = DAT_183ebf0f4;
                  iVar24 = local_144;
                }
                else if (((uVar26 == 0x22) || (iVar24 = local_144, uVar26 == 0x1d)) &&
                        (iVar24 = DAT_183ebf168, (&DAT_182a7d580)[(longlong)piVar20[0xc5] * 3] != 0)
                        ) {
                  iVar24 = (&DAT_183ebf180)[piVar20[0xc5]];
                }
              }
            }
          }
        }
      }
      local_144 = iVar24;
      local_158 = puVar17 + 3;
      local_148 = local_144;
      FUN_140092140((&DAT_183ebb6c4)[uVar12],&local_148,1,puVar17);
      iVar14 = DAT_183ebf178;
      fVar33 = DAT_14027810c;
      if ((piVar20[-5] == 0x19) && (piVar20[0x94] == 1)) {
        *(undefined4 *)(&DAT_184182220 + (longlong)(int)(DAT_18417e1b4 - 1) * 0x78) = 0x3e600000;
        iVar14 = DAT_183ebf178;
        fVar33 = DAT_14027810c;
      }
    }
LAB_140022858:
    puVar17 = puVar17 + 0xd;
    pfVar15 = pfVar15 + 0xd;
    piVar20 = piVar20 + 0x6e0;
    lVar9 = lVar9 + -1;
    if (lVar9 == 0) {
      local_138 = CONCAT44(DAT_1402787b0,DAT_140278a28);
      uStack_f0 = _UNK_140278d38;
      local_f8 = (undefined1  [8])_DAT_140278d30;
      local_130 = DAT_140278a20;
      local_d8 = 1.0;
      _local_e8 = _local_f8;
      FUN_14007b2a0(local_f8,local_f8 + 0xc,DAT_1402784b0);
      local_148 = DAT_183ebf178;
      local_144 = DAT_183ebf178;
      local_128 = 0.0;
      if (0 < DAT_150f55020) {
        local_120 = &DAT_150f55024;
        do {
          local_118 = 0;
          piVar20 = local_120;
          do {
            if (-1 < (int)(&DAT_154167248)[(longlong)*piVar20 * 0x1b12 + local_118]) {
              lVar9 = (longlong)(int)(&DAT_154167248)[(longlong)*piVar20 * 0x1b12 + local_118] *
                      0x8c24;
              iVar14 = 0;
              local_110 = (undefined4 *)((ulonglong)local_110 & 0xffffffff00000000);
              if (0 < *(int *)(&DAT_151e48038 + lVar9)) {
                pfVar15 = (float *)(&DAT_151e48054 + lVar9);
                do {
                  iVar24 = 0;
                  lVar10 = (longlong)(int)pfVar15[-6] * 0xed0;
                  if (0 < *(int *)(&DAT_1812c20cc + lVar10)) {
                    uVar26 = 1;
                    puVar21 = (undefined8 *)(&DAT_1812c2128 + lVar10);
                    do {
                      if (((uint)pfVar15[-4] & uVar26) == 0) {
                        iVar14 = *(int *)(puVar21 + -3);
                        local_144 = (&DAT_183ebf580)[iVar14];
                        if ((iVar14 - 0x25U < 2) || (iVar14 == 0x2c)) {
                          local_144 = DAT_183ebf10c;
                        }
                        if (iVar14 == 0x2b) {
                          local_144 = DAT_183ebf10c;
                        }
                        else if (iVar14 - 0x27U < 2) {
                          local_144 = DAT_183ebf57c;
                        }
                        local_d8 = 1.0;
                        uStack_f0 = _UNK_140278d38;
                        local_f8 = (undefined1  [8])_DAT_140278d30;
                        uStack_e0 = _UNK_140278d38;
                        local_e8 = (undefined1  [8])_DAT_140278d30;
                        local_148 = local_144;
                        FUN_14007b2a0(local_f8,&DAT_1402f6188,
                                      (float)((double)(int)pfVar15[-3] * dVar8));
                        fVar40 = *(float *)((longlong)puVar21 + -0x14);
                        fVar33 = *(float *)(puVar21 + -2);
                        fVar28 = *(float *)((longlong)puVar21 + -0xc);
                        fVar41 = (float)uStack_f0 * fVar40;
                        fVar36 = (float)local_e8._4_4_ * fVar33;
                        local_138 = CONCAT44((float)local_f8._4_4_ * fVar40 + pfVar15[-1] +
                                             (float)local_e8._0_4_ * fVar33 +
                                             fVar28 * uStack_e0._4_4_,
                                             (float)local_f8._0_4_ * fVar40 + pfVar15[-2] +
                                             uStack_f0._4_4_ * fVar33 + fVar28 * (float)uStack_e0);
                        uStack_f0 = *puVar21;
                        local_f8 = (undefined1  [8])puVar21[-1];
                        _local_e8 = *(undefined1 (*) [16])(puVar21 + 1);
                        local_130 = fVar41 + *pfVar15 + fVar36 + fVar28 * local_d8;
                        local_d8 = *(float *)(puVar21 + 3);
                        FUN_14007b2a0(local_f8,&DAT_1402f6188,
                                      (float)((double)(int)pfVar15[-3] * dVar8));
                        local_158 = (undefined4 *)local_f8;
                        FUN_140092140((&DAT_183ebb6c4)[*(int *)(puVar21 + -3)],&local_148,1,
                                      &local_138);
                      }
                      iVar24 = iVar24 + 1;
                      uVar26 = uVar26 << 1 | (uint)((int)uVar26 < 0);
                      puVar21 = (undefined8 *)((longlong)puVar21 + 0x74);
                    } while (iVar24 < *(int *)(&DAT_1812c20cc + lVar10));
                    iVar14 = (int)local_110;
                  }
                  iVar14 = iVar14 + 1;
                  pfVar15 = pfVar15 + 7;
                  local_110 = (undefined4 *)CONCAT44(local_110._4_4_,iVar14);
                } while (iVar14 < *(int *)(&DAT_151e48038 + lVar9));
              }
              iVar14 = 0;
              piVar20 = local_120;
              if (0 < *(int *)(&DAT_151e46234 + lVar9)) {
                piVar25 = (int *)(&DAT_151e46240 + lVar9);
                do {
                  local_144 = DAT_183ebf0f4;
                  if (piVar25[-2] == 1) {
                    local_144 = (int)DAT_183ebf074;
                    iVar24 = DAT_183ebf074._4_4_;
                    if (((&DAT_175fd14b4)[(longlong)piVar25[-1] * 0x22 + (longlong)*piVar25] == 1)
                       || (iVar24 = (int)DAT_183ebf07c,
                          (&DAT_175fd14b4)[(longlong)piVar25[-1] * 0x22 + (longlong)*piVar25] == 2))
                    {
                      local_144 = iVar24;
                    }
                  }
                  lVar10 = (longlong)iVar14 * 0x3c + lVar9;
                  local_158 = (undefined4 *)(&DAT_151e46250 + lVar10);
                  local_148 = local_144;
                  FUN_140092140((&DAT_183ebc0c4)[piVar25[-2]],&local_148,1,&DAT_151e46244 + lVar10);
                  if (piVar25[-2] == 1) {
                    iVar24 = (&DAT_175fd147c)
                             [(ulonglong)(*piVar25 + 1U & 3) + (longlong)piVar25[-1] * 0x22];
                    if (iVar24 == -1) {
                      iVar24 = (&DAT_175fd147c)
                               [(ulonglong)(*piVar25 - 1U & 3) + (longlong)piVar25[-1] * 0x22];
                    }
                    iVar16 = 0;
                    if (iVar24 != -1) {
                      iVar16 = iVar24;
                    }
                    uVar12 = (ulonglong)*(uint *)(&DAT_175ff3488 + (longlong)iVar16 * 0x630);
                    if (0x10 < *(uint *)(&DAT_175ff3488 + (longlong)iVar16 * 0x630)) {
                      uVar12 = uVar19;
                    }
                    local_148 = (&DAT_183ebf988)[uVar12];
                    local_158 = (undefined4 *)(&DAT_151e46250 + lVar10);
                    local_144 = local_148;
                    FUN_140092140(DAT_183ebc0d4,&local_148,1,&DAT_151e46244 + lVar10);
                  }
                  iVar14 = iVar14 + 1;
                  piVar25 = piVar25 + 0xf;
                  piVar20 = local_120;
                } while (iVar14 < *(int *)(&DAT_151e46234 + lVar9));
              }
            }
            local_118 = local_118 + 1;
          } while (local_118 < 4);
          local_120 = piVar20 + 1;
          local_128 = (float)((int)local_128 + 1);
        } while ((int)local_128 < DAT_150f55020);
      }
      uVar26 = DAT_18417e1b4;
      if (0 < (int)DAT_18417e1b4) {
        puVar13 = &DAT_1a87c6ba4;
        uVar12 = (ulonglong)DAT_18417e1b4;
        puVar17 = &DAT_1841821c8;
        do {
          uVar31 = *puVar17;
          puVar17 = puVar17 + 0x1e;
          *puVar13 = uVar31;
          puVar13 = puVar13 + 1;
          uVar12 = uVar12 - 1;
        } while (uVar12 != 0);
      }
      DAT_1a85c6ba0 = uVar26;
      FUN_14007d710();
      uVar12 = uVar19;
      if (0 < (int)uVar26) {
        do {
          uVar26 = (int)uVar12 + 1;
          *(undefined4 *)((longlong)&DAT_18417e1b8 + uVar19) =
               *(undefined4 *)((longlong)&DAT_1a85c6ba4 + uVar19);
          uVar19 = uVar19 + 4;
          uVar12 = (ulonglong)uVar26;
        } while ((int)uVar26 < (int)DAT_18417e1b4);
      }
      return;
    }
  } while( true );
}



===== FUN_1400c5360 @ 1400c5360 root=true =====

void FUN_1400c5360(int param_1)

{
  int iVar1;
  char cVar2;
  longlong lVar3;
  char *pcVar4;
  undefined *puVar5;
  char cVar6;
  int iVar7;
  longlong lVar8;
  int iVar9;
  int *piVar10;
  
  lVar3 = (longlong)param_1 * 0x1b80;
  iVar7 = 0;
  piVar10 = (int *)(&DAT_182bbcae8 + lVar3);
  iVar9 = 0;
  pcVar4 = &DAT_182bbb935 + lVar3;
  do {
    iVar1 = *piVar10;
    pcVar4[-1] = (char)iVar9 + 'A';
    cVar2 = '\f';
    if (*(int *)(&DAT_182bbcbe8 + lVar3) != iVar9) {
      cVar2 = '\x0f';
    }
    pcVar4[0x7ff] = cVar2;
    pcVar4[0x800] = -0x71;
    cVar2 = (char)(iVar1 / 10);
    if (iVar1 < 10) {
      cVar6 = ' ';
    }
    else {
      cVar6 = cVar2 + '0';
    }
    *pcVar4 = cVar6;
    iVar9 = iVar9 + 1;
    pcVar4[1] = (char)iVar1 + cVar2 * -10 + '0';
    piVar10 = piVar10 + 1;
    pcVar4[0x801] = -0x71;
    pcVar4[2] = ' ';
    pcVar4 = pcVar4 + 4;
  } while (iVar9 < 0xf);
  lVar8 = (longlong)param_1 * 0x1b80;
  (&DAT_182bbb970)[lVar8] = 0;
  FUN_140050f90(param_1,0x11);
  pcVar4 = &DAT_182bbb974 + lVar8;
  puVar5 = &DAT_182bbb976 + lVar8;
  piVar10 = (int *)(&DAT_182bbcb68 + lVar8);
  lVar3 = 0xf;
  do {
    if (*piVar10 == -1) {
      cVar2 = ' ';
    }
    else {
      cVar2 = (char)*piVar10 + 'A';
    }
    *pcVar4 = cVar2;
    piVar10 = piVar10 + 1;
    *(undefined2 *)(puVar5 + -1) = 0x2020;
    pcVar4 = pcVar4 + 4;
    puVar5[1] = 0x20;
    puVar5 = puVar5 + 4;
    lVar3 = lVar3 + -1;
  } while (lVar3 != 0);
  (&DAT_182bbb9b0)[lVar8] = 0;
  FUN_140050f90(param_1,0x12);
  FUN_140050f90(param_1,0x13);
  pcVar4 = &DAT_182bbb9f5 + lVar8;
  piVar10 = (int *)(&DAT_182bbcb24 + lVar8);
  puVar5 = &DAT_182bbc1f6 + lVar8;
  do {
    iVar9 = *piVar10;
    puVar5[-0x802] = (char)iVar7 + 'P';
    lVar3 = 0xc;
    if (*(int *)(&DAT_182bbcbe8 + lVar8) != iVar7 + 0xf) {
      lVar3 = 0xf;
    }
    puVar5[-2] = (char)lVar3;
    cVar2 = (char)(iVar9 / 10);
    if (iVar9 < 10) {
      pcVar4[0x800] = -0x71;
      cVar6 = ' ';
    }
    else {
      puVar5[-1] = 0x8f;
      cVar6 = cVar2 + '0';
    }
    *pcVar4 = cVar6;
    iVar7 = iVar7 + 1;
    pcVar4[1] = (char)iVar9 + cVar2 * -10 + '0';
    piVar10 = piVar10 + 1;
    *puVar5 = 0x8f;
    puVar5 = puVar5 + 4;
    pcVar4[2] = ' ';
    pcVar4 = pcVar4 + 4;
  } while (iVar7 < 0xb);
  (&DAT_182bbba20)[lVar8] = 0;
  FUN_140050f90(param_1,0x14);
  lVar3 = 0xb;
  pcVar4 = &DAT_182bbba34 + lVar8;
  puVar5 = &DAT_182bbba36 + lVar8;
  piVar10 = (int *)(&DAT_182bbcba4 + lVar8);
  do {
    if (*piVar10 == -1) {
      cVar2 = ' ';
    }
    else {
      cVar2 = (char)*piVar10 + 'A';
    }
    *pcVar4 = cVar2;
    piVar10 = piVar10 + 1;
    *(undefined2 *)(puVar5 + -1) = 0x2020;
    pcVar4 = pcVar4 + 4;
    puVar5[1] = 0x20;
    puVar5 = puVar5 + 4;
    lVar3 = lVar3 + -1;
  } while (lVar3 != 0);
  (&DAT_182bbba60)[lVar8] = 0;
  FUN_140050f90(param_1,0x15);
  return;
}



===== FUN_1401253c0 @ 1401253c0 root=true =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1401253c0(void)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  int iVar5;
  float *pfVar6;
  int iVar7;
  longlong lVar8;
  longlong lVar9;
  longlong lVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float local_98;
  float local_94;
  float local_90;
  
  (*DAT_144980d58)(0);
  (*DAT_140404050)(0xde1,DAT_1abd4ac94);
  (*DAT_144980d80)(0x302,1);
  fVar4 = DAT_140278644;
  fVar3 = DAT_140278478;
  fVar2 = DAT_140278224;
  fVar1 = DAT_140278148;
  pfVar6 = (float *)&DAT_182bbb244;
  lVar10 = 0x400;
  DAT_1ad299450 = _DAT_140279300;
  DAT_1ad299454 = _UNK_140279304;
  DAT_1ad299458 = _UNK_140279308;
  DAT_1ad29945c = _UNK_14027930c;
  DAT_1ad059440 = 0;
  DAT_1ad059448 = 0;
  DAT_1ad05944c = 9;
  iVar5 = DAT_1665c4a18;
  do {
    if ((pfVar6[-0x31] != 0.0) && (0 < (int)pfVar6[0x25])) {
      iVar7 = 0;
      fVar15 = (float)(int)pfVar6[0x25] * fVar1 + fVar2;
      if (0 < iVar5) {
        lVar9 = 0;
        do {
          lVar8 = 3;
          do {
            iVar5 = *(int *)(DAT_1665c4a20 + lVar9) * 3;
            fVar14 = fVar15 * *(float *)(DAT_1665c4a10 + (longlong)iVar5 * 4);
            fVar13 = fVar15 * *(float *)(DAT_1665c4a10 + 4 + (longlong)iVar5 * 4);
            fVar11 = fVar3;
            if (*(int *)(DAT_1665c4a20 + lVar9) != 1) {
              fVar11 = fVar4;
            }
            fVar11 = fVar15 * *(float *)(DAT_1665c4a10 + (longlong)(iVar5 + 2) * 4) * fVar11;
            fVar12 = *(float *)(&DAT_182a7e1f8 + (longlong)(int)pfVar6[-0x2c] * 0x13d0) - fVar15;
            local_98 = pfVar6[-2] * fVar11 +
                       fVar14 * pfVar6[-8] + pfVar6[-0x1a] + fVar13 * pfVar6[-5] +
                       pfVar6[-2] * fVar12;
            local_94 = pfVar6[-1] * fVar11 +
                       fVar14 * pfVar6[-7] + pfVar6[-0x19] + fVar13 * pfVar6[-4] +
                       pfVar6[-1] * fVar12;
            local_90 = *pfVar6 * fVar11 + fVar14 * pfVar6[-6] + pfVar6[-0x18] + fVar13 * pfVar6[-3]
                       + *pfVar6 * fVar12;
            FUN_14007d520(&local_98);
            lVar9 = lVar9 + 4;
            lVar8 = lVar8 + -1;
          } while (lVar8 != 0);
          iVar7 = iVar7 + 1;
          iVar5 = DAT_1665c4a18;
        } while (iVar7 < DAT_1665c4a18);
      }
    }
    pfVar6 = pfVar6 + 0x6e0;
    lVar10 = lVar10 + -1;
  } while (lVar10 != 0);
  FUN_14006e0d0();
  (*DAT_144980d80)(0x302);
                    /* WARNING: Could not recover jumptable at 0x000140125666. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*DAT_144980d58)(1);
  return;
}



===== FUN_1400f5480 @ 1400f5480 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1400f5480(void)

{
  int iVar1;
  int *piVar2;
  float *pfVar3;
  uint uVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  uint *puVar9;
  float *pfVar10;
  longlong lVar11;
  float fVar12;
  ulonglong uVar13;
  undefined1 auStack_88 [32];
  uint local_68 [8];
  int local_48 [8];
  ulonglong local_28;
  
  local_28 = DAT_1403020a0 ^ (ulonglong)auStack_88;
  uVar8 = 0;
  puVar9 = local_68;
  uVar6 = uVar8;
  do {
    *puVar9 = 0;
    piVar2 = &DAT_151623978;
    uVar7 = uVar8;
    do {
      if (((piVar2[-0xb46] != 0) && (*piVar2 == 0)) && (piVar2[-0xb25] == (int)uVar6)) {
        uVar4 = (int)uVar7 + 1;
        uVar7 = (ulonglong)uVar4;
        *puVar9 = uVar4;
      }
      piVar2 = piVar2 + 0xe0d;
    } while ((longlong)piVar2 < 0x1519a6d78);
    uVar4 = (int)uVar6 + 1;
    uVar6 = (ulonglong)uVar4;
    puVar9 = puVar9 + 1;
  } while ((int)uVar4 < 2);
  if (((DAT_183f7a608 == 0) || (local_68[0] == 0)) || (local_68[1] == 0)) {
    local_48[0] = 2;
  }
  else {
    if ((int)local_68[0] < (int)local_68[1]) {
      local_48[0] = 2;
      local_48[1] = (int)(local_68[1] * 2) / (int)local_68[0];
      goto LAB_1400f5558;
    }
    local_48[0] = (int)(local_68[0] * 2) / (int)local_68[1];
  }
  local_48[1] = 2;
LAB_1400f5558:
  puVar9 = local_68;
  uVar6 = uVar8;
  do {
    *puVar9 = 0;
    piVar2 = &DAT_151623978;
    uVar7 = uVar8;
    do {
      if (((piVar2[-0xb46] != 0) && (*piVar2 == 0)) &&
         ((piVar2[-0xb25] == (int)uVar6 && (piVar2[-0xb1f] != -1)))) {
        uVar4 = (int)uVar7 + 1;
        uVar7 = (ulonglong)uVar4;
        *puVar9 = uVar4;
      }
      piVar2 = piVar2 + 0xe0d;
    } while ((longlong)piVar2 < 0x1519a6d78);
    uVar4 = (int)uVar6 + 1;
    uVar6 = (ulonglong)uVar4;
    puVar9 = puVar9 + 1;
  } while ((int)uVar4 < 2);
  pfVar10 = (float *)&DAT_183ebfd78;
  uVar6 = uVar8;
  uVar7 = uVar8;
  do {
    fVar12 = 0.0;
    if (0 < *(int *)((longlong)local_68 + uVar7)) {
      pfVar3 = (float *)&DAT_182bbb1e4;
      uVar5 = uVar6 ^ 1;
      uVar13 = uVar8;
      do {
        if (((pfVar3[-0x19] != 0.0) && (pfVar3[-0x14] == 2.38221e-44)) &&
           (((*pfVar10 <= pfVar3[-2] &&
             ((((pfVar3[-2] < pfVar10[3] && (pfVar10[1] <= pfVar3[-1])) && (pfVar3[-1] < pfVar10[4])
               ) && ((pfVar10[2] <= *pfVar3 && (*pfVar3 < pfVar10[5])))))) || (local_68[uVar5] == 0)
            ))) {
          uVar13 = (ulonglong)((int)uVar13 + 0xfa);
        }
        if (((pfVar3[0x6c7] != 0.0) && (pfVar3[0x6cc] == 2.38221e-44)) &&
           ((((*pfVar10 <= pfVar3[0x6de] &&
              (((pfVar3[0x6de] < pfVar10[3] && (pfVar10[1] <= pfVar3[0x6df])) &&
               (pfVar3[0x6df] < pfVar10[4])))) &&
             ((pfVar10[2] <= pfVar3[0x6e0] && (pfVar3[0x6e0] < pfVar10[5])))) ||
            (local_68[uVar5] == 0)))) {
          uVar13 = (ulonglong)((int)uVar13 + 0xfa);
        }
        if (((pfVar3[0xda7] != 0.0) && (pfVar3[0xdac] == 2.38221e-44)) &&
           ((((*pfVar10 <= pfVar3[0xdbe] &&
              (((pfVar3[0xdbe] < pfVar10[3] && (pfVar10[1] <= pfVar3[0xdbf])) &&
               (pfVar3[0xdbf] < pfVar10[4])))) &&
             ((pfVar10[2] <= pfVar3[0xdc0] && (pfVar3[0xdc0] < pfVar10[5])))) ||
            (local_68[uVar5] == 0)))) {
          uVar13 = (ulonglong)((int)uVar13 + 0xfa);
        }
        if (((pfVar3[0x1487] != 0.0) && (pfVar3[0x148c] == 2.38221e-44)) &&
           (((*pfVar10 <= pfVar3[0x149e] &&
             ((((pfVar3[0x149e] < pfVar10[3] && (pfVar10[1] <= pfVar3[0x149f])) &&
               (pfVar3[0x149f] < pfVar10[4])) &&
              ((pfVar10[2] <= pfVar3[0x14a0] && (pfVar3[0x14a0] < pfVar10[5])))))) ||
            (local_68[uVar5] == 0)))) {
          uVar13 = (ulonglong)((int)uVar13 + 0xfa);
        }
        fVar12 = (float)uVar13;
        pfVar3 = pfVar3 + 0x1b80;
      } while ((longlong)pfVar3 < 0x18329b1e4);
    }
    piVar2 = &DAT_151620cac;
    lVar11 = 0x100;
    do {
      if ((piVar2[-0x13] != 0) && (piVar2[0xe] == (int)uVar6)) {
        iVar1 = (int)fVar12 / *(int *)((longlong)local_48 + uVar7);
        *piVar2 = *piVar2 + iVar1 + 0xfa;
        if (piVar2[-4] != -1) {
          (&DAT_160361384)[(longlong)piVar2[-4] * 0x1c] =
               (&DAT_160361384)[(longlong)piVar2[-4] * 0x1c] + iVar1;
        }
      }
      piVar2 = piVar2 + 0xe0d;
      lVar11 = lVar11 + -1;
    } while (lVar11 != 0);
    pfVar10[0xe] = fVar12;
    uVar4 = (int)uVar6 + 1;
    uVar6 = (ulonglong)uVar4;
    *(int *)((longlong)&DAT_183f7ae14 + uVar7) =
         *(int *)((longlong)&DAT_183f7ae14 + uVar7) + (int)fVar12;
    pfVar10 = pfVar10 + 0x16f1;
    uVar7 = uVar7 + 4;
  } while ((int)uVar4 < 2);
  piVar2 = &DAT_151620c60;
  do {
    if (*piVar2 != 0) {
      FUN_140051f50(uVar8);
    }
    uVar4 = (int)uVar8 + 1;
    uVar8 = (ulonglong)uVar4;
    piVar2 = piVar2 + 0xe0d;
  } while ((int)uVar4 < 0x100);
  return;
}



===== FUN_1400b94b0 @ 1400b94b0 root=true =====

int FUN_1400b94b0(int param_1,int param_2)

{
  longlong lVar1;
  longlong lVar2;
  int *piVar3;
  undefined4 *puVar4;
  int iVar5;
  int iVar6;
  float fVar7;
  float fVar8;
  float local_38;
  float local_34;
  float local_30;
  
  piVar3 = &DAT_182bbb194;
  lVar1 = (longlong)param_1;
  puVar4 = &DAT_182bbb1dc;
  lVar2 = lVar1 * 0x6ff8;
  iVar6 = -1;
  iVar5 = 0;
  local_38 = (float)(&DAT_18329e8d4)[lVar1 * 0x1bfe] -
             *(float *)(&DAT_18329e91c + lVar2) * DAT_140278478;
  local_34 = (float)(&DAT_18329e8d8)[lVar1 * 0x1bfe] -
             *(float *)(&DAT_18329e920 + lVar2) * DAT_140278478;
  local_30 = (float)(&DAT_18329e8dc)[lVar1 * 0x1bfe] -
             *(float *)(&DAT_18329e924 + lVar2) * DAT_140278478;
  fVar8 = DAT_140278338;
  do {
    if ((piVar3[-5] != 0) && (((param_2 == -1 || (*piVar3 == param_2)) && (piVar3[4] == -1)))) {
      fVar7 = (float)FUN_14007aba0(&DAT_18329e8d4 + lVar1 * 0x1bfe,&local_38,puVar4);
      if (fVar7 < fVar8) {
        fVar8 = fVar7;
        iVar6 = iVar5;
      }
    }
    iVar5 = iVar5 + 1;
    puVar4 = puVar4 + 0x6e0;
    piVar3 = piVar3 + 0x6e0;
  } while (iVar5 < 0x400);
  return iVar6;
}



===== FUN_1400c5610 @ 1400c5610 root=true =====

void FUN_1400c5610(int param_1,int param_2,longlong param_3,int param_4)

{
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  ulonglong uVar6;
  uint uVar7;
  ulonglong uVar8;
  
  uVar6 = 0;
  lVar4 = (longlong)param_2;
  lVar3 = (longlong)param_1;
  uVar8 = uVar6;
  do {
    uVar7 = (uint)uVar8;
    cVar1 = *(char *)(uVar6 + param_3);
    lVar2 = (longlong)cVar1;
    if (cVar1 == '\0') break;
    if (param_4 == 0) {
      if ((byte)(cVar1 + 0xbfU) < 0x1a) {
        if (*(int *)(&DAT_182bbcb68 +
                    ((longlong)*(int *)(&DAT_182bbc8e4 + (lVar2 + lVar3 * 0x6e0) * 4) +
                    lVar3 * 0x6e0) * 4) == -1) {
          cVar1 = ' ';
        }
        else {
          cVar1 = (char)*(int *)(&DAT_182bbcb68 +
                                ((longlong)*(int *)(&DAT_182bbc8e4 + (lVar2 + lVar3 * 0x6e0) * 4) +
                                lVar3 * 0x6e0) * 4) + 'A';
        }
      }
      (&DAT_182bbb4f4)[(lVar3 * 0x6e + lVar4) * 0x40 + uVar6] = cVar1;
    }
    else {
      lVar5 = (lVar3 * 0x6e + lVar4) * 0x40 + uVar6;
      if ((byte)(cVar1 + 0xbfU) < 0x1a) {
        cVar1 = (&DAT_182bbc8e4)[(lVar2 + lVar3 * 0x6e0) * 4];
        (&DAT_182bbbcf4)[lVar5] = 0xf;
        (&DAT_182bbb4f4)[lVar5] = cVar1 + 'A';
        if (*(int *)(&DAT_182bbcbe8 + lVar3 * 0x1b80) ==
            *(int *)(&DAT_182bbc8e4 + (lVar3 * 0x6e0 + lVar2) * 4)) {
          (&DAT_182bbbcf4)[lVar5] = 0xc;
        }
      }
      else {
        (&DAT_182bbb4f4)[lVar5] = cVar1;
      }
    }
    uVar7 = uVar7 + 1;
    uVar8 = (ulonglong)uVar7;
    uVar6 = uVar6 + 1;
  } while ((longlong)uVar6 < 0x3e);
  (&DAT_182bbb4f4)[(lVar3 * 0x6e + lVar4) * 0x40 + (longlong)(int)uVar7] = 0;
  return;
}



===== FUN_1400cf610 @ 1400cf610 root=true =====

void FUN_1400cf610(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  
  iVar3 = 0;
  piVar2 = &DAT_182bbb19c;
  do {
    if (piVar2[-7] != 0) {
      iVar1 = *piVar2;
      if (iVar1 < 0xffff) {
        iVar1 = iVar1 + -1;
        *piVar2 = iVar1;
      }
      if (iVar1 < 1) {
        FUN_14007f970(iVar3);
      }
    }
    iVar3 = iVar3 + 1;
    piVar2 = piVar2 + 0x6e0;
  } while (iVar3 < 0x400);
  return;
}



===== FUN_1400c5750 @ 1400c5750 root=true =====

void FUN_1400c5750(int param_1)

{
  longlong lVar1;
  char cVar2;
  char cVar3;
  longlong lVar4;
  int iVar5;
  undefined *puVar6;
  longlong lVar7;
  longlong lVar8;
  
  lVar8 = (longlong)param_1;
  puVar6 = &DAT_182bbc7e0 + lVar8 * 0x1b80;
  iVar5 = 3;
  lVar4 = lVar8 * 0x1b80 + 0x80;
  do {
    lVar7 = 0;
    do {
      cVar3 = puVar6[lVar7];
      if (cVar3 == '\0') break;
      lVar1 = lVar4 + lVar7;
      if ((byte)(cVar3 + 0xbfU) < 0x1a) {
        cVar2 = (&DAT_182bbc8e4)[(lVar8 * 0x6e0 + (longlong)cVar3) * 4];
        (&DAT_182bbbcf4)[lVar1] = 0xf;
        (&DAT_182bbb4f4)[lVar1] = cVar2 + 'A';
        if (*(int *)(&DAT_182bbcbe8 + lVar8 * 0x1b80) ==
            *(int *)(&DAT_182bbc8e4 + (lVar8 * 0x6e0 + (longlong)cVar3) * 4)) {
          (&DAT_182bbbcf4)[lVar1] = 0xc;
        }
      }
      else {
        (&DAT_182bbb4f4)[lVar1] = cVar3;
      }
      lVar7 = lVar7 + 1;
    } while (lVar7 < 0x3e);
    (&DAT_182bbb4f4)[lVar7 + lVar4] = 0;
    FUN_140050f90(param_1,iVar5 + -1);
    lVar7 = 0;
    do {
      cVar3 = puVar6[lVar7];
      if (cVar3 == '\0') break;
      if ((byte)(cVar3 + 0xbfU) < 0x1a) {
        if (*(int *)(&DAT_182bbcb68 +
                    ((longlong)*(int *)(&DAT_182bbc8e4 + (lVar8 * 0x6e0 + (longlong)cVar3) * 4) +
                    lVar8 * 0x6e0) * 4) == -1) {
          cVar3 = ' ';
        }
        else {
          cVar3 = (char)*(int *)(&DAT_182bbcb68 +
                                ((longlong)
                                 *(int *)(&DAT_182bbc8e4 + (lVar8 * 0x6e0 + (longlong)cVar3) * 4) +
                                lVar8 * 0x6e0) * 4) + 'A';
        }
      }
      lVar1 = lVar4 + lVar7;
      lVar7 = lVar7 + 1;
      (&DAT_182bbb534)[lVar1] = cVar3;
    } while (lVar7 < 0x3e);
    (&DAT_182bbb534)[lVar4 + lVar7] = 0;
    FUN_140050f90(param_1,iVar5);
    iVar5 = iVar5 + 3;
    puVar6 = puVar6 + 0x40;
    lVar4 = lVar4 + 0xc0;
    if (0x11 < iVar5) {
      FUN_1400c5360(param_1);
      return;
    }
  } while( true );
}



===== FUN_140042930 @ 140042930 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140042930(void)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  longlong lVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  longlong lVar11;
  undefined4 *puVar12;
  int *piVar13;
  uint uVar14;
  longlong lVar15;
  ulonglong uVar16;
  uint uVar17;
  longlong lVar18;
  uint uVar19;
  ulonglong uVar20;
  int iVar21;
  int *piVar22;
  int iVar23;
  ulonglong uVar24;
  longlong lVar25;
  uint uVar26;
  ulonglong uVar27;
  uint uVar28;
  uint *puVar29;
  undefined1 auStack_c8 [32];
  char local_a8;
  uint local_a4;
  uint local_a0;
  uint local_9c;
  uint local_98;
  uint local_94;
  uint local_90;
  uint local_8c;
  uint local_88;
  longlong local_80;
  uint local_78;
  uint local_74;
  uint local_70;
  uint local_6c;
  longlong local_68;
  longlong local_60;
  longlong local_58;
  uint *local_50;
  undefined4 *local_48;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  ulonglong local_30;
  
  local_30 = DAT_1403020a0 ^ (ulonglong)auStack_c8;
  DAT_1a4d2dd08 = DAT_1a4d2dd08 + 1;
  if (DAT_1a4d2dd08 < 0x708) {
    uVar7 = FUN_14011c760();
    if (0 < (int)uVar7) {
      uVar20 = 0;
      uVar26 = uVar7;
      uVar28 = uVar7;
      local_a4 = uVar7;
      local_9c = uVar7;
      local_98 = uVar7;
      local_94 = uVar7;
      local_90 = uVar7;
      local_8c = uVar7;
      local_88 = uVar7;
      local_78 = uVar7;
      local_74 = uVar7;
      local_70 = uVar7;
      local_6c = uVar7;
      do {
        uVar14 = local_90;
        uVar17 = local_98;
        uVar19 = 0;
        if ((DAT_1853ad41c < 0x10000) && (DAT_1853ad41c + 1 <= DAT_1853ad418)) {
          iVar10 = DAT_1853ad41c;
          if (0 < (int)DAT_1853ad420) {
            DAT_1853ad420 = 0;
            iVar10 = DAT_1853ad41c + 1;
          }
          DAT_1853ad41c = iVar10 + 1;
          local_a8 = (&DAT_1853ad424)[iVar10];
        }
        if (local_a8 == '\x06') {
          DAT_1a4d2dd08 = 0;
          if ((DAT_1853ad41c < 0x10000) && (DAT_1853ad41c + 4 <= DAT_1853ad418)) {
            if (0 < (int)DAT_1853ad420) {
              DAT_1853ad41c = DAT_1853ad41c + 1;
              DAT_1853ad420 = 0;
            }
            lVar11 = (longlong)DAT_1853ad41c;
            DAT_1853ad41c = DAT_1853ad41c + 4;
            DAT_1a4d2dce4 = *(undefined4 *)(&DAT_1853ad424 + lVar11);
          }
          FUN_140115ae0(&DAT_183ebfaac,4);
          FUN_140115ae0(&DAT_183ebfcb0,4);
          FUN_140115ae0(&DAT_183ebfcc4,8);
          if ((DAT_1853ad41c < 0x10000) && (DAT_1853ad41c + 0x20 <= DAT_1853ad418)) {
            if (0 < (int)DAT_1853ad420) {
              DAT_1853ad41c = DAT_1853ad41c + 1;
              DAT_1853ad420 = 0;
            }
            lVar11 = (longlong)DAT_1853ad41c;
            DAT_1853ad41c = DAT_1853ad41c + 0x20;
            _DAT_183ebfab0 = *(undefined4 *)(&DAT_1853ad424 + lVar11);
            _DAT_183ebfab4 = *(undefined4 *)(&DAT_1853ad428 + lVar11);
            uRam0000000183ebfab8 = *(undefined4 *)(&DAT_1853ad42c + lVar11);
            uRam0000000183ebfabc = *(undefined4 *)(lVar11 + 0x1853ad430);
            _DAT_183ebfac0 = *(undefined8 *)(&DAT_1853ad434 + lVar11);
            uRam0000000183ebfac8 = *(undefined8 *)(lVar11 + 0x1853ad43c);
          }
          FUN_14018d440(&DAT_183ebfd54,0x10);
          FUN_14018d440(&DAT_183ebfd58,0x10);
          if (DAT_183ebfaac == 7) {
            FUN_140115ae0(&DAT_183f7a604,8);
          }
          goto LAB_14004474c;
        }
        if (local_a8 == '\x05') {
          DAT_1a4d2dd08 = 0;
          if ((DAT_1853ad41c < 0x10000) && (DAT_1853ad41c + 4 <= DAT_1853ad418)) {
            if (0 < (int)DAT_1853ad420) {
              DAT_1853ad41c = DAT_1853ad41c + 1;
              DAT_1853ad420 = 0;
            }
            lVar11 = (longlong)DAT_1853ad41c;
            DAT_1853ad41c = DAT_1853ad41c + 4;
            uVar7 = *(uint *)(&DAT_1853ad424 + lVar11);
          }
          if (uVar7 == DAT_183ebfcc8) {
            if ((DAT_1853ad41c < 0x10000) && (DAT_1853ad41c + 4 <= DAT_1853ad418)) {
              if (0 < (int)DAT_1853ad420) {
                DAT_1853ad41c = DAT_1853ad41c + 1;
                DAT_1853ad420 = 0;
              }
              lVar11 = (longlong)DAT_1853ad41c;
              DAT_1853ad41c = DAT_1853ad41c + 4;
              uVar7 = *(uint *)(&DAT_1853ad424 + lVar11);
            }
            if (((int)DAT_183ebfd34 <= (int)uVar7) || (9999 < (int)(DAT_183ebfd34 - uVar7))) {
              DAT_183ebfd34 = uVar7;
              FUN_140115ae0(&DAT_183ebfccc,4);
              if (DAT_183ebfccc == 1) {
                puVar12 = &DAT_151620ca8;
                lVar11 = 0x20;
                do {
                  FUN_140115ae0(puVar12,1);
                  puVar12 = puVar12 + 0xe0d;
                  lVar11 = lVar11 + -1;
                  uVar17 = local_98;
                } while (lVar11 != 0);
LAB_140042ca9:
                uVar7 = 0x10;
                if ((DAT_1853ad41c < 0x10000) &&
                   (uVar16 = uVar20, uVar9 = uVar19, DAT_1853ad41c + 2 <= DAT_1853ad418)) {
                  do {
                    uVar8 = 8 - DAT_1853ad420;
                    uVar14 = uVar9 | ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >>
                                            ((byte)DAT_1853ad420 & 0x1f)) &
                                     ~(-1 << ((byte)uVar7 & 0x1f))) << ((byte)uVar16 & 0x1f);
                    local_90 = uVar14;
                    if (uVar7 < uVar8) {
                      DAT_1853ad420 = DAT_1853ad420 + uVar7;
                      break;
                    }
                    DAT_1853ad420 = 0;
                    if (uVar7 == uVar8) {
                      DAT_1853ad41c = DAT_1853ad41c + 1;
                      break;
                    }
                    DAT_1853ad41c = DAT_1853ad41c + 1;
                    uVar7 = uVar7 - uVar8;
                    uVar16 = (ulonglong)((int)uVar16 + uVar8);
                    uVar9 = uVar14;
                  } while (0 < (int)uVar7);
                }
                uVar7 = 0x10;
                DAT_183ebfdb0 = uVar14 | 0xffff0000;
                if ((uVar14 & 0x8000) == 0) {
                  DAT_183ebfdb0 = uVar14;
                }
                if ((DAT_1853ad41c < 0x10000) &&
                   (uVar16 = uVar20, uVar9 = uVar19, DAT_1853ad41c + 2 <= DAT_1853ad418)) {
                  do {
                    uVar8 = 8 - DAT_1853ad420;
                    uVar17 = uVar9 | ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >>
                                            ((byte)DAT_1853ad420 & 0x1f)) &
                                     ~(-1 << ((byte)uVar7 & 0x1f))) << ((byte)uVar16 & 0x1f);
                    local_98 = uVar17;
                    if (uVar7 < uVar8) {
                      DAT_1853ad420 = DAT_1853ad420 + uVar7;
                      break;
                    }
                    DAT_1853ad420 = 0;
                    if (uVar7 == uVar8) {
                      DAT_1853ad41c = DAT_1853ad41c + 1;
                      break;
                    }
                    DAT_1853ad41c = DAT_1853ad41c + 1;
                    uVar7 = uVar7 - uVar8;
                    uVar16 = (ulonglong)((int)uVar16 + uVar8);
                    uVar9 = uVar17;
                  } while (0 < (int)uVar7);
                }
                uVar7 = 0x10;
                DAT_183f7ae14 = uVar17 | 0xffff0000;
                if ((uVar17 & 0x8000) == 0) {
                  DAT_183f7ae14 = uVar17;
                }
                if ((DAT_1853ad41c < 0x10000) &&
                   (uVar16 = uVar20, uVar9 = uVar19, DAT_1853ad41c + 2 <= DAT_1853ad418)) {
                  do {
                    uVar8 = 8 - DAT_1853ad420;
                    uVar14 = uVar9 | ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >>
                                            ((byte)DAT_1853ad420 & 0x1f)) &
                                     ~(-1 << ((byte)uVar7 & 0x1f))) << ((byte)uVar16 & 0x1f);
                    local_90 = uVar14;
                    if (uVar7 < uVar8) {
                      DAT_1853ad420 = DAT_1853ad420 + uVar7;
                      break;
                    }
                    DAT_1853ad420 = 0;
                    if (uVar7 == uVar8) {
                      DAT_1853ad41c = DAT_1853ad41c + 1;
                      break;
                    }
                    DAT_1853ad41c = DAT_1853ad41c + 1;
                    uVar7 = uVar7 - uVar8;
                    uVar16 = (ulonglong)((int)uVar16 + uVar8);
                    uVar9 = uVar14;
                  } while (0 < (int)uVar7);
                }
                uVar7 = 0x10;
                DAT_183ec5974._0_4_ = uVar14 | 0xffff0000;
                if ((uVar14 & 0x8000) == 0) {
                  DAT_183ec5974._0_4_ = uVar14;
                }
                if ((DAT_1853ad41c < 0x10000) &&
                   (uVar16 = uVar20, uVar9 = uVar19, DAT_1853ad41c + 2 <= DAT_1853ad418)) {
                  do {
                    uVar8 = 8 - DAT_1853ad420;
                    uVar17 = uVar9 | ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >>
                                            ((byte)DAT_1853ad420 & 0x1f)) &
                                     ~(-1 << ((byte)uVar7 & 0x1f))) << ((byte)uVar16 & 0x1f);
                    local_98 = uVar17;
                    if (uVar7 < uVar8) {
                      DAT_1853ad420 = DAT_1853ad420 + uVar7;
                      break;
                    }
                    DAT_1853ad420 = 0;
                    if (uVar7 == uVar8) {
                      DAT_1853ad41c = DAT_1853ad41c + 1;
                      break;
                    }
                    DAT_1853ad41c = DAT_1853ad41c + 1;
                    uVar7 = uVar7 - uVar8;
                    uVar16 = (ulonglong)((int)uVar16 + uVar8);
                    uVar9 = uVar17;
                  } while (0 < (int)uVar7);
                }
                uVar7 = 0x10;
                DAT_183f7ae18 = uVar17 | 0xffff0000;
                if ((uVar17 & 0x8000) == 0) {
                  DAT_183f7ae18 = uVar17;
                }
                if ((DAT_1853ad41c < 0x10000) &&
                   (uVar16 = uVar20, uVar9 = uVar19, DAT_1853ad41c + 2 <= DAT_1853ad418)) {
                  do {
                    uVar8 = 8 - DAT_1853ad420;
                    uVar14 = uVar9 | ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >>
                                            ((byte)DAT_1853ad420 & 0x1f)) &
                                     ~(-1 << ((byte)uVar7 & 0x1f))) << ((byte)uVar16 & 0x1f);
                    local_90 = uVar14;
                    if (uVar7 < uVar8) {
                      DAT_1853ad420 = DAT_1853ad420 + uVar7;
                      break;
                    }
                    DAT_1853ad420 = 0;
                    if (uVar7 == uVar8) {
                      DAT_1853ad41c = DAT_1853ad41c + 1;
                      break;
                    }
                    DAT_1853ad41c = DAT_1853ad41c + 1;
                    uVar7 = uVar7 - uVar8;
                    uVar16 = (ulonglong)((int)uVar16 + uVar8);
                    uVar9 = uVar14;
                  } while (0 < (int)uVar7);
                }
                uVar7 = 0x10;
                _DAT_183ecb538 = uVar14 | 0xffff0000;
                if ((uVar14 & 0x8000) == 0) {
                  _DAT_183ecb538 = uVar14;
                }
                if ((DAT_1853ad41c < 0x10000) &&
                   (uVar16 = uVar20, uVar14 = uVar19, DAT_1853ad41c + 2 <= DAT_1853ad418)) {
                  do {
                    uVar9 = 8 - DAT_1853ad420;
                    uVar17 = uVar14 | ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >>
                                             ((byte)DAT_1853ad420 & 0x1f)) &
                                      ~(-1 << ((byte)uVar7 & 0x1f))) << ((byte)uVar16 & 0x1f);
                    local_98 = uVar17;
                    if (uVar7 < uVar9) {
                      DAT_1853ad420 = DAT_1853ad420 + uVar7;
                      break;
                    }
                    DAT_1853ad420 = 0;
                    if (uVar7 == uVar9) {
                      DAT_1853ad41c = DAT_1853ad41c + 1;
                      break;
                    }
                    DAT_1853ad41c = DAT_1853ad41c + 1;
                    uVar7 = uVar7 - uVar9;
                    uVar16 = (ulonglong)((int)uVar16 + uVar9);
                    uVar14 = uVar17;
                  } while (0 < (int)uVar7);
                }
                _DAT_183f7ae1c = uVar17 | 0xffff0000;
                if ((uVar17 & 0x8000) == 0) {
                  _DAT_183f7ae1c = uVar17;
                }
              }
              else if (DAT_183ebfccc == 3) goto LAB_140042ca9;
              FUN_140115ae0(&DAT_183ebfcd4,0x18);
              FUN_140115ae0(&DAT_183f79f84,0x10);
              FUN_140115ae0(&DAT_16b2a2ec0,0x1e);
              FUN_140115ae0(&DAT_183ebfdb4,6);
              FUN_140115ae0(0x183ec5978,6);
              FUN_140115ae0(&DAT_183ecb53c,6);
              FUN_140115ae0(&DAT_183ed1100,6);
              FUN_140115ae0(&DAT_183ed6cc4,6);
              FUN_140115ae0(&DAT_183f7c540,8);
              iVar10 = DAT_1853ad418;
              lVar11 = (longlong)DAT_183f7c540;
              uVar7 = 10;
              lVar25 = lVar11 * 0x3834;
              if ((DAT_1853ad41c < 0x10000) && (DAT_1853ad41c + 1 <= DAT_1853ad418)) {
                uVar16 = (ulonglong)DAT_1853ad420;
                uVar24 = uVar20;
                uVar26 = uVar19;
                do {
                  uVar17 = 8 - (int)uVar16;
                  uVar26 = uVar26 | ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >>
                                           ((byte)DAT_1853ad420 & 0x1f)) &
                                    ~(-1 << ((byte)uVar7 & 0x1f))) << ((byte)uVar24 & 0x1f);
                  local_70 = uVar26;
                  if (uVar7 < uVar17) {
                    DAT_1853ad420 = (int)uVar16 + uVar7;
                    uVar16 = (ulonglong)DAT_1853ad420;
                    break;
                  }
                  DAT_1853ad420 = 0;
                  if (uVar7 == uVar17) {
                    DAT_1853ad41c = DAT_1853ad41c + 1;
                    uVar16 = 0;
                    break;
                  }
                  DAT_1853ad41c = DAT_1853ad41c + 1;
                  uVar7 = uVar7 - uVar17;
                  uVar24 = (ulonglong)((int)uVar24 + uVar17);
                  uVar16 = uVar20;
                } while (0 < (int)uVar7);
              }
              else {
                uVar16 = (ulonglong)DAT_1853ad420;
              }
              iVar21 = DAT_1853ad41c;
              if (uVar26 == 0x3ff) {
                uVar26 = 0xffffffff;
              }
              lVar15 = (longlong)(int)uVar26;
              (&DAT_151620cfc)[lVar11 * 0xe0d] = uVar26;
              local_80 = lVar11;
              local_68 = lVar25;
              if (uVar26 != 0xffffffff) {
                lVar18 = lVar15 * 0x6ff8;
                if (iVar21 < 0x10000) {
                  if (iVar21 + 4 <= iVar10) {
                    if (0 < (int)uVar16) {
                      iVar21 = iVar21 + 1;
                      DAT_1853ad420 = 0;
                      uVar16 = uVar20;
                    }
                    DAT_1853ad41c = iVar21 + 4;
                    (&DAT_18329e3a0)[lVar15 * 0x1bfe] = *(undefined4 *)(&DAT_1853ad424 + iVar21);
                    iVar21 = DAT_1853ad41c;
                  }
                  if (iVar21 < 0x10000) {
                    if (iVar21 + 4 <= iVar10) {
                      if (0 < (int)uVar16) {
                        iVar21 = iVar21 + 1;
                        DAT_1853ad420 = 0;
                        uVar16 = uVar20;
                      }
                      DAT_1853ad41c = iVar21 + 4;
                      (&DAT_18329e3a4)[lVar15 * 0x1bfe] = *(undefined4 *)(&DAT_1853ad424 + iVar21);
                      iVar21 = DAT_1853ad41c;
                    }
                    if (iVar21 < 0x10000) {
                      if (iVar21 + 4 <= iVar10) {
                        if (0 < (int)uVar16) {
                          iVar21 = iVar21 + 1;
                          DAT_1853ad420 = 0;
                          uVar16 = uVar20;
                        }
                        DAT_1853ad41c = iVar21 + 4;
                        (&DAT_18329e400)[lVar15 * 0x1bfe] = *(undefined4 *)(&DAT_1853ad424 + iVar21)
                        ;
                        iVar21 = DAT_1853ad41c;
                      }
                      iVar23 = (int)uVar16;
                      if (iVar21 < 0x10000) {
                        if (iVar21 + 4 <= iVar10) {
                          if (0 < iVar23) {
                            iVar21 = iVar21 + 1;
                            DAT_1853ad420 = 0;
                            uVar16 = uVar20;
                          }
                          iVar23 = (int)uVar16;
                          DAT_1853ad41c = iVar21 + 4;
                          (&DAT_18329e404)[lVar15 * 0x1bfe] =
                               *(undefined4 *)(&DAT_1853ad424 + iVar21);
                          iVar21 = DAT_1853ad41c;
                        }
                        if ((iVar21 < 0x10000) && (iVar21 + 4 <= iVar10)) {
                          if (0 < iVar23) {
                            iVar21 = iVar21 + 1;
                            DAT_1853ad420 = 0;
                          }
                          DAT_1853ad41c = iVar21 + 4;
                          (&DAT_18329e3e0)[lVar15 * 0x1bfe] =
                               *(undefined4 *)(&DAT_1853ad424 + iVar21);
                        }
                      }
                    }
                  }
                }
                FUN_140115ae0(&DAT_18329e384 + lVar15 * 0x1bfe,1);
                FUN_140115ae0(&DAT_18329e380 + lVar15 * 0x1bfe,8);
                uVar7 = 8;
                if ((DAT_1853ad41c < 0x10000) &&
                   (uVar16 = uVar20, uVar17 = uVar19, DAT_1853ad41c + 1 <= DAT_1853ad418)) {
                  do {
                    uVar14 = 8 - DAT_1853ad420;
                    uVar28 = uVar17 | ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >>
                                             ((byte)DAT_1853ad420 & 0x1f)) &
                                      ~(-1 << ((byte)uVar7 & 0x1f))) << ((byte)uVar16 & 0x1f);
                    local_6c = uVar28;
                    if (uVar7 < uVar14) {
                      DAT_1853ad420 = DAT_1853ad420 + uVar7;
                      break;
                    }
                    DAT_1853ad420 = 0;
                    if (uVar7 == uVar14) {
                      DAT_1853ad41c = DAT_1853ad41c + 1;
                      break;
                    }
                    DAT_1853ad41c = DAT_1853ad41c + 1;
                    uVar7 = uVar7 - uVar14;
                    uVar16 = (ulonglong)((int)uVar16 + uVar14);
                    uVar17 = uVar28;
                  } while (0 < (int)uVar7);
                }
                if (uVar28 == 0xff) {
                  uVar28 = 0xffffffff;
                }
                *(uint *)(&DAT_1832a50e8 + lVar18) = uVar28;
                FUN_140115ae0(&DAT_1832a50f0 + lVar18,7);
                FUN_140115ae0(&DAT_1832a50f4 + lVar18,4);
                FUN_140115ae0(&DAT_1832a50f8 + lVar18,4);
                FUN_140115ae0(&DAT_1832a50e4 + lVar15 * 0x1bfe,8);
                FUN_140115ae0(&DAT_1832a5058 + lVar15 * 0x1bfe,7);
                FUN_140115ae0(&DAT_1832a5064 + lVar18,7);
                FUN_140115ae0(&DAT_1832a506c + lVar18,7);
                FUN_140115ae0(&DAT_1832a5074 + lVar18,7);
                FUN_140115ae0(&DAT_1832a507c + lVar18,7);
                FUN_140115ae0(&DAT_1832a5084 + lVar15 * 0x1bfe,7);
                FUN_140115ae0(&DAT_1832a508c + lVar15 * 0x1bfe,7);
                FUN_140115ae0(&DAT_18329e324 + lVar15 * 0x1bfe,8);
                FUN_140115ae0(&DAT_18329e328 + lVar15 * 0x1bfe,8);
                uVar16 = (ulonglong)DAT_1853ad420;
                iVar10 = DAT_1853ad418;
                iVar21 = DAT_1853ad41c;
              }
              if (iVar21 < 0x10000) {
                if (iVar21 + 4 <= iVar10) {
                  if (0 < (int)uVar16) {
                    iVar21 = iVar21 + 1;
                    DAT_1853ad420 = 0;
                    uVar16 = uVar20;
                  }
                  DAT_1853ad41c = iVar21 + 4;
                  local_40 = *(undefined4 *)(&DAT_1853ad424 + iVar21);
                  iVar21 = DAT_1853ad41c;
                }
                iVar23 = (int)uVar16;
                if (iVar21 < 0x10000) {
                  if (iVar21 + 4 <= iVar10) {
                    if (0 < iVar23) {
                      iVar21 = iVar21 + 1;
                      DAT_1853ad420 = 0;
                      uVar16 = uVar20;
                    }
                    iVar23 = (int)uVar16;
                    DAT_1853ad41c = iVar21 + 4;
                    local_3c = *(undefined4 *)(&DAT_1853ad424 + iVar21);
                    iVar21 = DAT_1853ad41c;
                  }
                  if ((iVar21 < 0x10000) && (iVar21 + 4 <= iVar10)) {
                    if (0 < iVar23) {
                      iVar21 = iVar21 + 1;
                      DAT_1853ad420 = 0;
                    }
                    DAT_1853ad41c = iVar21 + 4;
                    local_38 = *(undefined4 *)(&DAT_1853ad424 + iVar21);
                  }
                }
              }
              if (uVar26 != 0xffffffff) {
                lVar15 = lVar15 * 0x6ff8;
                *(undefined4 *)(&DAT_18329e8ec + lVar15) = local_40;
                *(undefined4 *)(&DAT_18329e8f4 + lVar15) = local_38;
                *(undefined4 *)(&DAT_18329e8f0 + lVar15) = local_3c;
              }
              FUN_140115ae0(&DAT_151620cf0 + lVar11 * 0xe0d,1);
              FUN_140115ae0(&DAT_151620dc4 + lVar11 * 0xe0d,8);
              FUN_140115ae0(&DAT_151620dc8 + lVar25,0x10);
              if ((&DAT_151620dc4)[lVar11 * 0xe0d] == 10) {
                uVar7 = *(uint *)(&DAT_151620dc8 + lVar25);
                uVar16 = (ulonglong)uVar7;
                if ((int)uVar7 < 0) {
                  *(undefined4 *)(&DAT_151620dc8 + lVar25) = 0;
                  uVar16 = uVar20;
                  uVar7 = uVar19;
                }
                FUN_140115ae0(&DAT_1760d202c + uVar16 * 0x36c3,8);
                if (0 < (int)(&DAT_1760d202c)[uVar16 * 0x36c3]) {
                  iVar10 = *(int *)(&DAT_151620dc8 + lVar25);
                  uVar16 = uVar20;
                  do {
                    lVar15 = (longlong)(int)uVar16 + (longlong)iVar10 * 0x1241;
                    FUN_140115ae0(&DAT_1760d2030 + lVar15 * 0xc,8);
                    FUN_140115ae0(&DAT_1760d2034 + lVar15 * 3,0x18);
                    FUN_140115ae0(&DAT_1760d2038 + lVar15 * 3,4);
                    uVar26 = (int)uVar16 + 1;
                    uVar16 = (ulonglong)uVar26;
                  } while ((int)uVar26 < (int)(&DAT_1760d202c)[(longlong)(int)uVar7 * 0x36c3]);
                }
              }
              iVar10 = DAT_1853ad418;
              if (DAT_1853ad41c < 0x10000) {
                uVar7 = DAT_1853ad420;
                if (DAT_1853ad41c + 4 <= DAT_1853ad418) {
                  if (0 < (int)DAT_1853ad420) {
                    DAT_1853ad41c = DAT_1853ad41c + 1;
                    DAT_1853ad420 = 0;
                  }
                  uVar7 = DAT_1853ad420;
                  lVar15 = (longlong)DAT_1853ad41c;
                  DAT_1853ad41c = DAT_1853ad41c + 4;
                  (&DAT_151620cac)[lVar11 * 0xe0d] = *(undefined4 *)(&DAT_1853ad424 + lVar15);
                }
                if (DAT_1853ad41c < 0x10000) {
                  if (DAT_1853ad41c + 4 <= iVar10) {
                    if (0 < (int)uVar7) {
                      DAT_1853ad41c = DAT_1853ad41c + 1;
                      DAT_1853ad420 = 0;
                      uVar7 = uVar19;
                    }
                    lVar15 = (longlong)DAT_1853ad41c;
                    DAT_1853ad41c = DAT_1853ad41c + 4;
                    (&DAT_151620cb0)[lVar11 * 0xe0d] = *(undefined4 *)(&DAT_1853ad424 + lVar15);
                  }
                  if (DAT_1853ad41c < 0x10000) {
                    if (DAT_1853ad41c + 4 <= iVar10) {
                      if (0 < (int)uVar7) {
                        DAT_1853ad41c = DAT_1853ad41c + 1;
                        DAT_1853ad420 = 0;
                        uVar7 = uVar19;
                      }
                      lVar15 = (longlong)DAT_1853ad41c;
                      DAT_1853ad41c = DAT_1853ad41c + 4;
                      (&DAT_151620cb4)[lVar11 * 0xe0d] = *(undefined4 *)(&DAT_1853ad424 + lVar15);
                    }
                    if (DAT_1853ad41c < 0x10000) {
                      if (DAT_1853ad41c + 4 <= iVar10) {
                        if (0 < (int)uVar7) {
                          DAT_1853ad41c = DAT_1853ad41c + 1;
                          DAT_1853ad420 = 0;
                          uVar7 = uVar19;
                        }
                        lVar15 = (longlong)DAT_1853ad41c;
                        DAT_1853ad41c = DAT_1853ad41c + 4;
                        (&DAT_151620cb8)[lVar11 * 0xe0d] = *(undefined4 *)(&DAT_1853ad424 + lVar15);
                      }
                      if ((DAT_1853ad41c < 0x10000) && (DAT_1853ad41c + 4 <= iVar10)) {
                        if (0 < (int)uVar7) {
                          DAT_1853ad41c = DAT_1853ad41c + 1;
                          DAT_1853ad420 = 0;
                        }
                        lVar15 = (longlong)DAT_1853ad41c;
                        DAT_1853ad41c = DAT_1853ad41c + 4;
                        (&DAT_151620cbc)[lVar11 * 0xe0d] = *(undefined4 *)(&DAT_1853ad424 + lVar15);
                      }
                    }
                  }
                }
              }
              FUN_140115ae0(&DAT_151620cf8 + lVar11 * 0xe0d,0x10);
              FUN_140115ae0(lVar25 + 0x151620e18,8);
              FUN_140115ae0(&DAT_151622328 + lVar11 * 0xe0d,10);
              if ((&DAT_151620cfc)[lVar11 * 0xe0d] != -1) {
                (&DAT_18329e344)[(longlong)(int)(&DAT_151620cfc)[lVar11 * 0xe0d] * 0x1bfe] =
                     (&DAT_151622328)[lVar11 * 0xe0d];
              }
              FUN_140115ae0(&DAT_15162232c + lVar25,6);
              FUN_140115ae0(&DAT_151622330 + lVar25,8);
              piVar13 = &DAT_151622334 + lVar11 * 0xe0d;
              lVar25 = 7;
              uVar16 = uVar20;
              lVar11 = local_80;
              piVar22 = piVar13;
              do {
                FUN_140115ae0(piVar22,4);
                local_a0 = 0;
                uVar7 = local_a0;
                if (0 < *piVar13) {
                  lVar15 = lVar11 * 0xe0d;
                  uVar7 = uVar19;
                  do {
                    FUN_140115ae0(&DAT_151622338 + (longlong)(int)uVar7 + lVar15 + uVar16,0x10);
                    uVar7 = uVar7 + 1;
                    lVar11 = local_80;
                  } while ((int)uVar7 < *piVar13);
                }
                local_a0 = uVar7;
                lVar15 = local_68;
                uVar7 = local_a0;
                piVar22 = piVar22 + 9;
                uVar16 = uVar16 + 9;
                piVar13 = piVar13 + 9;
                lVar25 = lVar25 + -1;
              } while (lVar25 != 0);
              FUN_140115ae0(&DAT_151622774 + local_68,8);
              iVar10 = DAT_1853ad418;
              lVar11 = lVar15;
              uVar16 = uVar20;
              uVar26 = DAT_1853ad420;
              iVar21 = DAT_1853ad41c;
              uVar28 = local_a0;
              if (0 < *(int *)(&DAT_151622774 + lVar15)) {
                do {
                  lVar25 = (longlong)(int)uVar16 * 0x48 + lVar15;
                  if ((iVar21 < 0x10000) && (iVar21 + 4 <= iVar10)) {
                    if (0 < (int)uVar26) {
                      iVar21 = iVar21 + 1;
                      DAT_1853ad420 = 0;
                      uVar26 = uVar19;
                    }
                    lVar18 = (longlong)iVar21;
                    iVar21 = iVar21 + 4;
                    *(undefined4 *)(&DAT_151622778 + lVar25) =
                         *(undefined4 *)(&DAT_1853ad424 + lVar18);
                    DAT_1853ad41c = iVar21;
                  }
                  uVar7 = 6;
                  if ((iVar21 < 0x10000) && (uVar24 = uVar20, uVar17 = uVar19, iVar21 <= iVar10)) {
                    do {
                      uVar14 = 8 - uVar26;
                      uVar28 = uVar17 | ((uint)((byte)(&DAT_1853ad424)[iVar21] >>
                                               ((byte)DAT_1853ad420 & 0x1f)) &
                                        ~(-1 << ((byte)uVar7 & 0x1f))) << ((byte)uVar24 & 0x1f);
                      local_a0 = uVar28;
                      if (uVar7 < uVar14) {
                        DAT_1853ad420 = uVar26 + uVar7;
                        uVar26 = DAT_1853ad420;
                        break;
                      }
                      DAT_1853ad420 = 0;
                      if (uVar7 == uVar14) {
                        iVar21 = iVar21 + 1;
                        uVar26 = uVar19;
                        DAT_1853ad41c = iVar21;
                        break;
                      }
                      iVar21 = iVar21 + 1;
                      uVar7 = uVar7 - uVar14;
                      uVar24 = (ulonglong)((int)uVar24 + uVar14);
                      uVar26 = uVar19;
                      uVar17 = uVar28;
                      DAT_1853ad41c = iVar21;
                    } while (0 < (int)uVar7);
                  }
                  if ((iVar21 < 0x10000) && ((int)(iVar21 + uVar28) <= iVar10)) {
                    if (0 < (int)uVar26) {
                      iVar21 = iVar21 + 1;
                      DAT_1853ad420 = 0;
                      uVar26 = uVar19;
                      DAT_1853ad41c = iVar21;
                    }
                    FUN_1401fc920(&DAT_15162277c + lVar25,&DAT_1853ad424 + iVar21,
                                  (longlong)(int)uVar28);
                    iVar21 = iVar21 + local_a0;
                    uVar28 = local_a0;
                    DAT_1853ad41c = iVar21;
                  }
                  (&DAT_15162277c)[(int)uVar28 + lVar11] = 0;
                  if ((iVar21 < 0x10000) && (iVar21 + 4 <= iVar10)) {
                    if (0 < (int)uVar26) {
                      iVar21 = iVar21 + 1;
                      DAT_1853ad420 = 0;
                      uVar26 = uVar19;
                    }
                    lVar18 = (longlong)iVar21;
                    iVar21 = iVar21 + 4;
                    *(undefined4 *)(&DAT_1516227bc + lVar25) =
                         *(undefined4 *)(&DAT_1853ad424 + lVar18);
                    DAT_1853ad41c = iVar21;
                  }
                  uVar17 = (int)uVar16 + 1;
                  lVar11 = lVar11 + 0x48;
                  uVar16 = (ulonglong)uVar17;
                  uVar7 = local_a0;
                } while ((int)uVar17 < *(int *)(&DAT_151622774 + lVar15));
              }
              FUN_140115ae0((longlong)&DAT_151620cd4 + lVar15,8);
              FUN_14018f1b0();
              DAT_16b27e3a0 = DAT_1853ad41c;
              local_60 = 0;
              local_58 = 0;
              local_80 = 0;
              local_50 = &DAT_189c1dc88;
              local_48 = &DAT_189c3bcc4;
              local_68 = 8;
              do {
                puVar12 = local_48;
                puVar29 = local_50;
                lVar18 = local_60;
                lVar15 = local_68;
                lVar11 = local_80;
                FUN_140115ae0((longlong)&DAT_189c1dc80 + local_58,1);
                lVar6 = local_58;
                lVar25 = local_80;
                iVar10 = DAT_1853ad418;
                if (puVar29[-2] == 0) {
                  *(undefined8 *)(puVar12 + -1) = 0;
                  *(undefined8 *)(puVar12 + 1) = 0;
                  *(undefined8 *)(puVar12 + 3) = 0;
                  *(undefined8 *)(puVar12 + 5) = 0;
                  *(undefined8 *)(puVar12 + 7) = 0;
                  *(undefined8 *)(puVar12 + 9) = 0;
                  *(undefined8 *)(puVar12 + 0xb) = 0;
                  *(undefined8 *)(puVar12 + 0xd) = 0;
                  *(undefined8 *)(puVar12 + 0xf) = 0;
                  *(undefined8 *)(puVar12 + 0x11) = 0;
                  *(undefined8 *)(puVar12 + 0x13) = 0;
                  *(undefined8 *)(puVar12 + 0x15) = 0;
                  *(undefined8 *)(puVar12 + 0x17) = 0;
                  *(undefined8 *)(puVar12 + 0x19) = 0;
                  *(undefined8 *)(puVar12 + 0x1b) = 0;
                  *(undefined8 *)(puVar12 + 0x1d) = 0;
                  *(undefined8 *)(puVar12 + 0x1f) = 0;
                  *(undefined8 *)(puVar12 + 0x21) = 0;
                  *(undefined8 *)(puVar12 + 0x23) = 0;
                  *(undefined8 *)(puVar12 + 0x25) = 0;
                  *(undefined8 *)(puVar12 + 0x27) = 0;
                  *(undefined8 *)(puVar12 + 0x29) = 0;
                  *(undefined8 *)(puVar12 + 0x2b) = 0;
                  *(undefined8 *)(puVar12 + 0x2d) = 0;
                  *(undefined8 *)(puVar12 + 0x2f) = 0;
                  *(undefined8 *)(puVar12 + 0x31) = 0;
                  *(undefined8 *)(puVar12 + 0x33) = 0;
                  *(undefined8 *)(puVar12 + 0x35) = 0;
                  *(undefined8 *)(puVar12 + 0x37) = 0;
                  *(undefined8 *)(puVar12 + 0x39) = 0;
                  *(undefined8 *)(puVar12 + 0x3b) = 0;
                  *(undefined8 *)(puVar12 + 0x3d) = 0;
                  local_9c = 0x40;
                }
                else {
                  uVar7 = 8;
                  if ((DAT_1853ad41c < 0x10000) &&
                     (uVar16 = uVar20, uVar24 = uVar20, DAT_1853ad41c + 1 <= DAT_1853ad418)) {
                    do {
                      uVar26 = 8 - DAT_1853ad420;
                      local_78 = (uint)uVar24 |
                                 ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >>
                                        ((byte)DAT_1853ad420 & 0x1f)) &
                                 ~(-1 << ((byte)uVar7 & 0x1f))) << ((byte)uVar16 & 0x1f);
                      if (uVar7 < uVar26) {
                        DAT_1853ad420 = DAT_1853ad420 + uVar7;
                        break;
                      }
                      DAT_1853ad420 = 0;
                      if (uVar7 == uVar26) {
                        DAT_1853ad41c = DAT_1853ad41c + 1;
                        break;
                      }
                      DAT_1853ad41c = DAT_1853ad41c + 1;
                      uVar7 = uVar7 - uVar26;
                      uVar16 = (ulonglong)((int)uVar16 + uVar26);
                      uVar24 = (ulonglong)local_78;
                    } while (0 < (int)uVar7);
                  }
                  uVar7 = DAT_1853ad420;
                  iVar21 = DAT_1853ad41c;
                  uVar26 = local_78;
                  if (local_78 == 0xff) {
                    uVar26 = 0xffffffff;
                  }
                  *puVar29 = uVar26;
                  uVar26 = 8;
                  if ((iVar21 < 0x10000) && (uVar16 = uVar20, uVar24 = uVar20, iVar21 + 1 <= iVar10)
                     ) {
                    do {
                      uVar28 = 8 - uVar7;
                      local_8c = (uint)uVar24 |
                                 ((uint)((byte)(&DAT_1853ad424)[iVar21] >>
                                        ((byte)DAT_1853ad420 & 0x1f)) &
                                 ~(-1 << ((byte)uVar26 & 0x1f))) << ((byte)uVar16 & 0x1f);
                      if (uVar26 < uVar28) {
                        DAT_1853ad420 = uVar7 + uVar26;
                        uVar7 = DAT_1853ad420;
                        break;
                      }
                      DAT_1853ad420 = 0;
                      if (uVar26 == uVar28) {
                        iVar21 = iVar21 + 1;
                        uVar7 = uVar19;
                        DAT_1853ad41c = iVar21;
                        break;
                      }
                      iVar21 = iVar21 + 1;
                      uVar26 = uVar26 - uVar28;
                      uVar16 = (ulonglong)((int)uVar16 + uVar28);
                      uVar24 = (ulonglong)local_8c;
                      uVar7 = uVar19;
                      DAT_1853ad41c = iVar21;
                    } while (0 < (int)uVar26);
                  }
                  uVar28 = 8;
                  uVar26 = local_8c;
                  if (local_8c == 0xff) {
                    uVar26 = 0xffffffff;
                  }
                  puVar29[2] = uVar26;
                  if ((iVar21 < 0x10000) && (uVar16 = uVar20, uVar24 = uVar20, iVar21 + 1 <= iVar10)
                     ) {
                    do {
                      uVar26 = 8 - uVar7;
                      local_88 = (uint)uVar24 |
                                 ((uint)((byte)(&DAT_1853ad424)[iVar21] >>
                                        ((byte)DAT_1853ad420 & 0x1f)) &
                                 ~(-1 << ((byte)uVar28 & 0x1f))) << ((byte)uVar16 & 0x1f);
                      if (uVar28 < uVar26) {
                        DAT_1853ad420 = uVar7 + uVar28;
                        uVar7 = DAT_1853ad420;
                        break;
                      }
                      DAT_1853ad420 = 0;
                      if (uVar28 == uVar26) {
                        iVar21 = iVar21 + 1;
                        uVar7 = uVar19;
                        DAT_1853ad41c = iVar21;
                        break;
                      }
                      iVar21 = iVar21 + 1;
                      uVar28 = uVar28 - uVar26;
                      uVar16 = (ulonglong)((int)uVar16 + uVar26);
                      uVar24 = (ulonglong)local_88;
                      uVar7 = uVar19;
                      DAT_1853ad41c = iVar21;
                    } while (0 < (int)uVar28);
                  }
                  uVar26 = local_88;
                  if (local_88 == 0xff) {
                    uVar26 = 0xffffffff;
                  }
                  lVar11 = 4;
                  puVar29[3] = uVar26;
                  local_a0 = 4;
                  do {
                    uVar26 = 6;
                    if ((iVar21 < 0x10000) && (uVar16 = uVar20, uVar24 = uVar20, iVar21 <= iVar10))
                    {
                      do {
                        uVar28 = 8 - uVar7;
                        local_9c = (uint)uVar24 |
                                   ((uint)((byte)(&DAT_1853ad424)[iVar21] >>
                                          ((byte)DAT_1853ad420 & 0x1f)) &
                                   ~(-1 << ((byte)uVar26 & 0x1f))) << ((byte)uVar16 & 0x1f);
                        if (uVar26 < uVar28) {
                          DAT_1853ad420 = uVar7 + uVar26;
                          break;
                        }
                        DAT_1853ad420 = 0;
                        if (uVar26 == uVar28) {
                          DAT_1853ad41c = iVar21 + 1;
                          break;
                        }
                        iVar21 = iVar21 + 1;
                        uVar26 = uVar26 - uVar28;
                        uVar16 = (ulonglong)((int)uVar16 + uVar28);
                        uVar24 = (ulonglong)local_9c;
                        uVar7 = uVar19;
                        DAT_1853ad41c = iVar21;
                      } while (0 < (int)uVar26);
                    }
                    lVar18 = (longlong)(int)local_9c;
                    lVar15 = local_60 + lVar18;
                    FUN_140115ae0(&DAT_189c3bcc0 + lVar15,0xb);
                    FUN_140115ae0(&DAT_189c3bdc0 + lVar15,2);
                    iVar10 = DAT_1853ad418;
                    uVar7 = DAT_1853ad420;
                    if (DAT_1853ad41c < 0x10000) {
                      iVar21 = (&DAT_189c3bcc0)[lVar18 + lVar25];
                      if (iVar21 + DAT_1853ad41c <= DAT_1853ad418) {
                        if (0 < (int)DAT_1853ad420) {
                          DAT_1853ad41c = DAT_1853ad41c + 1;
                          DAT_1853ad420 = 0;
                        }
                        uVar7 = DAT_1853ad420;
                        iVar23 = DAT_1853ad41c;
                        FUN_1401fc920(&DAT_189c3bec0 + lVar18 * 0x800 + lVar6,
                                      &DAT_1853ad424 + DAT_1853ad41c,(longlong)iVar21);
                        DAT_1853ad41c = iVar23 + iVar21;
                      }
                    }
                    lVar11 = lVar11 + -1;
                    iVar21 = DAT_1853ad41c;
                  } while (lVar11 != 0);
                  local_50[0x780c] = local_9c + 1 & 0x3f;
                  lVar11 = local_80;
                  lVar15 = local_68;
                  lVar18 = local_60;
                  puVar12 = local_48;
                  puVar29 = local_50;
                  uVar7 = local_a0;
                }
                local_60 = lVar18 + 0x17891;
                local_58 = local_58 + 0x5e244;
                local_50 = puVar29 + 0x17891;
                local_80 = lVar11 + 0x17891;
                local_48 = puVar12 + 0x17891;
                local_68 = lVar15 + -1;
              } while (local_68 != 0);
              FUN_140115ae0(&DAT_1a4d2dd0c,0x10);
              uVar26 = 6;
              if ((DAT_1853ad41c < 0x10000) && (DAT_1853ad41c <= DAT_1853ad418)) {
                uVar16 = (ulonglong)DAT_1853ad420;
                uVar24 = uVar20;
                uVar27 = uVar20;
                do {
                  uVar28 = 8 - (int)uVar16;
                  local_74 = (uint)uVar27 |
                             ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >>
                                    ((byte)DAT_1853ad420 & 0x1f)) & ~(-1 << ((byte)uVar26 & 0x1f)))
                             << ((byte)uVar24 & 0x1f);
                  uVar27 = (ulonglong)local_74;
                  if (uVar26 < uVar28) {
                    DAT_1853ad420 = (int)uVar16 + uVar26;
                    uVar16 = (ulonglong)DAT_1853ad420;
                    break;
                  }
                  DAT_1853ad420 = 0;
                  if (uVar26 == uVar28) {
                    DAT_1853ad41c = DAT_1853ad41c + 1;
                    uVar16 = 0;
                    break;
                  }
                  DAT_1853ad41c = DAT_1853ad41c + 1;
                  uVar26 = uVar26 - uVar28;
                  uVar24 = (ulonglong)((int)uVar24 + uVar28);
                  uVar16 = uVar20;
                } while (0 < (int)uVar26);
              }
              else {
                uVar16 = (ulonglong)DAT_1853ad420;
              }
              uVar26 = 0x10;
              if ((DAT_1853ad41c < 0x10000) &&
                 (uVar24 = uVar20, uVar27 = uVar20, DAT_1853ad41c + 2 <= DAT_1853ad418)) {
                do {
                  uVar28 = 8 - (int)uVar16;
                  local_94 = (uint)uVar27 |
                             ((uint)((byte)(&DAT_1853ad424)[DAT_1853ad41c] >>
                                    ((byte)DAT_1853ad420 & 0x1f)) & ~(-1 << ((byte)uVar26 & 0x1f)))
                             << ((byte)uVar24 & 0x1f);
                  uVar27 = (ulonglong)local_94;
                  if (uVar26 < uVar28) {
                    DAT_1853ad420 = (int)uVar16 + uVar26;
                    uVar16 = (ulonglong)DAT_1853ad420;
                    break;
                  }
                  DAT_1853ad420 = 0;
                  if (uVar26 == uVar28) {
                    DAT_1853ad41c = DAT_1853ad41c + 1;
                    uVar16 = 0;
                    break;
                  }
                  DAT_1853ad41c = DAT_1853ad41c + 1;
                  uVar26 = uVar26 - uVar28;
                  uVar16 = uVar20;
                  uVar24 = (ulonglong)((int)uVar24 + uVar28);
                } while (0 < (int)uVar26);
              }
              else {
                uVar27 = (ulonglong)local_94;
              }
              if (0 < (int)local_74) {
                uVar16 = (ulonglong)local_74;
                do {
                  FUN_14018dbf0(uVar27);
                  if (DAT_189c1dc64 == (uint)uVar27) {
                    DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
                  }
                  uVar26 = (uint)uVar27 + 1 & 0xffff;
                  uVar27 = (ulonglong)uVar26;
                  uVar16 = uVar16 - 1;
                } while (uVar16 != 0);
                uVar16 = (ulonglong)DAT_1853ad420;
                local_94 = uVar26;
              }
              if (DAT_1853ad41c < 0x10000) {
                if (DAT_1853ad41c + 4 <= DAT_1853ad418) {
                  if (0 < (int)uVar16) {
                    DAT_1853ad41c = DAT_1853ad41c + 1;
                    DAT_1853ad420 = 0;
                    uVar16 = uVar20;
                  }
                  lVar11 = (longlong)DAT_1853ad41c;
                  DAT_1853ad41c = DAT_1853ad41c + 4;
                  DAT_1a6f9e13c = *(uint *)(&DAT_1853ad424 + lVar11);
                }
                iVar10 = (int)uVar16;
                if (DAT_1853ad41c < 0x10000) {
                  if (DAT_1853ad41c + 4 <= DAT_1853ad418) {
                    if (0 < iVar10) {
                      DAT_1853ad41c = DAT_1853ad41c + 1;
                      DAT_1853ad420 = 0;
                      uVar16 = uVar20;
                    }
                    iVar10 = (int)uVar16;
                    DAT_1853ad41c = DAT_1853ad41c + 4;
                  }
                  if ((DAT_1853ad41c < 0x10000) && (DAT_1853ad41c + 4 <= DAT_1853ad418)) {
                    if (0 < iVar10) {
                      DAT_1853ad41c = DAT_1853ad41c + 1;
                      DAT_1853ad420 = 0;
                    }
                    lVar11 = (longlong)DAT_1853ad41c;
                    DAT_1853ad41c = DAT_1853ad41c + 4;
                    uVar7 = *(uint *)(&DAT_1853ad424 + lVar11);
                  }
                }
              }
              iVar10 = SDL_GetTicks();
              DAT_1a6f9e138 = iVar10 - uVar7;
              *(undefined4 *)((longlong)&DAT_1a6f9e144 + (ulonglong)(DAT_1a6f9e13c & 0xff) * 4) = 1;
              uVar26 = DAT_1a6f9e140 + 1 & 0xff;
              if (uVar26 != (DAT_1a6f9e13c & 0xff)) {
                do {
                  *(undefined4 *)((longlong)&DAT_1a6f9e144 + (ulonglong)uVar26 * 4) = 0;
                  uVar26 = uVar26 + 1 & 0xff;
                } while (uVar26 != (DAT_1a6f9e13c & 0xff));
              }
              _DAT_183f7aeec = DAT_189c1dc64;
              puVar12 = &DAT_1832a4e00;
              DAT_1a6f9e140 = DAT_1a6f9e13c;
              do {
                puVar12[-10] = 0;
                *puVar12 = 0;
                puVar12[10] = 0;
                puVar12[0x14] = 0;
                puVar12[0x1e] = 0;
                puVar12[0x28] = 0;
                puVar12[0x32] = 0;
                puVar12 = puVar12 + 0x1bfe;
              } while ((longlong)puVar12 < 0x1839a4600);
              puVar12 = &DAT_182bbb1b4;
              do {
                if (puVar12[-0xd] != 0) {
                  *puVar12 = 0;
                }
                if (puVar12[0x6d3] != 0) {
                  puVar12[0x6e0] = 0;
                }
                puVar12 = puVar12 + 0xdc0;
              } while ((longlong)puVar12 < 0x18329b1b4);
              piVar22 = &DAT_182bbb1a8;
              uVar16 = uVar20;
              do {
                iVar10 = (int)uVar16;
                if (piVar22[-10] != 0) {
                  iVar21 = *piVar22;
                  if ((iVar21 != -1) && ((int)(&DAT_182bbb1b4)[(longlong)iVar21 * 0x6e0] < 8)) {
                    *(int *)(&DAT_182bbb1b8 +
                            ((longlong)iVar21 * 0x6e0 +
                            (longlong)(int)(&DAT_182bbb1b4)[(longlong)iVar21 * 0x6e0]) * 4) = iVar10
                    ;
                    (&DAT_182bbb1b4)[(longlong)*piVar22 * 0x6e0] =
                         (&DAT_182bbb1b4)[(longlong)*piVar22 * 0x6e0] + 1;
                  }
                  lVar11 = (longlong)piVar22[-1];
                  if ((piVar22[-1] != -1) && (lVar25 = (longlong)piVar22[1], (uint)piVar22[1] < 7))
                  {
                    if ((int)(&DAT_1832a4dd8)[lVar25 * 10 + lVar11 * 0x1bfe] < 2) {
                      (&DAT_1832a4ddc)
                      [lVar11 * 0x1bfe + lVar25 * 10 +
                       (longlong)(int)(&DAT_1832a4dd8)[lVar25 * 10 + lVar11 * 0x1bfe]] = iVar10;
                      (&DAT_1832a4dd8)[lVar25 * 10 + lVar11 * 0x1bfe] =
                           (&DAT_1832a4dd8)[lVar25 * 10 + lVar11 * 0x1bfe] + 1;
                    }
                  }
                }
                uVar16 = (ulonglong)(iVar10 + 1U);
                piVar22 = piVar22 + 0x6e0;
              } while ((int)(iVar10 + 1U) < 0x400);
              if ((int)DAT_1ad04add0 < (int)local_a4) {
                DAT_1ad04add0 = local_a4;
              }
              DAT_1a4d2dd04 = 1;
              DAT_1ad04adcc = local_a4;
              uVar26 = local_70;
              uVar28 = local_6c;
              goto LAB_14004460f;
            }
          }
        }
        else {
LAB_14004460f:
          if (local_a8 == '\t') {
            if (DAT_183f7c540 != -1) {
              *(undefined4 *)(&DAT_151620c94 + (longlong)DAT_183f7c540 * 0x3834) = 1;
            }
            piVar22 = &DAT_1a8e379e0;
            lVar11 = 0x100;
            puVar12 = &DAT_1a8e379e8;
            do {
              FUN_140115ae0(puVar12 + -2,1);
              iVar10 = DAT_1853ad418;
              if ((*piVar22 != 0) && (DAT_1853ad41c < 0x10000)) {
                uVar17 = DAT_1853ad420;
                if (DAT_1853ad41c + 4 <= DAT_1853ad418) {
                  if (0 < (int)DAT_1853ad420) {
                    DAT_1853ad41c = DAT_1853ad41c + 1;
                    DAT_1853ad420 = 0;
                  }
                  uVar17 = DAT_1853ad420;
                  lVar25 = (longlong)DAT_1853ad41c;
                  DAT_1853ad41c = DAT_1853ad41c + 4;
                  *puVar12 = *(undefined4 *)(&DAT_1853ad424 + lVar25);
                }
                if (DAT_1853ad41c < 0x10000) {
                  iVar21 = DAT_1853ad41c;
                  if (DAT_1853ad41c + 0x20 <= iVar10) {
                    if (0 < (int)uVar17) {
                      DAT_1853ad41c = DAT_1853ad41c + 1;
                      DAT_1853ad420 = 0;
                      uVar17 = uVar19;
                    }
                    lVar25 = (longlong)DAT_1853ad41c;
                    iVar21 = DAT_1853ad41c + 0x20;
                    uVar1 = *(undefined4 *)(&DAT_1853ad428 + lVar25);
                    uVar2 = *(undefined4 *)(&DAT_1853ad42c + lVar25);
                    uVar3 = *(undefined4 *)(lVar25 + 0x1853ad430);
                    uVar4 = *(undefined8 *)(&DAT_1853ad434 + lVar25);
                    uVar5 = *(undefined8 *)(lVar25 + 0x1853ad43c);
                    DAT_1853ad41c = iVar21;
                    puVar12[1] = *(undefined4 *)(&DAT_1853ad424 + lVar25);
                    puVar12[2] = uVar1;
                    puVar12[3] = uVar2;
                    puVar12[4] = uVar3;
                    *(undefined8 *)(puVar12 + 5) = uVar4;
                    *(undefined8 *)(puVar12 + 7) = uVar5;
                  }
                  if ((iVar21 < 0x10000) && (iVar21 + 4 <= iVar10)) {
                    if (0 < (int)uVar17) {
                      iVar21 = iVar21 + 1;
                      DAT_1853ad420 = 0;
                    }
                    DAT_1853ad41c = iVar21 + 4;
                    puVar12[0x11] = *(undefined4 *)(&DAT_1853ad424 + iVar21);
                  }
                }
              }
              puVar12 = puVar12 + 0x14;
              piVar22 = piVar22 + 0x14;
              lVar11 = lVar11 + -1;
            } while (lVar11 != 0);
          }
        }
LAB_14004474c:
        local_a4 = FUN_14011c760();
      } while (0 < (int)local_a4);
    }
  }
  else {
    FUN_140095fc0();
    DAT_183ebfaa4 = 0;
  }
  return;
}



===== FUN_14004c960 @ 14004c960 root=true =====

undefined4 FUN_14004c960(int param_1,int param_2)

{
  if (param_2 == 2) {
    return *(undefined4 *)(&DAT_182bbb4b4 + (longlong)param_1 * 0x1b80);
  }
  if ((param_2 == 0) && (0 < (int)(&DAT_182bbb1b4)[(longlong)param_1 * 0x6e0])) {
    return *(undefined4 *)
            (&DAT_182bbb4b4 +
            (longlong)*(int *)(&DAT_182bbb1b8 + (longlong)param_1 * 0x1b80) * 0x1b80);
  }
  return 0xffffffff;
}



===== FUN_1400c6980 @ 1400c6980 root=true =====

void FUN_1400c6980(int param_1)

{
  int iVar1;
  longlong lVar2;
  longlong lVar3;
  int iVar4;
  
  lVar3 = (longlong)param_1;
  if ((0 < (int)(&DAT_182bbcbec)[lVar3 * 0x6e0]) &&
     (iVar1 = (&DAT_182bbcbec)[lVar3 * 0x6e0] + -1, (&DAT_182bbcbec)[lVar3 * 0x6e0] = iVar1,
     iVar1 == 0)) {
    iVar1 = FUN_14023b1b0();
    iVar4 = 0;
    iVar1 = iVar1 % 0x1a;
    lVar2 = lVar3 * 0x6e0;
    do {
      if ((*(int *)(&DAT_182bbcae8 + (*(int *)(&DAT_182bbc9e8 + (iVar1 + lVar2) * 4) + lVar2) * 4)
           != 0) &&
         (*(int *)(&DAT_182bbcb68 + (*(int *)(&DAT_182bbc9e8 + (iVar1 + lVar2) * 4) + lVar2) * 4) ==
          -1)) break;
      iVar1 = FUN_14023b1b0();
      iVar4 = iVar4 + 1;
      iVar1 = iVar1 % 0x1a;
    } while (iVar4 < 1000);
    *(int *)(&DAT_182bbcb68 + (*(int *)(&DAT_182bbc9e8 + (iVar1 + lVar2) * 4) + lVar2) * 4) = iVar1;
    FUN_1400c5750(param_1);
    (&DAT_182bbb534)[lVar3 * 0x1b80] = 0;
    FUN_140050f90(param_1,1);
  }
  return;
}



===== FUN_14011e9b0 @ 14011e9b0 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_14011e9b0(void)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  float fVar11;
  undefined4 uVar12;
  longlong lVar13;
  longlong lVar14;
  longlong lVar15;
  float *pfVar16;
  undefined8 *puVar17;
  uint uVar18;
  longlong lVar19;
  undefined4 *puVar20;
  float *pfVar21;
  int *piVar22;
  int *piVar23;
  undefined8 *puVar24;
  ulonglong uVar25;
  undefined4 *puVar26;
  undefined4 *puVar27;
  int iVar28;
  uint uVar29;
  int iVar30;
  undefined4 *puVar31;
  ulonglong uVar32;
  longlong lVar33;
  int iVar34;
  undefined4 *puVar35;
  ulonglong uVar36;
  float fVar37;
  float fVar38;
  float fVar39;
  float fVar40;
  float fVar41;
  float fVar42;
  float fVar43;
  float fVar44;
  float fVar45;
  undefined1 auStack_d68 [32];
  float local_d48;
  float local_d40;
  float local_d38;
  undefined4 local_d30;
  float local_d28;
  float local_d24;
  float local_d20;
  ulonglong local_d18;
  int *local_d10;
  undefined8 local_d08;
  undefined8 uStack_d00;
  undefined8 local_cf8;
  undefined8 uStack_cf0;
  float local_ce8;
  undefined1 local_cd8 [8];
  float local_cd0 [766];
  ulonglong local_d8;
  
  local_d8 = DAT_1403020a0 ^ (ulonglong)auStack_d68;
  (*DAT_140404050)(0xde1,DAT_1abd4ac94);
  fVar1 = DAT_140278688;
  fVar11 = DAT_1402783f4;
  uVar10 = DAT_140278338;
  uVar25 = 0;
  uVar36 = uVar25;
  if (0 < DAT_16b265f7c) {
    do {
      (*DAT_1404043f8)(2,fVar11,0,uVar10);
      FUN_140125670((longlong)(int)uVar36 * 0xc + 0x16b265f80,fVar1,2);
      uVar18 = (int)uVar36 + 1;
      uVar36 = (ulonglong)uVar18;
    } while ((int)uVar18 < DAT_16b265f7c);
  }
  if ((DAT_16b165f68 != 0) &&
     ((*DAT_1404043f8)(2,fVar11,fVar11,0), uVar36 = uVar25, 0 < DAT_15b1ac800)) {
    do {
      FUN_140125670(&DAT_15b1ac808 + (longlong)(int)uVar36 * 5,fVar11,1);
      uVar18 = (int)uVar36 + 1;
      uVar36 = (ulonglong)uVar18;
    } while ((int)uVar18 < DAT_15b1ac800);
  }
  if (0 < DAT_16b1f5f74) {
    puVar26 = &DAT_16b1f5f90;
    uVar36 = uVar25;
    do {
      lVar19 = (longlong)(int)uVar36 * 0x1c;
      (*DAT_140404400)(2,&DAT_16b1f5f84 + lVar19);
      FUN_140125670(&DAT_16b1f5f78 + lVar19,*puVar26,2);
      uVar18 = (int)uVar36 + 1;
      uVar36 = (ulonglong)uVar18;
      puVar26 = puVar26 + 7;
    } while ((int)uVar18 < DAT_16b1f5f74);
  }
  if (0 < DAT_16b22df78) {
    puVar26 = &DAT_16b22df94;
    uVar36 = uVar25;
    do {
      lVar19 = (longlong)(int)uVar36 * 0x1c;
      (*DAT_140404400)(2,&DAT_16b22df88 + lVar19);
      FUN_140125670(&DAT_16b22df7c + lVar19,*puVar26,2);
      uVar18 = (int)uVar36 + 1;
      uVar36 = (ulonglong)uVar18;
      puVar26 = puVar26 + 7;
    } while ((int)uVar18 < DAT_16b22df78);
  }
  puVar26 = &DAT_18329e570;
  local_d18 = 0x100;
  puVar35 = &DAT_18329e52c;
  do {
    if (puVar26[-0x9a] != 0) {
      puVar31 = &DAT_18399df3c;
      lVar19 = 0x10;
      puVar20 = puVar26;
      puVar27 = puVar35;
      do {
        local_d08 = *(undefined8 *)(puVar20 + -5);
        uStack_d00 = *(undefined8 *)(puVar20 + -3);
        local_d48 = (float)puVar31[1];
        local_cf8 = *(undefined8 *)(puVar20 + -1);
        uStack_cf0 = *(undefined8 *)(puVar20 + 1);
        local_ce8 = (float)puVar20[3];
        FUN_14007e2a0(puVar27,&local_d08,puVar31[-1],*puVar31);
        puVar27 = puVar27 + 0x4e;
        puVar20 = puVar20 + 0x4e;
        puVar31 = puVar31 + 0x19;
        lVar19 = lVar19 + -1;
      } while (lVar19 != 0);
    }
    uVar12 = DAT_1402785b8;
    uVar8 = DAT_1402784b0;
    fVar1 = DAT_140278478;
    uVar9 = DAT_140278224;
    puVar35 = puVar35 + 0x1bfe;
    puVar26 = puVar26 + 0x1bfe;
    local_d18 = local_d18 + -1;
  } while (local_d18 != 0);
  local_d18 = 0;
  if (0 < DAT_15fe95260) {
    pfVar21 = (float *)&DAT_15fd16278;
    uVar36 = uVar25;
    do {
      local_ce8 = 1.0;
      local_d08 = CONCAT44(_UNK_140278d34,_DAT_140278d30);
      uStack_d00 = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
      local_cf8 = CONCAT44(_UNK_140278d34,_DAT_140278d30);
      uStack_cf0 = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
      FUN_14007b2a0(&local_d08,(longlong)&uStack_d00 + 4,uVar8);
      FUN_14007b2a0(&local_d08,(longlong)&uStack_d00 + 4,pfVar21[4]);
      iVar28 = (int)uVar36;
      FUN_140125670(&DAT_15fd16270 + (longlong)iVar28 * 0x17f,uVar9,1);
      local_d28 = pfVar21[-2] - (float)uStack_cf0 * fVar1;
      local_d30 = 0;
      local_d38 = 0.0;
      local_d24 = pfVar21[-1] - uStack_cf0._4_4_ * fVar1;
      local_d40 = fVar11;
      local_d48 = (float)uVar12;
      local_d20 = *pfVar21 - local_ce8 * fVar1;
      FUN_14007e010(&local_d28,&local_d08,fVar11,fVar11);
      if (iVar28 == DAT_16b2a2220) {
        local_d30 = 0;
        local_d38 = fVar11;
        local_d40 = fVar11;
        local_d48 = (float)uVar12;
        FUN_14007e010(&local_d28,&local_d08,fVar11,uVar12);
      }
      uVar36 = (ulonglong)(iVar28 + 1U);
      pfVar21 = pfVar21 + 0x17f;
    } while ((int)(iVar28 + 1U) < DAT_15fe95260);
  }
  puVar26 = &DAT_183ebfd60;
  lVar19 = 6;
  do {
    FUN_14007ddf0(puVar26,puVar26 + 3);
    FUN_14007ddf0(puVar26 + 6,puVar26 + 9);
    puVar26 = puVar26 + 0x16f1;
    lVar19 = lVar19 + -1;
  } while (lVar19 != 0);
  puVar26 = &DAT_1b4657dbc;
  lVar19 = 8;
  do {
    local_d48 = fVar11;
    (*DAT_140404468)(2,uVar10,uVar10,0);
    FUN_140125670(puVar26,fVar11,2);
    uVar18 = DAT_140279870;
    fVar1 = DAT_1402783a0;
    uVar8 = DAT_140278178;
    puVar26 = puVar26 + 0x13;
    lVar19 = lVar19 + -1;
  } while (lVar19 != 0);
  piVar22 = &DAT_182bbb194;
  do {
    if (piVar22[-5] != 0) {
      lVar19 = (longlong)*piVar22;
      local_d48 = fVar1;
      (*DAT_140404468)(2,uVar10,uVar10,0);
      uVar36 = uVar25;
      if (piVar22[-4] != 0) {
        local_d48 = fVar1;
        (*DAT_140404468)(2,0,fVar11,fVar11);
      }
      do {
        uVar29 = (uint)uVar36;
        if (((uVar36 & 3) == 0) || ((uVar29 & 3) == 3)) {
          fVar37 = (float)((&DAT_182a7e284)[lVar19 * 0x4f4] ^ uVar18);
        }
        else {
          fVar37 = (float)(&DAT_182a7e284)[lVar19 * 0x4f4];
        }
        fVar39 = (float)(&DAT_182a7e288)[lVar19 * 0x4f4];
        if (uVar29 < 4) {
          fVar39 = (float)((uint)fVar39 ^ uVar18);
        }
        fVar40 = (float)(&DAT_182a7e28c)[lVar19 * 0x4f4];
        if ((uVar29 & 3) < 2) {
          fVar40 = (float)((uint)fVar40 ^ uVar18);
        }
        local_d24 = fVar37 * (float)piVar22[0x25] + (float)piVar22[0x13] +
                    fVar39 * (float)piVar22[0x28] + fVar40 * (float)piVar22[0x2b];
        local_d28 = fVar37 * (float)piVar22[0x24] + (float)piVar22[0x12] +
                    fVar39 * (float)piVar22[0x27] + fVar40 * (float)piVar22[0x2a];
        local_d20 = fVar37 * (float)piVar22[0x26] + (float)piVar22[0x14] +
                    fVar39 * (float)piVar22[0x29] + fVar40 * (float)piVar22[0x2c];
        FUN_140125670(&local_d28,uVar8,1);
        uVar36 = (ulonglong)(uVar29 + 1);
      } while ((int)(uVar29 + 1) < 8);
    }
    piVar22 = piVar22 + 0x6e0;
  } while ((longlong)piVar22 < 0x18329b194);
  (*DAT_140404050)(0xde1,DAT_1abd4ac94);
  fVar39 = DAT_14027824c;
  fVar37 = DAT_140278248;
  fVar1 = DAT_1402781b8;
  DAT_1ad059440 = 0;
  DAT_1ad059448 = 0;
  DAT_1ad05944c = 9;
  local_d18 = local_d18 & 0xffffffff00000000;
  _DAT_1ad299450 = CONCAT44(_UNK_140279654,_DAT_140279650);
  _DAT_1ad299458 = CONCAT44(_UNK_14027965c,_UNK_140279658);
  if (0 < DAT_1a4bf08e0) {
    piVar22 = &DAT_195ad38f8;
    local_d10 = &DAT_195ad3920;
    uVar36 = uVar25;
    iVar28 = DAT_1a4bf08e0;
    do {
      iVar30 = 0;
      iVar34 = (int)uVar25;
      if (0 < *piVar22) {
        lVar19 = (longlong)(int)uVar25 * 0x1418;
        piVar23 = local_d10;
        do {
          lVar13 = (longlong)piVar23[1] + uVar36;
          lVar14 = (longlong)*piVar23 + uVar36;
          lVar33 = uVar36 + (longlong)piVar23[-1];
          fVar38 = *(float *)(&DAT_195ad08fc + lVar13 * 0xc) -
                   *(float *)(&DAT_195ad08fc + lVar33 * 0xc);
          fVar44 = *(float *)(&DAT_195ad0900 + lVar13 * 0xc) -
                   *(float *)(&DAT_195ad0900 + lVar33 * 0xc);
          fVar40 = *(float *)(&DAT_195ad0900 + lVar14 * 0xc) -
                   *(float *)(&DAT_195ad0900 + lVar33 * 0xc);
          fVar45 = *(float *)(&DAT_195ad08f8 + lVar13 * 0xc) -
                   *(float *)(&DAT_195ad08f8 + lVar33 * 0xc);
          fVar42 = *(float *)(&DAT_195ad08f8 + lVar14 * 0xc) -
                   *(float *)(&DAT_195ad08f8 + lVar33 * 0xc);
          fVar41 = *(float *)(&DAT_195ad08fc + lVar14 * 0xc) -
                   *(float *)(&DAT_195ad08fc + lVar33 * 0xc);
          fVar43 = fVar38 * fVar40 - fVar44 * fVar41;
          fVar44 = fVar44 * fVar42 - fVar45 * fVar40;
          fVar38 = fVar45 * fVar41 - fVar38 * fVar42;
          fVar40 = SQRT(fVar44 * fVar44 + fVar43 * fVar43 + fVar38 * fVar38);
          if (fVar40 == 0.0) {
            fVar43 = 0.0;
            fVar44 = 0.0;
            fVar38 = 0.0;
          }
          else {
            fVar40 = fVar11 / fVar40;
            fVar43 = fVar43 * fVar40;
            fVar44 = fVar44 * fVar40;
            fVar38 = fVar38 * fVar40;
          }
          fVar40 = fVar43 * DAT_18417de78 + fVar44 * DAT_18417de7c + fVar38 * DAT_18417de80;
          if (fVar40 <= 0.0) {
            fVar40 = 0.0;
          }
          if (((char)uVar25 * '\x02' + (char)iVar30 & 3U) < 2) {
            fVar38 = fVar40 * fVar37 + fVar1;
            fVar40 = fVar40 * fVar39 + DAT_1402781bc;
          }
          else {
            fVar38 = fVar40 * _DAT_140278294 + _DAT_1402781e0;
            fVar40 = fVar40 * DAT_140278298 + DAT_1402781e4;
          }
          _DAT_1ad299458 = CONCAT44(0x3f800000,fVar40);
          _DAT_1ad299450 = CONCAT44(fVar40,fVar38);
          FUN_14007d520(&DAT_195ad08f8 + (piVar23[-1] + lVar19) * 0xc);
          FUN_14007d520(&DAT_195ad08f8 + (*piVar23 + lVar19) * 0xc);
          FUN_14007d520(&DAT_195ad08f8 + (piVar23[1] + lVar19) * 0xc);
          iVar30 = iVar30 + 1;
          piVar23 = piVar23 + 3;
        } while (iVar30 < *piVar22);
        iVar28 = DAT_1a4bf08e0;
        iVar34 = (int)local_d18;
      }
      uVar18 = iVar34 + 1;
      uVar25 = (ulonglong)uVar18;
      local_d10 = local_d10 + 0x3c48;
      uVar36 = uVar36 + 0x1418;
      local_d18 = CONCAT44(local_d18._4_4_,uVar18);
      piVar22 = piVar22 + 0x3c48;
    } while ((int)uVar18 < iVar28);
  }
  uVar36 = 0;
  FUN_14006e0d0();
  pfVar21 = (float *)&DAT_15f2d9230;
  _DAT_1ad299450 = CONCAT44(_UNK_1402794a4,_DAT_1402794a0);
  _DAT_1ad299458 = CONCAT44(_UNK_1402794ac,_UNK_1402794a8);
  DAT_1ad059440 = 2;
  DAT_1ad059448 = 0;
  DAT_1ad05944c = 9;
  do {
    if (pfVar21[-0xc] != 0.0) {
      lVar19 = (longlong)(int)pfVar21[-0xb];
      lVar13 = lVar19 * 0x2c040;
      lVar33 = (longlong)*(int *)(&DAT_19028ec54 + lVar13);
      uVar25 = uVar36;
      if (3 < lVar33) {
        fVar1 = pfVar21[5];
        fVar37 = pfVar21[-1];
        pfVar16 = local_cd0;
        fVar39 = pfVar21[6];
        fVar40 = *pfVar21;
        fVar38 = pfVar21[7];
        fVar41 = pfVar21[1];
        lVar15 = (lVar33 - 4U >> 2) + 1;
        uVar25 = lVar15 * 4;
        lVar14 = lVar19 * 0x3ab0;
        do {
          fVar42 = *(float *)(&DAT_19028ec58 + lVar14 * 0xc);
          fVar43 = *(float *)(&DAT_19028ec5c + lVar14 * 0xc);
          fVar44 = *(float *)(&DAT_19028ec60 + lVar14 * 0xc);
          fVar45 = pfVar21[9];
          fVar2 = pfVar21[10];
          fVar3 = pfVar21[0xc];
          fVar4 = pfVar21[0xd];
          fVar5 = *(float *)(&DAT_19028ec68 + lVar14 * 0xc);
          pfVar16[-2] = fVar42 * fVar1 + fVar37 + fVar43 * pfVar21[8] + fVar44 * pfVar21[0xb];
          fVar6 = pfVar21[8];
          fVar7 = *(float *)(&DAT_19028ec6c + lVar14 * 0xc);
          pfVar16[-1] = fVar42 * fVar39 + fVar40 + fVar43 * fVar45 + fVar44 * fVar3;
          fVar45 = pfVar21[0xb];
          *pfVar16 = fVar42 * fVar38 + fVar41 + fVar43 * fVar2 + fVar44 * fVar4;
          fVar42 = *(float *)(&DAT_19028ec64 + lVar14 * 0xc);
          fVar43 = pfVar21[9];
          fVar44 = pfVar21[10];
          fVar2 = pfVar21[0xc];
          fVar3 = pfVar21[0xd];
          fVar4 = *(float *)(&DAT_19028ec74 + lVar14 * 0xc);
          pfVar16[1] = fVar42 * fVar1 + fVar37 + fVar5 * fVar6 + fVar7 * fVar45;
          fVar45 = pfVar21[8];
          fVar6 = *(float *)(&DAT_19028ec78 + lVar14 * 0xc);
          pfVar16[2] = fVar42 * fVar39 + fVar40 + fVar5 * fVar43 + fVar7 * fVar2;
          fVar43 = pfVar21[0xb];
          pfVar16[3] = fVar42 * fVar38 + fVar41 + fVar5 * fVar44 + fVar7 * fVar3;
          fVar42 = *(float *)(&DAT_19028ec70 + lVar14 * 0xc);
          fVar44 = pfVar21[9];
          pfVar16[4] = fVar42 * fVar1 + fVar37 + fVar4 * fVar45 + fVar6 * fVar43;
          fVar43 = pfVar21[10];
          fVar45 = pfVar21[0xd];
          fVar2 = *(float *)(&DAT_19028ec80 + lVar14 * 0xc);
          fVar3 = *(float *)(&DAT_19028ec84 + lVar14 * 0xc);
          pfVar16[5] = fVar42 * fVar39 + fVar40 + fVar4 * fVar44 + fVar6 * pfVar21[0xc];
          fVar44 = pfVar21[8];
          pfVar16[6] = fVar42 * fVar38 + fVar41 + fVar4 * fVar43 + fVar6 * fVar45;
          fVar42 = *(float *)(&DAT_19028ec7c + lVar14 * 0xc);
          local_d28 = fVar37 + fVar42 * fVar1 + fVar2 * fVar44;
          local_d20 = fVar42 * fVar38 + fVar41 + fVar2 * pfVar21[10];
          local_d24 = fVar42 * fVar39 + fVar40 + fVar2 * pfVar21[9];
          pfVar16[7] = fVar3 * pfVar21[0xb] + fVar2 * fVar44 + fVar37 + fVar42 * fVar1;
          fVar42 = pfVar21[0xd];
          pfVar16[8] = fVar3 * pfVar21[0xc] + local_d24;
          pfVar16[9] = fVar3 * fVar42 + local_d20;
          pfVar16 = pfVar16 + 0xc;
          lVar15 = lVar15 + -1;
          lVar14 = lVar14 + 4;
        } while (lVar15 != 0);
      }
      if ((longlong)uVar25 < lVar33) {
        fVar1 = pfVar21[5];
        fVar37 = pfVar21[-1];
        fVar39 = pfVar21[6];
        pfVar16 = local_cd0 + uVar25 * 3;
        fVar40 = *pfVar21;
        fVar38 = pfVar21[7];
        fVar41 = pfVar21[1];
        lVar33 = lVar33 - uVar25;
        lVar19 = lVar19 * 0x3ab0 + uVar25;
        do {
          fVar42 = *(float *)(&DAT_19028ec5c + lVar19 * 0xc);
          fVar43 = *(float *)(&DAT_19028ec58 + lVar19 * 0xc);
          fVar44 = *(float *)(&DAT_19028ec60 + lVar19 * 0xc);
          local_d28 = fVar37 + fVar43 * fVar1 + fVar42 * pfVar21[8];
          local_d20 = fVar43 * fVar38 + fVar41 + fVar42 * pfVar21[10];
          local_d24 = fVar43 * fVar39 + fVar40 + fVar42 * pfVar21[9];
          pfVar16[-2] = fVar44 * pfVar21[0xb] + fVar42 * pfVar21[8] + fVar37 + fVar43 * fVar1;
          fVar42 = pfVar21[0xd];
          pfVar16[-1] = fVar44 * pfVar21[0xc] + local_d24;
          *pfVar16 = fVar44 * fVar42 + local_d20;
          pfVar16 = pfVar16 + 3;
          lVar33 = lVar33 + -1;
          lVar19 = lVar19 + 1;
        } while (lVar33 != 0);
      }
      if (0 < *(int *)(&DAT_190291c58 + lVar13)) {
        piVar22 = (int *)(&DAT_190291c68 + lVar13);
        uVar25 = uVar36;
        do {
          if (piVar22[-2] == 4) {
            FUN_14007d520(local_cd8 + (longlong)piVar22[-1] * 0xc);
            FUN_14007d520(local_cd8 + (longlong)*piVar22 * 0xc);
            FUN_14007d520(local_cd8 + (longlong)*piVar22 * 0xc);
            FUN_14007d520(local_cd8 + (longlong)piVar22[1] * 0xc);
            FUN_14007d520(local_cd8 + (longlong)piVar22[1] * 0xc);
            FUN_14007d520(local_cd8 + (longlong)piVar22[2] * 0xc);
            FUN_14007d520(local_cd8 + (longlong)piVar22[2] * 0xc);
            FUN_14007d520(local_cd8 + (longlong)piVar22[-1] * 0xc);
          }
          uVar18 = (int)uVar25 + 1;
          uVar25 = (ulonglong)uVar18;
          piVar22 = piVar22 + 6;
        } while ((int)uVar18 < *(int *)(&DAT_190291c58 + lVar13));
      }
    }
    pfVar21 = pfVar21 + 0x145a;
  } while ((longlong)pfVar21 < 0x15fd06230);
  FUN_14006e0d0();
  puVar24 = (undefined8 *)&DAT_15f2d924c;
  do {
    if ((*(int *)((longlong)puVar24 + -0x4c) != 0) && (0 < *(int *)((longlong)puVar24 + 0x38f4))) {
      pfVar21 = (float *)((longlong)puVar24 + 0x394c);
      uVar25 = uVar36;
      do {
        local_d24 = pfVar21[-1];
        local_d28 = pfVar21[-2];
        local_d08 = puVar24[-1];
        uStack_d00 = *puVar24;
        local_d20 = *pfVar21;
        local_cf8 = puVar24[1];
        uStack_cf0 = puVar24[2];
        local_ce8 = *(float *)(puVar24 + 3);
        FUN_14007b2a0(&local_d08,(longlong)&uStack_d00 + 4,pfVar21[-3]);
        FUN_14007b2a0(&local_d08,&local_d08,pfVar21[-4]);
        if (DAT_16b27ecf4 == 0) {
          puVar17 = &local_d08;
          pfVar16 = &local_d28;
        }
        else {
          puVar17 = (undefined8 *)(&DAT_14498171c + (longlong)(int)pfVar21[-0x15] * 0x2f);
          pfVar16 = (float *)(&DAT_1449816f8 + (longlong)(int)pfVar21[-0x15] * 0x2f);
        }
        FUN_14007e9d0(pfVar16,puVar17,pfVar21[-8],uVar9);
        uVar18 = (int)uVar25 + 1;
        uVar25 = (ulonglong)uVar18;
        pfVar21 = pfVar21 + 0x2b;
      } while ((int)uVar18 < *(int *)((longlong)puVar24 + 0x38f4));
    }
    fVar1 = DAT_140278688;
    puVar24 = puVar24 + 0xa2d;
  } while ((longlong)puVar24 < 0x15fd0624c);
  _DAT_1ad299450 = CONCAT44(_UNK_140279554,_DAT_140279550);
  _DAT_1ad299458 = CONCAT44(_UNK_14027955c,_UNK_140279558);
  DAT_1ad059440 = 2;
  DAT_1ad059448 = 0;
  DAT_1ad05944c = 9;
  if (DAT_16b165f68 != 0) {
    if ((DAT_16b2a2220 != -1) &&
       (lVar19 = (longlong)DAT_16b2a2220 * 0x5fc, uVar25 = uVar36, uVar32 = uVar36,
       0 < *(int *)(&DAT_15fd162e8 + lVar19))) {
      do {
        _DAT_1ad299450 = _DAT_1402794e0;
        _DAT_1ad299458 = _UNK_1402794e8;
        if (*(int *)(&DAT_15fd16310 + lVar19 + uVar25) == -1) {
LAB_14011f9de:
          _DAT_1ad299458 = CONCAT44((int)((ulonglong)_UNK_1402794e8 >> 0x20),0x3f800000);
        }
        else if (*(int *)(&DAT_15fd16310 + lVar19 + uVar25) == 1) {
          _DAT_1ad299450 = _DAT_1402794e0 & 0xffffffff00000000;
          goto LAB_14011f9de;
        }
        lVar19 = (longlong)
                 (int)(&DAT_175ff348c)[(longlong)*(int *)(&DAT_15fd162ec + lVar19 + uVar25) * 0x18c]
        ;
        local_d28 = (float)(&DAT_175fd1470)[lVar19 * 0x22];
        local_d20 = (float)(&DAT_175fd1478)[lVar19 * 0x22];
        local_d24 = (float)(&DAT_175fd1474)[lVar19 * 0x22] + fVar1;
        FUN_14007d520(&local_d28);
        lVar19 = (longlong)
                 (int)(&DAT_175ff3490)
                      [(longlong)*(int *)(&DAT_15fd162ec + (longlong)DAT_16b2a2220 * 0x5fc + uVar25)
                       * 0x18c];
        local_d28 = (float)(&DAT_175fd1470)[lVar19 * 0x22];
        local_d20 = (float)(&DAT_175fd1478)[lVar19 * 0x22];
        local_d24 = (float)(&DAT_175fd1474)[lVar19 * 0x22] + fVar1;
        FUN_14007d520(&local_d28);
        uVar18 = (int)uVar32 + 1;
        lVar19 = (longlong)DAT_16b2a2220 * 0x5fc;
        uVar25 = uVar25 + 0x14;
        uVar32 = (ulonglong)uVar18;
      } while ((int)uVar18 < *(int *)(&DAT_15fd162e8 + lVar19));
    }
    if (0 < DAT_175ff3464) {
      piVar22 = &DAT_175ff34a0;
      uVar25 = uVar36;
      iVar28 = DAT_175ff3464;
      do {
        iVar34 = (int)uVar25;
        if (0 < *piVar22) {
          uVar25 = uVar36;
          do {
            iVar30 = (int)uVar25;
            _DAT_1ad299450 = CONCAT44(_UNK_140279664,_DAT_140279660);
            _DAT_1ad299458 = CONCAT44(_UNK_14027966c,_UNK_140279668);
            FUN_14007d520(&DAT_175ff34a8 + (longlong)iVar34 * 0x18c + (longlong)iVar30 * 7);
            FUN_14007d520(&DAT_175ff34b4 + (longlong)iVar34 * 0x18c + (longlong)iVar30 * 7);
            uVar25 = (ulonglong)(iVar30 + 1U);
            iVar28 = DAT_175ff3464;
          } while ((int)(iVar30 + 1U) < *piVar22);
        }
        uVar25 = (ulonglong)(iVar34 + 1U);
        piVar22 = piVar22 + 0x18c;
      } while ((int)(iVar34 + 1U) < iVar28);
    }
    piVar22 = &DAT_1b4287c84;
    _DAT_1ad299450 = CONCAT44(_UNK_140279554,_DAT_140279550);
    _DAT_1ad299458 = CONCAT44(_UNK_14027955c,_UNK_140279558);
    do {
      if ((piVar22[-1] != 0) && (*piVar22 == 0)) {
        _DAT_1ad299450 = CONCAT44(_UNK_140279554,_DAT_140279550);
        _DAT_1ad299458 = CONCAT44(_UNK_14027955c,_UNK_140279558);
        FUN_14007d520(&DAT_151a84934 + (longlong)piVar22[5] * 0x3c);
        FUN_14007d520(&DAT_151a84934 + (longlong)piVar22[6] * 0x3c);
      }
      piVar22 = piVar22 + 0x3d;
    } while ((longlong)piVar22 < 0x1b4657c84);
    if (0 < DAT_16b165f70) {
      puVar26 = &DAT_16b165f94;
      do {
        _DAT_1ad299450 = *(ulonglong *)(puVar26 + -2);
        iVar28 = (int)uVar36;
        _DAT_1ad299458 = CONCAT44(0x3f800000,*puVar26);
        FUN_14007d520(&DAT_16b165f74 + (longlong)iVar28 * 0x24);
        FUN_14007d520(&DAT_16b165f80 + (longlong)iVar28 * 0x24);
        uVar36 = (ulonglong)(iVar28 + 1U);
        puVar26 = puVar26 + 9;
      } while ((int)(iVar28 + 1U) < DAT_16b165f70);
    }
  }
  FUN_14006e0d0();
  piVar22 = &DAT_1449816e4;
  lVar19 = 0x2000;
  puVar26 = &DAT_1449816f8;
  do {
    if ((piVar22[-1] != 0) && (*piVar22 == 1)) {
      local_d48 = (float)piVar22[0x2c];
      local_d30 = 0;
      local_d38 = fVar11;
      local_d40 = 0.0;
      FUN_14007e010(puVar26,puVar26 + 9,piVar22[0x2a],piVar22[0x2b]);
    }
    puVar26 = puVar26 + 0x2f;
    piVar22 = piVar22 + 0x2f;
    lVar19 = lVar19 + -1;
  } while (lVar19 != 0);
  return;
}



===== FUN_1400c6b30 @ 1400c6b30 root=true =====

void FUN_1400c6b30(undefined1 *param_1,int param_2,int param_3)

{
  char *pcVar1;
  char cVar2;
  int iVar3;
  undefined2 *puVar4;
  undefined1 *puVar5;
  longlong lVar6;
  int iVar7;
  longlong lVar8;
  int iVar9;
  int *piVar10;
  
  if (param_3 == 2) {
    lVar8 = (longlong)param_2 * 0x1b80;
    iVar7 = *(int *)(&DAT_182bbb4b4 + lVar8);
  }
  else {
    if ((param_3 != 0) ||
       (lVar8 = (longlong)param_2 * 0x1b80, (int)(&DAT_182bbb1b4)[(longlong)param_2 * 0x6e0] < 1))
    goto LAB_1400c6c69;
    iVar7 = *(int *)(&DAT_182bbb4b4 + (longlong)*(int *)(&DAT_182bbb1b8 + lVar8) * 0x1b80);
  }
  if (iVar7 != -1) {
    FUN_140158ab0(param_1,&DAT_140275ee0,param_3 + 0x41);
    iVar9 = 1;
    lVar8 = lVar8 + (longlong)param_3 * 0x48;
    if (*(int *)(&DAT_182bbc57c + lVar8) < 1) {
      return;
    }
    piVar10 = (int *)(&DAT_182bbc584 + lVar8);
    do {
      iVar3 = *piVar10;
      puVar5 = param_1 + -1;
      do {
        pcVar1 = puVar5 + 1;
        puVar5 = puVar5 + 1;
      } while (*pcVar1 != '\0');
      lVar6 = 0;
      do {
        cVar2 = (&DAT_181feebcc)[lVar6 + (longlong)iVar3 * 0x10 + (longlong)iVar7 * 0x2828];
        puVar5[lVar6] = cVar2;
        lVar6 = lVar6 + 1;
      } while (cVar2 != '\0');
      iVar3 = *(int *)(&DAT_182bbc57c + lVar8);
      if (iVar9 < iVar3) {
        puVar4 = (undefined2 *)(param_1 + -1);
        do {
          pcVar1 = (char *)((longlong)puVar4 + 1);
          puVar4 = (undefined2 *)((longlong)puVar4 + 1);
        } while (*pcVar1 != '\0');
        *puVar4 = DAT_140275ee8;
        iVar3 = *(int *)(&DAT_182bbc57c + lVar8);
      }
      iVar9 = iVar9 + 1;
      piVar10 = piVar10 + 1;
    } while (iVar9 <= iVar3);
    return;
  }
LAB_1400c6c69:
  *param_1 = 0;
  return;
}



===== FUN_1400f6c50 @ 1400f6c50 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400f6c50(void)

{
  bool bVar1;
  bool bVar2;
  float fVar3;
  float fVar4;
  undefined4 uVar5;
  uint uVar6;
  int iVar7;
  byte bVar8;
  int iVar9;
  uint uVar10;
  int iVar11;
  int iVar12;
  ulonglong uVar13;
  float *pfVar14;
  int *piVar15;
  longlong lVar16;
  ulonglong uVar17;
  longlong lVar18;
  ulonglong uVar19;
  float *pfVar20;
  int *piVar21;
  uint uVar22;
  ulonglong uVar23;
  int iVar24;
  int iVar25;
  int iVar26;
  longlong lVar27;
  undefined4 *puVar28;
  undefined4 uVar29;
  undefined **ppuVar30;
  ulonglong uVar31;
  float fVar32;
  float fVar33;
  float fVar34;
  float fVar35;
  undefined1 auStack_348 [32];
  undefined4 local_328;
  undefined4 local_320;
  float local_318;
  float local_314;
  float local_310;
  longlong local_308;
  int *local_300;
  undefined8 local_2f8;
  undefined8 uStack_2f0;
  undefined8 local_2e8;
  undefined8 uStack_2e0;
  float local_2d8;
  char local_2c8 [512];
  ulonglong local_c8;
  
  local_c8 = DAT_1403020a0 ^ (ulonglong)auStack_348;
  piVar15 = &DAT_151620ce8;
  lVar18 = 0x100;
  do {
    if ((piVar15[-0x22] != 0) && (0 < *piVar15)) {
      *piVar15 = *piVar15 + -1;
    }
    iVar9 = DAT_183ebfcd4;
    fVar4 = DAT_1402784b0;
    fVar3 = DAT_140278280;
    fVar32 = DAT_140278164;
    piVar15 = piVar15 + 0xe0d;
    lVar18 = lVar18 + -1;
  } while (lVar18 != 0);
  if (DAT_183ebfccc != 1) {
    if (DAT_183ebfccc != 2) {
      if (DAT_183ebfccc != 3) {
        return;
      }
      DAT_183ebfcd4 = DAT_183ebfcd4 + -1;
      if (DAT_183ebfcd4 == 0x4e2) {
        FUN_1400f0160(0xffffffff);
      }
      if (DAT_183ebfcd4 == 0x4b0) {
        FUN_1400f0160(0);
      }
      if (DAT_183ebfcd4 == 0x438) {
        FUN_1400f0160(1);
      }
      if (DAT_183ebfcd4 == 0x3c0) {
        FUN_1400f0160(2);
      }
      local_308 = 3;
      if (DAT_183ebfcd4 == 0x348) {
        FUN_1400f0160();
      }
      if (DAT_183ebfcd4 == 0x2d0) {
        FUN_1400f0160(4);
      }
      if (DAT_183ebfcd4 == 600) {
        FUN_1400f0160(5);
      }
      if (DAT_183ebfcd4 == 0x1e0) {
        FUN_1400f0160(6);
      }
      if (DAT_183ebfcd4 == 0x168) {
        FUN_1400f0160(7);
      }
      if (DAT_183ebfcd4 == 0xf0) {
        FUN_1400f0160(8);
      }
      if (DAT_183ebfcd4 == 0x78) {
        FUN_1400f0160(9);
      }
      if (0 < DAT_183ebfcd4) {
        return;
      }
      puVar28 = &DAT_151620cf0;
      iVar9 = 0;
      do {
        if (puVar28[-0x24] != 0) {
          *puVar28 = 0;
        }
        if (puVar28[0xde9] != 0) {
          puVar28[0xe0d] = 0;
        }
        puVar28 = puVar28 + 0x1c1a;
      } while ((longlong)puVar28 < 0x1519a40f0);
      piVar15 = &DAT_183ebfdc4;
      iVar24 = 0;
      pfVar20 = (float *)&DAT_19021f0c4;
      iVar12 = DAT_183ebfcb0;
      do {
        lVar18 = -1;
        lVar16 = 2;
        iVar11 = -1;
        iVar25 = 0;
        piVar21 = &DAT_151620ce4;
        iVar26 = 2;
        do {
          if ((piVar21[-0x21] != 0) && (*piVar21 == iVar24)) {
            if (iVar12 == 1) {
              if ((piVar21[-0x12] != -1) &&
                 (iVar7 = (&DAT_160361384)[(longlong)piVar21[-0x12] * 0x1c],
                 iVar25 < (int)(&DAT_160361384)[(longlong)piVar21[-0x12] * 0x1c])) {
LAB_1400f7dfd:
                iVar25 = iVar7;
                lVar18 = lVar16 + -2;
                iVar11 = iVar26 + -2;
              }
            }
            else {
              fVar32 = (float)piVar21[2] * *pfVar20 + (float)piVar21[-0xe];
              if ((float)iVar25 < fVar32) {
                iVar7 = (int)fVar32;
                goto LAB_1400f7dfd;
              }
            }
          }
          if ((piVar21[0xdec] != 0) && (piVar21[0xe0d] == iVar24)) {
            if (iVar12 == 1) {
              if ((piVar21[0xdfb] != -1) &&
                 (iVar7 = (&DAT_160361384)[(longlong)piVar21[0xdfb] * 0x1c],
                 iVar25 < (int)(&DAT_160361384)[(longlong)piVar21[0xdfb] * 0x1c])) {
LAB_1400f7e6f:
                iVar25 = iVar7;
                lVar18 = lVar16 + -1;
                iVar11 = iVar26 + -1;
              }
            }
            else {
              fVar32 = (float)piVar21[0xe0f] * *pfVar20 + (float)piVar21[0xdff];
              if ((float)iVar25 < fVar32) {
                iVar7 = (int)fVar32;
                goto LAB_1400f7e6f;
              }
            }
          }
          if ((piVar21[0x1bf9] != 0) && (piVar21[0x1c1a] == iVar24)) {
            if (iVar12 == 1) {
              if ((piVar21[0x1c08] != -1) &&
                 (iVar7 = (&DAT_160361384)[(longlong)piVar21[0x1c08] * 0x1c],
                 iVar25 < (int)(&DAT_160361384)[(longlong)piVar21[0x1c08] * 0x1c])) {
LAB_1400f7ee1:
                iVar25 = iVar7;
                lVar18 = lVar16;
                iVar11 = iVar26;
              }
            }
            else {
              fVar32 = (float)piVar21[0x1c1c] * *pfVar20 + (float)piVar21[0x1c0c];
              if ((float)iVar25 < fVar32) {
                iVar7 = (int)fVar32;
                goto LAB_1400f7ee1;
              }
            }
          }
          if ((piVar21[0x2a06] != 0) && (piVar21[0x2a27] == iVar24)) {
            if (iVar12 == 1) {
              if ((piVar21[0x2a15] != -1) &&
                 (iVar7 = (&DAT_160361384)[(longlong)piVar21[0x2a15] * 0x1c],
                 iVar25 < (int)(&DAT_160361384)[(longlong)piVar21[0x2a15] * 0x1c])) {
LAB_1400f7f51:
                iVar25 = iVar7;
                lVar18 = lVar16 + 1;
                iVar11 = iVar26 + 1;
              }
            }
            else {
              fVar32 = (float)piVar21[0x2a29] * *pfVar20 + (float)piVar21[0x2a19];
              if ((float)iVar25 < fVar32) {
                iVar7 = (int)fVar32;
                goto LAB_1400f7f51;
              }
            }
          }
          lVar16 = lVar16 + 4;
          piVar21 = piVar21 + 0x3834;
          iVar7 = iVar26 + 2;
          iVar26 = iVar26 + 4;
        } while (iVar7 < 0x100);
        if (iVar11 != -1) {
          (&DAT_151620cf0)[lVar18 * 0xe0d] = 1;
        }
        if (*piVar15 != iVar11) {
          *piVar15 = iVar11;
          piVar15[0x1616] = 0;
          iVar12 = DAT_183ebfcb0;
        }
        iVar24 = iVar24 + 1;
        pfVar20 = pfVar20 + 6;
        piVar15 = piVar15 + 0x16f1;
        local_308 = local_308 + -1;
        if (local_308 == 0) {
          piVar15 = &DAT_151623978;
          local_308 = 0;
          do {
            if ((piVar15[-0xb46] != 0) && (*piVar15 == 0)) {
              FUN_140117340(iVar9);
            }
            iVar9 = iVar9 + 1;
            piVar15 = piVar15 + 0xe0d;
          } while (iVar9 < 0x100);
          FUN_140127910();
          return;
        }
      } while( true );
    }
    iVar12 = DAT_183ebfcd4 + -1;
    iVar24 = DAT_183ebfcd8 + 1;
    DAT_183ebfcd4 = iVar12;
    DAT_183ebfcd8 = iVar24;
    if (iVar12 == (iVar12 / 0xe10) * 0xe10) {
      piVar15 = &DAT_151620ccc;
      lVar18 = 0x100;
      do {
        piVar15[-1] = 0;
        if (0 < *piVar15) {
          *piVar15 = *piVar15 + -1;
        }
        piVar15[1] = 0;
        piVar15 = piVar15 + 0xe0d;
        lVar18 = lVar18 + -1;
      } while (lVar18 != 0);
    }
    iVar11 = DAT_1ad04adc0;
    uVar29 = DAT_183ebfd34;
    piVar15 = &DAT_151620ce4;
    lVar18 = 0x400;
    if (0x1c1f < iVar24) {
      piVar21 = &DAT_182bbb180;
      bVar2 = true;
      lVar16 = 0x400;
      do {
        if ((*piVar21 != 0) && ((piVar21[5] == 0x11 || (piVar21[5] - 0x13U < 6)))) {
          fVar32 = (float)piVar21[0x17];
          bVar1 = false;
          if ((DAT_183ebfd60 <= fVar32) &&
             (((fVar32 < DAT_183ebfd6c && (DAT_183ebfd68 <= (float)piVar21[0x19])) &&
              (bVar1 = false, (float)piVar21[0x19] < DAT_183ebfd74)))) {
            bVar1 = true;
          }
          if (((DAT_183ec5924 <= fVar32) && (fVar32 < DAT_183ec5930)) &&
             ((DAT_183ec592c <= (float)piVar21[0x19] && ((float)piVar21[0x19] < DAT_183ec5938)))) {
            bVar1 = true;
          }
          if ((((fVar32 < DAT_183ecb4e8) || (DAT_183ecb4f4 <= fVar32)) ||
              (((float)piVar21[0x19] < DAT_183ecb4f0 || (DAT_183ecb4fc <= (float)piVar21[0x19]))))
             && (!bVar1)) {
            bVar2 = false;
          }
        }
        piVar21 = piVar21 + 0x6e0;
        lVar16 = lVar16 + -1;
      } while (lVar16 != 0);
      if (!bVar2) {
        iVar24 = 0;
        pfVar20 = &DAT_183ebfd6c;
        do {
          iVar26 = 0;
          piVar21 = &DAT_151620ce4;
          do {
            if ((((piVar21[-0x21] != 0) && (*piVar21 == iVar24)) &&
                (iVar25 = piVar21[6], iVar25 != -1)) &&
               ((((float)(&DAT_18329e388)[(longlong)iVar25 * 0x1bfe] < pfVar20[-3] ||
                 (*pfVar20 <= (float)(&DAT_18329e388)[(longlong)iVar25 * 0x1bfe])) ||
                (((float)(&DAT_18329e390)[(longlong)iVar25 * 0x1bfe] < pfVar20[-1] ||
                 (pfVar20[2] <= (float)(&DAT_18329e390)[(longlong)iVar25 * 0x1bfe]))))))
            goto LAB_1400f796b;
            iVar26 = iVar26 + 1;
            piVar21 = piVar21 + 0xe0d;
          } while (iVar26 < 0x100);
          iVar24 = iVar24 + 1;
          pfVar20 = pfVar20 + 0x16f1;
        } while ((longlong)pfVar20 < 0x183ed10b8);
        iVar12 = iVar9 + -10;
        DAT_183ebfcd4 = iVar12;
      }
    }
LAB_1400f796b:
    bVar2 = true;
    if (DAT_183ebfdc0 == 0) {
      piVar21 = &DAT_151620ce4;
      do {
        if (((piVar21[-0x21] != 0) && (*piVar21 == 0)) && (piVar21[6] != -1)) goto LAB_1400f79fe;
        piVar21 = piVar21 + 0xe0d;
      } while ((longlong)piVar21 < 0x1519a40e4);
      if (DAT_1ad04adc0 != 0) {
        lVar16 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar16 * 0x20] = 10;
        (&DAT_1873de464)[lVar16 * 0x20] = uVar29;
        (&DAT_1873de480)[lVar16 * 0x20] = 0;
        (&DAT_1873de484)[lVar16 * 0x20] = 1;
      }
      DAT_183ebfdc0 = 1;
    }
LAB_1400f79fe:
    if (DAT_183ec5984 == 0) {
      piVar21 = &DAT_151620ce4;
      do {
        if (((piVar21[-0x21] != 0) && (*piVar21 == 1)) && (piVar21[6] != -1)) goto LAB_1400f7a7c;
        piVar21 = piVar21 + 0xe0d;
      } while ((longlong)piVar21 < 0x1519a40e4);
      if (iVar11 != 0) {
        lVar16 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar16 * 0x20] = 10;
        (&DAT_1873de464)[lVar16 * 0x20] = uVar29;
        (&DAT_1873de480)[lVar16 * 0x20] = 1;
        (&DAT_1873de484)[lVar16 * 0x20] = 1;
      }
      DAT_183ec5984 = 1;
    }
LAB_1400f7a7c:
    if (DAT_183ecb548 == 0) {
      do {
        if (((piVar15[-0x21] != 0) && (*piVar15 == 2)) && (piVar15[6] != -1)) goto LAB_1400f7af6;
        piVar15 = piVar15 + 0xe0d;
      } while ((longlong)piVar15 < 0x1519a40e4);
      if (iVar11 != 0) {
        lVar16 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar16 * 0x20] = 10;
        (&DAT_1873de464)[lVar16 * 0x20] = uVar29;
        (&DAT_1873de480)[lVar16 * 0x20] = 2;
        (&DAT_1873de484)[lVar16 * 0x20] = 1;
      }
      DAT_183ecb548 = 1;
    }
LAB_1400f7af6:
    bVar1 = true;
    pfVar20 = (float *)&DAT_182bbb1dc;
    do {
      if ((pfVar20[-0x17] != 0.0) &&
         ((pfVar20[-0x12] == 2.38221e-44 || ((int)pfVar20[-0x12] - 0x13U < 6)))) {
        pfVar14 = (float *)&DAT_183ebfd84;
        do {
          if (((((pfVar14[-3] <= *pfVar20) && (*pfVar20 < *pfVar14)) && (pfVar14[-2] <= pfVar20[1]))
              && ((pfVar20[1] < pfVar14[1] && (pfVar14[-1] <= pfVar20[2])))) &&
             (pfVar20[2] < pfVar14[2])) goto LAB_1400f7b6b;
          pfVar14 = pfVar14 + 0x16f1;
        } while ((longlong)pfVar14 < 0x183ed10d0);
        bVar1 = false;
      }
LAB_1400f7b6b:
      pfVar20 = pfVar20 + 0x6e0;
      lVar18 = lVar18 + -1;
      if (lVar18 == 0) {
        if ((bVar1) && (DAT_183ebfcd4 = iVar12, 0x3c < iVar12)) {
          iVar12 = 0x3c;
          DAT_183ebfcd4 = 0x3c;
        }
        piVar15 = &DAT_151623978;
        do {
          if (((piVar15[-0xb46] != 0) && (*piVar15 == 0)) && (piVar15[-0xb1f] != -1)) {
            bVar2 = false;
          }
          piVar15 = piVar15 + 0xe0d;
        } while ((longlong)piVar15 < 0x1519a6d78);
        if ((bVar2) && (0x3c < iVar12)) {
          DAT_183ebfcd4 = 0x3c;
          return;
        }
        if (0 < iVar12) {
          return;
        }
        FUN_1400f3e60();
        DAT_183ebfccc = 3;
        DAT_183ebfcd4 = DAT_183ebfd30;
        return;
      }
    } while( true );
  }
  piVar15 = &DAT_151623978;
  uVar31 = 0;
  uVar10 = 1;
  uVar13 = uVar31;
  uVar23 = uVar31;
  do {
    if ((piVar15[-0xb46] != 0) && (*piVar15 == 0)) {
      uVar22 = piVar15[-0xb25];
      if (uVar22 < 3) {
        uVar13 = (ulonglong)((int)uVar13 + 1);
      }
      uVar6 = 0;
      if (piVar15[-0xb34] != 0) {
        uVar6 = uVar10;
      }
      uVar10 = uVar6;
      if ((((iVar9 < 0x1518) && (piVar15[-0xb1f] == -1)) && (uVar22 != 0xffffffff)) &&
         ((int)uVar22 < 3)) {
        lVar18 = (longlong)(int)uVar22 * 0x5bc4;
        fVar33 = *(float *)(&DAT_183ebfda0 + lVar18);
        fVar34 = *(float *)(&DAT_183ebfda4 + lVar18);
        fVar35 = *(float *)(&DAT_183ebfda8 + lVar18);
        bVar8 = FUN_14023b1b0();
        local_318 = (float)(int)(bVar8 - 0x7f) * fVar32 + fVar33;
        bVar8 = FUN_14023b1b0();
        local_314 = fVar34 - fVar3;
        local_2d8 = 1.0;
        local_310 = (float)(int)(bVar8 - 0x7f) * fVar32 + fVar35;
        fVar33 = (float)(&DAT_183ebfd90)[(longlong)piVar15[-0xb25] * 0x16f1] + fVar4;
        local_2f8 = CONCAT44(_UNK_140278d34,_DAT_140278d30);
        uStack_2f0 = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
        local_2e8 = CONCAT44(_UNK_140278d34,_DAT_140278d30);
        uStack_2e0 = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
        FUN_14007b2a0(&local_2f8,(longlong)&uStack_2f0 + 4,fVar33);
        iVar9 = piVar15[-0xb25];
        piVar15[0x2aa] = 1;
        if (piVar15[0x2ab] < 3) {
          piVar15[0x2ab] = iVar9;
        }
        if (iVar9 == 0) {
          piVar15[0x2ac] = 2;
        }
        else if (iVar9 == 1) {
          piVar15[0x2ac] = 9;
        }
        else if (iVar9 == 2) {
          piVar15[0x2ac] = 8;
        }
        iVar9 = FUN_140053840(&local_318,&local_2f8,uVar23);
        piVar15[-0xb1f] = iVar9;
        piVar15[-0xaed] = 0;
        (&DAT_18329e3a0)[(longlong)iVar9 * 0x1bfe] = fVar33;
        FUN_140051dc0(uVar23);
        FUN_140117020(uVar23);
        iVar9 = DAT_183ebfcd4;
      }
    }
    uVar29 = DAT_183ebfd34;
    uVar22 = (int)uVar23 + 1;
    uVar23 = (ulonglong)uVar22;
    piVar15 = piVar15 + 0xe0d;
  } while ((int)uVar22 < 0x100);
  uVar23 = uVar31;
  if ((int)uVar13 != 0) {
    uVar23 = (ulonglong)uVar10;
  }
  if ((iVar9 == DAT_183ebfcdc) && (DAT_1ad04adc0 != 0)) {
    lVar18 = (longlong)(int)DAT_189c1dc64;
    DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
    lVar16 = (longlong)(int)DAT_189c1dc64;
    (&DAT_1873de460)[lVar18 * 0x20] = 10;
    (&DAT_1873de464)[lVar18 * 0x20] = uVar29;
    *(undefined8 *)(&DAT_1873de480 + lVar18 * 0x20) = 0;
    DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
    lVar18 = (longlong)(int)DAT_189c1dc64;
    (&DAT_1873de460)[lVar16 * 0x20] = 10;
    (&DAT_1873de464)[lVar16 * 0x20] = uVar29;
    *(undefined8 *)(&DAT_1873de480 + lVar16 * 0x20) = 1;
    DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
    (&DAT_1873de460)[lVar18 * 0x20] = 10;
    (&DAT_1873de464)[lVar18 * 0x20] = uVar29;
    *(undefined8 *)(&DAT_1873de480 + lVar18 * 0x20) = 2;
  }
  DAT_183ebfcd4 = iVar9 + -1;
  if (((int)uVar13 == 0) && (iVar9 - 0x151aU < 0x5db)) {
    DAT_183ebfcd4 = 0x1af4;
  }
  if (((int)uVar23 == 0) || (DAT_183ebfcd4 < 0x1519)) {
    if (DAT_183ebfcd4 != 0x1518) goto LAB_1400f75da;
  }
  else {
    DAT_183ebfcd4 = 0x1518;
  }
  FUN_14012e960(0x80);
  piVar21 = &DAT_19021f244;
  piVar15 = &DAT_19021f244;
  do {
    if ((*piVar15 != 0) && (uVar13 = FUN_14023b1b0(), (uVar13 & 7) == 0)) {
      *piVar15 = 0;
    }
    piVar15 = piVar15 + 4;
  } while ((longlong)piVar15 < 0x19021f2c4);
  do {
    if (*piVar21 == 0) {
      uVar10 = FUN_14023b1b0();
      uVar10 = uVar10 & 0xf;
      if (uVar10 < 2) {
        uVar13 = 7;
      }
      else {
        uVar13 = uVar31;
        if (5 < uVar10) {
          if (uVar10 < 10) {
            uVar13 = 0xf;
          }
          else if (uVar10 < 0xd) {
            uVar13 = 9;
          }
          else if (uVar10 < 0xf) {
            uVar13 = 6;
          }
          else {
            uVar23 = FUN_14023b1b0();
            uVar13 = 4;
            if ((uVar23 & 0xf) == 0) {
              uVar13 = 5;
            }
          }
        }
      }
      *piVar21 = 1;
      piVar21[1] = (int)uVar13;
      piVar21[3] = (&DAT_192e9a6b4)[uVar13 * 0x6170];
      iVar9 = FUN_14023b1b0();
      piVar21[2] = iVar9 + (iVar9 / 6 + (iVar9 >> 0x1f) +
                           (int)(((longlong)iVar9 / 6 + ((longlong)iVar9 >> 0x3f) & 0xffffffffU) >>
                                0x1f)) * -6;
    }
    piVar21 = piVar21 + 4;
  } while ((longlong)piVar21 < 0x19021f2c4);
  FUN_14005e520();
  ppuVar30 = &PTR_s_Goldmen_Inc_1402b2890;
  local_300 = &DAT_183ebfdc4;
  local_308 = 3;
  do {
    lVar18 = local_308;
    if ((*local_300 != -1) &&
       (FUN_140158ab0(local_2c8,"%s Manager: %s",*ppuVar30,
                      &DAT_151620c64 + (longlong)*local_300 * 0xe0d), uVar10 = DAT_189c1dc64,
       uVar29 = DAT_183ebfd34, DAT_1ad04adc0 != 0)) {
      lVar18 = -1;
      do {
        lVar27 = lVar18 + 1;
        lVar16 = lVar18 + 1;
        lVar18 = lVar27;
      } while (local_2c8[lVar16] != '\0');
      lVar18 = (longlong)(int)DAT_189c1dc64;
      iVar9 = (int)lVar27;
      if (0x3f < iVar9) {
        iVar9 = 0x3f;
      }
      lVar16 = lVar18 * 0x80;
      (&DAT_1873de460)[lVar18 * 0x20] = 2;
      (&DAT_1873de464)[lVar18 * 0x20] = uVar29;
      FUN_1401fc920(&DAT_1873de4a0 + lVar16,local_2c8,(longlong)iVar9);
      (&DAT_1873de4a0)[lVar16 + iVar9] = 0;
      (&DAT_1873de480)[lVar18 * 0x20] = iVar9;
      (&DAT_1873de484)[lVar18 * 0x20] = 0;
      *(undefined4 *)(&DAT_1873de488 + lVar16) = 0xffffffff;
      *(undefined4 *)(&DAT_1873de48c + lVar16) = 0;
      DAT_189c1dc64 = uVar10 + 1 & 0xffff;
      lVar18 = local_308;
    }
    fVar3 = DAT_140278720;
    uVar5 = DAT_140278654;
    fVar32 = DAT_140278338;
    ppuVar30 = ppuVar30 + 1;
    local_300 = local_300 + 0x16f1;
    local_308 = lVar18 + -1;
  } while (local_308 != 0);
  local_308 = 0;
  uVar13 = uVar31;
  uVar23 = uVar31;
  do {
    iVar9 = (int)uVar13;
    if (0 < *(int *)((longlong)&DAT_183ec4918 + uVar23)) {
      piVar15 = (int *)((longlong)&DAT_183ec491c + uVar23);
      uVar17 = uVar31;
      uVar19 = uVar31;
      do {
        if (*piVar15 == 0) {
          local_328 = 0;
          *(undefined4 *)((longlong)&DAT_183ec491c + uVar19 * 0x34 + uVar23) = 1;
          lVar18 = uVar13 * 0x5bc4 + uVar17 * 0x34;
          iVar12 = FUN_14005bca0(0,&DAT_183ec4920 + lVar18,0,&DAT_183ec492c + lVar18);
          goto LAB_1400f7312;
        }
        uVar10 = (int)uVar17 + 1;
        uVar17 = (ulonglong)uVar10;
        uVar19 = uVar19 + 1;
        piVar15 = piVar15 + 0xd;
      } while ((int)uVar10 < *(int *)((longlong)&DAT_183ec4918 + uVar23));
    }
    iVar12 = -1;
LAB_1400f7312:
    local_320 = 0;
    local_328 = 0;
    iVar11 = FUN_14012ceb0(0,0,0,0);
    (&DAT_15fd162dc)[(longlong)iVar11 * 0x17f] = 0;
    (&DAT_15fd16268)[(longlong)iVar11 * 0x17f] = iVar12;
    iVar24 = *(int *)((longlong)&DAT_183ebfdb4 + uVar23);
    *(int *)(&DAT_15f2dc848 + (longlong)iVar12 * 0x5168) = iVar11;
    if ((4 < iVar24) && (0 < *(int *)((longlong)&DAT_183ec4918 + uVar23))) {
      piVar15 = (int *)((longlong)&DAT_183ec491c + uVar23);
      uVar17 = uVar31;
      uVar19 = uVar31;
      do {
        if (*piVar15 == 0) {
          local_328 = 0;
          *(undefined4 *)((longlong)&DAT_183ec491c + uVar19 * 0x34 + uVar23) = 1;
          lVar18 = uVar13 * 0x5bc4 + uVar17 * 0x34;
          FUN_14005bca0(9,&DAT_183ec4920 + lVar18,0,&DAT_183ec492c + lVar18);
          break;
        }
        uVar10 = (int)uVar17 + 1;
        uVar17 = (ulonglong)uVar10;
        uVar19 = uVar19 + 1;
        piVar15 = piVar15 + 0xd;
      } while ((int)uVar10 < *(int *)((longlong)&DAT_183ec4918 + uVar23));
    }
    local_2f8 = CONCAT44(_UNK_140278d34,_DAT_140278d30);
    uStack_2f0 = CONCAT44(_UNK_140278d3c,_UNK_140278d38);
    fVar33 = *(float *)((longlong)&DAT_183ebfd94 + uVar23);
    fVar34 = *(float *)((longlong)&DAT_183ebfd98 + uVar23);
    fVar35 = *(float *)((longlong)&DAT_183ebfd9c + uVar23);
    local_2d8 = 1.0;
    local_2e8 = local_2f8;
    uStack_2e0 = uStack_2f0;
    FUN_14007b2a0(&local_2f8,(longlong)&uStack_2f0 + 4,
                  *(float *)((longlong)&DAT_183ebfd90 + uVar23) - fVar4);
    FUN_14007b2a0(&local_2f8,(longlong)&uStack_2f0 + 4,uVar5);
    fVar33 = (float)uStack_2e0 * fVar3 + fVar33;
    fVar34 = uStack_2e0._4_4_ * fVar3 + fVar34;
    fVar35 = local_2d8 * fVar3 + fVar35;
    local_318 = fVar33;
    local_314 = fVar34;
    local_310 = fVar35;
    iVar12 = FUN_140054130(0x19,&local_318,0,&local_2f8);
    if (iVar12 != -1) {
      (&DAT_182bbb3f8)[(longlong)iVar12 * 0x6e0] = 0;
      (&DAT_182bbb2e0)[(longlong)iVar12 * 0x6e0] = (iVar9 + 1) * 0x457;
      FUN_140051940(iVar12);
    }
    local_318 = (float)local_2f8 * fVar32 + fVar33;
    local_314 = local_2f8._4_4_ * fVar32 + fVar34;
    local_310 = (float)uStack_2f0 * fVar32 + fVar35;
    iVar12 = FUN_140054130(0x19,&local_318);
    if (iVar12 != -1) {
      (&DAT_182bbb3f8)[(longlong)iVar12 * 0x6e0] = 1;
      (&DAT_182bbb2e0)[(longlong)iVar12 * 0x6e0] = iVar9 * 0x457 + 0x458;
      FUN_140051940(iVar12);
    }
    uVar13 = (ulonglong)(iVar9 + 1U);
    uVar23 = uVar23 + 0x5bc4;
    uVar29 = DAT_183ebfd34;
  } while ((int)(iVar9 + 1U) < 3);
LAB_1400f75da:
  if (DAT_183ebfcd4 < 0x1518) {
    uVar13 = 1;
    uVar23 = uVar31;
    do {
      piVar15 = &DAT_151620ce4;
      lVar18 = 0x100;
      do {
        if ((((piVar15[-0x21] != 0) && (*piVar15 == (int)uVar23)) && (piVar15[6] != -1)) &&
           ((&DAT_18329e330)[(longlong)piVar15[6] * 0x1bfe] == -1)) {
          uVar13 = uVar31;
        }
        piVar15 = piVar15 + 0xe0d;
        lVar18 = lVar18 + -1;
      } while (lVar18 != 0);
      uVar10 = (int)uVar23 + 1;
      uVar23 = (ulonglong)uVar10;
    } while ((int)uVar10 < 3);
    if ((int)uVar13 != 0) {
      DAT_183ebfcd4 = DAT_183ebfcd4 + -7;
    }
  }
  if (DAT_183ebfcd4 < 1) {
    puVar28 = &DAT_183ebfdc0;
    uVar13 = uVar31;
    do {
      piVar15 = puVar28 + 0x4f;
      uVar23 = uVar31;
      do {
        if (*piVar15 != 0) {
          FUN_1400519f0(uVar13,uVar23);
        }
        uVar10 = (int)uVar23 + 1;
        uVar23 = (ulonglong)uVar10;
        piVar15 = piVar15 + 0x117;
      } while ((int)uVar10 < 0x10);
      if (DAT_1ad04adc0 != 0) {
        lVar18 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar18 * 0x20] = 10;
        (&DAT_1873de464)[lVar18 * 0x20] = uVar29;
        (&DAT_1873de480)[lVar18 * 0x20] = (int)uVar13;
        (&DAT_1873de484)[lVar18 * 0x20] = 1;
      }
      *puVar28 = 1;
      uVar10 = (int)uVar13 + 1;
      uVar13 = (ulonglong)uVar10;
      puVar28 = puVar28 + 0x16f1;
      uVar29 = DAT_183ebfd34;
    } while ((int)uVar10 < 3);
    DAT_183ebfcd4 = DAT_183f7a5ac * 0xe10;
    DAT_183ebfccc = 2;
  }
  return;
}



===== FUN_1400c6c90 @ 1400c6c90 root=true =====

void FUN_1400c6c90(int param_1)

{
  int iVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  undefined2 uVar4;
  undefined1 uVar5;
  undefined1 uVar6;
  undefined1 uVar7;
  undefined1 uVar8;
  undefined1 uVar9;
  undefined1 uVar10;
  undefined1 uVar11;
  undefined1 uVar12;
  undefined1 uVar13;
  undefined1 uVar14;
  undefined1 uVar15;
  undefined1 uVar16;
  undefined1 uVar17;
  undefined1 uVar18;
  undefined1 uVar19;
  undefined1 uVar20;
  undefined *puVar21;
  int iVar22;
  longlong lVar23;
  longlong lVar24;
  
  uVar3 = s_STARTING_CS_DOS____140275ef0._8_8_;
  uVar2 = s_STARTING_CS_DOS____140275ef0._0_8_;
  lVar24 = (longlong)param_1;
  lVar23 = lVar24 * 0x1b80;
  iVar1 = (&DAT_182bbb4e8)[lVar24 * 0x6e0];
  iVar22 = 2;
  *(undefined4 *)(&DAT_182bbc574 + lVar23) = 2;
  *(undefined4 *)(&DAT_182bbc7d8 + lVar23) = 0xffffffff;
  uVar4 = s_STARTING_CS_DOS____140275ef0._16_2_;
  lVar24 = ((longlong)iVar1 + lVar24 * 0x6e) * 0x40;
  *(undefined8 *)(&DAT_182bbb4f4 + lVar24) = uVar2;
  *(undefined8 *)(&DAT_182bbb4fc + lVar24) = uVar3;
  *(undefined2 *)(&DAT_182bbb504 + lVar24) = uVar4;
  (&DAT_182bbb506)[lVar24] = s_STARTING_CS_DOS____140275ef0[0x12];
  FUN_1400c3e00(param_1);
  FUN_1400c3e00(param_1);
  FUN_1400c6d90(param_1,0);
  do {
    FUN_140050f90(param_1,iVar22);
    iVar22 = iVar22 + 1;
  } while (iVar22 < 0x18);
  lVar24 = 0x20;
  puVar21 = &DAT_182bbbcf4 + lVar23;
  do {
    uVar20 = UNK_14027920f;
    uVar19 = UNK_14027920e;
    uVar18 = UNK_14027920d;
    uVar17 = UNK_14027920c;
    uVar16 = UNK_14027920b;
    uVar15 = UNK_14027920a;
    uVar14 = UNK_140279209;
    uVar13 = UNK_140279208;
    uVar12 = UNK_140279207;
    uVar11 = UNK_140279206;
    uVar10 = UNK_140279205;
    uVar9 = UNK_140279204;
    uVar8 = UNK_140279203;
    uVar7 = UNK_140279202;
    uVar6 = UNK_140279201;
    uVar5 = DAT_140279200;
    *puVar21 = DAT_140279200;
    puVar21[1] = uVar6;
    puVar21[2] = uVar7;
    puVar21[3] = uVar8;
    puVar21[4] = uVar9;
    puVar21[5] = uVar10;
    puVar21[6] = uVar11;
    puVar21[7] = uVar12;
    puVar21[8] = uVar13;
    puVar21[9] = uVar14;
    puVar21[10] = uVar15;
    puVar21[0xb] = uVar16;
    puVar21[0xc] = uVar17;
    puVar21[0xd] = uVar18;
    puVar21[0xe] = uVar19;
    puVar21[0xf] = uVar20;
    puVar21[0x10] = uVar5;
    puVar21[0x11] = uVar6;
    puVar21[0x12] = uVar7;
    puVar21[0x13] = uVar8;
    puVar21[0x14] = uVar9;
    puVar21[0x15] = uVar10;
    puVar21[0x16] = uVar11;
    puVar21[0x17] = uVar12;
    puVar21[0x18] = uVar13;
    puVar21[0x19] = uVar14;
    puVar21[0x1a] = uVar15;
    puVar21[0x1b] = uVar16;
    puVar21[0x1c] = uVar17;
    puVar21[0x1d] = uVar18;
    puVar21[0x1e] = uVar19;
    puVar21[0x1f] = uVar20;
    puVar21[0x20] = uVar5;
    puVar21[0x21] = uVar6;
    puVar21[0x22] = uVar7;
    puVar21[0x23] = uVar8;
    puVar21[0x24] = uVar9;
    puVar21[0x25] = uVar10;
    puVar21[0x26] = uVar11;
    puVar21[0x27] = uVar12;
    puVar21[0x28] = uVar13;
    puVar21[0x29] = uVar14;
    puVar21[0x2a] = uVar15;
    puVar21[0x2b] = uVar16;
    puVar21[0x2c] = uVar17;
    puVar21[0x2d] = uVar18;
    puVar21[0x2e] = uVar19;
    puVar21[0x2f] = uVar20;
    puVar21[0x30] = uVar5;
    puVar21[0x31] = uVar6;
    puVar21[0x32] = uVar7;
    puVar21[0x33] = uVar8;
    puVar21[0x34] = uVar9;
    puVar21[0x35] = uVar10;
    puVar21[0x36] = uVar11;
    puVar21[0x37] = uVar12;
    puVar21[0x38] = uVar5;
    puVar21[0x39] = uVar6;
    puVar21[0x3a] = uVar7;
    puVar21[0x3b] = uVar8;
    puVar21[0x3c] = uVar5;
    puVar21[0x3d] = uVar6;
    puVar21[0x3e] = uVar5;
    lVar24 = lVar24 + -1;
    puVar21 = puVar21 + 0x40;
  } while (lVar24 != 0);
  return;
}



===== FUN_1400c6d90 @ 1400c6d90 root=true =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400c6d90(int param_1,uint param_2)

{
  char cVar1;
  undefined2 uVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  int iVar5;
  longlong lVar6;
  char *pcVar7;
  undefined2 *puVar8;
  char *pcVar9;
  longlong lVar10;
  undefined8 *puVar11;
  ulonglong uVar12;
  int iVar13;
  undefined1 *puVar14;
  uint uVar15;
  longlong lVar16;
  int *piVar17;
  longlong lVar18;
  longlong lVar19;
  int iVar20;
  
  lVar18 = (longlong)param_1;
  lVar19 = lVar18 * 0x1b80;
  uVar12 = 0xffffffffffffffff;
  iVar5 = (&DAT_182bbc7dc)[lVar18 * 0x6e0];
  if (iVar5 == 1) {
    *(undefined4 *)(&DAT_182bbb4f0 + lVar19) = 0xffffffff;
    FUN_1400c6580(param_1);
    iVar5 = (&DAT_182bbc7dc)[lVar18 * 0x6e0];
    if (iVar5 == 1) {
      return;
    }
    param_2 = 8;
  }
  if (iVar5 == 2) {
    *(undefined4 *)(&DAT_182bbb4f0 + lVar19) = 0xffffffff;
    FUN_1400c7450(param_1);
    iVar5 = (&DAT_182bbc7dc)[lVar18 * 0x6e0];
    if (iVar5 == 2) {
      return;
    }
    param_2 = 8;
  }
  iVar20 = 1;
  if (iVar5 == 3) {
    *(undefined4 *)(&DAT_182bbb4f0 + lVar19) = 0xffffffff;
    if ((param_2 >> 8 & 1) == 0) {
      if (param_2 == 0x13) {
        if (*(int *)(&DAT_182bbc7f4 + lVar19) != 2) {
          *(undefined4 *)(&DAT_182bbc7f4 + lVar19) = 0;
        }
      }
      else if (param_2 == 0x12) {
        if (*(int *)(&DAT_182bbc7f4 + lVar19) != 0) {
          *(undefined4 *)(&DAT_182bbc7f4 + lVar19) = 2;
        }
      }
      else if (param_2 == 0x11) {
        if (*(int *)(&DAT_182bbc7f4 + lVar19) != 3) {
          *(undefined4 *)(&DAT_182bbc7f4 + lVar19) = 1;
        }
      }
      else if ((param_2 == 0x10) && (*(int *)(&DAT_182bbc7f4 + lVar19) != 1)) {
        *(undefined4 *)(&DAT_182bbc7f4 + lVar19) = 3;
      }
    }
    else {
      iVar5 = toupper(param_2 & 0xff);
      if (iVar5 == 0x58) {
        (&DAT_182bbc7dc)[lVar18 * 0x6e0] = 0;
        puVar14 = &DAT_182bbb4f4 + lVar19;
        iVar5 = 0;
        puVar11 = (undefined8 *)(&DAT_182bbbcf4 + lVar19);
        do {
          uVar4 = _UNK_140279208;
          uVar3 = _DAT_140279200;
          *puVar14 = 0;
          *puVar11 = uVar3;
          puVar11[1] = uVar4;
          puVar11[2] = uVar3;
          puVar11[3] = uVar4;
          puVar11[4] = uVar3;
          puVar11[5] = uVar4;
          puVar11[6] = uVar3;
          *(int *)(puVar11 + 7) = (int)uVar3;
          *(short *)((longlong)puVar11 + 0x3c) = (short)uVar3;
          *(char *)((longlong)puVar11 + 0x3e) = (char)uVar3;
          FUN_140050f90(param_1);
          iVar5 = iVar5 + 1;
          puVar11 = puVar11 + 8;
          puVar14 = puVar14 + 0x40;
        } while (iVar5 < 0x18);
      }
    }
    if ((&DAT_182bbc7dc)[lVar18 * 0x6e0] == 3) {
      return;
    }
    param_2 = 8;
  }
  iVar5 = 0;
  pcVar7 = &DAT_182bbc535 + lVar19;
  do {
    if (pcVar7[-1] == '\0') break;
    if (*pcVar7 == '\0') {
      iVar5 = iVar5 + 1;
      break;
    }
    pcVar7 = pcVar7 + 2;
    iVar5 = iVar5 + 2;
  } while ((longlong)pcVar7 - (longlong)(&DAT_182bbc535 + lVar19) < 0x3e);
  uVar15 = param_2 & 0xff;
  if (*(int *)(&DAT_182bbc69c + lVar19) < 1) {
    if (uVar15 == 10) {
      FUN_1400c3e00(param_1);
      FUN_1400c4280(param_1);
      (&DAT_182bbc534)[lVar19] = 0;
      if (0 < *(int *)(&DAT_182bbc69c + lVar19)) {
        return;
      }
      if ((&DAT_182bbc7dc)[lVar18 * 0x6e0] != 0) {
        return;
      }
    }
    else if (uVar15 == 8) {
      if (0 < iVar5) {
        (&DAT_182bbc533)[iVar5 + lVar19] = 0;
      }
    }
    else if (iVar5 < 0x3e) {
      (&DAT_182bbc534)[iVar5 + lVar19] = (char)param_2;
      (&DAT_182bbc535)[iVar5 + lVar19] = 0;
    }
    iVar5 = *(int *)(&DAT_182bbc574 + lVar19);
    iVar13 = 0;
    if (iVar5 == 2) {
      iVar13 = *(int *)(&DAT_182bbb4b4 + lVar19);
    }
    else if ((iVar5 == 0) && (0 < (int)(&DAT_182bbb1b4)[lVar18 * 0x6e0])) {
      iVar13 = *(int *)(&DAT_182bbb4b4 + (longlong)*(int *)(&DAT_182bbb1b8 + lVar19) * 0x1b80);
    }
    pcVar7 = &DAT_182bbc4f4 + lVar19;
    FUN_140158ab0(pcVar7,&DAT_140275ee0);
    uVar2 = DAT_140275ee8;
    lVar16 = lVar19 + (longlong)iVar5 * 0x48;
    if (0 < *(int *)(&DAT_182bbc57c + lVar16)) {
      piVar17 = (int *)(&DAT_182bbc584 + lVar16);
      do {
        iVar5 = *piVar17;
        lVar10 = lVar19 + 0x182bbc4f3;
        do {
          pcVar9 = (char *)(lVar10 + 1);
          lVar10 = lVar10 + 1;
        } while (*pcVar9 != '\0');
        lVar6 = 0;
        do {
          cVar1 = (&DAT_181feebcc)[lVar6 + (longlong)iVar5 * 0x10 + (longlong)iVar13 * 0x2828];
          *(char *)(lVar10 + lVar6) = cVar1;
          lVar6 = lVar6 + 1;
        } while (cVar1 != '\0');
        iVar5 = *(int *)(&DAT_182bbc57c + lVar16);
        if (iVar20 < iVar5) {
          puVar8 = (undefined2 *)(lVar19 + 0x182bbc4f3);
          do {
            pcVar9 = (char *)((longlong)puVar8 + 1);
            puVar8 = (undefined2 *)((longlong)puVar8 + 1);
          } while (*pcVar9 != '\0');
          *puVar8 = uVar2;
          iVar5 = *(int *)(&DAT_182bbc57c + lVar16);
        }
        iVar20 = iVar20 + 1;
        piVar17 = piVar17 + 1;
      } while (iVar20 <= iVar5);
    }
    puVar8 = (undefined2 *)(lVar19 + 0x182bbc4f3);
    do {
      pcVar9 = (char *)((longlong)puVar8 + 1);
      puVar8 = (undefined2 *)((longlong)puVar8 + 1);
    } while (*pcVar9 != '\0');
    *puVar8 = DAT_140275eec;
    lVar16 = lVar18 * 0x6e;
    pcVar9 = &DAT_182bbb4f4 + ((int)(&DAT_182bbb4e8)[lVar18 * 0x6e0] + lVar16) * 0x40;
    do {
      cVar1 = *pcVar7;
      pcVar7 = pcVar7 + 1;
      *pcVar9 = cVar1;
      pcVar9 = pcVar9 + 1;
    } while (cVar1 != '\0');
    do {
      uVar12 = uVar12 + 1;
    } while ((&DAT_182bbb4f4)[uVar12 + ((int)(&DAT_182bbb4e8)[lVar18 * 0x6e0] + lVar16) * 0x40] !=
             '\0');
    lVar10 = (longlong)(int)uVar12;
    if (lVar10 < 0x3e) {
      pcVar7 = &DAT_182bbc534 + lVar19;
      do {
        cVar1 = *pcVar7;
        if (cVar1 == '\0') break;
        pcVar7 = pcVar7 + 1;
        uVar12 = (ulonglong)((int)uVar12 + 1);
        lVar6 = ((int)(&DAT_182bbb4e8)[lVar18 * 0x6e0] + lVar16) * 0x40 + lVar10;
        lVar10 = lVar10 + 1;
        (&DAT_182bbb4f4)[lVar6] = cVar1;
      } while (lVar10 < 0x3e);
    }
    uVar4 = _UNK_140279208;
    uVar3 = _DAT_140279200;
    (&DAT_182bbb4f4)
    [((int)(&DAT_182bbb4e8)[lVar18 * 0x6e0] + lVar16) * 0x40 + (longlong)(int)uVar12] = 0;
    iVar5 = (&DAT_182bbb4e8)[lVar18 * 0x6e0];
    *(int *)(&DAT_182bbb4f0 + lVar19) = iVar5 * 0x40 + (int)uVar12;
    lVar19 = (lVar16 + iVar5) * 0x40;
    *(undefined8 *)(&DAT_182bbbcf4 + lVar19) = uVar3;
    *(undefined8 *)(&DAT_182bbbcfc + lVar19) = uVar4;
    *(undefined8 *)(&DAT_182bbbd04 + lVar19) = uVar3;
    *(undefined8 *)(&DAT_182bbbd0c + lVar19) = uVar4;
    *(undefined8 *)(&DAT_182bbbd14 + lVar19) = uVar3;
    *(undefined8 *)(lVar19 + 0x182bbbd1c) = uVar4;
    *(undefined8 *)(&DAT_182bbbd24 + lVar19) = uVar3;
    *(int *)(&DAT_182bbbd2c + lVar19) = (int)uVar3;
    *(short *)(&DAT_182bbbd30 + lVar19) = (short)uVar3;
    (&DAT_182bbbd32)[lVar19] = (char)uVar3;
    FUN_140050f90(param_1,(&DAT_182bbb4e8)[lVar18 * 0x6e0]);
    (&DAT_182bbb4c0)[lVar18 * 0x6e0] = 0;
  }
  else if (*(int *)(&DAT_182bbc6d4 + lVar19) < 0x40) {
    *(uint *)(&DAT_182bbc6d8 + (lVar18 * 0x6e0 + (longlong)*(int *)(&DAT_182bbc6d4 + lVar19)) * 4) =
         uVar15;
    *(int *)(&DAT_182bbc6d4 + lVar19) = *(int *)(&DAT_182bbc6d4 + lVar19) + 1;
  }
  return;
}



===== FUN_1400c8e10 @ 1400c8e10 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1400c8e10(int param_1)

{
  int iVar1;
  char *pcVar2;
  undefined *puVar3;
  undefined1 uVar4;
  char *pcVar5;
  char cVar6;
  int iVar7;
  longlong lVar8;
  longlong lVar9;
  longlong lVar10;
  longlong lVar11;
  longlong lVar12;
  longlong lVar13;
  longlong lVar14;
  undefined1 auStack_268 [32];
  int local_248;
  char local_238 [512];
  ulonglong local_38;
  
  local_38 = DAT_1403020a0 ^ (ulonglong)auStack_268;
  lVar13 = (longlong)param_1 * 0x1b80;
  local_238[0] = '\0';
  local_238[1] = '\0';
  local_238[2] = '\0';
  local_238[3] = '\0';
  local_238[4] = '\0';
  local_238[5] = '\0';
  local_238[6] = '\0';
  local_238[7] = '\0';
  local_238[8] = '\0';
  local_238[9] = '\0';
  local_238[10] = '\0';
  local_238[0xb] = '\0';
  local_238[0xc] = '\0';
  local_238[0xd] = '\0';
  local_238[0xe] = '\0';
  local_238[0xf] = '\0';
  local_238[0x10] = '\0';
  local_238[0x11] = '\0';
  local_238[0x12] = '\0';
  local_238[0x13] = '\0';
  local_238[0x14] = '\0';
  local_238[0x15] = '\0';
  local_238[0x16] = '\0';
  local_238[0x17] = '\0';
  local_238[0x18] = '\0';
  local_238[0x19] = '\0';
  local_238[0x1a] = '\0';
  local_238[0x1b] = '\0';
  local_238[0x1c] = '\0';
  local_238[0x1d] = '\0';
  local_238[0x1e] = '\0';
  local_238[0x1f] = '\0';
  local_238[0x20] = '\0';
  local_238[0x21] = '\0';
  local_238[0x22] = '\0';
  local_238[0x23] = '\0';
  local_238[0x24] = '\0';
  local_238[0x25] = '\0';
  local_238[0x26] = '\0';
  local_238[0x27] = '\0';
  local_238[0x28] = '\0';
  local_238[0x29] = '\0';
  local_238[0x2a] = '\0';
  local_238[0x2b] = '\0';
  local_238[0x2c] = '\0';
  local_238[0x2d] = '\0';
  local_238[0x2e] = '\0';
  local_238[0x2f] = '\0';
  local_238[0x30] = '\0';
  local_238[0x31] = '\0';
  local_238[0x32] = '\0';
  local_238[0x33] = '\0';
  local_238[0x34] = '\0';
  local_238[0x35] = '\0';
  local_238[0x36] = '\0';
  local_238[0x37] = '\0';
  local_238[0x38] = '\0';
  local_238[0x39] = '\0';
  local_238[0x3a] = '\0';
  local_238[0x3b] = '\0';
  local_238[0x3c] = '\0';
  local_238[0x3d] = '\0';
  local_238[0x3e] = '\0';
  local_238[0x3f] = '\0';
  local_248 = param_1;
  FUN_140158ab0(local_238,"  SNAKE    SCORE:%05d  LEVEL:%03d    Ctrl-X EXIT",
                *(undefined4 *)(&DAT_182bbc7e0 + lVar13),*(undefined4 *)(&DAT_182bbc7e8 + lVar13));
  iVar1 = local_248;
  lVar14 = 0x1f;
  pcVar2 = &DAT_182bbb4f4 + lVar13;
  pcVar5 = local_238;
  lVar9 = 0x1f;
  do {
    cVar6 = *pcVar5;
    if (cVar6 == '\0') {
      cVar6 = ' ';
    }
    else {
      pcVar5 = pcVar5 + 1;
    }
    *pcVar2 = cVar6;
    cVar6 = *pcVar5;
    pcVar2[0x800] = 'p';
    if (cVar6 == '\0') {
      cVar6 = ' ';
    }
    else {
      pcVar5 = pcVar5 + 1;
    }
    pcVar2[1] = cVar6;
    pcVar2[0x801] = 'p';
    pcVar2 = pcVar2 + 2;
    lVar9 = lVar9 + -1;
  } while (lVar9 != 0);
  (&DAT_182bbb532)[lVar13] = 0;
  lVar8 = 0x17;
  lVar9 = lVar13;
  lVar12 = lVar13;
  do {
    lVar10 = 0;
    lVar12 = lVar12 + 0x20;
    lVar11 = 0x1f;
    puVar3 = &DAT_182bbbd35 + lVar9;
    do {
      puVar3[-0x801] = 0x20;
      cVar6 = (&DAT_182bbca00)[(lVar10 >> 1) + lVar12];
      if (cVar6 == '\0') {
        puVar3[-1] = 0xf;
      }
      else if (cVar6 == '\x01') {
        puVar3[-1] = 0x7f;
      }
      else if (cVar6 == '\x02') {
        puVar3[-1] = 0x1f;
      }
      else {
        uVar4 = 0x2f;
        if (cVar6 == '\x03') {
          uVar4 = 0x9f;
        }
        puVar3[-1] = uVar4;
      }
      puVar3[(lVar9 + 0x182bbad72) - (longlong)(&DAT_182bbb572 + lVar9)] = 0x20;
      cVar6 = (&DAT_182bbca00)[(lVar10 + 1 >> 1) + lVar12];
      if (cVar6 == '\0') {
        *puVar3 = 0xf;
      }
      else if (cVar6 == '\x01') {
        *puVar3 = 0x7f;
      }
      else if (cVar6 == '\x02') {
        *puVar3 = 0x1f;
      }
      else {
        uVar4 = 0x2f;
        if (cVar6 == '\x03') {
          uVar4 = 0x9f;
        }
        *puVar3 = uVar4;
      }
      lVar10 = lVar10 + 2;
      puVar3 = puVar3 + 2;
      lVar11 = lVar11 + -1;
    } while (lVar11 != 0);
    (&DAT_182bbb572)[lVar9] = 0;
    lVar8 = lVar8 + -1;
    lVar9 = lVar9 + 0x40;
  } while (lVar8 != 0);
  iVar7 = 0;
  if (*(int *)(&DAT_182bbc7f0 + lVar13) != 0) {
    local_238[0] = '\0';
    local_238[1] = '\0';
    local_238[2] = '\0';
    local_238[3] = '\0';
    local_238[4] = '\0';
    local_238[5] = '\0';
    local_238[6] = '\0';
    local_238[7] = '\0';
    local_238[8] = '\0';
    local_238[9] = '\0';
    local_238[10] = '\0';
    local_238[0xb] = '\0';
    local_238[0xc] = '\0';
    local_238[0xd] = '\0';
    local_238[0xe] = '\0';
    local_238[0xf] = '\0';
    local_238[0x10] = '\0';
    local_238[0x11] = '\0';
    local_238[0x12] = '\0';
    local_238[0x13] = '\0';
    local_238[0x14] = '\0';
    local_238[0x15] = '\0';
    local_238[0x16] = '\0';
    local_238[0x17] = '\0';
    local_238[0x18] = '\0';
    local_238[0x19] = '\0';
    local_238[0x1a] = '\0';
    local_238[0x1b] = '\0';
    local_238[0x1c] = '\0';
    local_238[0x1d] = '\0';
    local_238[0x1e] = '\0';
    local_238[0x1f] = '\0';
    local_238[0x20] = '\0';
    local_238[0x21] = '\0';
    local_238[0x22] = '\0';
    local_238[0x23] = '\0';
    local_238[0x24] = '\0';
    local_238[0x25] = '\0';
    local_238[0x26] = '\0';
    local_238[0x27] = '\0';
    local_238[0x28] = '\0';
    local_238[0x29] = '\0';
    local_238[0x2a] = '\0';
    local_238[0x2b] = '\0';
    local_238[0x2c] = '\0';
    local_238[0x2d] = '\0';
    local_238[0x2e] = '\0';
    local_238[0x2f] = '\0';
    local_238[0x30] = '\0';
    local_238[0x31] = '\0';
    local_238[0x32] = '\0';
    local_238[0x33] = '\0';
    local_238[0x34] = '\0';
    local_238[0x35] = '\0';
    local_238[0x36] = '\0';
    local_238[0x37] = '\0';
    local_238[0x38] = '\0';
    local_238[0x39] = '\0';
    local_238[0x3a] = '\0';
    local_238[0x3b] = '\0';
    local_238[0x3c] = '\0';
    local_238[0x3d] = '\0';
    local_238[0x3e] = '\0';
    local_238[0x3f] = '\0';
    FUN_140158ab0(local_238,"                           GAME OVER!");
    puVar3 = &DAT_182bbbd35 + lVar13;
    pcVar5 = local_238;
    do {
      cVar6 = *pcVar5;
      if (cVar6 == '\0') {
        cVar6 = ' ';
      }
      else {
        pcVar5 = pcVar5 + 1;
      }
      puVar3[-0x801] = cVar6;
      cVar6 = *pcVar5;
      puVar3[-1] = 0xf;
      if (cVar6 == '\0') {
        cVar6 = ' ';
      }
      else {
        pcVar5 = pcVar5 + 1;
      }
      puVar3[-0x800] = cVar6;
      *puVar3 = 0xf;
      puVar3 = puVar3 + 2;
      lVar14 = lVar14 + -1;
    } while (lVar14 != 0);
    (&DAT_182bbb572)[lVar13] = 0;
  }
  do {
    FUN_140050f90(iVar1,iVar7);
    iVar7 = iVar7 + 1;
  } while (iVar7 < 0x18);
  return;
}



===== FUN_14010ef40 @ 14010ef40 root=true =====

void FUN_14010ef40(int param_1)

{
  longlong lVar1;
  
  lVar1 = (longlong)param_1;
  FUN_140115d90(&DAT_182bbb194 + lVar1 * 0x6e0,8);
  FUN_140115d90(&DAT_182bbb1a8 + lVar1 * 0x6e0,10);
  FUN_140115d90(&DAT_182bbb1a4 + lVar1 * 0x6e0,10);
  FUN_140115d90(&DAT_182bbb1ac + lVar1 * 0x6e0,4);
  if ((&DAT_182bbb194)[lVar1 * 0x6e0] == 0x27) {
    FUN_140115d90(&DAT_182bbb4e8 + lVar1 * 0x6e0,5);
    FUN_140115d90(&DAT_182bbb4ec + lVar1 * 0x6e0,5);
  }
  return;
}



===== FUN_140050f90 @ 140050f90 root=true =====

int FUN_140050f90(int param_1,uint param_2)

{
  undefined4 uVar1;
  char *pcVar2;
  int *piVar3;
  char *pcVar4;
  longlong lVar5;
  int iVar6;
  int iVar7;
  longlong lVar8;
  longlong lVar9;
  
  lVar9 = (longlong)(int)param_2;
  lVar8 = -1;
  lVar5 = ((longlong)param_1 * 0x6e + lVar9) * 0x40;
  do {
    lVar8 = lVar8 + 1;
  } while ((&DAT_182bbb4f4)[lVar8 + lVar5] != '\0');
  iVar7 = (int)lVar8;
  if (0x3f < iVar7) {
    iVar7 = 0x3f;
  }
  lVar8 = (longlong)param_1 * 0x6e0;
  if ((*(uint *)(&DAT_182bbb2f0 + ((lVar9 >> 5) + lVar8) * 4) >> (param_2 & 0x1f) & 1) != 0) {
    iVar6 = *(int *)(&DAT_182bbb2f8 + (lVar8 + lVar9) * 4);
    lVar8 = (longlong)iVar6 * 0x9c;
    if ((&DAT_1857bd758)[(longlong)iVar6 * 0x27] == iVar7) {
      if (iVar7 < 1) {
        return iVar6;
      }
      pcVar2 = &DAT_1857bd79c + lVar8;
      pcVar4 = &DAT_182bbbcf4 + lVar5;
      while ((pcVar2[-0x40] == pcVar4[-0x800] && (*pcVar2 == *pcVar4))) {
        pcVar2 = pcVar2 + 1;
        pcVar4 = pcVar4 + 1;
        if ((longlong)iVar7 <= (longlong)pcVar2 - (longlong)(&DAT_1857bd79c + lVar8)) {
          return iVar6;
        }
      }
    }
    *(undefined4 *)((longlong)&DAT_1857bd740 + lVar8) = 0;
  }
  uVar1 = DAT_183ebfd34;
  iVar6 = 0;
  piVar3 = (int *)&DAT_1857bd740;
  do {
    if (*piVar3 == 0) {
      if (iVar6 == -1) {
        return -1;
      }
      lVar8 = (longlong)iVar6;
      lVar9 = lVar8 * 0x9c;
      (&DAT_1857bd758)[lVar8 * 0x27] = iVar7;
      *(undefined8 *)((longlong)&DAT_1857bd740 + lVar9) = 1;
      (&DAT_1857bd74c)[lVar8 * 0x27] = uVar1;
      (&DAT_1857bd748)[lVar8 * 0x27] = 1;
      (&DAT_1857bd750)[lVar8 * 0x27] = param_1;
      (&DAT_1857bd754)[lVar8 * 0x27] = param_2;
      FUN_1401fc920(&DAT_1857bd75c + lVar9,&DAT_182bbb4f4 + lVar5,(longlong)iVar7);
      FUN_1401fc920(&DAT_1857bd79c + lVar9,&DAT_182bbbcf4 + lVar5,(longlong)iVar7);
      FUN_1400c3ba0(param_1,iVar6,param_2);
      return iVar6;
    }
    iVar6 = iVar6 + 1;
    piVar3 = piVar3 + 0x27;
  } while ((longlong)piVar3 < 0x185a2d740);
  return -1;
}



===== FUN_1400f80a0 @ 1400f80a0 root=true =====

/* WARNING: Function: _alloca_probe replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400f80a0(void)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  bool bVar7;
  bool bVar8;
  undefined4 uVar9;
  int iVar10;
  int iVar11;
  int *piVar12;
  float *pfVar13;
  int iVar14;
  uint uVar15;
  uint uVar16;
  longlong lVar17;
  undefined4 *puVar18;
  ulonglong uVar19;
  int iVar20;
  longlong lVar21;
  ulonglong uVar22;
  int iVar23;
  int *piVar24;
  ulonglong uVar25;
  ulonglong uVar26;
  float *pfVar27;
  int *piVar28;
  ulonglong uVar29;
  uint uVar30;
  undefined8 uVar31;
  float fVar32;
  float fVar33;
  float fVar34;
  float fVar35;
  float fVar36;
  float fVar37;
  float fVar38;
  float fVar39;
  undefined1 auStack_1538 [32];
  int local_1518;
  undefined4 local_1510;
  float local_1508;
  float local_1504;
  float local_1500;
  uint local_14f8;
  float local_14f0;
  float fStack_14ec;
  float fStack_14e8;
  undefined4 uStack_14e4;
  float local_14e0;
  float fStack_14dc;
  float fStack_14d8;
  undefined4 uStack_14d4;
  undefined4 local_14d0;
  int local_14c8 [256];
  int local_10c8 [1024];
  ulonglong local_c8;
  
  iVar14 = DAT_1ad04adc0;
  local_c8 = DAT_1403020a0 ^ (ulonglong)auStack_1538;
  if (DAT_183ebfccc == 1) {
    uVar19 = 0;
    piVar24 = &DAT_151623978;
    bVar8 = true;
    lVar21 = 0x100;
    uVar26 = uVar19;
    do {
      if ((piVar24[-0xb46] != 0) && (*piVar24 == 0)) {
        uVar15 = (uint)uVar26 + 1;
        if (piVar24[-0xb34] == 0) {
          bVar8 = false;
          uVar15 = (uint)uVar26;
        }
        uVar26 = (ulonglong)uVar15;
      }
      piVar24 = piVar24 + 0xe0d;
      lVar21 = lVar21 + -1;
    } while (lVar21 != 0);
    iVar14 = DAT_183ebfcd4 + -1;
    bVar7 = false;
    if (2 < (int)uVar26) {
      bVar7 = bVar8;
    }
    if ((bVar7) && (0xb4 < iVar14)) {
      iVar14 = 0xb4;
    }
    _DAT_183ebfcd4 = CONCAT44(DAT_183ebfcd8,iVar14);
    if (((int)uVar26 < 3) && (iVar14 < 0x708)) {
      _DAT_183ebfcd4 = CONCAT44(DAT_183ebfcd8,0x708);
    }
    else if (iVar14 < 1) {
      FUN_14012e960(0x80);
      _DAT_183f7a320 = 0;
      _DAT_183f7a328 = 0;
      if (0 < DAT_175fd145c) {
        FUN_1401fcd30(local_10c8,0,(longlong)DAT_175fd145c << 2);
      }
      piVar28 = &DAT_151620ca8;
      piVar12 = &DAT_151620ca8;
      piVar24 = local_14c8;
      uVar26 = uVar19;
      uVar25 = uVar19;
      do {
        if (((piVar12[-0x12] != 0) && (*piVar12 != 0)) && (piVar12[0xb34] == 0)) {
          uVar25 = (ulonglong)((int)uVar25 + 1);
          *piVar24 = (int)uVar26;
          piVar24 = piVar24 + 1;
        }
        uVar15 = (int)uVar26 + 1;
        uVar26 = (ulonglong)uVar15;
        piVar12 = piVar12 + 0xe0d;
      } while ((int)uVar15 < 0x100);
      DAT_183f7a31c = (undefined4)uVar25;
      iVar10 = FUN_14023b1b0();
      iVar14 = DAT_183f7a320;
      while (((fVar36 = DAT_140278688, fVar35 = DAT_1402783f4, iVar11 = (int)uVar25, iVar14 == 0 ||
              (iVar10 + (iVar10 / 3 + (iVar10 >> 0x1f) +
                        (int)(((longlong)iVar10 / 3 + ((longlong)iVar10 >> 0x3f) & 0xffffffffU) >>
                             0x1f)) * -3 + 3 <= iVar11)) && (iVar14 < 8))) {
        if (0 < iVar11) {
          iVar14 = FUN_14023b1b0();
          uVar15 = iVar11 - 1;
          uVar25 = (ulonglong)uVar15;
          lVar21 = (longlong)(iVar14 % iVar11);
          (&DAT_183f7a328)[(longlong)DAT_183f7a320 * 9] = local_14c8[lVar21];
          if (lVar21 < (int)uVar15) {
            piVar24 = local_14c8 + lVar21 + 1;
            piVar12 = local_14c8 + lVar21;
            for (lVar17 = (int)uVar15 - lVar21; lVar17 != 0; lVar17 = lVar17 + -1) {
              *piVar12 = *piVar24;
              piVar24 = piVar24 + 1;
              piVar12 = piVar12 + 1;
            }
          }
          if (0 < (int)uVar15) {
            iVar14 = FUN_14023b1b0();
            uVar30 = iVar11 - 2;
            uVar25 = (ulonglong)uVar30;
            lVar21 = (longlong)(iVar14 % (int)uVar15);
            (&DAT_183f7a324)[(longlong)DAT_183f7a320 * 9] = local_14c8[lVar21];
            if (lVar21 < (int)uVar30) {
              piVar24 = local_14c8 + lVar21 + 1;
              piVar12 = local_14c8 + lVar21;
              for (lVar17 = (int)uVar30 - lVar21; lVar17 != 0; lVar17 = lVar17 + -1) {
                *piVar12 = *piVar24;
                piVar24 = piVar24 + 1;
                piVar12 = piVar12 + 1;
              }
            }
            if (0 < (int)uVar30) {
              iVar14 = FUN_14023b1b0();
              uVar15 = iVar11 - 3;
              uVar25 = (ulonglong)uVar15;
              lVar21 = (longlong)(iVar14 % (int)uVar30);
              (&DAT_183f7a32c)[(longlong)DAT_183f7a320 * 9] = local_14c8[lVar21];
              if (lVar21 < (int)uVar15) {
                piVar24 = local_14c8 + lVar21 + 1;
                piVar12 = local_14c8 + lVar21;
                for (lVar17 = (int)uVar15 - lVar21; lVar17 != 0; lVar17 = lVar17 + -1) {
                  *piVar12 = *piVar24;
                  piVar24 = piVar24 + 1;
                  piVar12 = piVar12 + 1;
                }
              }
            }
          }
          iVar14 = DAT_183f7a320;
        }
        iVar14 = iVar14 + 1;
        _DAT_183f7a320 = CONCAT44(DAT_183f7a324,iVar14);
      }
      local_14f8 = 0;
      uVar26 = uVar19;
      uVar25 = uVar19;
      do {
        iVar14 = DAT_175fd145c;
        uVar15 = (uint)uVar26;
        iVar10 = (int)uVar25;
        if (((piVar28[-0x12] != 0) && (*piVar28 != 0)) && (piVar28[0xb34] == 0)) {
          piVar28[0xf] = 0;
          if (iVar14 < 1) {
            uVar15 = 0;
          }
          else {
LAB_1400f83cd:
            do {
              iVar14 = FUN_14023b1b0();
              uVar15 = iVar14 % DAT_175fd145c;
              if (uVar15 < 0x34) {
                if ((0xc000100040000U >> ((longlong)(int)uVar15 & 0x3fU) & 1) != 0)
                goto LAB_1400f83cd;
              }
            } while (local_10c8[(int)uVar15] != 0);
            local_10c8[(int)uVar15] = 1;
          }
          lVar21 = (longlong)(int)uVar15;
          local_14f0 = _DAT_140278d30;
          fStack_14ec = _UNK_140278d34;
          fStack_14e8 = _UNK_140278d38;
          uStack_14e4 = _UNK_140278d3c;
          local_14e0 = _DAT_140278d30;
          fStack_14dc = _UNK_140278d34;
          fStack_14d8 = _UNK_140278d38;
          uStack_14d4 = _UNK_140278d3c;
          local_14d0 = 0x3f800000;
          fVar38 = (float)(&DAT_175fd1470)[lVar21 * 0x22];
          local_1504 = (float)(&DAT_175fd1474)[lVar21 * 0x22] + fVar35;
          fVar37 = (float)(&DAT_175fd1478)[lVar21 * 0x22];
          FUN_14007b2a0(&local_14f0,&uStack_14e4,0);
          iVar14 = (&DAT_175fd1494)[lVar21 * 0x22];
          piVar28[0xdde] = 1;
          piVar28[0xddf] = 0;
          local_1508 = (float)(iVar14 + -1) * fVar36 + fVar38;
          local_1500 = (float)((&DAT_175fd1498)[lVar21 * 0x22] + -1) * fVar36 + fVar37;
          iVar11 = FUN_140053840(&local_1508,&local_14f0,uVar25);
          iVar14 = DAT_183f7a320;
          uVar26 = _DAT_183f7a320 & 0xffffffff;
          lVar21 = (longlong)iVar11;
          piVar28[0x15] = iVar11;
          if (iVar11 != -1) {
            if (0 < iVar14) {
              piVar24 = &DAT_183f7a328;
              uVar22 = uVar26;
              do {
                if (iVar10 == *piVar24) {
                  (&DAT_18329e344)[lVar21 * 0x1bfe] = 100;
                  (&DAT_18329e348)[lVar21 * 0x1bfe] = 1;
                }
                piVar24 = piVar24 + 9;
                uVar22 = uVar22 - 1;
              } while (uVar22 != 0);
            }
            (&DAT_18329e3a0)[lVar21 * 0x1bfe] = 0;
          }
          piVar28[0x47] = 0;
          FUN_140051dc0(uVar25);
          iVar11 = DAT_1ad04adc0;
          uVar2 = DAT_183ebfd34;
          uVar15 = local_14f8;
          if (0 < iVar14) {
            piVar24 = &DAT_183f7a32c;
            uVar25 = uVar19;
            do {
              if (iVar10 == piVar24[-1]) {
                uVar25 = 1;
                if (iVar11 != 0) {
                  lVar17 = (longlong)(int)DAT_189c1dc64;
                  lVar21 = lVar17 * 0x80;
                  DAT_189c1dc64._0_2_ = (short)DAT_189c1dc64 + 1;
                  (&DAT_1873de460)[lVar17 * 0x20] = 0x15;
                  (&DAT_1873de464)[lVar17 * 0x20] = uVar2;
                  (&DAT_1873de480)[lVar17 * 0x20] = iVar10;
                  (&DAT_1873de484)[lVar17 * 0x20] = 0;
                  *(undefined8 *)(&DAT_1873de488 + lVar21) = 1;
                  *(undefined8 *)(&DAT_1873de468 + lVar21) = 0;
                  *(undefined4 *)(&DAT_1873de470 + lVar21) = 0;
LAB_1400f8635:
                  uVar25 = 1;
                  DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
                }
              }
              else if ((iVar10 == *piVar24) && (uVar25 = 1, iVar11 != 0)) {
                lVar17 = (longlong)(int)DAT_189c1dc64;
                iVar14 = piVar24[-2];
                lVar21 = lVar17 * 0x80;
                DAT_189c1dc64._0_2_ = (short)DAT_189c1dc64 + 1;
                (&DAT_1873de460)[lVar17 * 0x20] = 0x15;
                (&DAT_1873de464)[lVar17 * 0x20] = uVar2;
                (&DAT_1873de480)[lVar17 * 0x20] = iVar10;
                (&DAT_1873de484)[lVar17 * 0x20] = 0;
                *(undefined4 *)(&DAT_1873de488 + lVar21) = 2;
                *(uint *)(&DAT_1873de48c + lVar21) = iVar14 + local_14f8;
                *(undefined8 *)(&DAT_1873de468 + lVar21) = 0;
                *(undefined4 *)(&DAT_1873de470 + lVar21) = 0;
                goto LAB_1400f8635;
              }
              piVar24 = piVar24 + 9;
              uVar26 = uVar26 - 1;
            } while (uVar26 != 0);
            if ((int)uVar25 != 0) goto LAB_1400f86bf;
          }
          if (iVar11 != 0) {
            lVar17 = (longlong)(int)DAT_189c1dc64;
            lVar21 = lVar17 * 0x80;
            DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
            (&DAT_1873de460)[lVar17 * 0x20] = 0x15;
            (&DAT_1873de464)[lVar17 * 0x20] = uVar2;
            (&DAT_1873de480)[lVar17 * 0x20] = iVar10;
            *(undefined8 *)(&DAT_1873de484 + lVar17 * 0x20) = 0;
            *(undefined4 *)(&DAT_1873de48c + lVar21) = 0;
            *(undefined8 *)(&DAT_1873de468 + lVar21) = 0;
            *(undefined4 *)(&DAT_1873de470 + lVar21) = 0;
          }
        }
LAB_1400f86bf:
        uVar2 = DAT_140278654;
        fVar38 = DAT_1402782f8;
        local_14f8 = uVar15 + 0x400;
        uVar26 = (ulonglong)local_14f8;
        uVar25 = (ulonglong)(iVar10 + 1);
        piVar28 = piVar28 + 0xe0d;
        uVar22 = uVar19;
        uVar29 = uVar19;
      } while ((int)local_14f8 < 0x40000);
      do {
        uVar15 = FUN_14023b1b0();
        if ((uVar15 & 0xf) < 6) {
          uVar31 = 0xf;
          local_1518 = FUN_14023b1b0();
          local_1518 = local_1518 +
                       (local_1518 / 6 + (local_1518 >> 0x1f) +
                       (int)(((longlong)local_1518 / 6 + ((longlong)local_1518 >> 0x3f) &
                             0xffffffffU) >> 0x1f)) * -6;
        }
        else {
          uVar31 = 6;
          if (10 < (uVar15 & 0xf)) {
            uVar31 = 0x10;
          }
          local_1518 = FUN_14023b1b0();
          local_1518 = local_1518 +
                       (local_1518 / 6 + (local_1518 >> 0x1f) +
                       (int)(((longlong)local_1518 / 6 + ((longlong)local_1518 >> 0x3f) &
                             0xffffffffU) >> 0x1f)) * -6;
        }
        if (0 < *(int *)((longlong)&DAT_183ec4918 + uVar22)) {
          piVar24 = (int *)((longlong)&DAT_183ec491c + uVar22);
          uVar26 = uVar19;
          uVar25 = uVar19;
          do {
            if (*piVar24 == 0) {
              *(undefined4 *)((longlong)&DAT_183ec491c + uVar25 * 0x34 + uVar22) = 1;
              lVar21 = uVar29 * 0x5bc4 + uVar26 * 0x34;
              iVar14 = FUN_14005bca0(uVar31,&DAT_183ec4920 + lVar21,0,&DAT_183ec492c + lVar21);
              goto LAB_1400f879a;
            }
            uVar15 = (int)uVar26 + 1;
            uVar26 = (ulonglong)uVar15;
            uVar25 = uVar25 + 1;
            piVar24 = piVar24 + 0xd;
          } while ((int)uVar15 < *(int *)((longlong)&DAT_183ec4918 + uVar22));
        }
        iVar14 = -1;
LAB_1400f879a:
        local_1510 = 0;
        local_1518 = 0;
        iVar10 = FUN_14012ceb0(uVar31,0,0,0);
        fVar35 = *(float *)((longlong)&DAT_183ebfd94 + uVar22);
        fVar36 = *(float *)((longlong)&DAT_183ebfd98 + uVar22);
        fVar37 = *(float *)((longlong)&DAT_183ebfd9c + uVar22);
        uVar1 = *(undefined4 *)((longlong)&DAT_183ebfd90 + uVar22);
        local_14f0 = _DAT_140278d30;
        fStack_14ec = _UNK_140278d34;
        fStack_14e8 = _UNK_140278d38;
        uStack_14e4 = _UNK_140278d3c;
        local_14e0 = _DAT_140278d30;
        fStack_14dc = _UNK_140278d34;
        fStack_14d8 = _UNK_140278d38;
        uStack_14d4 = _UNK_140278d3c;
        local_14d0 = 0x3f800000;
        (&DAT_15fd162dc)[(longlong)iVar10 * 0x17f] = 0;
        (&DAT_15fd16268)[(longlong)iVar10 * 0x17f] = iVar14;
        *(int *)(&DAT_15f2dc848 + (longlong)iVar14 * 0x5168) = iVar10;
        local_1508 = fVar35;
        local_1504 = fVar36;
        local_1500 = fVar37;
        FUN_14007b2a0(&local_14f0,&uStack_14e4,uVar1);
        FUN_14007b2a0(&local_14f0,&uStack_14e4,uVar2);
        lVar21 = 3;
        do {
          FUN_14023b1b0();
          FUN_140054130(0xb,&local_1508,0,&local_14f0);
          fVar35 = fVar35 + local_14f0 * fVar38;
          fVar36 = fVar36 + fStack_14ec * fVar38;
          fVar37 = fVar37 + fStack_14e8 * fVar38;
          local_1508 = fVar35;
          local_1504 = fVar36;
          local_1500 = fVar37;
          FUN_140054130(0xc,&local_1508,0,&local_14f0);
          fVar35 = local_14f0 * fVar38 + fVar35;
          fVar36 = fStack_14ec * fVar38 + fVar36;
          fVar37 = fStack_14e8 * fVar38 + fVar37;
          local_1508 = fVar35;
          local_1504 = fVar36;
          local_1500 = fVar37;
          FUN_140054130(0xc,&local_1508,0,&local_14f0);
          fVar35 = local_14f0 * fVar38 + fVar35;
          fVar36 = fStack_14ec * fVar38 + fVar36;
          fVar37 = fStack_14e8 * fVar38 + fVar37;
          local_1508 = fVar35;
          local_1504 = fVar36;
          local_1500 = fVar37;
          FUN_140054130(0xc,&local_1508,0,&local_14f0);
          fVar35 = local_14f0 * fVar38 + fVar35;
          fVar37 = fStack_14e8 * fVar38 + fVar37;
          fVar36 = fStack_14ec * fVar38 + fVar36;
          lVar21 = lVar21 + -1;
          local_1508 = fVar35;
          local_1504 = fVar36;
          local_1500 = fVar37;
        } while (lVar21 != 0);
        uVar15 = FUN_14023b1b0();
        uVar15 = (uVar15 & 1) + 1;
        if (uVar15 != 0) {
          uVar26 = (ulonglong)uVar15;
          do {
            FUN_140054130(0xe,&local_1508,0,&local_14f0);
            fVar35 = fVar35 + local_14f0 * fVar38;
            fVar36 = fVar36 + fStack_14ec * fVar38;
            fVar37 = fVar37 + fStack_14e8 * fVar38;
            uVar26 = uVar26 - 1;
            local_1508 = fVar35;
            local_1504 = fVar36;
            local_1500 = fVar37;
          } while (uVar26 != 0);
        }
        iVar14 = FUN_140054130(0x19,&local_1508,0,&local_14f0);
        fVar35 = local_14f0 * fVar38 + fVar35;
        fVar36 = fStack_14ec * fVar38 + fVar36;
        fVar37 = fStack_14e8 * fVar38 + fVar37;
        local_1508 = fVar35;
        local_1504 = fVar36;
        local_1500 = fVar37;
        if (iVar14 != -1) {
          (&DAT_182bbb3f8)[(longlong)iVar14 * 0x6e0] = 0;
          (&DAT_182bbb2e0)[(longlong)iVar14 * 0x6e0] = ((int)uVar29 + 1) * 0x457;
          FUN_140051940(iVar14);
        }
        FUN_140054130(0x23,&local_1508);
        iVar14 = DAT_1ad04adc0;
        uVar1 = DAT_183ebfd34;
        uVar15 = (int)uVar29 + 1;
        local_1508 = local_14f0 * fVar38 + fVar35;
        local_1504 = fStack_14ec * fVar38 + fVar36;
        local_1500 = fStack_14e8 * fVar38 + fVar37;
        uVar22 = uVar22 + 0x5bc4;
        uVar29 = (ulonglong)uVar15;
      } while ((int)uVar15 < 3);
      if (DAT_1ad04adc0 != 0) {
        lVar21 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar21 * 0x20] = 10;
        (&DAT_1873de464)[lVar21 * 0x20] = uVar1;
        (&DAT_1873de480)[lVar21 * 0x20] = 0;
        (&DAT_1873de484)[lVar21 * 0x20] = 1;
      }
      DAT_183ebfdc0 = 1;
      if (iVar14 != 0) {
        lVar21 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar21 * 0x20] = 10;
        (&DAT_1873de464)[lVar21 * 0x20] = uVar1;
        (&DAT_1873de480)[lVar21 * 0x20] = 1;
        (&DAT_1873de484)[lVar21 * 0x20] = 1;
      }
      DAT_183ec5984 = 1;
      if (iVar14 != 0) {
        lVar21 = (longlong)(int)DAT_189c1dc64;
        DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        (&DAT_1873de460)[lVar21 * 0x20] = 10;
        (&DAT_1873de464)[lVar21 * 0x20] = uVar1;
        (&DAT_1873de480)[lVar21 * 0x20] = 2;
        (&DAT_1873de484)[lVar21 * 0x20] = 1;
      }
      DAT_183ecb548 = 1;
      if (0 < DAT_183f7a320) {
        puVar18 = &DAT_183f7a344;
        do {
          *(undefined8 *)(puVar18 + -2) = 0;
          *puVar18 = 0;
          lVar21 = (longlong)(int)(&DAT_151620cfc)[(longlong)(int)puVar18[-8] * 0xe0d];
          if ((&DAT_151620cfc)[(longlong)(int)puVar18[-8] * 0xe0d] != -1) {
            puVar18[-2] = (&DAT_18329e52c)[lVar21 * 0x1bfe];
            puVar18[-1] = (&DAT_18329e530)[lVar21 * 0x1bfe];
            *puVar18 = (&DAT_18329e534)[lVar21 * 0x1bfe];
          }
          uVar15 = (int)uVar19 + 1;
          uVar19 = (ulonglong)uVar15;
          puVar18 = puVar18 + 9;
        } while ((int)uVar15 < DAT_183f7a320);
      }
      DAT_183ebfccc = 2;
      _DAT_183ebfcd4 = 54000;
    }
  }
  else if (DAT_183ebfccc == 2) {
    DAT_183ebfcd4 = DAT_183ebfcd4 + -1;
    DAT_183ebfcd8 = DAT_183ebfcd8 + 1;
    iVar11 = 0;
    piVar24 = &DAT_151623978;
    iVar10 = iVar11;
    do {
      if (((piVar24[-0xb46] != 0) && (*piVar24 == 0)) && (piVar24[-0xb34] != 0)) {
        iVar10 = iVar10 + 1;
      }
      piVar24 = piVar24 + 0xe0d;
    } while ((longlong)piVar24 < 0x1519a6d78);
    iVar20 = 0x708;
    if (DAT_183ebfcd8 < 18000) {
      iVar20 = 0xa8c;
    }
    if (0x707f < DAT_183ebfcd8) {
      iVar20 = 900;
    }
    if (0x9aaf < DAT_183ebfcd8) {
      iVar20 = 300;
    }
    if (0 < DAT_183f7a320) {
      piVar24 = &DAT_183f7a324;
      uVar26 = _DAT_183f7a320 & 0xffffffff;
      do {
        lVar21 = (longlong)(int)(&DAT_151620cfc)[(longlong)*piVar24 * 0xe0d];
        if ((&DAT_151620cfc)[(longlong)*piVar24 * 0xe0d] != -1) {
          DAT_183f7a5a0 = (&DAT_18329e52c)[lVar21 * 0x1bfe];
          DAT_183f7a5a4 = (&DAT_18329e530)[lVar21 * 0x1bfe];
          DAT_183f7a5a8 = (&DAT_18329e534)[lVar21 * 0x1bfe];
        }
        piVar24 = piVar24 + 9;
        uVar26 = uVar26 - 1;
      } while (uVar26 != 0);
    }
    iVar23 = DAT_183f7a320;
    if (((0x1c1f < DAT_183ebfcd8) && (DAT_183ebfcd4 % iVar20 == 0)) && (0 < DAT_183f7a320)) {
      puVar18 = &DAT_183f7a340;
      iVar20 = iVar11;
      do {
        uVar2 = puVar18[-1];
        puVar18[-4] = uVar2;
        uVar1 = *puVar18;
        puVar18[-3] = uVar1;
        uVar3 = puVar18[1];
        puVar18[-2] = uVar3;
        uVar9 = DAT_183ebfd34;
        if ((0x2a2f < DAT_183ebfcd8) && (iVar14 != 0)) {
          lVar17 = (longlong)(int)DAT_189c1dc64;
          lVar21 = lVar17 * 0x80;
          (&DAT_1873de460)[lVar17 * 0x20] = 0x15;
          (&DAT_1873de464)[lVar17 * 0x20] = uVar9;
          (&DAT_1873de480)[lVar17 * 0x20] = puVar18[-6];
          *(undefined8 *)(&DAT_1873de484 + lVar17 * 0x20) = 1;
          *(undefined4 *)(&DAT_1873de48c + lVar21) = 0;
          *(undefined4 *)(&DAT_1873de468 + lVar21) = uVar2;
          *(undefined4 *)(&DAT_1873de46c + lVar21) = uVar1;
          *(undefined4 *)(&DAT_1873de470 + lVar21) = uVar3;
          DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        }
        lVar21 = (longlong)(int)(&DAT_151620cfc)[(longlong)(int)puVar18[-7] * 0xe0d];
        if ((&DAT_151620cfc)[(longlong)(int)puVar18[-7] * 0xe0d] == -1) {
          puVar18[-1] = DAT_183f7a5a0;
          *puVar18 = DAT_183f7a5a4;
          uVar2 = DAT_183f7a5a8;
        }
        else {
          uVar2 = (&DAT_18329e534)[lVar21 * 0x1bfe];
          puVar18[-1] = (&DAT_18329e52c)[lVar21 * 0x1bfe];
          *puVar18 = (&DAT_18329e530)[lVar21 * 0x1bfe];
        }
        puVar18[1] = uVar2;
        uVar2 = DAT_183ebfd34;
        if (iVar14 != 0) {
          lVar17 = (longlong)(int)DAT_189c1dc64;
          uVar1 = puVar18[1];
          uVar3 = *puVar18;
          lVar21 = lVar17 * 0x80;
          (&DAT_1873de460)[lVar17 * 0x20] = 0x15;
          (&DAT_1873de464)[lVar17 * 0x20] = uVar2;
          (&DAT_1873de480)[lVar17 * 0x20] = puVar18[-5];
          uVar2 = puVar18[-1];
          *(undefined8 *)(&DAT_1873de484 + lVar17 * 0x20) = 1;
          *(undefined4 *)(&DAT_1873de48c + lVar21) = 0;
          *(undefined4 *)(&DAT_1873de468 + lVar21) = uVar2;
          *(undefined4 *)(&DAT_1873de46c + lVar21) = uVar3;
          *(undefined4 *)(&DAT_1873de470 + lVar21) = uVar1;
          DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
        }
        iVar20 = iVar20 + 1;
        puVar18 = puVar18 + 9;
        iVar23 = DAT_183f7a320;
      } while (iVar20 < DAT_183f7a320);
    }
    if ((0x2a2f < DAT_183ebfcd8) && (DAT_183ebfcd8 == (DAT_183ebfcd8 / 0xe10) * 0xe10)) {
      uVar15 = FUN_14023b1b0();
      uVar15 = uVar15 & 0x80000007;
      if ((int)uVar15 < 0) {
        uVar15 = (uVar15 - 1 | 0xfffffff8) + 1;
      }
      FUN_1400a56b0(&local_1508,DAT_140278280,0);
      fVar35 = DAT_1402783f4;
      lVar21 = (longlong)(int)uVar15;
      local_14d0 = 0x3f800000;
      local_1508 = local_1508 + (float)(&DAT_1b4657dbc)[lVar21 * 0x13];
      local_1504 = local_1504 + *(float *)(&DAT_1b4657dc0 + lVar21 * 0x4c);
      local_1500 = local_1500 + (float)(&DAT_1b4657dc4)[lVar21 * 0x13];
      local_14f0 = _DAT_140278d30;
      fStack_14ec = _UNK_140278d34;
      fStack_14e8 = _UNK_140278d38;
      uStack_14e4 = _UNK_140278d3c;
      local_14e0 = _DAT_140278d30;
      fStack_14dc = _UNK_140278d34;
      fStack_14d8 = _UNK_140278d38;
      uStack_14d4 = _UNK_140278d3c;
      FUN_140054130(0xd,&local_1508,0,&local_14f0);
      uVar15 = FUN_14023b1b0();
      uVar15 = uVar15 & 0x80000007;
      if ((int)uVar15 < 0) {
        uVar15 = (uVar15 - 1 | 0xfffffff8) + 1;
      }
      iVar14 = FUN_14023b1b0();
      iVar14 = iVar14 % 5;
      if (iVar14 == 0) {
        iVar20 = 0xb;
      }
      else if (iVar14 == 1) {
        iVar20 = 7;
      }
      else if (iVar14 == 2) {
        iVar20 = 1;
      }
      else {
        iVar20 = 9;
        if (iVar14 == 3) {
          iVar20 = 3;
        }
      }
      lVar21 = (longlong)(int)uVar15;
      iVar14 = iVar11;
      do {
        FUN_1400a56b0(&local_1508,fVar35,0);
        local_1508 = local_1508 + (float)(&DAT_1b4657dbc)[lVar21 * 0x13];
        local_1500 = local_1500 + (float)(&DAT_1b4657dc4)[lVar21 * 0x13];
        iVar23 = iVar20;
        if (iVar14 != 0) {
          iVar23 = iVar20 + 1;
        }
        local_1504 = *(float *)(&DAT_1b4657dc0 + lVar21 * 0x4c);
        FUN_140054130(iVar23,&local_1508,0,&local_14f0);
        iVar14 = iVar14 + 1;
      } while (iVar14 < 4);
      iVar14 = FUN_14023b1b0();
      uVar2 = DAT_140278654;
      fVar36 = DAT_140278338;
      fVar35 = DAT_1402782f8;
      iVar14 = iVar14 + (iVar14 / 3 + (iVar14 >> 0x1f) +
                        (int)(((longlong)iVar14 / 3 + ((longlong)iVar14 >> 0x3f) & 0xffffffffU) >>
                             0x1f)) * -3;
      uVar15 = 1 << ((byte)iVar14 & 0x1f);
      if (iVar10 < 0xf) {
        if (7 < iVar10) {
          uVar30 = iVar14 + 1;
          uVar16 = 0;
          if ((int)uVar30 < 3) {
            uVar16 = uVar30;
          }
          uVar15 = uVar15 | 1 << (uVar16 & 0x1f);
        }
      }
      else {
        uVar15 = 7;
      }
      pfVar27 = (float *)&DAT_183ebfd9c;
      iVar14 = iVar11;
      local_14f8 = uVar15;
      do {
        if (((int)uVar15 >> ((byte)iVar14 & 0x1f) & 1U) != 0) {
          fVar38 = pfVar27[-2];
          fVar37 = pfVar27[-1];
          fVar39 = *pfVar27;
          local_14f0 = _DAT_140278d30;
          fStack_14ec = _UNK_140278d34;
          fStack_14e8 = _UNK_140278d38;
          uStack_14e4 = _UNK_140278d3c;
          local_14d0 = 0x3f800000;
          local_14e0 = _DAT_140278d30;
          fStack_14dc = _UNK_140278d34;
          fStack_14d8 = _UNK_140278d38;
          uStack_14d4 = _UNK_140278d3c;
          FUN_14007b2a0(&local_14f0,&uStack_14e4,pfVar27[-3]);
          FUN_14007b2a0(&local_14f0,&uStack_14e4,uVar2);
          lVar21 = 0x10;
          fVar37 = fVar37 + fStack_14ec * fVar35;
          fVar38 = fVar38 + local_14f0 * fVar35;
          fVar39 = fVar39 + fStack_14e8 * fVar35;
          fVar32 = fVar37 - fVar36;
          fVar33 = fVar38;
          fVar34 = fVar39;
          do {
            pfVar13 = (float *)&DAT_182bbb1e4;
            do {
              if (((pfVar13[-0x19] != 0.0) &&
                  (SQRT((fVar32 - pfVar13[-1]) * (fVar32 - pfVar13[-1]) +
                        (fVar33 - pfVar13[-2]) * (fVar33 - pfVar13[-2]) +
                        (fVar34 - *pfVar13) * (fVar34 - *pfVar13)) < fVar36)) &&
                 (pfVar13[-0x10] == -NAN)) {
                pfVar13[-0x12] = 0.0;
              }
              if (((pfVar13[0x6c7] != 0.0) &&
                  (SQRT((fVar32 - pfVar13[0x6df]) * (fVar32 - pfVar13[0x6df]) +
                        (fVar33 - pfVar13[0x6de]) * (fVar33 - pfVar13[0x6de]) +
                        (fVar34 - pfVar13[0x6e0]) * (fVar34 - pfVar13[0x6e0])) < fVar36)) &&
                 (pfVar13[0x6d0] == -NAN)) {
                pfVar13[0x6ce] = 0.0;
              }
              if (((pfVar13[0xda7] != 0.0) &&
                  (SQRT((fVar32 - pfVar13[0xdbf]) * (fVar32 - pfVar13[0xdbf]) +
                        (fVar33 - pfVar13[0xdbe]) * (fVar33 - pfVar13[0xdbe]) +
                        (fVar34 - pfVar13[0xdc0]) * (fVar34 - pfVar13[0xdc0])) < fVar36)) &&
                 (pfVar13[0xdb0] == -NAN)) {
                pfVar13[0xdae] = 0.0;
              }
              if (((pfVar13[0x1487] != 0.0) &&
                  (SQRT((fVar32 - pfVar13[0x149f]) * (fVar32 - pfVar13[0x149f]) +
                        (fVar33 - pfVar13[0x149e]) * (fVar33 - pfVar13[0x149e]) +
                        (fVar34 - pfVar13[0x14a0]) * (fVar34 - pfVar13[0x14a0])) < fVar36)) &&
                 (pfVar13[0x1490] == -NAN)) {
                pfVar13[0x148e] = 0.0;
              }
              pfVar13 = pfVar13 + 0x1b80;
            } while ((longlong)pfVar13 < 0x18329b1e4);
            fVar33 = fVar33 + local_14f0 * fVar35;
            fVar32 = fVar32 + fStack_14ec * fVar35;
            fVar34 = fVar34 + fStack_14e8 * fVar35;
            lVar21 = lVar21 + -1;
          } while (lVar21 != 0);
          lVar21 = 3;
          do {
            local_1508 = fVar38;
            local_1504 = fVar37;
            local_1500 = fVar39;
            iVar10 = FUN_14023b1b0();
            iVar10 = iVar10 % 5;
            if (iVar10 == 0) {
              iVar20 = 0xb;
            }
            else if (iVar10 == 1) {
              iVar20 = 7;
            }
            else if (iVar10 == 2) {
              iVar20 = 1;
            }
            else {
              iVar20 = 9;
              if (iVar10 == 3) {
                iVar20 = 3;
              }
            }
            FUN_140054130(iVar20,&local_1508,0,&local_14f0);
            fVar38 = fVar38 + local_14f0 * fVar35;
            fVar37 = fVar37 + fStack_14ec * fVar35;
            fVar39 = fVar39 + fStack_14e8 * fVar35;
            local_1508 = fVar38;
            local_1504 = fVar37;
            local_1500 = fVar39;
            FUN_140054130(iVar20 + 1,&local_1508,0,&local_14f0);
            fVar38 = local_14f0 * fVar35 + fVar38;
            fVar37 = fStack_14ec * fVar35 + fVar37;
            fVar39 = fStack_14e8 * fVar35 + fVar39;
            local_1508 = fVar38;
            local_1504 = fVar37;
            local_1500 = fVar39;
            FUN_140054130(iVar20 + 1,&local_1508,0,&local_14f0);
            fVar38 = local_14f0 * fVar35 + fVar38;
            fVar37 = fStack_14ec * fVar35 + fVar37;
            fVar39 = fStack_14e8 * fVar35 + fVar39;
            local_1508 = fVar38;
            local_1504 = fVar37;
            local_1500 = fVar39;
            FUN_140054130(iVar20 + 1,&local_1508,0,&local_14f0);
            fVar38 = local_14f0 * fVar35 + fVar38;
            fVar39 = fStack_14e8 * fVar35 + fVar39;
            fVar37 = fStack_14ec * fVar35 + fVar37;
            lVar21 = lVar21 + -1;
          } while (lVar21 != 0);
          local_1508 = fVar38;
          local_1504 = fVar37;
          local_1500 = fVar39;
          FUN_140054130(0xd,&local_1508,0,&local_14f0);
          fVar38 = local_14f0 * fVar35 + fVar38;
          fVar37 = fStack_14ec * fVar35 + fVar37;
          fVar39 = fStack_14e8 * fVar35 + fVar39;
          local_1508 = fVar38;
          local_1504 = fVar37;
          local_1500 = fVar39;
          uVar15 = FUN_14023b1b0();
          uVar30 = (uVar15 & 1) + 1;
          uVar15 = local_14f8;
          if (uVar30 != 0) {
            uVar26 = (ulonglong)uVar30;
            do {
              FUN_140054130(0xe,&local_1508,0,&local_14f0);
              fVar38 = fVar38 + local_14f0 * fVar35;
              fVar37 = fVar37 + fStack_14ec * fVar35;
              fVar39 = fVar39 + fStack_14e8 * fVar35;
              uVar26 = uVar26 - 1;
              uVar15 = local_14f8;
              local_1508 = fVar38;
              local_1504 = fVar37;
              local_1500 = fVar39;
            } while (uVar26 != 0);
          }
        }
        iVar14 = iVar14 + 1;
        pfVar27 = pfVar27 + 0x16f1;
      } while (iVar14 < 3);
      iVar23 = (int)_DAT_183f7a320;
      iVar14 = DAT_1ad04adc0;
    }
    uVar2 = DAT_183ebfd34;
    piVar24 = &DAT_151623978;
    bVar8 = false;
    if (0 < iVar23) {
      piVar12 = &DAT_183f7a328;
      iVar10 = iVar11;
      do {
        if (((&DAT_151620c60)[(longlong)*piVar12 * 0xe0d] != 0) &&
           ((&DAT_151620cfc)[(longlong)*piVar12 * 0xe0d] != -1)) goto LAB_1400f97bf;
        iVar10 = iVar10 + 1;
        piVar12 = piVar12 + 9;
      } while (iVar10 < iVar23);
    }
    DAT_183ebfdb0 = 100;
    bVar8 = true;
    DAT_183ec5974._0_4_ = 0;
    _DAT_183ecb538 = 100;
LAB_1400f97bf:
    if (0 < iVar23) {
      piVar12 = &DAT_183f7a324;
      iVar10 = iVar11;
      do {
        if (((&DAT_151620c60)[(longlong)*piVar12 * 0xe0d] != 0) &&
           ((&DAT_151620cfc)[(longlong)*piVar12 * 0xe0d] != -1)) {
          if (!bVar8) {
            if (0 < DAT_183ebfcd4) {
              return;
            }
            DAT_183ebfdb0 = 100;
            DAT_183ec5974._0_4_ = 0;
            _DAT_183ecb538 = 100;
          }
          goto LAB_1400f9814;
        }
        iVar10 = iVar10 + 1;
        piVar12 = piVar12 + 9;
      } while (iVar10 < iVar23);
    }
    DAT_183ebfdb0 = 0;
    DAT_183ec5974._0_4_ = 100;
    _DAT_183ecb538 = 0;
LAB_1400f9814:
    DAT_183ebfccc = 3;
    _DAT_183ebfcd4 = CONCAT44(DAT_183ebfcd8,0x4b0);
    iVar10 = iVar11;
    do {
      if (((piVar24[-0xb46] != 0) && (*piVar24 == 0)) && (0 < iVar23)) {
        piVar12 = &DAT_183f7a328;
        iVar20 = iVar11;
        do {
          if (iVar14 != 0) {
            lVar17 = (longlong)(int)DAT_189c1dc64;
            iVar4 = piVar12[1];
            lVar21 = lVar17 * 0x80;
            iVar5 = *piVar12;
            iVar6 = piVar12[-1];
            (&DAT_1873de460)[lVar17 * 0x20] = 0x15;
            DAT_189c1dc64._0_2_ = (short)DAT_189c1dc64 + 1;
            (&DAT_1873de464)[lVar17 * 0x20] = uVar2;
            (&DAT_1873de480)[lVar17 * 0x20] = iVar10;
            (&DAT_1873de484)[lVar17 * 0x20] = 2;
            *(int *)(&DAT_1873de488 + lVar21) = iVar20;
            *(int *)(&DAT_1873de48c + lVar21) = (iVar4 * 0x400 + iVar5) * 0x400 + iVar6;
            *(undefined8 *)(&DAT_1873de468 + lVar21) = 0;
            *(undefined4 *)(&DAT_1873de470 + lVar21) = 0;
            DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
          }
          iVar20 = iVar20 + 1;
          piVar12 = piVar12 + 9;
        } while (iVar20 < iVar23);
      }
      iVar10 = iVar10 + 1;
      piVar24 = piVar24 + 0xe0d;
    } while (iVar10 < 0x100);
  }
  else if ((DAT_183ebfccc == 3) &&
          (iVar14 = DAT_183ebfcd4 + -1, _DAT_183ebfcd4 = CONCAT44(DAT_183ebfcd8,iVar14), iVar14 < 1)
          ) {
    FUN_140127910();
  }
  return;
}



===== FUN_1401300c0 @ 1401300c0 root=true =====

void FUN_1401300c0(int param_1)

{
  uint uVar1;
  int *piVar2;
  longlong lVar3;
  int *piVar4;
  
  piVar4 = &DAT_183ec035c;
  do {
    lVar3 = 2;
    piVar2 = piVar4;
    do {
      if (((piVar2[-0x118] != 0) && (piVar2[-0x117] == 0)) && (piVar2[-0x116] == param_1)) {
        uVar1 = piVar2[-0x114];
        if ((uVar1 != 0xffffffff) && (uVar1 < 0x400)) {
          (&DAT_182bbb19c)[(longlong)(int)uVar1 * 0x6e0] = 0;
        }
        piVar2[-0x114] = -1;
      }
      if (((piVar2[-1] != 0) && (*piVar2 == 0)) && (piVar2[1] == param_1)) {
        uVar1 = piVar2[3];
        if ((uVar1 != 0xffffffff) && (uVar1 < 0x400)) {
          (&DAT_182bbb19c)[(longlong)(int)uVar1 * 0x6e0] = 0;
        }
        piVar2[3] = -1;
      }
      if (((piVar2[0x116] != 0) && (piVar2[0x117] == 0)) && (piVar2[0x118] == param_1)) {
        uVar1 = piVar2[0x11a];
        if ((uVar1 != 0xffffffff) && (uVar1 < 0x400)) {
          (&DAT_182bbb19c)[(longlong)(int)uVar1 * 0x6e0] = 0;
        }
        piVar2[0x11a] = -1;
      }
      if (((piVar2[0x22d] != 0) && (piVar2[0x22e] == 0)) && (piVar2[0x22f] == param_1)) {
        uVar1 = piVar2[0x231];
        if ((uVar1 != 0xffffffff) && (uVar1 < 0x400)) {
          (&DAT_182bbb19c)[(longlong)(int)uVar1 * 0x6e0] = 0;
        }
        piVar2[0x231] = -1;
      }
      if (((piVar2[0x344] != 0) && (piVar2[0x345] == 0)) && (piVar2[0x346] == param_1)) {
        uVar1 = piVar2[0x348];
        if ((uVar1 != 0xffffffff) && (uVar1 < 0x400)) {
          (&DAT_182bbb19c)[(longlong)(int)uVar1 * 0x6e0] = 0;
        }
        piVar2[0x348] = -1;
      }
      if (((piVar2[0x45b] != 0) && (piVar2[0x45c] == 0)) && (piVar2[0x45d] == param_1)) {
        uVar1 = piVar2[0x45f];
        if ((uVar1 != 0xffffffff) && (uVar1 < 0x400)) {
          (&DAT_182bbb19c)[(longlong)(int)uVar1 * 0x6e0] = 0;
        }
        piVar2[0x45f] = -1;
      }
      if (((piVar2[0x572] != 0) && (piVar2[0x573] == 0)) && (piVar2[0x574] == param_1)) {
        uVar1 = piVar2[0x576];
        if ((uVar1 != 0xffffffff) && (uVar1 < 0x400)) {
          (&DAT_182bbb19c)[(longlong)(int)uVar1 * 0x6e0] = 0;
        }
        piVar2[0x576] = -1;
      }
      if (((piVar2[0x689] != 0) && (piVar2[0x68a] == 0)) && (piVar2[0x68b] == param_1)) {
        uVar1 = piVar2[0x68d];
        if ((uVar1 != 0xffffffff) && (uVar1 < 0x400)) {
          (&DAT_182bbb19c)[(longlong)(int)uVar1 * 0x6e0] = 0;
        }
        piVar2[0x68d] = -1;
      }
      piVar2 = piVar2 + 0x8b8;
      lVar3 = lVar3 + -1;
    } while (lVar3 != 0);
    piVar4 = piVar4 + 0x16f1;
  } while ((longlong)piVar4 < 0x183ee29f4);
  return;
}



===== FUN_140054130 @ 140054130 root=true =====

uint FUN_140054130(int param_1,float *param_2,undefined4 *param_3,float *param_4)

{
  float fVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  undefined2 uVar4;
  undefined4 uVar5;
  float fVar6;
  undefined1 uVar7;
  undefined1 uVar8;
  undefined1 uVar9;
  undefined1 uVar10;
  undefined1 uVar11;
  undefined1 uVar12;
  undefined1 uVar13;
  undefined1 uVar14;
  undefined1 uVar15;
  undefined1 uVar16;
  undefined1 uVar17;
  undefined1 uVar18;
  undefined1 uVar19;
  undefined1 uVar20;
  undefined1 uVar21;
  undefined1 uVar22;
  int iVar23;
  int *piVar24;
  float *pfVar25;
  undefined *puVar26;
  uint uVar27;
  longlong lVar28;
  longlong lVar29;
  int iVar30;
  float *pfVar31;
  longlong lVar32;
  longlong lVar33;
  undefined4 uVar34;
  float fVar35;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  
  lVar28 = (longlong)param_1;
  piVar24 = &DAT_182bbb180;
  uVar27 = 0;
  while (*piVar24 != 0) {
    uVar27 = uVar27 + 1;
    piVar24 = piVar24 + 0x6e0;
    if (0x18329b17f < (longlong)piVar24) {
      return 0xffffffff;
    }
  }
  if (uVar27 != 0xffffffff) {
    lVar32 = (longlong)(int)uVar27;
    lVar29 = lVar32 * 0x1b80;
    FUN_1401fcd30(&DAT_182bbb184 + lVar32 * 0x6e0,0,0x1b7c);
    uVar34 = 0;
    (&DAT_182bbb180)[lVar32 * 0x6e0] = 1;
    (&DAT_182bbb194)[lVar32 * 0x6e0] = param_1;
    (&DAT_182bbb19c)[lVar32 * 0x6e0] = 0xffff;
    *(undefined8 *)(&DAT_182bbb1a0 + lVar29) = 0xffffffffffffffff;
    (&DAT_182bbb1a8)[lVar32 * 0x6e0] = 0xffffffff;
    lVar33 = lVar28 * 0x13d0;
    *(undefined4 *)(&DAT_182bbb198 + lVar29) = *(undefined4 *)(&DAT_182a7e188 + lVar33);
    (&DAT_182bbb1dc)[lVar32 * 0x6e0] = *param_2;
    (&DAT_182bbb1e0)[lVar32 * 0x6e0] = param_2[1];
    (&DAT_182bbb1e4)[lVar32 * 0x6e0] = param_2[2];
    (&DAT_182bbb1e8)[lVar32 * 0x6e0] = *param_2;
    (&DAT_182bbb1ec)[lVar32 * 0x6e0] = param_2[1];
    (&DAT_182bbb1f0)[lVar32 * 0x6e0] = param_2[2];
    if (param_3 == (undefined4 *)0x0) {
      *(undefined8 *)(&DAT_182bbb200 + lVar32 * 0x6e0) = 0;
    }
    else {
      (&DAT_182bbb200)[lVar32 * 0x6e0] = *param_3;
      (&DAT_182bbb204)[lVar32 * 0x6e0] = param_3[1];
      uVar34 = param_3[2];
    }
    (&DAT_182bbb208)[lVar32 * 0x6e0] = uVar34;
    fVar6 = DAT_1402783f4;
    fVar1 = (float)(&DAT_182a7e290)[lVar28 * 0x4f4];
    fVar35 = DAT_1402783f4 / fVar1;
    (&DAT_182bbb224)[lVar32 * 0x6e0] = *param_4;
    (&DAT_182bbb228)[lVar32 * 0x6e0] = param_4[1];
    (&DAT_182bbb22c)[lVar32 * 0x6e0] = param_4[2];
    (&DAT_182bbb230)[lVar32 * 0x6e0] = param_4[3];
    (&DAT_182bbb234)[lVar32 * 0x6e0] = param_4[4];
    (&DAT_182bbb238)[lVar32 * 0x6e0] = param_4[5];
    (&DAT_182bbb23c)[lVar32 * 0x6e0] = param_4[6];
    (&DAT_182bbb240)[lVar32 * 0x6e0] = param_4[7];
    (&DAT_182bbb244)[lVar32 * 0x6e0] = param_4[8];
    *(undefined4 *)(&DAT_182bbb414 + lVar29) = (&DAT_182a7e294)[lVar28 * 0x4f4];
    *(undefined4 *)(&DAT_182bbb418 + lVar29) = (&DAT_182a7e298)[lVar28 * 0x4f4];
    pfVar25 = (float *)(&DAT_182bbb404 + lVar29);
    *(float *)(&DAT_182bbb410 + lVar29) = fVar1;
    *pfVar25 = fVar35;
    *(float *)(&DAT_182bbb408 + lVar29) = fVar6 / *(float *)(&DAT_182bbb414 + lVar29);
    *(float *)(&DAT_182bbb40c + lVar29) = fVar6 / *(float *)(&DAT_182bbb418 + lVar29);
    iVar23 = FUN_14005cf80(3);
    (&DAT_182bbb1d8)[lVar32 * 0x6e0] = iVar23;
    *(undefined4 *)(&DAT_182bbb2c8 + lVar29) = *(undefined4 *)(&DAT_182a7e1a0 + lVar33);
    uVar34 = *(undefined4 *)(&DAT_182a7e1a4 + lVar33);
    *(uint *)(&DAT_1449816ec + (longlong)iVar23 * 0xbc) = uVar27;
    (&DAT_182bbb2b8)[lVar32 * 0x6e0] = 100;
    (&DAT_182bbb2c4)[lVar32 * 0x6e0] = uVar34;
    *(undefined4 *)(&DAT_182bbb2c0 + lVar29) = 0;
    (&DAT_182bbb2dc)[lVar32 * 0x6e0] = 0xffffffff;
    (&DAT_182bbb400)[lVar32 * 0x6e0] = 0xffffffff;
    (&DAT_182bbb4bc)[lVar32 * 0x6e0] = 0xffffffff;
    uVar3 = s_STARTING_CS_DOS____140275ef0._8_8_;
    uVar2 = s_STARTING_CS_DOS____140275ef0._0_8_;
    if (param_1 == 0x27) {
      iVar23 = (&DAT_182bbb4e8)[lVar32 * 0x6e0];
      iVar30 = 2;
      *(undefined4 *)(&DAT_182bbc574 + lVar29) = 2;
      *(undefined4 *)(&DAT_182bbc7d8 + lVar29) = 0xffffffff;
      uVar4 = s_STARTING_CS_DOS____140275ef0._16_2_;
      lVar28 = ((longlong)iVar23 + lVar32 * 0x6e) * 0x40;
      *(undefined8 *)(&DAT_182bbb4f4 + lVar28) = uVar2;
      *(undefined8 *)(&DAT_182bbb4fc + lVar28) = uVar3;
      *(undefined2 *)(&DAT_182bbb504 + lVar28) = uVar4;
      (&DAT_182bbb506)[lVar28] = s_STARTING_CS_DOS____140275ef0[0x12];
      FUN_1400c3e00(uVar27);
      FUN_1400c3e00(uVar27);
      FUN_1400c6d90(uVar27,0);
      do {
        FUN_140050f90(uVar27,iVar30);
        iVar30 = iVar30 + 1;
      } while (iVar30 < 0x18);
      lVar28 = 0x20;
      puVar26 = &DAT_182bbbcf4 + lVar29;
      do {
        uVar22 = UNK_14027920f;
        uVar21 = UNK_14027920e;
        uVar20 = UNK_14027920d;
        uVar19 = UNK_14027920c;
        uVar18 = UNK_14027920b;
        uVar17 = UNK_14027920a;
        uVar16 = UNK_140279209;
        uVar15 = UNK_140279208;
        uVar14 = UNK_140279207;
        uVar13 = UNK_140279206;
        uVar12 = UNK_140279205;
        uVar11 = UNK_140279204;
        uVar10 = UNK_140279203;
        uVar9 = UNK_140279202;
        uVar8 = UNK_140279201;
        uVar7 = DAT_140279200;
        *puVar26 = DAT_140279200;
        puVar26[1] = uVar8;
        puVar26[2] = uVar9;
        puVar26[3] = uVar10;
        puVar26[4] = uVar11;
        puVar26[5] = uVar12;
        puVar26[6] = uVar13;
        puVar26[7] = uVar14;
        puVar26[8] = uVar15;
        puVar26[9] = uVar16;
        puVar26[10] = uVar17;
        puVar26[0xb] = uVar18;
        puVar26[0xc] = uVar19;
        puVar26[0xd] = uVar20;
        puVar26[0xe] = uVar21;
        puVar26[0xf] = uVar22;
        puVar26[0x10] = uVar7;
        puVar26[0x11] = uVar8;
        puVar26[0x12] = uVar9;
        puVar26[0x13] = uVar10;
        puVar26[0x14] = uVar11;
        puVar26[0x15] = uVar12;
        puVar26[0x16] = uVar13;
        puVar26[0x17] = uVar14;
        puVar26[0x18] = uVar15;
        puVar26[0x19] = uVar16;
        puVar26[0x1a] = uVar17;
        puVar26[0x1b] = uVar18;
        puVar26[0x1c] = uVar19;
        puVar26[0x1d] = uVar20;
        puVar26[0x1e] = uVar21;
        puVar26[0x1f] = uVar22;
        puVar26[0x20] = uVar7;
        puVar26[0x21] = uVar8;
        puVar26[0x22] = uVar9;
        puVar26[0x23] = uVar10;
        puVar26[0x24] = uVar11;
        puVar26[0x25] = uVar12;
        puVar26[0x26] = uVar13;
        puVar26[0x27] = uVar14;
        puVar26[0x28] = uVar15;
        puVar26[0x29] = uVar16;
        puVar26[0x2a] = uVar17;
        puVar26[0x2b] = uVar18;
        puVar26[0x2c] = uVar19;
        puVar26[0x2d] = uVar20;
        puVar26[0x2e] = uVar21;
        puVar26[0x2f] = uVar22;
        puVar26[0x30] = uVar7;
        puVar26[0x31] = uVar8;
        puVar26[0x32] = uVar9;
        puVar26[0x33] = uVar10;
        puVar26[0x34] = uVar11;
        puVar26[0x35] = uVar12;
        puVar26[0x36] = uVar13;
        puVar26[0x37] = uVar14;
        puVar26[0x38] = uVar7;
        puVar26[0x39] = uVar8;
        puVar26[0x3a] = uVar9;
        puVar26[0x3b] = uVar10;
        puVar26[0x3c] = uVar7;
        puVar26[0x3d] = uVar8;
        puVar26[0x3e] = uVar7;
        lVar28 = lVar28 + -1;
        puVar26 = puVar26 + 0x40;
      } while (lVar28 != 0);
    }
    else if (param_1 == 0x21) {
      *(float *)(&DAT_182bbb480 + lVar29) = *param_2;
      *(float *)(&DAT_182bbb484 + lVar29) = param_2[1];
      *(float *)(&DAT_182bbb488 + lVar29) = param_2[2];
    }
    else if (param_1 == 0x1c) {
      *(float *)(&DAT_182bbb468 + lVar29) = param_4[6];
      pfVar31 = (float *)(&DAT_182bbb480 + lVar29);
      *(float *)(&DAT_182bbb46c + lVar29) = param_4[7];
      *(float *)(&DAT_182bbb470 + lVar29) = param_4[8];
      fVar6 = DAT_140278338;
      fVar1 = DAT_14027830c;
      uVar5 = DAT_140278280;
      local_60 = 0;
      fVar35 = *param_2 - *param_4 * DAT_14027830c;
      *pfVar31 = fVar35;
      *(float *)(&DAT_182bbb484 + lVar29) = param_2[1] - param_4[1] * fVar1;
      *(float *)(&DAT_182bbb488 + lVar29) = param_2[2] - param_4[2] * fVar1;
      *pfVar31 = fVar35 - param_4[3] * fVar6;
      uVar34 = DAT_140278224;
      *(float *)(&DAT_182bbb484 + lVar29) = *(float *)(&DAT_182bbb484 + lVar29) - param_4[4] * fVar6
      ;
      local_64 = DAT_140278bd0;
      *(float *)(&DAT_182bbb488 + lVar29) = *(float *)(&DAT_182bbb488 + lVar29) - param_4[5] * fVar6
      ;
      local_68 = DAT_140278bcc;
      FUN_14004e2e0((&DAT_182bbb1d8)[lVar32 * 0x6e0],&local_68,pfVar31,uVar34,uVar5,pfVar25);
      pfVar25 = (float *)(&DAT_182bbb48c + lVar29);
      fVar35 = *param_2 - *param_4 * fVar1;
      *pfVar25 = fVar35;
      *(float *)(&DAT_182bbb490 + lVar29) = param_2[1] - param_4[1] * fVar1;
      *(float *)(&DAT_182bbb494 + lVar29) = param_2[2] - param_4[2] * fVar1;
      *pfVar25 = param_4[3] * fVar6 + fVar35;
      *(float *)(&DAT_182bbb490 + lVar29) = param_4[4] * fVar6 + *(float *)(&DAT_182bbb490 + lVar29)
      ;
      uVar34 = DAT_140278224;
      *(float *)(&DAT_182bbb494 + lVar29) = param_4[5] * fVar6 + *(float *)(&DAT_182bbb494 + lVar29)
      ;
      local_64 = 0x3f000000;
      FUN_14004e2e0((&DAT_182bbb1d8)[lVar32 * 0x6e0],&local_68,pfVar25,uVar34,uVar5);
    }
    if ((DAT_1ad04adc0 != 0) && (uVar27 < 0x400)) {
      (&DAT_18329b1e0)[lVar32] = (&DAT_18329b1e0)[lVar32] + 1;
    }
    return uVar27;
  }
  return 0xffffffff;
}



===== FUN_140116210 @ 140116210 root=true =====

void FUN_140116210(void)

{
  float fVar1;
  float fVar2;
  int iVar3;
  undefined4 *puVar4;
  int iVar5;
  float *pfVar6;
  int iVar7;
  longlong lVar8;
  int *piVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  
  puVar4 = &DAT_1832a50e4;
  iVar12 = 0;
  do {
    *puVar4 = 0;
    fVar2 = DAT_1402780c0;
    puVar4 = puVar4 + 0x1bfe;
  } while ((longlong)puVar4 < 0x1839a48e4);
  puVar4 = &DAT_14498174c;
  pfVar6 = (float *)&DAT_1449816fc;
  lVar8 = 0x2000;
  do {
    if ((pfVar6[-7] != 0.0) && (pfVar6[-5] == 0.0)) {
      fVar1 = pfVar6[3];
      pfVar6[3] = fVar1 - fVar2;
      pfVar6[-1] = pfVar6[2] + pfVar6[-1];
      *pfVar6 = (fVar1 - fVar2) + *pfVar6;
      pfVar6[1] = pfVar6[4] + pfVar6[1];
      FUN_14012b2d0(puVar4 + -0xc,puVar4 + -3,puVar4,puVar4 + 9);
    }
    puVar4 = puVar4 + 0x2f;
    pfVar6 = pfVar6 + 0x2f;
    lVar8 = lVar8 + -1;
  } while (lVar8 != 0);
  FUN_1401069c0();
  FUN_1400b95e0();
  FUN_1400c9d20();
  iVar11 = 0;
  DAT_1a4bf0920 = 0;
  iVar5 = DAT_15ada9278;
  iVar3 = DAT_15ada927c;
  iVar7 = DAT_15ada9274;
  if (0 < DAT_15ada9278) {
    do {
      iVar10 = 0;
      if (0 < iVar3) {
        do {
          iVar5 = 0;
          if (0 < iVar7) {
            do {
              iVar3 = (iVar3 * iVar11 + iVar10) * iVar7 + iVar5;
              iVar5 = iVar5 + 1;
              *(undefined4 *)(DAT_1a4bf0900 + (longlong)iVar3 * 4) = 0xffffffff;
              iVar3 = DAT_15ada927c;
              iVar7 = DAT_15ada9274;
            } while (iVar5 < DAT_15ada9274);
          }
          iVar10 = iVar10 + 1;
          iVar5 = DAT_15ada9278;
        } while (iVar10 < iVar3);
      }
      iVar11 = iVar11 + 1;
    } while (iVar11 < iVar5);
  }
  DAT_1a4cf0924 = 0;
  piVar9 = &DAT_182bbb2a8;
  iVar5 = 0;
  do {
    if (((piVar9[-0x4a] != 0) && ((&DAT_182a7e18c)[(longlong)piVar9[-0x45] * 0x4f4] != 0)) &&
       (iVar3 = piVar9[-2], iVar3 <= piVar9[1])) {
      do {
        iVar7 = piVar9[-1];
        if (iVar7 <= piVar9[2]) {
          do {
            iVar11 = piVar9[-3];
            if (iVar11 <= *piVar9) {
              do {
                FUN_140037de0(0,iVar11,iVar3,iVar7,(ushort)iVar5 | 0x8000);
                iVar11 = iVar11 + 1;
              } while (iVar11 <= *piVar9);
            }
            iVar7 = iVar7 + 1;
          } while (iVar7 <= piVar9[2]);
        }
        iVar3 = iVar3 + 1;
      } while (iVar3 <= piVar9[1]);
    }
    iVar5 = iVar5 + 1;
    piVar9 = piVar9 + 0x6e0;
  } while (iVar5 < 0x400);
  FUN_1401154d0();
  FUN_140108930();
  FUN_1400be010();
  FUN_1400ce370();
  FUN_1400cc610();
  FUN_14001d080();
  piVar9 = &DAT_182bbb19c;
  do {
    if (piVar9[-7] != 0) {
      iVar5 = *piVar9;
      if (iVar5 < 0xffff) {
        iVar5 = iVar5 + -1;
        *piVar9 = iVar5;
      }
      if (iVar5 < 1) {
        FUN_14007f970(iVar12);
      }
    }
    iVar12 = iVar12 + 1;
    piVar9 = piVar9 + 0x6e0;
  } while (iVar12 < 0x400);
  FUN_14010be50();
  FUN_140115830();
  FUN_14001fb90();
  return;
}



===== FUN_1400b62e0 @ 1400b62e0 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400b62e0(int param_1)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  int iVar7;
  undefined4 uVar8;
  byte bVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  uint uVar15;
  int iVar16;
  undefined4 uVar17;
  longlong lVar18;
  longlong lVar19;
  int iVar20;
  longlong lVar21;
  longlong lVar22;
  uint uVar23;
  int *piVar24;
  ulonglong uVar25;
  longlong lVar26;
  longlong lVar27;
  longlong lVar28;
  int iVar29;
  undefined4 *puVar30;
  float fVar31;
  float fVar32;
  float fVar33;
  float fVar34;
  float fVar35;
  float fVar36;
  float fVar37;
  undefined1 auStack_188 [32];
  int local_168;
  int local_164;
  longlong local_160;
  uint local_158;
  ulonglong local_150;
  longlong local_148;
  int local_140;
  longlong local_138;
  longlong local_130;
  float local_128;
  float local_124;
  float local_120;
  longlong local_110;
  float local_108;
  float local_104;
  float local_100;
  float local_f8;
  float fStack_f4;
  float fStack_f0;
  float fStack_ec;
  float local_e8;
  float fStack_e4;
  float fStack_e0;
  float fStack_dc;
  float local_d8;
  ulonglong local_d0;
  
  local_d0 = DAT_1403020a0 ^ (ulonglong)auStack_188;
  lVar26 = (longlong)param_1 * 0x6ff8;
  iVar20 = 0;
  if ((&DAT_18329e310)[(longlong)param_1 * 0x1bfe] != -1) {
    iVar20 = (&DAT_18329e310)[(longlong)param_1 * 0x1bfe];
  }
  if (0 < *(int *)(&DAT_1832a5050 + lVar26)) {
    *(int *)(&DAT_1832a5050 + lVar26) = *(int *)(&DAT_1832a5050 + lVar26) + -1;
  }
  uVar17 = DAT_140278688;
  fVar14 = DAT_140278628;
  fVar13 = DAT_140278504;
  fVar12 = DAT_140278478;
  fVar11 = DAT_1402783f4;
  fVar10 = DAT_140278338;
  local_138 = (longlong)iVar20;
  local_140 = 0;
  local_168 = 0;
  local_160 = 0;
  local_164 = param_1;
  local_110 = lVar26;
  do {
    lVar21 = local_138;
    lVar19 = local_160;
    iVar20 = local_168;
    uVar25 = lVar26 + local_160 * 0x28;
    local_150 = uVar25;
    if (0 < *(int *)((longlong)&DAT_1832a4dd8 + uVar25)) {
      uVar15 = *(uint *)((longlong)&DAT_1832a4ddc + uVar25);
      lVar28 = (longlong)(int)uVar15;
      lVar18 = lVar26 + local_160 * -0x3a8;
      fVar33 = *(float *)((longlong)&DAT_18329f028 + lVar18) -
               (float)(&DAT_182bbb1e0)[lVar28 * 0x6e0];
      fVar31 = *(float *)((longlong)&DAT_18329f02c + lVar18) -
               (float)(&DAT_182bbb1e4)[lVar28 * 0x6e0];
      fVar32 = *(float *)((longlong)&DAT_18329f024 + lVar18) -
               (float)(&DAT_182bbb1dc)[lVar28 * 0x6e0];
      if ((fVar13 < SQRT(fVar33 * fVar33 + fVar32 * fVar32 + fVar31 * fVar31)) && (uVar15 < 0x400))
      {
        if ((&DAT_182bbb1a8)[lVar28 * 0x6e0] == -1) {
          if ((&DAT_182bbb1a4)[lVar28 * 0x6e0] == -1) goto LAB_1400b650d;
          FUN_1400ca7c0(uVar15,(&DAT_182bbb1a4)[lVar28 * 0x6e0],(&DAT_182bbb1ac)[lVar28 * 0x6e0]);
        }
        else {
          FUN_1400ca9b0(uVar15);
        }
        if (DAT_1ad04adc0 != 0) {
          (&DAT_18329b1e0)[lVar28] = (&DAT_18329b1e0)[lVar28] + 1;
        }
      }
    }
LAB_1400b650d:
    local_158 = 0;
    if ((*(uint *)(&DAT_18329e51c + lVar26) & 1) != 0) {
      uVar15 = *(uint *)(&DAT_18329e51c + lVar26) & 0x10;
      if (iVar20 == 0) {
        if (uVar15 == 0) {
          local_158 = 1;
        }
      }
      else if (iVar20 == 1) {
        local_158 = (uint)(uVar15 != 0);
      }
    }
    uVar15 = *(uint *)(&DAT_18329e51c + lVar26);
    iVar29 = ((uVar15 & 0x40) != 0) - 1;
    if ((uVar15 & 0x80) != 0) {
      iVar29 = 1;
    }
    if ((uVar15 >> 8 & 1) != 0) {
      iVar29 = 2;
    }
    if ((uVar15 >> 9 & 1) != 0) {
      iVar29 = 3;
    }
    if ((uVar15 >> 10 & 1) != 0) {
      iVar29 = 4;
    }
    local_148 = CONCAT44(local_148._4_4_,iVar29);
    if (((*(int *)((longlong)&DAT_1832a5058 + lVar26) < 0x32) &&
        (0 < *(int *)((longlong)&DAT_1832a4dd8 + uVar25))) &&
       (lVar18 = (longlong)(int)*(uint *)((longlong)&DAT_1832a4ddc + uVar25),
       *(uint *)((longlong)&DAT_1832a4ddc + uVar25) < 0x400)) {
      if ((&DAT_182bbb1a8)[lVar18 * 0x6e0] == -1) {
        if ((&DAT_182bbb1a4)[lVar18 * 0x6e0] == -1) goto LAB_1400b65f8;
        FUN_1400ca7c0(lVar18,(&DAT_182bbb1a4)[lVar18 * 0x6e0],(&DAT_182bbb1ac)[lVar18 * 0x6e0]);
      }
      else {
        FUN_1400ca9b0();
      }
      if (DAT_1ad04adc0 != 0) {
        (&DAT_18329b1e0)[lVar18] = (&DAT_18329b1e0)[lVar18] + 1;
      }
    }
LAB_1400b65f8:
    if (*(int *)((longlong)&DAT_1832a4dd8 + uVar25) < 1) {
      if (((iVar20 == 0) && (((&DAT_18329e51c)[lVar26] & 1) == 0)) &&
         ((((&DAT_18329e520)[lVar26] & 1) != 0 && (*(int *)((longlong)&DAT_1832a4dd8 + uVar25) == 0)
          ))) {
        piVar24 = &DAT_182bbb1a4;
        puVar30 = &DAT_182bbb1dc;
        uVar15 = 0xffffffff;
        lVar18 = -1;
        uVar23 = 0;
        local_158 = 0xffffffff;
        local_108 = *(float *)((longlong)&DAT_18329e8d4 + lVar26) -
                    *(float *)(&DAT_18329e91c + lVar26) * fVar12;
        local_148 = -1;
        lVar19 = 0;
        local_104 = *(float *)((longlong)&DAT_18329e8d8 + lVar26) -
                    *(float *)(&DAT_18329e920 + lVar26) * fVar12;
        local_100 = *(float *)((longlong)&DAT_18329e8dc + lVar26) -
                    *(float *)(&DAT_18329e924 + lVar26) * fVar12;
        fVar31 = fVar10;
        do {
          if (((piVar24[-9] != 0) && (*piVar24 == -1)) &&
             ((fVar32 = (float)FUN_14007aba0((float *)((longlong)&DAT_18329e8d4 + lVar26),&local_108
                                             ,puVar30), lVar18 = local_148, uVar15 = local_158,
              fVar32 < fVar31 &&
              ((piVar24[1] == -1 || ((&DAT_182bbb1a4)[(longlong)piVar24[1] * 0x6e0] == -1)))))) {
            lVar18 = lVar19;
            fVar31 = fVar32;
            local_158 = uVar23;
            local_148 = lVar19;
            uVar15 = uVar23;
          }
          uVar23 = uVar23 + 1;
          puVar30 = puVar30 + 0x6e0;
          lVar19 = lVar19 + 1;
          piVar24 = piVar24 + 0x6e0;
        } while ((int)uVar23 < 0x400);
        uVar25 = local_150;
        lVar21 = local_138;
        lVar19 = local_160;
        iVar20 = local_168;
        if (uVar15 != 0xffffffff) {
          if ((&DAT_182bbb1a8)[lVar18 * 0x6e0] != -1) {
            if ((&DAT_182bbb194)[(longlong)(int)(&DAT_182bbb1a8)[lVar18 * 0x6e0] * 0x6e0] != 0x27)
            goto LAB_1400b6e2a;
            FUN_1400e35d0(uVar15,0xffffffff,0xffffffff,0);
          }
          lVar19 = (longlong)*(int *)(&DAT_1832a5100 + lVar26) * 0x30 + lVar26;
          if ((&DAT_182bbb194)[lVar18 * 0x6e0] == 0x27) {
            *(undefined4 *)(&DAT_1832a5104 + lVar19) = 4;
          }
          else {
            *(undefined4 *)(&DAT_1832a5104 + lVar19) = 3;
          }
          *(undefined4 *)
           (&DAT_1832a512c + (longlong)*(int *)(&DAT_1832a5100 + lVar26) * 0x30 + lVar26) = 0;
          *(undefined4 *)
           (&DAT_1832a5130 + (longlong)*(int *)(&DAT_1832a5100 + lVar26) * 0x30 + lVar26) = 0;
          *(undefined4 *)
           (&DAT_1832a5108 + (longlong)*(int *)(&DAT_1832a5100 + lVar26) * 0x30 + lVar26) = 0;
          *(uint *)(&DAT_1832a5100 + lVar26) = *(int *)(&DAT_1832a5100 + lVar26) + 1U & 7;
          uVar25 = local_150;
          lVar21 = local_138;
          lVar19 = local_160;
          iVar20 = local_168;
        }
      }
LAB_1400b6e2a:
      if (((((iVar29 == -1) && (*(int *)((longlong)&DAT_1832a4dd8 + uVar25) == 0)) &&
           (*(int *)(&DAT_1832a4f28 + lVar19 * 0x38 + lVar26) == 0)) &&
          ((((&DAT_18329e51c)[lVar26] & 1) == 0 && (((&DAT_18329e520)[lVar26] & 1) != 0)))) &&
         (local_140 == 0)) {
        local_108 = *(float *)((longlong)&DAT_18329e8d4 + lVar26) -
                    *(float *)(&DAT_18329e91c + lVar26) * fVar14;
        local_104 = *(float *)((longlong)&DAT_18329e8d8 + lVar26) -
                    *(float *)(&DAT_18329e920 + lVar26) * fVar14;
        local_100 = *(float *)((longlong)&DAT_18329e8dc + lVar26) -
                    *(float *)(&DAT_18329e924 + lVar26) * fVar14;
        iVar29 = FUN_1400dc050((float *)((longlong)&DAT_18329e8d4 + lVar26),&local_108,0);
        if ((iVar29 != 0) && (DAT_151a848d4 != -1)) {
          uVar15 = FUN_140016590(DAT_151a848d4,DAT_151a848d8,DAT_151a848dc,DAT_151a848e0);
          uVar15 = uVar15 & 0xfcffffff;
          if ((DAT_183ebfccc == 2) && (DAT_183ebfaac != 5)) {
            uVar23 = (&DAT_151620ce4)[lVar21 * 0xe0d];
            lVar19 = (longlong)(int)uVar23;
            if ((uVar23 < 6) &&
               (iVar29 = FUN_14011b8f0((longlong)&DAT_18329e388 + lVar26,uVar23,uVar17), iVar29 != 0
               )) {
              if (((DAT_151a848fc == 6) ||
                  (((DAT_14500ca14 | 0x80000000) <= uVar15 &&
                   (uVar15 <= (DAT_14500ca20 | 0x80000000))))) &&
                 ((&DAT_183ebfdc0)[lVar19 * 0x16f1] == 0)) {
                FUN_1400518b0(uVar23,1);
                local_140 = 1;
                (&DAT_183ebfdc0)[lVar19 * 0x16f1] = 1;
              }
              else if ((((DAT_14500ca14 | 0x80000000) <= uVar15) &&
                       (uVar15 <= (DAT_14500ca20 | 0x80000000))) &&
                      ((&DAT_183ebfdc0)[lVar19 * 0x16f1] == 1)) {
                FUN_1400518b0(uVar23,0);
                local_140 = 1;
                (&DAT_183ebfdc0)[lVar19 * 0x16f1] = 0;
              }
            }
          }
        }
      }
      if ((*(uint *)(&DAT_18329e51c + lVar26) & 0x800) == 0) {
        *(undefined4 *)(&DAT_1832a4f28 + local_160 * 0x38 + lVar26) = 0;
      }
      lVar19 = local_160 * 0x38 + lVar26;
      iVar29 = *(int *)(&DAT_1832a4f28 + lVar19);
      if (iVar29 != 0) {
        iVar7 = *(int *)(&DAT_1832a4f2c + lVar19);
        lVar21 = (longlong)iVar7;
        if (iVar7 != -1) {
          if ((&DAT_18329e308)[lVar21 * 0x1bfe] == 0) {
            *(undefined4 *)(&DAT_1832a4f28 + lVar19) = 0;
            iVar29 = 0;
          }
          lVar18 = 3 - local_160;
          iVar16 = FUN_1400a4440();
          iVar20 = local_168;
          if (iVar16 != -1) {
            lVar28 = (longlong)iVar16;
            lVar22 = lVar28 * 0xf4;
            FUN_1401fcd30(&DAT_1b4287c80 + lVar28 * 0x3d,0,0xf4);
            iVar20 = *(int *)(&DAT_1832a4f34 + lVar19);
            lVar27 = (longlong)iVar20;
            *(int *)(&DAT_1b4287d20 + lVar22) = iVar7;
            (&DAT_1b4287d18)[lVar28 * 0x3d] = local_164;
            *(int *)(&DAT_1b4287d24 + lVar22) = iVar20;
            lVar18 = lVar18 * 0x3a8 + lVar26;
            (&DAT_1b4287d1c)[lVar28 * 0x3d] = (3 - local_168) * 3;
            uVar8 = *(undefined4 *)(&DAT_1832a4f38 + lVar19);
            (&DAT_1b4287cf0)[lVar28 * 0x3d] = 0x3e400000;
            (&DAT_1b4287cf4)[lVar28 * 0x3d] = 0x3e400000;
            (&DAT_1b4287c90)[lVar28 * 0x3d] = 0;
            *(undefined8 *)(&DAT_1b4287cb8 + lVar28 * 0x3d) = 0;
            (&DAT_1b4287cc0)[lVar28 * 0x3d] = 0;
            *(undefined4 *)(&DAT_1b4287cc4 + lVar22) = uVar8;
            *(undefined4 *)(&DAT_1b4287cc8 + lVar22) = *(undefined4 *)(&DAT_1832a4f3c + lVar19);
            *(undefined4 *)(&DAT_1b4287ccc + lVar22) = *(undefined4 *)(&DAT_1832a4f40 + lVar19);
            fVar31 = (float)(&DAT_1b4287cb8)[lVar28 * 0x3d];
            fVar32 = (float)(&DAT_1b4287cc0)[lVar28 * 0x3d];
            fVar33 = (float)(&DAT_1b4287cbc)[lVar28 * 0x3d];
            fVar1 = *(float *)((longlong)&DAT_18329e56c + lVar18);
            fVar2 = *(float *)((longlong)&DAT_18329e570 + lVar18);
            fVar3 = *(float *)((longlong)&DAT_18329e564 + lVar18);
            fVar4 = *(float *)((longlong)&DAT_18329e560 + lVar18);
            fVar37 = fVar31 * *(float *)((longlong)&DAT_18329e55c + lVar18) +
                     fVar33 * *(float *)((longlong)&DAT_18329e568 + lVar18) +
                     fVar32 * *(float *)((longlong)&DAT_18329e574 + lVar18);
            fVar5 = *(float *)((longlong)&DAT_18329e578 + lVar18);
            fVar6 = *(float *)((longlong)&DAT_18329e57c + lVar18);
            (&DAT_1b4287cb8)[lVar28 * 0x3d] = fVar37;
            local_100 = fVar33 * fVar2 + fVar31 * fVar3 + fVar32 * fVar6;
            fVar36 = fVar33 * fVar1 + fVar31 * fVar4 + fVar32 * fVar5;
            (&DAT_1b4287cc0)[lVar28 * 0x3d] = local_100;
            (&DAT_1b4287cbc)[lVar28 * 0x3d] = fVar36;
            fVar31 = *(float *)(&DAT_1b4287cc4 + lVar22);
            fVar32 = *(float *)(&DAT_1b4287cc8 + lVar22);
            fVar33 = *(float *)(&DAT_1b4287ccc + lVar22);
            fVar35 = fVar32 * (float)(&DAT_18329e568)[lVar21 * 0x1bfe + lVar27 * 0x4e] +
                     fVar31 * (float)(&DAT_18329e55c)[lVar21 * 0x1bfe + lVar27 * 0x4e] +
                     fVar33 * (float)(&DAT_18329e574)[lVar21 * 0x1bfe + lVar27 * 0x4e];
            fVar34 = fVar32 * (float)(&DAT_18329e56c)[lVar21 * 0x1bfe + lVar27 * 0x4e] +
                     fVar31 * (float)(&DAT_18329e560)[lVar21 * 0x1bfe + lVar27 * 0x4e] +
                     fVar33 * (float)(&DAT_18329e578)[lVar21 * 0x1bfe + lVar27 * 0x4e];
            fVar1 = (float)(&DAT_18329e570)[lVar21 * 0x1bfe + lVar27 * 0x4e];
            local_100 = local_100 + *(float *)((longlong)&DAT_18329e534 + lVar18);
            fVar2 = (float)(&DAT_18329e564)[lVar21 * 0x1bfe + lVar27 * 0x4e];
            fVar3 = (float)(&DAT_18329e57c)[lVar21 * 0x1bfe + lVar27 * 0x4e];
            fVar4 = *(float *)((longlong)&DAT_18329e52c + lVar18);
            fVar5 = *(float *)((longlong)&DAT_18329e530 + lVar18);
            *(float *)(&DAT_1b4287cc8 + lVar22) = fVar34;
            fVar6 = (float)(&DAT_18329e530)[lVar21 * 0x1bfe + lVar27 * 0x4e];
            *(float *)(&DAT_1b4287cc4 + lVar22) = fVar35;
            fVar33 = fVar32 * fVar1 + fVar31 * fVar2 + fVar33 * fVar3;
            fVar31 = (fVar34 + fVar6) - (fVar36 + fVar5);
            fVar32 = (fVar35 + (float)(&DAT_18329e52c)[lVar21 * 0x1bfe + lVar27 * 0x4e]) -
                     (fVar37 + fVar4);
            *(float *)(&DAT_1b4287ccc + lVar22) = fVar33;
            fVar33 = (fVar33 + (float)(&DAT_18329e534)[lVar21 * 0x1bfe + lVar27 * 0x4e]) - local_100
            ;
            if (DAT_140278224 < SQRT(fVar31 * fVar31 + fVar32 * fVar32 + fVar33 * fVar33)) {
              *(undefined4 *)(&DAT_1832a4f28 + lVar19) = 0;
              iVar29 = 0;
            }
            if (*(int *)((longlong)&DAT_18329e324 + lVar26) < 8) {
              *(undefined4 *)(&DAT_1832a4f28 + lVar19) = 0;
              iVar29 = 0;
            }
            local_104 = (float)(&DAT_18329e5ac)[lVar21 * 0x1bfe + lVar27 * 0x4e];
            local_108 = *(float *)((longlong)&DAT_18329e5ac + lVar18);
            fVar31 = fVar11 / (local_104 + local_108);
            (&DAT_1b4287cd4)[lVar28 * 0x3d] = fVar31 * local_108;
            (&DAT_1b4287cd0)[lVar28 * 0x3d] = fVar31 * local_104;
            iVar20 = local_168;
            if (iVar29 != 0) {
              bVar9 = (byte)DAT_183ebfd34 & 3;
              uVar8 = *(undefined4 *)((longlong)&DAT_18329e528 + lVar18);
              (&DAT_1b4287c80)[lVar28 * 0x3d] = 1;
              (&DAT_1b4287c84)[lVar28 * 0x3d] = 7;
              *(undefined8 *)(&DAT_1b4287c8c + lVar28 * 0x3d) = 0;
              (&DAT_1b4287d18)[lVar28 * 0x3d] = uVar8;
              (&DAT_1b4287d1c)[lVar28 * 0x3d] = (&DAT_18329e528)[lVar21 * 0x1bfe + lVar27 * 0x4e];
              (&DAT_1b4287cf0)[lVar28 * 0x3d] = 0x3d800000;
              (&DAT_1b4287cf4)[lVar28 * 0x3d] = 0x3e400000;
              if ((bVar9 == 0) && (0 < *(int *)((longlong)&DAT_18329e324 + lVar26))) {
                *(int *)((longlong)&DAT_18329e324 + lVar26) =
                     *(int *)((longlong)&DAT_18329e324 + lVar26) + -1;
              }
            }
          }
        }
      }
    }
    else {
      uVar15 = *(uint *)((longlong)&DAT_1832a4ddc + uVar25);
      lVar18 = (longlong)(int)uVar15;
      lVar21 = lVar18 * 0x1b80;
      iVar20 = (&DAT_182bbb194)[lVar18 * 0x6e0];
      if (iVar20 == 0x1c) {
        local_d8 = 1.0;
        local_f8 = _DAT_140278d30;
        fStack_f4 = _UNK_140278d34;
        fStack_f0 = _UNK_140278d38;
        fStack_ec = _UNK_140278d3c;
        local_e8 = _DAT_140278d30;
        fStack_e4 = _UNK_140278d34;
        fStack_e0 = _UNK_140278d38;
        fStack_dc = _UNK_140278d3c;
        FUN_14007b2a0(&local_f8,&DAT_1402f6188,*(undefined4 *)((longlong)&DAT_18329e430 + lVar26));
        iVar20 = (&DAT_182bbb194)[lVar18 * 0x6e0];
        fVar31 = *(float *)(&DAT_182bbb488 + lVar21);
        fVar32 = local_f8 * fVar10 + *(float *)(&DAT_182bbb480 + lVar21);
        lVar27 = lVar19 * 0x38 + lVar26;
        lVar28 = (longlong)iVar20 * 0x13d0;
        *(float *)(&DAT_1832a4f1c + lVar27) =
             fStack_f4 * fVar10 + *(float *)(&DAT_182bbb484 + lVar21);
        *(float *)(&DAT_1832a4f20 + lVar27) = fStack_f0 * fVar10 + fVar31;
        *(float *)(&DAT_1832a4f18 + lVar27) = fVar32;
        fVar31 = *(float *)(&DAT_182a7e200 +
                           lVar28 + (longlong)*(int *)(&DAT_1832a4dfc + uVar25) * 0xc);
        fVar32 = local_f8 * fVar31 + fVar32;
        *(float *)(&DAT_1832a4f18 + lVar27) = fVar32;
        *(float *)(&DAT_1832a4f1c + lVar27) =
             fStack_f4 * fVar31 + *(float *)(&DAT_1832a4f1c + lVar27);
        *(float *)(&DAT_1832a4f20 + lVar27) =
             fStack_f0 * fVar31 + *(float *)(&DAT_1832a4f20 + lVar27);
        fVar31 = *(float *)(&DAT_182a7e204 +
                           lVar28 + (longlong)*(int *)(&DAT_1832a4dfc + uVar25) * 0xc);
        fVar32 = fStack_ec * fVar31 + fVar32;
        *(float *)(&DAT_1832a4f18 + lVar27) = fVar32;
        *(float *)(&DAT_1832a4f1c + lVar27) =
             local_e8 * fVar31 + *(float *)(&DAT_1832a4f1c + lVar27);
        *(float *)(&DAT_1832a4f20 + lVar27) =
             fStack_e4 * fVar31 + *(float *)(&DAT_1832a4f20 + lVar27);
        fVar31 = *(float *)(&DAT_182a7e208 +
                           lVar28 + (longlong)*(int *)(&DAT_1832a4dfc + uVar25) * 0xc);
        *(float *)(&DAT_1832a4f18 + lVar27) = fStack_e0 * fVar31 + fVar32;
        *(float *)(&DAT_1832a4f1c + lVar27) =
             fStack_dc * fVar31 + *(float *)(&DAT_1832a4f1c + lVar27);
        *(float *)(&DAT_1832a4f20 + lVar27) =
             local_d8 * fVar31 + *(float *)(&DAT_1832a4f20 + lVar27);
        *(undefined4 *)(&DAT_1832a4f24 + lVar27) =
             *(undefined4 *)((longlong)&DAT_18329e430 + lVar26);
      }
      if (((iVar20 == 0x24) && ((*(uint *)(&DAT_18329e51c + lVar26) & 0x800) == 0)) &&
         (uVar15 < 0x400)) {
        if ((&DAT_182bbb1a8)[lVar18 * 0x6e0] == -1) {
          if ((&DAT_182bbb1a4)[lVar18 * 0x6e0] == -1) goto LAB_1400b6887;
          FUN_1400ca7c0(uVar15,(&DAT_182bbb1a4)[lVar18 * 0x6e0],(&DAT_182bbb1ac)[lVar18 * 0x6e0]);
        }
        else {
          FUN_1400ca9b0(uVar15);
        }
        if (DAT_1ad04adc0 != 0) {
          (&DAT_18329b1e0)[lVar18] = (&DAT_18329b1e0)[lVar18] + 1;
        }
      }
LAB_1400b6887:
      if ((&DAT_182bbb194)[lVar18 * 0x6e0] == 0x27) {
        local_108 = *(float *)((longlong)&DAT_18329e52c + lVar26) -
                    (*(float *)((longlong)&DAT_18329e574 + lVar26) +
                    *(float *)((longlong)&DAT_18329e574 + lVar26));
        local_104 = *(float *)((longlong)&DAT_18329e530 + lVar26) -
                    (*(float *)((longlong)&DAT_18329e578 + lVar26) +
                    *(float *)((longlong)&DAT_18329e578 + lVar26));
        local_100 = *(float *)((longlong)&DAT_18329e534 + lVar26) -
                    (*(float *)((longlong)&DAT_18329e57c + lVar26) +
                    *(float *)((longlong)&DAT_18329e57c + lVar26));
        fVar31 = (float)FUN_14007aba0((float *)((longlong)&DAT_18329e52c + lVar26),&local_108,
                                      &DAT_182bbb1dc + lVar18 * 0x6e0);
        if (fVar31 <= fVar11) {
          if (((((&DAT_18329e51c)[lVar26] & 1) == 0) && (((&DAT_18329e520)[lVar26] & 1) != 0)) &&
             (uVar15 < 0x400)) {
            if ((&DAT_182bbb1a8)[lVar18 * 0x6e0] != -1) goto LAB_1400b6ab4;
LAB_1400b6931:
            if ((&DAT_182bbb1a4)[lVar18 * 0x6e0] != -1) {
              FUN_1400ca7c0(uVar15,(&DAT_182bbb1a4)[lVar18 * 0x6e0],(&DAT_182bbb1ac)[lVar18 * 0x6e0]
                           );
              goto LAB_1400b694e;
            }
          }
        }
        else if (uVar15 < 0x400) {
          if ((&DAT_182bbb1a8)[lVar18 * 0x6e0] == -1) goto LAB_1400b6931;
LAB_1400b6ab4:
          FUN_1400ca9b0(uVar15);
LAB_1400b694e:
          if (DAT_1ad04adc0 != 0) {
            (&DAT_18329b1e0)[lVar18] = (&DAT_18329b1e0)[lVar18] + 1;
          }
        }
      }
      if ((((&DAT_182bbb194)[lVar18 * 0x6e0] - 0x13 < 6) && (((&DAT_18329e51c)[lVar26] & 1) == 0))
         && (((&DAT_18329e520)[lVar26] & 1) != 0)) {
        piVar24 = &DAT_182bbb194;
        puVar30 = &DAT_182bbb1dc;
        lVar21 = (longlong)&DAT_18329e8d4 + lVar26;
        iVar20 = -1;
        lVar19 = -1;
        iVar29 = 0;
        local_150 = CONCAT44(local_150._4_4_,0xffffffff);
        lVar28 = 0;
        local_130 = -1;
        local_128 = *(float *)((longlong)&DAT_18329e8d4 + lVar26) -
                    *(float *)(&DAT_18329e91c + lVar26) * fVar12;
        local_124 = *(float *)((longlong)&DAT_18329e8d8 + lVar26) -
                    *(float *)(&DAT_18329e920 + lVar26) * fVar12;
        local_120 = *(float *)((longlong)&DAT_18329e8dc + lVar26) -
                    *(float *)(&DAT_18329e924 + lVar26) * fVar12;
        fVar31 = fVar10;
        do {
          if (((piVar24[-5] != 0) && (*piVar24 == 0x27)) && (piVar24[4] == -1)) {
            fVar32 = (float)FUN_14007aba0(lVar21,&local_128,puVar30);
            if (fVar31 <= fVar32) {
              lVar19 = local_130;
              iVar20 = (int)local_150;
            }
            else {
              local_150 = CONCAT44(local_150._4_4_,iVar29);
              lVar19 = lVar28;
              fVar31 = fVar32;
              iVar20 = iVar29;
              local_130 = lVar28;
            }
          }
          lVar26 = local_110;
          iVar29 = iVar29 + 1;
          puVar30 = puVar30 + 0x6e0;
          lVar28 = lVar28 + 1;
          piVar24 = piVar24 + 0x6e0;
        } while (iVar29 < 0x400);
        if ((iVar20 != -1) && ((&DAT_182bbb1b4)[lVar19 * 0x6e0] == 0)) {
          if (uVar15 < 0x400) {
            if ((&DAT_182bbb1a8)[lVar18 * 0x6e0] == -1) {
              if ((&DAT_182bbb1a4)[lVar18 * 0x6e0] == -1) goto LAB_1400b6b67;
              FUN_1400ca7c0(uVar15,(&DAT_182bbb1a4)[lVar18 * 0x6e0],(&DAT_182bbb1ac)[lVar18 * 0x6e0]
                           );
            }
            else {
              FUN_1400ca9b0(uVar15);
            }
            if (DAT_1ad04adc0 != 0) {
              (&DAT_18329b1e0)[lVar18] = (&DAT_18329b1e0)[lVar18] + 1;
            }
          }
LAB_1400b6b67:
          FUN_1400e35d0(local_150 & 0xffffffff,uVar15,0xffffffff);
        }
        lVar19 = local_160;
        iVar29 = (int)local_148;
      }
      local_160 = lVar19;
      uVar15 = *(uint *)(&DAT_18329e51c + lVar26);
      if ((uVar15 >> 0xc & 1) != 0) {
        (&DAT_182bbb2d0)[lVar18 * 0x6e0] = (&DAT_182bbb2d0)[lVar18 * 0x6e0] | 2;
      }
      iVar20 = local_168;
      if ((((uVar15 & 0x1020) == 0) && (iVar29 == -1)) && (local_158 != 0)) {
        (&DAT_182bbb2d0)[lVar18 * 0x6e0] = (&DAT_182bbb2d0)[lVar18 * 0x6e0] | 1;
      }
    }
    local_168 = iVar20 + 1;
    local_160 = local_160 + 1;
  } while (local_168 < 2);
  if (((*(uint *)(&DAT_18329e51c + lVar26) & 0x2000) != 0) &&
     ((*(uint *)(&DAT_18329e520 + lVar26) & 0x2000) == 0)) {
    iVar20 = local_164;
    if (*(int *)((longlong)&DAT_1832a4dd8 + lVar26) < 1) {
      if ((*(int *)((longlong)&DAT_1832a4e00 + lVar26) < 1) ||
         (*(int *)((longlong)&DAT_1832a4dd8 + lVar26) != 0)) goto LAB_1400b761f;
      uVar17 = *(undefined4 *)((longlong)&DAT_1832a4e04 + lVar26);
    }
    else {
      uVar17 = *(undefined4 *)((longlong)&DAT_1832a4ddc + lVar26);
      if (*(int *)((longlong)&DAT_1832a4e00 + lVar26) != 0) {
        uVar8 = *(undefined4 *)((longlong)&DAT_1832a4e04 + lVar26);
        FUN_1400e35d0(uVar17,0xffffffff,0xffffffff,0);
        iVar20 = local_164;
        FUN_1400e35d0(uVar8,0xffffffff,local_164);
      }
    }
    FUN_1400e35d0(uVar17,0xffffffff,iVar20);
  }
LAB_1400b761f:
  iVar20 = 0;
  if (0 < *(int *)((longlong)&DAT_1832a4dd8 + lVar26)) {
    piVar24 = (int *)((longlong)&DAT_1832a4ddc + lVar26);
    do {
      iVar29 = *piVar24;
      (&DAT_182bbb188)[(longlong)iVar29 * 0x6e0] = 0;
      if (*(int *)(&DAT_182a7e190 +
                  (longlong)(int)(&DAT_182bbb194)[(longlong)iVar29 * 0x6e0] * 0x13d0) != 0) {
        *(undefined4 *)((longlong)&DAT_18329e358 + lVar26) = 0;
      }
      iVar20 = iVar20 + 1;
      piVar24 = piVar24 + 1;
    } while (iVar20 < *(int *)((longlong)&DAT_1832a4dd8 + lVar26));
  }
  iVar20 = 0;
  if (0 < *(int *)((longlong)&DAT_1832a4e00 + lVar26)) {
    piVar24 = (int *)((longlong)&DAT_1832a4e04 + lVar26);
    do {
      iVar29 = *piVar24;
      (&DAT_182bbb188)[(longlong)iVar29 * 0x6e0] = 0;
      if (*(int *)(&DAT_182a7e190 +
                  (longlong)(int)(&DAT_182bbb194)[(longlong)iVar29 * 0x6e0] * 0x13d0) != 0) {
        *(undefined4 *)((longlong)&DAT_18329e358 + lVar26) = 0;
      }
      iVar20 = iVar20 + 1;
      piVar24 = piVar24 + 1;
    } while (iVar20 < *(int *)((longlong)&DAT_1832a4e00 + lVar26));
  }
  iVar20 = 0;
  if (0 < *(int *)((longlong)&DAT_1832a4e28 + lVar26)) {
    piVar24 = (int *)(&DAT_1832a4e2c + lVar26);
    do {
      iVar29 = *piVar24;
      (&DAT_182bbb188)[(longlong)iVar29 * 0x6e0] = 0;
      if (*(int *)(&DAT_182a7e190 +
                  (longlong)(int)(&DAT_182bbb194)[(longlong)iVar29 * 0x6e0] * 0x13d0) != 0) {
        *(undefined4 *)((longlong)&DAT_18329e358 + lVar26) = 0;
      }
      iVar20 = iVar20 + 1;
      piVar24 = piVar24 + 1;
    } while (iVar20 < *(int *)((longlong)&DAT_1832a4e28 + lVar26));
  }
  iVar20 = 0;
  if (0 < *(int *)((longlong)&DAT_1832a4e50 + lVar26)) {
    piVar24 = (int *)(&DAT_1832a4e54 + lVar26);
    do {
      iVar29 = *piVar24;
      (&DAT_182bbb188)[(longlong)iVar29 * 0x6e0] = 0;
      if (*(int *)(&DAT_182a7e190 +
                  (longlong)(int)(&DAT_182bbb194)[(longlong)iVar29 * 0x6e0] * 0x13d0) != 0) {
        *(undefined4 *)((longlong)&DAT_18329e358 + lVar26) = 0;
      }
      iVar20 = iVar20 + 1;
      piVar24 = piVar24 + 1;
    } while (iVar20 < *(int *)((longlong)&DAT_1832a4e50 + lVar26));
  }
  iVar20 = 0;
  if (0 < *(int *)((longlong)&DAT_1832a4e78 + lVar26)) {
    piVar24 = (int *)(&DAT_1832a4e7c + lVar26);
    do {
      iVar29 = *piVar24;
      (&DAT_182bbb188)[(longlong)iVar29 * 0x6e0] = 0;
      if (*(int *)(&DAT_182a7e190 +
                  (longlong)(int)(&DAT_182bbb194)[(longlong)iVar29 * 0x6e0] * 0x13d0) != 0) {
        *(undefined4 *)((longlong)&DAT_18329e358 + lVar26) = 0;
      }
      iVar20 = iVar20 + 1;
      piVar24 = piVar24 + 1;
    } while (iVar20 < *(int *)((longlong)&DAT_1832a4e78 + lVar26));
  }
  iVar20 = 0;
  if (0 < *(int *)((longlong)&DAT_1832a4ea0 + lVar26)) {
    piVar24 = (int *)(&DAT_1832a4ea4 + lVar26);
    do {
      iVar29 = *piVar24;
      (&DAT_182bbb188)[(longlong)iVar29 * 0x6e0] = 0;
      if (*(int *)(&DAT_182a7e190 +
                  (longlong)(int)(&DAT_182bbb194)[(longlong)iVar29 * 0x6e0] * 0x13d0) != 0) {
        *(undefined4 *)((longlong)&DAT_18329e358 + lVar26) = 0;
      }
      iVar20 = iVar20 + 1;
      piVar24 = piVar24 + 1;
    } while (iVar20 < *(int *)((longlong)&DAT_1832a4ea0 + lVar26));
  }
  iVar20 = 0;
  if (0 < *(int *)((longlong)&DAT_1832a4ec8 + lVar26)) {
    piVar24 = (int *)(&DAT_1832a4ecc + lVar26);
    do {
      iVar29 = *piVar24;
      (&DAT_182bbb188)[(longlong)iVar29 * 0x6e0] = 0;
      if (*(int *)(&DAT_182a7e190 +
                  (longlong)(int)(&DAT_182bbb194)[(longlong)iVar29 * 0x6e0] * 0x13d0) != 0) {
        *(undefined4 *)((longlong)&DAT_18329e358 + lVar26) = 0;
      }
      iVar20 = iVar20 + 1;
      piVar24 = piVar24 + 1;
    } while (iVar20 < *(int *)((longlong)&DAT_1832a4ec8 + lVar26));
  }
  return;
}



===== FUN_1400ce370 @ 1400ce370 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1400ce370(void)

{
  int iVar1;
  int iVar2;
  float fVar3;
  float fVar4;
  undefined4 uVar5;
  float fVar6;
  undefined4 uVar7;
  float fVar8;
  float fVar9;
  uint uVar10;
  int iVar11;
  longlong lVar12;
  ulonglong uVar13;
  longlong lVar14;
  int iVar15;
  longlong lVar16;
  longlong lVar17;
  longlong lVar18;
  uint uVar19;
  ulonglong uVar20;
  int *piVar22;
  ulonglong uVar23;
  uint uVar24;
  float *pfVar25;
  bool bVar26;
  undefined4 uVar27;
  undefined4 uVar28;
  undefined4 uVar29;
  float fVar30;
  float fVar31;
  float fVar32;
  undefined1 auStack_168 [32];
  undefined4 *local_148;
  float local_140;
  undefined4 local_138;
  int local_128;
  uint local_124;
  longlong local_120;
  float local_118 [2];
  longlong local_110;
  float local_108;
  float local_104;
  float local_100;
  float local_f8;
  float local_f4;
  float local_f0;
  float local_e8;
  float local_e4;
  float local_e0;
  ulonglong local_d8;
  ulonglong uVar21;
  
  uVar10 = DAT_140279870;
  fVar9 = DAT_140278adc;
  fVar8 = DAT_1402783c8;
  uVar7 = DAT_140278368;
  fVar6 = DAT_1402781fc;
  uVar5 = DAT_140278178;
  fVar4 = DAT_140278148;
  fVar3 = DAT_1402780d8;
  local_d8 = DAT_1403020a0 ^ (ulonglong)auStack_168;
  local_128 = 0;
  local_120 = 0;
  fVar30 = DAT_140278d24;
  do {
    lVar12 = local_120;
    iVar15 = 0;
    lVar16 = local_120 * 0x1b80;
    if ((&DAT_182bbb180)[local_120 * 0x6e0] != 0) {
      iVar11 = (&DAT_182bbb194)[local_120 * 0x6e0];
      lVar18 = (longlong)iVar11;
      if ((float)(&DAT_182bbb1e0)[local_120 * 0x6e0] <= fVar30 &&
          fVar30 != (float)(&DAT_182bbb1e0)[local_120 * 0x6e0]) {
        (&DAT_182bbb19c)[local_120 * 0x6e0] = 0;
      }
      uVar27 = DAT_183ebfd34;
      if ((int)(&DAT_182bbb2b8)[local_120 * 0x6e0] < 1) {
        if (DAT_1ad04adc0 != 0) {
          lVar17 = (longlong)(int)DAT_189c1dc64;
          lVar14 = lVar17 * 0x80;
          (&DAT_1873de460)[lVar17 * 0x20] = 1;
          (&DAT_1873de464)[lVar17 * 0x20] = uVar27;
          *(undefined4 *)(&DAT_1873de468 + lVar14) = (&DAT_182bbb1dc)[local_120 * 0x6e0];
          *(undefined4 *)(&DAT_1873de46c + lVar14) = (&DAT_182bbb1e0)[local_120 * 0x6e0];
          *(undefined4 *)(&DAT_1873de470 + lVar14) = (&DAT_182bbb1e4)[local_120 * 0x6e0];
          if (&DAT_182bbb200 + local_120 * 0x6e0 == (undefined4 *)0x0) {
            uVar27 = 0;
            uVar28 = 0;
            uVar29 = 0;
          }
          else {
            uVar27 = (&DAT_182bbb208)[local_120 * 0x6e0];
            uVar28 = (&DAT_182bbb204)[local_120 * 0x6e0];
            uVar29 = (&DAT_182bbb200)[local_120 * 0x6e0];
          }
          *(undefined4 *)(&DAT_1873de474 + lVar14) = uVar29;
          *(undefined4 *)(&DAT_1873de478 + lVar14) = uVar28;
          *(undefined4 *)(&DAT_1873de47c + lVar14) = uVar27;
          DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
          *(undefined8 *)(&DAT_1873de480 + lVar17 * 0x20) = 0;
        }
        (&DAT_182bbb19c)[local_120 * 0x6e0] = 0;
      }
      if (0 < (int)(&DAT_182bbb2d8)[local_120 * 0x6e0]) {
        (&DAT_182bbb2d8)[local_120 * 0x6e0] = (&DAT_182bbb2d8)[local_120 * 0x6e0] + -1;
      }
      iVar1 = (&DAT_182bbb1a8)[local_120 * 0x6e0];
      lVar14 = (longlong)iVar1;
      (&DAT_182bbb1b0)[local_120 * 0x6e0] = 0;
      if (iVar1 != -1) {
        iVar2 = (&DAT_182bbb194)[lVar14 * 0x6e0];
        (&DAT_182bbb1b0)[local_120 * 0x6e0] = (uint)(iVar2 == 0xf);
        if ((&DAT_182bbb1a4)[lVar14 * 0x6e0] != -1) {
          uVar24 = (uint)(iVar2 == 0xf);
          if (2 < (int)(&DAT_182bbb1ac)[lVar14 * 0x6e0]) {
            uVar24 = 1;
          }
          (&DAT_182bbb1b0)[local_120 * 0x6e0] = uVar24;
        }
      }
      if (((&DAT_182bbb1a4)[local_120 * 0x6e0] != -1) && (1 < iVar11 - 0x19U)) {
        uVar24 = (&DAT_182bbb1b0)[local_120 * 0x6e0];
        if (2 < (int)(&DAT_182bbb1ac)[local_120 * 0x6e0]) {
          uVar24 = 1;
        }
        (&DAT_182bbb1b0)[local_120 * 0x6e0] = uVar24;
      }
      (&DAT_182bbb184)[local_120 * 0x6e0] = 0;
      if ((&DAT_182bbb190)[local_120 * 0x6e0] == 0) {
        if ((iVar11 - 0x27U < 2) || (iVar11 - 0x2aU < 2)) {
          (&DAT_182bbb188)[local_120 * 0x6e0] = 1;
        }
        if ((iVar1 == -1) &&
           (((&DAT_182bbb1a4)[local_120 * 0x6e0] == -1 ||
            ((int)(&DAT_182bbb1ac)[local_120 * 0x6e0] < 2)))) {
          uVar24 = (&DAT_182bbb1d8)[local_120 * 0x6e0];
          uVar20 = (ulonglong)(int)uVar24;
          if ((&DAT_182bbb188)[local_120 * 0x6e0] == 0) {
            (&DAT_182bbb184)[local_120 * 0x6e0] = 1;
            (&DAT_182bbb1f4)[local_120 * 0x6e0] = (&DAT_182bbb200)[local_120 * 0x6e0];
            (&DAT_182bbb1f8)[local_120 * 0x6e0] = (&DAT_182bbb204)[local_120 * 0x6e0];
            (&DAT_182bbb1fc)[local_120 * 0x6e0] = (&DAT_182bbb208)[local_120 * 0x6e0];
            (&DAT_182bbb254)[local_120 * 0x6e0] =
                 *(undefined4 *)(&DAT_182bbb248 + local_120 * 0x370);
            (&DAT_182bbb258)[local_120 * 0x6e0] =
                 *(undefined4 *)((longlong)&DAT_182bbb248 + lVar16 + 4);
            uVar27 = (&DAT_182bbb250)[local_120 * 0x6e0];
            (&DAT_1449816e8)[uVar20 * 0x2f] = 0;
            (&DAT_182bbb25c)[local_120 * 0x6e0] = uVar27;
            local_124 = uVar24;
            local_110 = lVar16;
            if ((&DAT_182a7e18c)[lVar18 * 0x4f4] != 0) {
              FUN_1400ca1c0(local_128);
            }
            if ((&DAT_182bbb194)[lVar12 * 0x6e0] == 0x23) {
              FUN_1400ca430(local_128);
              DAT_151a84898 = 0x3f800000;
              DAT_151a8489c = fVar9;
              DAT_151a848fc = 0xffffffff;
              piVar22 = &DAT_15ada9240;
              DAT_151a84908 = -1;
              fVar30 = fVar9;
              do {
                if (*piVar22 != 0) {
                  local_140 = fVar6;
                  local_148 = &DAT_1449816f8 + uVar20 * 0x2f;
                  iVar11 = FUN_140151190(&local_108,&local_f8,local_118,iVar15);
                  fVar30 = DAT_151a8489c;
                  if ((iVar11 != 0) && (local_118[0] < DAT_151a8489c)) {
                    DAT_151a84880 = local_108;
                    DAT_151a84884 = local_104;
                    DAT_151a84888 = local_100;
                    DAT_151a8488c = local_f8;
                    DAT_151a84890 = local_f4;
                    DAT_151a84894 = local_f0;
                    DAT_151a8489c = local_118[0];
                    fVar30 = local_118[0];
                    DAT_151a848d4 = iVar15;
                  }
                }
                iVar15 = iVar15 + 1;
                piVar22 = piVar22 + 0x4035c;
              } while (iVar15 < 4);
              if (fVar30 < fVar9) {
                local_e8 = DAT_151a84880 - (float)(&DAT_1449816f8)[uVar20 * 0x2f];
                local_e4 = DAT_151a84884 - (float)(&DAT_1449816fc)[uVar20 * 0x2f];
                local_138 = uVar5;
                local_140 = fVar4;
                local_e0 = DAT_151a84888 - (float)(&DAT_144981700)[uVar20 * 0x2f];
                local_148 = (undefined4 *)CONCAT44(local_148._4_4_,uVar7);
                FUN_140005160(uVar24,&local_e8,&DAT_151a8488c,fVar6 - fVar30);
                (&DAT_144981740)[uVar20 * 0x2f] = (float)(&DAT_144981740)[uVar20 * 0x2f] * fVar8;
                (&DAT_144981744)[uVar20 * 0x2f] = (float)(&DAT_144981744)[uVar20 * 0x2f] * fVar8;
                (&DAT_144981748)[uVar20 * 0x2f] = (float)(&DAT_144981748)[uVar20 * 0x2f] * fVar8;
              }
            }
            uVar21 = 0;
            uVar24 = (&DAT_182bbb194)[lVar12 * 0x6e0];
            uVar13 = (ulonglong)uVar24;
            bVar26 = false;
            uVar23 = uVar20;
            if (uVar24 == 0x2c) {
              if (0 < (int)(&DAT_182a7f088)[lVar18 * 0x4f4]) {
                pfVar25 = (float *)(&DAT_1449816f8 + uVar20 * 0x2f);
                uVar23 = uVar21;
                uVar24 = local_124;
                do {
                  lVar12 = (&DAT_182a7f090)[lVar18 * 0x27a];
                  fVar30 = *(float *)(uVar23 + lVar12);
                  fVar31 = *(float *)(uVar23 + 4 + lVar12);
                  fVar32 = *(float *)(uVar23 + 8 + lVar12);
                  local_e8 = fVar30 * (float)(&DAT_14498171c)[uVar20 * 0x2f] + *pfVar25 +
                             fVar31 * (float)(&DAT_144981728)[uVar20 * 0x2f] +
                             fVar32 * (float)(&DAT_144981734)[uVar20 * 0x2f];
                  local_e4 = fVar30 * (float)(&DAT_144981720)[uVar20 * 0x2f] +
                             (float)(&DAT_1449816fc)[uVar20 * 0x2f] +
                             fVar31 * (float)(&DAT_14498172c)[uVar20 * 0x2f] +
                             fVar32 * (float)(&DAT_144981738)[uVar20 * 0x2f];
                  local_e0 = fVar30 * (float)(&DAT_144981724)[uVar20 * 0x2f] +
                             (float)(&DAT_144981700)[uVar20 * 0x2f] +
                             fVar31 * (float)(&DAT_144981730)[uVar20 * 0x2f] +
                             fVar32 * (float)(&DAT_14498173c)[uVar20 * 0x2f];
                  iVar15 = FUN_1400dc050(pfVar25,&local_e8,1);
                  if (iVar15 != 0) {
                    fVar31 = DAT_151a84888 - local_e0;
                    fVar30 = DAT_151a84884 - local_e4;
                    fVar32 = DAT_151a84880 - local_e8;
                    local_e8 = DAT_151a84880 - *pfVar25;
                    local_138 = uVar5;
                    local_140 = fVar4;
                    local_148 = (undefined4 *)CONCAT44(local_148._4_4_,uVar7);
                    local_e4 = DAT_151a84884 - (float)(&DAT_1449816fc)[uVar20 * 0x2f];
                    local_e0 = DAT_151a84888 - (float)(&DAT_144981700)[uVar20 * 0x2f];
                    FUN_140005160(uVar24,&local_e8,&DAT_151a8488c,
                                  DAT_151a84890 * fVar30 + DAT_151a8488c * fVar32 +
                                  DAT_151a84894 * fVar31);
                    if (DAT_151a84908 != -1) {
                      lVar12 = (longlong)DAT_151a84900;
                      iVar15 = 0;
                      if (0 < *(int *)(&DAT_1812c20cc + lVar12 * 0xed0)) {
                        do {
                          local_140 = DAT_151a848e0;
                          local_148 = (undefined4 *)CONCAT44(local_148._4_4_,DAT_151a848dc);
                          FUN_1400cdbd0(DAT_151a84904 * 0x1000000 + (int)lVar12,iVar15,DAT_151a848d4
                                        ,DAT_151a848d8);
                          lVar12 = (longlong)DAT_151a84900;
                          iVar15 = iVar15 + 1;
                          uVar24 = local_124;
                        } while (iVar15 < *(int *)(&DAT_1812c20cc + lVar12 * 0xed0));
                      }
                    }
                  }
                  uVar19 = (int)uVar21 + 1;
                  uVar21 = (ulonglong)uVar19;
                  uVar23 = uVar23 + 0xc;
                } while ((int)uVar19 < (int)(&DAT_182a7f088)[lVar18 * 0x4f4]);
                uVar13 = (ulonglong)*(uint *)((longlong)&DAT_182bbb194 + local_110);
                lVar16 = local_110;
              }
              uVar23 = (ulonglong)local_124;
              uVar24 = (uint)uVar13;
              bVar26 = uVar24 == 0x2c;
            }
            if (((0x2b < uVar24 && !bVar26) || ((0x100810000000U >> (uVar13 & 0x3f) & 1) == 0)) &&
               ((*(int *)((longlong)&DAT_182bbb1a4 + lVar16) == -1 ||
                ((&DAT_18329e330)[(longlong)*(int *)((longlong)&DAT_182bbb1a4 + lVar16) * 0x1bfe] ==
                 -1)))) {
              uVar24 = 0;
              pfVar25 = (float *)(&DAT_1449816f8 + uVar20 * 0x2f);
              do {
                if (((uVar24 & 3) == 0) || ((uVar24 & 3) == 3)) {
                  fVar30 = (float)((&DAT_182a7e284)[lVar18 * 0x4f4] ^ uVar10);
                }
                else {
                  fVar30 = (float)(&DAT_182a7e284)[lVar18 * 0x4f4];
                }
                fVar31 = (float)(&DAT_182a7e288)[lVar18 * 0x4f4];
                if (uVar24 < 4) {
                  fVar31 = (float)((uint)fVar31 ^ uVar10);
                }
                fVar32 = (float)(&DAT_182a7e28c)[lVar18 * 0x4f4];
                if ((uVar24 & 3) < 2) {
                  fVar32 = (float)((uint)fVar32 ^ uVar10);
                }
                local_e8 = fVar30 * (float)(&DAT_14498171c)[uVar20 * 0x2f] + *pfVar25 +
                           fVar31 * (float)(&DAT_144981728)[uVar20 * 0x2f] +
                           fVar32 * (float)(&DAT_144981734)[uVar20 * 0x2f];
                local_e4 = fVar30 * (float)(&DAT_144981720)[uVar20 * 0x2f] +
                           (float)(&DAT_1449816fc)[uVar20 * 0x2f] +
                           fVar31 * (float)(&DAT_14498172c)[uVar20 * 0x2f] +
                           fVar32 * (float)(&DAT_144981738)[uVar20 * 0x2f];
                local_e0 = fVar30 * (float)(&DAT_144981724)[uVar20 * 0x2f] +
                           (float)(&DAT_144981700)[uVar20 * 0x2f] +
                           fVar31 * (float)(&DAT_144981730)[uVar20 * 0x2f] +
                           fVar32 * (float)(&DAT_14498173c)[uVar20 * 0x2f];
                iVar15 = FUN_1400dc050(pfVar25,&local_e8,1);
                if (iVar15 != 0) {
                  fVar31 = DAT_151a84888 - local_e0;
                  fVar30 = DAT_151a84884 - local_e4;
                  fVar32 = DAT_151a84880 - local_e8;
                  local_e8 = DAT_151a84880 - *pfVar25;
                  local_138 = uVar5;
                  local_140 = fVar4;
                  local_148 = (undefined4 *)CONCAT44(local_148._4_4_,uVar7);
                  local_e4 = DAT_151a84884 - (float)(&DAT_1449816fc)[uVar20 * 0x2f];
                  local_e0 = DAT_151a84888 - (float)(&DAT_144981700)[uVar20 * 0x2f];
                  FUN_140005160(uVar23 & 0xffffffff,&local_e8,&DAT_151a8488c,
                                DAT_151a84890 * fVar30 + DAT_151a8488c * fVar32 +
                                DAT_151a84894 * fVar31);
                  if (DAT_151a84908 != -1) {
                    lVar12 = (longlong)DAT_151a84900;
                    iVar15 = 0;
                    if (0 < *(int *)(&DAT_1812c20cc + lVar12 * 0xed0)) {
                      do {
                        local_140 = DAT_151a848e0;
                        local_148 = (undefined4 *)CONCAT44(local_148._4_4_,DAT_151a848dc);
                        FUN_1400cdbd0(DAT_151a84904 * 0x1000000 + (int)lVar12,iVar15,DAT_151a848d4,
                                      DAT_151a848d8);
                        lVar12 = (longlong)DAT_151a84900;
                        iVar15 = iVar15 + 1;
                      } while (iVar15 < *(int *)(&DAT_1812c20cc + lVar12 * 0xed0));
                    }
                  }
                }
                uVar24 = uVar24 + 1;
                lVar16 = local_110;
              } while ((int)uVar24 < 8);
            }
            if (((*(int *)((longlong)&DAT_182bbb1a4 + lVar16) != -1) ||
                (fVar3 <= SQRT(*(float *)((longlong)&DAT_182bbb200 + lVar16) *
                               *(float *)((longlong)&DAT_182bbb200 + lVar16) +
                               *(float *)((longlong)&DAT_182bbb204 + lVar16) *
                               *(float *)((longlong)&DAT_182bbb204 + lVar16) +
                               *(float *)((longlong)&DAT_182bbb208 + lVar16) *
                               *(float *)((longlong)&DAT_182bbb208 + lVar16)))) ||
               (fVar30 = *(float *)((longlong)&DAT_182bbb248 + lVar16 + 4),
               fVar3 <= SQRT(*(float *)((longlong)&DAT_182bbb248 + lVar16) *
                             *(float *)((longlong)&DAT_182bbb248 + lVar16) + fVar30 * fVar30 +
                             *(float *)((longlong)&DAT_182bbb250 + lVar16) *
                             *(float *)((longlong)&DAT_182bbb250 + lVar16)))) {
              *(undefined4 *)(&DAT_182bbb18c + lVar16) = 0;
            }
            else if ((0x3b < *(int *)(&DAT_182bbb18c + lVar16)) ||
                    (iVar15 = *(int *)(&DAT_182bbb18c + lVar16) + 1,
                    *(int *)(&DAT_182bbb18c + lVar16) = iVar15, 0x3b < iVar15)) {
              *(undefined4 *)((longlong)&DAT_182bbb188 + lVar16) = 1;
            }
          }
          else {
            *(undefined8 *)(&DAT_144981704 + uVar20 * 0x2f) = 0;
            (&DAT_14498170c)[uVar20 * 0x2f] = 0;
            *(undefined8 *)(&DAT_14498174c + uVar20 * 0x2f) = 0;
            (&DAT_144981754)[uVar20 * 0x2f] = 0;
            *(undefined8 *)(&DAT_144981740 + uVar20 * 0x2f) = 0;
            (&DAT_144981748)[uVar20 * 0x2f] = 0;
            (&DAT_1449816e8)[uVar20 * 0x2f] = 1;
          }
        }
        else {
          *(undefined8 *)(&DAT_182bbb200 + local_120 * 0x6e0) = 0;
          (&DAT_182bbb208)[local_120 * 0x6e0] = 0;
          (&DAT_182bbb248)[local_120 * 0x370] = 0;
          (&DAT_182bbb250)[local_120 * 0x6e0] = 0;
          lVar12 = (longlong)(int)(&DAT_182bbb1a4)[local_120 * 0x6e0];
          if ((&DAT_182bbb1a4)[local_120 * 0x6e0] != -1) {
            (&DAT_182bbb200)[local_120 * 0x6e0] = (&DAT_18329e544)[lVar12 * 0x1bfe];
            (&DAT_182bbb204)[local_120 * 0x6e0] = (&DAT_18329e548)[lVar12 * 0x1bfe];
            (&DAT_182bbb208)[local_120 * 0x6e0] = (&DAT_18329e54c)[lVar12 * 0x1bfe];
          }
          lVar12 = (longlong)(int)(&DAT_182bbb1d8)[local_120 * 0x6e0];
          uVar27 = (&DAT_182bbb1dc)[local_120 * 0x6e0];
          *(undefined8 *)(&DAT_144981740 + lVar12 * 0x2f) = 0;
          *(undefined8 *)(&DAT_144981748 + lVar12 * 0x2f) = 0;
          (&DAT_1449816f8)[lVar12 * 0x2f] = uVar27;
          (&DAT_1449816fc)[lVar12 * 0x2f] = (&DAT_182bbb1e0)[local_120 * 0x6e0];
          (&DAT_144981700)[lVar12 * 0x2f] = (&DAT_182bbb1e4)[local_120 * 0x6e0];
          (&DAT_144981704)[lVar12 * 0x2f] = (&DAT_182bbb200)[local_120 * 0x6e0];
          (&DAT_144981708)[lVar12 * 0x2f] = (&DAT_182bbb204)[local_120 * 0x6e0];
          (&DAT_14498170c)[lVar12 * 0x2f] = (&DAT_182bbb208)[local_120 * 0x6e0];
          (&DAT_14498171c)[lVar12 * 0x2f] = (&DAT_182bbb224)[local_120 * 0x6e0];
          (&DAT_144981720)[lVar12 * 0x2f] = (&DAT_182bbb228)[local_120 * 0x6e0];
          (&DAT_144981724)[lVar12 * 0x2f] = (&DAT_182bbb22c)[local_120 * 0x6e0];
          (&DAT_144981728)[lVar12 * 0x2f] = (&DAT_182bbb230)[local_120 * 0x6e0];
          (&DAT_14498172c)[lVar12 * 0x2f] = (&DAT_182bbb234)[local_120 * 0x6e0];
          (&DAT_144981730)[lVar12 * 0x2f] = (&DAT_182bbb238)[local_120 * 0x6e0];
          (&DAT_144981734)[lVar12 * 0x2f] = (&DAT_182bbb23c)[local_120 * 0x6e0];
          (&DAT_144981738)[lVar12 * 0x2f] = (&DAT_182bbb240)[local_120 * 0x6e0];
          (&DAT_14498173c)[lVar12 * 0x2f] = (&DAT_182bbb244)[local_120 * 0x6e0];
          *(undefined8 *)(&DAT_144981750 + lVar12 * 0x2f) = 0;
          (&DAT_1449816e8)[lVar12 * 0x2f] = 1;
          *(undefined8 *)(&DAT_182bbb188 + local_120 * 0x6e0) = 0;
        }
      }
      else {
        lVar12 = (longlong)(int)(&DAT_182bbb1d8)[local_120 * 0x6e0];
        *(undefined8 *)(&DAT_144981704 + lVar12 * 0x2f) = 0;
        (&DAT_14498170c)[lVar12 * 0x2f] = 0;
        *(undefined8 *)(&DAT_14498174c + lVar12 * 0x2f) = 0;
        (&DAT_144981754)[lVar12 * 0x2f] = 0;
        *(undefined8 *)(&DAT_144981740 + lVar12 * 0x2f) = 0;
        (&DAT_144981748)[lVar12 * 0x2f] = 0;
        (&DAT_1449816e8)[lVar12 * 0x2f] = 1;
      }
      fVar30 = DAT_140278d24;
      *(undefined4 *)((longlong)&DAT_182bbb1e8 + lVar16) =
           *(undefined4 *)((longlong)&DAT_182bbb1dc + lVar16);
      *(undefined4 *)((longlong)&DAT_182bbb1ec + lVar16) =
           *(undefined4 *)((longlong)&DAT_182bbb1e0 + lVar16);
      *(undefined4 *)((longlong)&DAT_182bbb1f0 + lVar16) =
           *(undefined4 *)((longlong)&DAT_182bbb1e4 + lVar16);
    }
    local_128 = local_128 + 1;
    local_120 = local_120 + 1;
  } while (local_128 < 0x400);
  return;
}



===== FUN_1400a83b0 @ 1400a83b0 root=true =====

void FUN_1400a83b0(void)

{
  longlong lVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  longlong lVar5;
  int *piVar6;
  undefined4 *puVar7;
  int iVar8;
  float fVar9;
  float fVar10;
  float local_38;
  float local_34;
  float local_30;
  
  iVar2 = -1;
  DAT_18399eb60 = -1;
  if (((DAT_183f7c540 != -1) &&
      (lVar3 = (longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d],
      (&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] != -1)) &&
     (lVar5 = lVar3 * 0x6ff8, (&DAT_18329e330)[lVar3 * 0x1bfe] == -1)) {
    iVar8 = 0;
    lVar1 = (ulonglong)
            (-(uint)(((&DAT_151620d80)[(longlong)DAT_183f7c540 * 0xe0d] & 0x10) != 0) & 0x28) +
            lVar5;
    if (0 < *(int *)((longlong)&DAT_1832a4dd8 + lVar1)) {
      lVar4 = 0x28;
      if (((&DAT_151620d80)[(longlong)DAT_183f7c540 * 0xe0d] & 0x10) != 0) {
        lVar4 = 0;
      }
      if (0 < *(int *)((longlong)&DAT_1832a4dd8 + lVar4 + lVar5)) {
        DAT_18399eb60 = 0xffffffff;
        return;
      }
    }
    piVar6 = &DAT_182bbb1a4;
    puVar7 = &DAT_182bbb1dc;
    local_38 = (float)(&DAT_18329e8d4)[lVar3 * 0x1bfe] -
               *(float *)(&DAT_18329e91c + lVar5) * DAT_140278478;
    local_34 = (float)(&DAT_18329e8d8)[lVar3 * 0x1bfe] -
               *(float *)(&DAT_18329e920 + lVar5) * DAT_140278478;
    local_30 = (float)(&DAT_18329e8dc)[lVar3 * 0x1bfe] -
               *(float *)(&DAT_18329e924 + lVar5) * DAT_140278478;
    fVar10 = DAT_140278338;
    do {
      if ((((piVar6[-9] != 0) && (*piVar6 == -1)) &&
          ((piVar6[1] == -1 || ((&DAT_182bbb1a4)[(longlong)piVar6[1] * 0x6e0] == -1)))) &&
         (fVar9 = (float)FUN_14007aba0(&DAT_18329e8d4 + lVar3 * 0x1bfe,&local_38,puVar7),
         fVar9 < fVar10)) {
        fVar10 = fVar9;
        iVar2 = iVar8;
      }
      iVar8 = iVar8 + 1;
      puVar7 = puVar7 + 0x6e0;
      piVar6 = piVar6 + 0x6e0;
    } while (iVar8 < 0x400);
    DAT_18399eb60 = iVar2;
    if (((iVar2 != -1) && (0 < *(int *)((longlong)&DAT_1832a4dd8 + lVar1))) &&
       (*(int *)(&DAT_182a7e29c +
                ((longlong)
                 (int)(&DAT_182bbb194)[(longlong)*(int *)((longlong)&DAT_1832a4ddc + lVar1) * 0x6e0]
                 * 0x4f4 + (longlong)(int)(&DAT_182bbb194)[(longlong)iVar2 * 0x6e0]) * 4) == 0)) {
      DAT_18399eb60 = -1;
    }
  }
  return;
}



===== FUN_1400ca430 @ 1400ca430 root=true =====

void FUN_1400ca430(int param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  float fVar3;
  float fVar4;
  undefined4 uVar5;
  uint uVar6;
  longlong lVar7;
  ulonglong uVar8;
  longlong lVar9;
  float *pfVar10;
  float *pfVar11;
  longlong lVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float local_e8;
  float local_e4;
  float local_e0;
  float local_d8;
  float local_d4;
  float local_d0;
  
  uVar6 = DAT_140279870;
  uVar5 = DAT_140278304;
  fVar4 = DAT_1402782f4;
  fVar3 = DAT_1402781fc;
  uVar2 = DAT_1402781bc;
  uVar1 = DAT_140278178;
  pfVar10 = (float *)&DAT_18329e534;
  lVar9 = (longlong)param_1;
  do {
    if (pfVar10[-0x8b] != 0.0) {
      uVar8 = 0;
      pfVar11 = pfVar10;
      do {
        if (((uVar8 == 7) || (uVar8 < 5)) || (9 < uVar8)) {
          fVar14 = (float)(&DAT_182bbb1dc)[lVar9 * 0x6e0] - pfVar11[-2];
          fVar15 = (float)(&DAT_182bbb1e0)[lVar9 * 0x6e0] - pfVar11[-1];
          fVar16 = (float)(&DAT_182bbb1e4)[lVar9 * 0x6e0] - *pfVar11;
          fVar13 = SQRT(fVar14 * fVar14 + fVar15 * fVar15 + fVar16 * fVar16);
          if (fVar13 < fVar4) {
            if (fVar13 == 0.0) {
              fVar14 = 0.0;
              fVar15 = 0.0;
              fVar16 = 0.0;
            }
            else {
              fVar14 = fVar14 / fVar13;
              fVar15 = fVar15 / fVar13;
              fVar16 = fVar16 / fVar13;
            }
            lVar12 = (longlong)(int)pfVar11[-3];
            lVar7 = (longlong)(int)(&DAT_182bbb1d8)[lVar9 * 0x6e0];
            DAT_151a8488c = (uint)fVar14 ^ uVar6;
            DAT_151a84880 = (float)(&DAT_182bbb1dc)[lVar9 * 0x6e0] - fVar14 * fVar3;
            DAT_151a84890 = (uint)fVar15 ^ uVar6;
            DAT_151a84884 = (float)(&DAT_182bbb1e0)[lVar9 * 0x6e0] - fVar15 * fVar3;
            DAT_151a84894 = (uint)fVar16 ^ uVar6;
            local_e4 = DAT_151a84884 - (float)(&DAT_1449816fc)[lVar12 * 0x2f];
            local_d4 = DAT_151a84884 - (float)(&DAT_1449816fc)[lVar7 * 0x2f];
            DAT_151a84888 = (float)(&DAT_182bbb1e4)[lVar9 * 0x6e0] - fVar16 * fVar3;
            local_e8 = DAT_151a84880 - (float)(&DAT_1449816f8)[lVar12 * 0x2f];
            local_d8 = DAT_151a84880 - (float)(&DAT_1449816f8)[lVar7 * 0x2f];
            local_e0 = DAT_151a84888 - (float)(&DAT_144981700)[lVar12 * 0x2f];
            local_d0 = DAT_151a84888 - (float)(&DAT_144981700)[lVar7 * 0x2f];
            FUN_1400052c0(pfVar11[-3],lVar7,&local_e8,&local_d8,&DAT_151a8488c,fVar4 - fVar13,uVar5,
                          uVar1,uVar2);
          }
        }
        uVar8 = uVar8 + 1;
        pfVar11 = pfVar11 + 0x4e;
      } while ((longlong)uVar8 < 0x10);
    }
    pfVar10 = pfVar10 + 0x1bfe;
  } while ((longlong)pfVar10 < 0x18399dd34);
  return;
}



===== FUN_140096440 @ 140096440 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140096440(void)

{
  char cVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  int *piVar8;
  float fVar9;
  float fVar10;
  undefined4 uVar11;
  float fVar12;
  undefined4 uVar13;
  undefined4 uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  undefined1 auVar19 [16];
  int iVar20;
  ulong netlong;
  int iVar21;
  __time64_t _Var22;
  longlong lVar23;
  undefined8 uVar24;
  char *pcVar25;
  longlong lVar26;
  int *piVar27;
  ulonglong uVar28;
  undefined8 *puVar29;
  ulonglong uVar30;
  uint uVar31;
  ulonglong uVar32;
  undefined *puVar33;
  undefined4 *puVar34;
  ulonglong uVar35;
  short *psVar36;
  ulonglong uVar37;
  bool bVar38;
  uint uVar39;
  uint uVar40;
  uint uVar41;
  uint uVar42;
  float fVar43;
  uint uVar44;
  float fVar45;
  uint uVar46;
  float fVar47;
  uint uVar48;
  float fVar49;
  uint uVar50;
  float fVar51;
  uint uVar52;
  float fVar53;
  uint uVar54;
  float fVar55;
  uint uVar56;
  float fVar57;
  undefined4 uVar58;
  undefined4 uVar59;
  undefined1 auStack_658 [32];
  ulonglong local_638;
  float local_630;
  float local_628;
  float local_620;
  float local_618;
  int local_610;
  int local_608;
  longlong local_5f8;
  int *local_5f0;
  longlong local_5e8;
  undefined4 *local_5e0;
  longlong local_5d8;
  longlong local_5d0;
  longlong local_5c8;
  longlong local_5c0;
  longlong local_5b8;
  longlong local_5b0;
  longlong local_5a8;
  longlong local_5a0;
  longlong local_598;
  longlong local_590;
  longlong local_588;
  longlong local_580;
  longlong local_578;
  longlong local_570;
  longlong local_568;
  longlong local_560;
  longlong local_558;
  longlong local_550;
  longlong local_548;
  longlong local_540;
  longlong local_538;
  longlong local_530;
  longlong local_528;
  undefined1 local_518 [64];
  char local_4d8 [63];
  undefined1 local_499;
  char local_2d8 [512];
  ulonglong local_d8;
  
  fVar10 = DAT_1402783f4;
  local_d8 = DAT_1403020a0 ^ (ulonglong)auStack_658;
  _DAT_183f7c544 = 0;
  DAT_183f7c54c = 0.0;
  _DAT_183f7c578 = 0;
  _DAT_183f7c57c = 0;
  _DAT_183f7c580 = 0;
  _DAT_183f7c558 = _UNK_140278d38;
  _DAT_183f7c550 = _DAT_140278d30;
  DAT_183f7c570 = 1.0;
  _DAT_183f7c568 = _UNK_140278d38;
  _DAT_183f7c560 = _DAT_140278d30;
  _Var22 = _time64((__time64_t *)0x0);
  FUN_14023b1dc(_Var22);
  FUN_140075650();
  (*DAT_144980d30)();
  (*DAT_144980d28)(0x4100);
  FUN_14007bb00();
  uVar14 = DAT_140278964;
  uVar59 = DAT_140278888;
  uVar13 = DAT_140278798;
  local_618 = fVar10;
  local_620 = fVar10;
  local_628 = fVar10;
  local_630 = fVar10;
  local_638._0_4_ = 1;
  FUN_14006d930("generating",DAT_140278964,DAT_140278888,DAT_140278798);
  SDL_GL_SwapWindow(DAT_160fc47c8);
  FUN_140139e90();
  _DAT_175fd13a0 = _DAT_140279810;
  uRam0000000175fd13a8 = _UNK_140279818;
  _DAT_175fd13e0 = 0x42800000;
  _DAT_175fd13e4 = DAT_1402783a0;
  _DAT_175fd13b0 = _DAT_140279710;
  uRam0000000175fd13b8 = _UNK_140279718;
  _DAT_175fd13c0 = _DAT_140279490;
  uRam0000000175fd13c8 = _UNK_140279498;
  _DAT_175fd13d0 = _DAT_140279490;
  uRam0000000175fd13d8 = _UNK_140279498;
  FUN_14007b2a0(&DAT_175fd13bc,&DAT_175fd13bc);
  DAT_16e486868 = 3;
  _DAT_16e486848 = 0xffffffffffffffff;
  uVar28 = 0;
  _DAT_16e486864 = 0xffffffff;
  _DAT_16e48686c = 3;
  FUN_14013cdf0();
  (*DAT_144980d30)();
  (*DAT_144980d28)(0x4100);
  FUN_14007bb00();
  local_618 = fVar10;
  local_620 = fVar10;
  local_628 = fVar10;
  local_630 = fVar10;
  local_638 = CONCAT44(local_638._4_4_,1);
  FUN_14006d930("connecting",uVar14,uVar59,uVar13);
  SDL_GL_SwapWindow(DAT_160fc47c8);
  iVar20 = FUN_1400a3f30();
  if (iVar20 == 0) {
    netlong = inet_addr("66.226.72.227");
    DAT_18329c1e0 = ntohl(netlong);
    DAT_18329c1e4 = 0x6bc8;
  }
  FUN_1400e5f10();
  DAT_1829f8bc0 = FUN_140198a50(&DAT_1829f8bc8);
  if (DAT_1829f8bc0 != 0) {
    iVar20 = FUN_140198af0(local_4d8);
    if (iVar20 != 0) {
      local_499 = 0;
      uVar35 = uVar28;
      do {
        cVar1 = local_4d8[uVar35];
        (&DAT_151e4594c)[uVar35] = cVar1;
        uVar35 = uVar35 + 1;
      } while (cVar1 != '\0');
      DAT_151e4596b = 0;
    }
    DAT_1829f8fdc = FUN_1401988c0(4);
    if (0 < DAT_1829f8fdc) {
      do {
        iVar20 = (int)uVar28;
        FUN_140198820(&DAT_1829f8fe0 + (longlong)iVar20 * 0x42,
                      &DAT_1829f8fec + (longlong)iVar20 * 0x210,uVar28,4);
        uVar28 = (ulonglong)(iVar20 + 1U);
      } while ((int)(iVar20 + 1U) < DAT_1829f8fdc);
    }
  }
  DAT_1602e12e0 = 0;
  _chdir(&DAT_182a7d340);
  FUN_140158ab0(local_518,"client2.csk");
  _chdir(&DAT_182a7d140);
  FUN_14008ead0(1);
  DAT_18539d3a0 = 1;
  _DAT_16b165f44 = SDL_GetTicks();
  _DAT_16b165f44 = _DAT_16b165f44 + -1000;
  DAT_183ebfaa0 = 0;
  DAT_150f610d4 = 2;
  DAT_183ebfaa8 = 0;
  SDL_GetTicks();
  uVar18 = _UNK_1402799bc;
  uVar17 = _UNK_1402799b8;
  uVar16 = _UNK_1402799b4;
  uVar15 = _DAT_1402799b0;
  fVar12 = DAT_140278774;
  uVar11 = DAT_140278688;
  fVar9 = DAT_1402780cc;
  uVar59 = DAT_140278750;
  uVar58 = DAT_140278900;
  do {
    if ((1 < DAT_183ebfaa8) || (uVar28 = 0, DAT_160fc47c0 != 0)) {
      if (DAT_183ebfaa0 != 0) {
        FUN_140095fc0();
      }
      closesocket((longlong)DAT_18539d3c8);
      _DAT_18539d3a8 = 0;
      FUN_1401e0f20(DAT_187bde460);
      puVar29 = &DAT_187bde660;
      do {
        FUN_1401e2c30(*puVar29);
        puVar29 = puVar29 + 1;
      } while ((longlong)puVar29 < 0x187bde6a0);
      return;
    }
    _DAT_16b27df80 = SDL_GetTicks();
    FUN_14007cc30();
    if ((DAT_183ebfaa0 == 0) || (uVar24 = 3, DAT_18329cc24 != 0)) {
      uVar24 = 2;
    }
    FUN_140076770(uVar24);
    FUN_140198e40();
    if ((DAT_183ebfaa0 == 0) && (DAT_183f7cb80 != 0)) {
      DAT_1ad04b1e0 = DAT_183f7cb80;
      DAT_183f7cb80 = 0;
      DAT_1ad04b1d4 = 0;
      DAT_1ad04adc0 = 0;
      FUN_1401fcd30(&DAT_1a4d2dce0,0,0x2270864);
      DAT_16b15ff3c = 1;
      _DAT_16b15ff24 = SDL_GetTicks();
      _DAT_16b15ff24 = _DAT_16b15ff24 + 200;
      DAT_183ebfcc8 = 0xffffffff;
      DAT_183ebfaa4 = 2;
    }
    FUN_14006bed0();
    if (DAT_160fc4820 != 0) {
      DAT_160fc47e8 = (DAT_160fc47dc << 4) / 9;
      if (DAT_160fc47d8 <= DAT_160fc47e8) {
        DAT_160fc47e8 = DAT_160fc47d8;
      }
      iVar20 = DAT_160fc47e8 * 9 + 8;
      DAT_160fc47ec = (int)(iVar20 + (iVar20 >> 0x1f & 0xfU)) >> 4;
      DAT_182a7d55c = DAT_160fc47e8;
      DAT_182a7d560 = DAT_160fc47ec;
      FUN_14013d1b0();
      FUN_14014b2a0();
      DAT_160fc4820 = 0;
    }
    if (DAT_183ebfaa0 == 0) {
      if (DAT_183ebfaa4 == 0) {
        FUN_1400fe1b0();
        goto LAB_140096d62;
      }
      if (DAT_183ebfaa4 == 1) {
        FUN_1400fd300();
        goto LAB_140096d62;
      }
      if (DAT_183ebfaa4 == 2) {
        FUN_1400fc480();
        goto LAB_140096d62;
      }
      if (DAT_183ebfaa4 == 3) {
        FUN_1400feb50();
        goto LAB_140096d62;
      }
      if (DAT_183ebfaa4 == 4) {
        FUN_1400fcff0();
        goto LAB_140096d62;
      }
      if (DAT_183ebfaa4 == 5) {
        if (DAT_151042894 < 0x10) {
          *(undefined4 *)(&DAT_151042898 + (longlong)DAT_151042894 * 8) = DAT_150f610e0;
          *(undefined4 *)(&DAT_15104289c + (longlong)DAT_151042894 * 8) = DAT_150f610e4;
          DAT_151042894 = DAT_151042894 + 1;
        }
        DAT_150f610e0 = 0x43400000;
        DAT_150f610e4 = 0x41c00000;
        DAT_150f610f4 = 0x29;
        iVar20 = FUN_14006f1f0(&DAT_140274d20);
        DAT_150f610dc = DAT_150f610dc + DAT_140278814;
        uVar35 = (ulonglong)DAT_183ebfaa4;
        if (iVar20 != 0) {
          uVar35 = uVar28;
        }
        DAT_150f610d8 = 0x42000000;
        DAT_183ebfaa4 = (uint)uVar35;
        FUN_14006f5a0("Female",&DAT_151e461e8,0);
        FUN_14006f5a0(&DAT_140276608,&DAT_151e461e8,1);
        local_638._0_4_ = 1;
        FUN_140071440(&DAT_140276610,&DAT_151e461ec,0,4);
        local_638._0_4_ = 1;
        FUN_140071440(&DAT_140276618,&DAT_151e461fc,0,7);
        local_638._0_4_ = 1;
        FUN_140071440(&DAT_140276620,&DAT_151e461f8,0,8);
        local_638._0_4_ = 1;
        FUN_140071440("Hair Color",&DAT_151e461f4,0,0xb);
        local_638 = CONCAT44(local_638._4_4_,1);
        FUN_140071440(&DAT_140276634,&DAT_151e461f0,0,5);
        if (0 < DAT_151042894) {
          DAT_151042894 = DAT_151042894 + -1;
          DAT_150f610e0 = *(undefined4 *)(&DAT_151042898 + (longlong)DAT_151042894 * 8);
          DAT_150f610e4 = *(undefined4 *)(&DAT_15104289c + (longlong)DAT_151042894 * 8);
        }
        goto LAB_140096d62;
      }
      if (DAT_183ebfaa4 == 6) {
        DAT_150f610e0 = 0x43200000;
        DAT_150f610e4 = 0x41a00000;
        DAT_150f610f4 = 0x29;
        iVar20 = FUN_14006f1f0(&DAT_140274d20);
        if (iVar20 != 0) {
          DAT_183ebfaa4 = 0;
        }
        goto LAB_140096d62;
      }
      DAT_183ebfaa4 = 0;
    }
    else {
      if (DAT_183ebfaa4 == 3) {
        FUN_1400feb50();
      }
      else if (DAT_183e93540 != 0) {
        DAT_150f610d8 = 0x42700000;
        DAT_150f610dc = 320.0;
        DAT_150f610f0 = 1;
        iVar20 = FUN_140070200(&DAT_140274a78,&DAT_183e93550,0x3c);
        if (iVar20 != 0) {
          if (iVar20 == 1) {
            lVar23 = -1;
            do {
              lVar26 = lVar23 + 1;
              pcVar25 = &DAT_183e93551 + lVar23;
              lVar23 = lVar26;
            } while (*pcVar25 != '\0');
            _DAT_183e9354c = (undefined4)lVar26;
            lVar23 = -1;
            do {
              lVar26 = lVar23 + 1;
              pcVar25 = &DAT_183e93551 + lVar23;
              lVar23 = lVar26;
            } while (*pcVar25 != '\0');
            lVar23 = (longlong)DAT_183f7c540 * 0x3834;
            *(undefined4 *)
             (&DAT_151620e28 + (longlong)*(int *)((longlong)&DAT_151620e14 + lVar23) * 0x54 + lVar23
             ) = 1;
            *(uint *)(&DAT_151620e2c +
                     (longlong)*(int *)((longlong)&DAT_151620e14 + lVar23) * 0x54 + lVar23) =
                 (uint)lVar26 & 0x3f;
            FUN_1401fc920(&DAT_151620e3c +
                          (longlong)*(int *)((longlong)&DAT_151620e14 + lVar23) * 0x54 + lVar23,
                          &DAT_183e93550);
            *(int *)(&DAT_151620e30 +
                    (longlong)*(int *)((longlong)&DAT_151620e14 + lVar23) * 0x54 + lVar23) =
                 DAT_183e93544;
            *(uint *)((longlong)&DAT_151620e14 + lVar23) =
                 *(int *)((longlong)&DAT_151620e14 + lVar23) + 1U & 0x3f;
            DAT_183e93548 = DAT_183e93548 + 1 & 7;
          }
          DAT_183e93540 = 0;
        }
      }
LAB_140096d62:
      if (((DAT_183ebfaa0 != 0) && (FUN_14009fe00(DAT_183f7c540), DAT_183ebfaa0 != 0)) &&
         (DAT_183ebfaa4 != 3)) {
        piVar27 = &DAT_182bbb4bc;
        uVar35 = uVar28;
        do {
          if (piVar27[-0xcf] != 0) {
            uVar31 = piVar27[-0xca];
            if (((uVar31 < 0x29) && ((0x18420000000U >> ((longlong)(int)uVar31 & 0x3fU) & 1) != 0))
               && (*piVar27 == -1)) {
              iVar20 = FUN_1400a4560();
              *piVar27 = iVar20;
              if (iVar20 != -1) {
                lVar23 = (longlong)iVar20;
                piVar27[1] = 0;
                (&DAT_182a7d580)[lVar23 * 3] = 1;
                (&DAT_182a7d584)[lVar23 * 3] = (int)uVar35;
                (&DAT_182a7d588)[lVar23 * 3] = uVar31;
              }
            }
          }
          uVar31 = (int)uVar35 + 1;
          uVar35 = (ulonglong)uVar31;
          piVar27 = piVar27 + 0x6e0;
        } while ((int)uVar31 < 0x400);
        piVar27 = &DAT_182a7d584;
        puVar34 = &DAT_183ebf180;
        uVar35 = uVar28;
        do {
          if (piVar27[-1] != 0) {
            lVar23 = (longlong)*piVar27;
            if (((&DAT_182bbb180)[lVar23 * 0x6e0] == 0) ||
               (iVar20 = (&DAT_182bbb194)[lVar23 * 0x6e0], iVar20 != piVar27[1])) {
              if ((&DAT_182bbb4bc)[lVar23 * 0x6e0] == (int)uVar35) {
                (&DAT_182bbb4bc)[lVar23 * 0x6e0] = 0xffffffff;
              }
              piVar27[-1] = 0;
            }
            else if (((&DAT_182bbb4c0)[lVar23 * 0x6e0] == 0) || (iVar20 == 0x28)) {
              if (iVar20 == 0x27) {
                FUN_14009c680(lVar23,*puVar34);
              }
              else if (iVar20 == 0x28) {
                FUN_14009c040(lVar23,*puVar34);
              }
              else if (iVar20 == 0x22) {
                FUN_14009cd10(lVar23,*puVar34);
              }
              else if (iVar20 == 0x1d) {
                FUN_14009d210(lVar23,*puVar34);
              }
              (&DAT_182bbb4c0)[(longlong)*piVar27 * 0x6e0] = 1;
            }
          }
          uVar31 = (int)uVar35 + 1;
          uVar35 = (ulonglong)uVar31;
          puVar34 = puVar34 + 1;
          piVar27 = piVar27 + 3;
          uVar30 = uVar28;
          uVar32 = uVar28;
          uVar37 = uVar28;
        } while ((int)uVar31 < 0x100);
        do {
          uVar31 = (uint)uVar30;
          if (*(int *)((longlong)&DAT_154161240 + uVar32) != 0) {
            if ((*(int *)((longlong)&DAT_154167264 + uVar32) != 0) && (uVar31 < 0x1000)) {
              FUN_14000c4c0(uVar30);
              uVar35 = uVar28;
              do {
                if (uVar32 < 0x6c413b9) {
                  uVar44 = (&DAT_154167248)[uVar35 + uVar37];
                  (&DAT_154167248)[uVar35 + uVar37] = 0xffffffff;
                  if (uVar44 < 0x400) {
                    (&DAT_151e46224)[(longlong)(int)uVar44 * 0x2309] = 0xffffffff;
                    FUN_1401941f0(0,uVar44);
                    FUN_1401941f0(3,uVar44);
                    FUN_1401941f0(5,uVar44);
                  }
                }
                uVar35 = uVar35 + 1;
              } while ((longlong)uVar35 < 4);
              *(undefined4 *)((longlong)&DAT_154167264 + uVar32) = 0;
              if (uVar31 == 0x3f0) {
                _DAT_18402cc00 = _DAT_18402cc00 + 1;
              }
            }
            if (*(int *)((longlong)&DAT_154167268 + uVar32) != 0) {
              FUN_140017910(uVar30);
            }
          }
          uVar30 = (ulonglong)(uVar31 + 1);
          uVar32 = uVar32 + 0x6c48;
          uVar37 = uVar37 + 0x1b12;
        } while ((int)(uVar31 + 1) < 0x1000);
        FUN_1400932d0();
        if (DAT_189f0eea0 == 0) {
          if (DAT_183f7c540 == -1) {
LAB_140097331:
            bVar38 = DAT_183f79de8 == 0;
            if (0 < DAT_183f79de8) {
              DAT_183f79de8 = DAT_183f79de8 + -1;
              goto LAB_14009734b;
            }
            goto LAB_14009734d;
          }
          iVar20 = (&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d];
          if (iVar20 == -1) goto LAB_140097331;
          if ((int)(&DAT_18329e344)[(longlong)iVar20 * 0x1bfe] < 1) {
            bVar38 = DAT_183f79de8 == 0;
            if (0 < DAT_183f79de8) {
              if (0 < (int)(&DAT_18329e344)[(longlong)iVar20 * 0x1bfe]) goto LAB_14009701f;
              DAT_183f79de8 = DAT_183f79de8 + -1;
              DAT_183f79de4 = iVar20;
              goto LAB_140097039;
            }
            goto LAB_14009734d;
          }
LAB_14009701f:
          DAT_183f79de8 = 0xb4;
LAB_140097039:
          lVar23 = (longlong)iVar20 * 0x560;
          _DAT_183f7c558 = _UNK_140278d38;
          _DAT_183f7c550 = _DAT_140278d30;
          _DAT_183f7c568 = _UNK_140278d38;
          _DAT_183f7c560 = _DAT_140278d30;
          DAT_183f7c570 = 1.0;
          DAT_183f7c544 = *(float *)(&DAT_18430a648 + lVar23);
          DAT_183f7c548 = *(float *)(&DAT_18430a64c + lVar23);
          DAT_183f7c54c = *(float *)(&DAT_18430a650 + lVar23);
          FUN_14007b2a0(&DAT_183f7c550,&DAT_183f7c55c);
          FUN_14007b2a0(&DAT_183f7c550,&DAT_183f7c550,
                        (float)(&DAT_18329e3a4)
                               [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] *
                                0x1bfe] * DAT_140278338);
          FUN_14007b2a0(&DAT_183f7c550,&DAT_183f7c550,
                        (float)(&DAT_18329e3a4)
                               [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] *
                                0x1bfe] * DAT_140278338);
          auVar19 = _DAT_183f7c550;
          DAT_183f7c574 = fVar10 - *(float *)(&DAT_151620d9c + (longlong)DAT_183f7c540 * 0x3834);
          lVar26 = (longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d];
          lVar23 = lVar26 * 0x560;
          fVar43 = (float)(&DAT_18430a660)[lVar26 * 0x158];
          uVar24 = *(undefined8 *)(&DAT_18430a664 + lVar26 * 0x158);
          _DAT_183f7c550 = DAT_183f7c550._4_8_ << 0x20;
          DAT_183f7c55c = auVar19._12_4_;
          DAT_183f7c558 = *(undefined4 *)(&DAT_18430a65c + lVar23);
          DAT_183f7c568 = (float)*(undefined4 *)(&DAT_18430a66c + lVar23);
          DAT_183f7c570 = *(float *)(&DAT_18430a674 + lVar23);
          _DAT_183f7c550 = *(undefined8 *)(&DAT_18430a654 + lVar23);
          DAT_183f7c55c = fVar43;
          _DAT_183f7c560 = uVar24;
          DAT_183f7c56c = (float)*(undefined4 *)(&DAT_18430a670 + lVar23);
          fVar47 = (float)(&DAT_18430a668)[lVar26 * 0x158];
          fVar45 = (float)(&DAT_18430a664)[lVar26 * 0x158];
          if (DAT_183ebfd44 != 0) {
            DAT_183f7c550 = DAT_183f7c5a4;
            DAT_183f7c558 = DAT_183f7c5ac;
            DAT_183f7c568 = (float)DAT_183f7c5bc;
            DAT_183f7c554 = DAT_183f7c5a8;
            DAT_183f7c570 = DAT_183f7c5c4;
            DAT_183f7c55c = DAT_183f7c5b0;
            DAT_183f7c564 = DAT_183f7c5b8;
            DAT_183f7c560 = DAT_183f7c5b4;
            DAT_183f7c56c = (float)DAT_183f7c5c0;
            fVar47 = DAT_183f7c5b8;
            fVar43 = DAT_183f7c5b0;
            fVar45 = DAT_183f7c5b4;
          }
          lVar26 = lVar26 * 0x6ff8;
          _DAT_183f7c544 =
               CONCAT44((DAT_183f7c548 - fVar45 * DAT_1402781bc) + fVar45 * DAT_1402781bc,
                        (DAT_183f7c544 - fVar43 * DAT_1402781bc) + fVar43 * DAT_1402781bc);
          _DAT_183f7c57c = *(undefined4 *)(&DAT_18329e8f0 + lVar26);
          DAT_183f7c54c = (DAT_183f7c54c - fVar47 * DAT_1402781bc) + fVar47 * DAT_1402781bc;
          _DAT_183f7c578 = *(undefined4 *)(&DAT_18329e8ec + lVar26);
          _DAT_183f7c580 = *(undefined4 *)(&DAT_18329e8f4 + lVar26);
        }
        else {
LAB_14009734b:
          bVar38 = DAT_183f79de8 == 0;
LAB_14009734d:
          if ((bVar38) || (DAT_189f0eea0 != 0)) {
            if (((DAT_183f7c540 == -1) && (DAT_144cbfaa4 == 0)) || (DAT_189f0eea0 != 0)) {
              DAT_183f7c570 = 1.0;
              if (DAT_189f0eea0 != 0) {
                uVar28 = 2;
              }
              _DAT_183f7c544 = *(undefined8 *)(&DAT_183f7c360 + uVar28 * 7);
              DAT_183f7c54c = (&DAT_183f7c368)[uVar28 * 7];
              _DAT_183f7c558 = _UNK_140278d38;
              _DAT_183f7c550 = _DAT_140278d30;
              _DAT_183f7c560 = _DAT_183f7c550;
              FUN_14007b2a0(&DAT_183f7c550,&DAT_183f7c55c);
              FUN_14007b2a0(&DAT_183f7c550,&DAT_183f7c550);
              DAT_183f7c574 = (float)_DAT_140278d30;
              _DAT_183f7c578 = (undefined4)((ulonglong)_DAT_140278d30 >> 0x20);
              _DAT_183f7c57c = (undefined4)_UNK_140278d38;
              _DAT_183f7c580 = (undefined4)((ulonglong)_UNK_140278d38 >> 0x20);
            }
            else {
              DAT_183f7c544 = DAT_183f7c37c;
              DAT_183f7c548 = DAT_183f7c380;
              DAT_183f7c54c = DAT_183f7c384;
              DAT_183f7c574 = 1.0;
              _DAT_183f7c558 = _UNK_140278d38;
              _DAT_183f7c550 = _DAT_140278d30;
              DAT_183f7c570 = 1.0;
              _DAT_183f7c568 = _UNK_140278d38;
              _DAT_183f7c560 = _DAT_140278d30;
              FUN_14007b2a0(&DAT_183f7c550,&DAT_183f7c55c);
              FUN_14007b2a0(&DAT_183f7c550,&DAT_183f7c550);
              _DAT_183f7c578 = 0;
              _DAT_183f7c57c = 0;
              _DAT_183f7c580 = 0;
              DAT_183f7c54c = DAT_183f7c54c + DAT_183f7c390 * DAT_183f7c570;
              _DAT_183f7c544 =
                   CONCAT44(DAT_183f7c548 + DAT_183f7c390 * DAT_183f7c56c,
                            DAT_183f7c544 + DAT_183f7c390 * DAT_183f7c568);
              if ((DAT_183f79de4 != -1) && ((&DAT_18329e308)[(longlong)DAT_183f79de4 * 0x1bfe] == 0)
                 ) {
                DAT_183f79de4 = -1;
              }
              if (DAT_144cbfaa4 == 0) {
LAB_140097656:
                if (((DAT_183ebfaac != 3) && (2 < DAT_183ebfaac - 5U)) &&
                   ((DAT_183ebfaac != 4 ||
                    (*(int *)(&DAT_151620c94 + (longlong)DAT_183f7c540 * 0x3834) == 0))))
                goto LAB_140097810;
              }
              else {
                if (DAT_144cbfac4 != 1) {
                  DAT_183f7c570 = 1.0;
                  _DAT_183f7c544 = *(undefined8 *)(&DAT_183f7c360 + (longlong)DAT_144cbfac4 * 7);
                  DAT_183f7c54c = (&DAT_183f7c368)[(longlong)DAT_144cbfac4 * 7];
                  _DAT_183f7c558 = _UNK_140278d38;
                  _DAT_183f7c550 = _DAT_140278d30;
                  _DAT_183f7c560 = _DAT_183f7c550;
                  FUN_14007b2a0(&DAT_183f7c550,&DAT_183f7c55c);
                  FUN_14007b2a0(&DAT_183f7c550,&DAT_183f7c550);
                  DAT_183f7c574 =
                       fVar10 - *(float *)(&DAT_183f7c374 + (longlong)DAT_144cbfac4 * 0x1c);
                }
                if (DAT_144cbfaa4 == 0) goto LAB_140097656;
                if (DAT_144cbfac4 != 1) goto LAB_140097810;
              }
              if (DAT_183f79de4 != -1) {
                lVar23 = (longlong)DAT_183f79de4;
                DAT_183f7c574 = 1.0;
                DAT_183f7c570 = 1.0;
                DAT_183f7c384 = (float)(&DAT_18430a554)[lVar23 * 0x158];
                DAT_183f7c37c = (float)(&DAT_18430a54c)[lVar23 * 0x158];
                DAT_183f7c380 = (float)(&DAT_18430a550)[lVar23 * 0x158];
                _DAT_183f7c558 = _UNK_140278d38;
                _DAT_183f7c550 = _DAT_140278d30;
                _DAT_183f7c568 = _UNK_140278d38;
                _DAT_183f7c560 = _DAT_140278d30;
                DAT_183f7c54c = DAT_183f7c384;
                DAT_183f7c544 = DAT_183f7c37c;
                DAT_183f7c548 = DAT_183f7c380;
                FUN_14007b2a0(&DAT_183f7c550,&DAT_183f7c55c);
                FUN_14007b2a0(&DAT_183f7c550,&DAT_183f7c550);
                DAT_183f7c54c = DAT_183f7c54c + DAT_183f7c390 * DAT_183f7c570;
                _DAT_183f7c544 =
                     CONCAT44(DAT_183f7c548 + DAT_183f7c390 * DAT_183f7c56c,
                              DAT_183f7c544 + DAT_183f7c390 * DAT_183f7c568);
                if (DAT_183f79de4 == -1) {
                  _DAT_183f7c578 = 0;
                  _DAT_183f7c57c = 0;
                  _DAT_183f7c580 = 0;
                }
                else {
                  lVar23 = (longlong)DAT_183f79de4 * 0x6ff8;
                  _DAT_183f7c578 = *(undefined4 *)(&DAT_18329e394 + lVar23);
                  _DAT_183f7c57c = *(undefined4 *)(&DAT_18329e398 + lVar23);
                  _DAT_183f7c580 = *(undefined4 *)(&DAT_18329e39c + lVar23);
                }
              }
            }
          }
        }
LAB_140097810:
        if (DAT_16b165f6c != 0) {
          _DAT_183f7c544 = CONCAT44(DAT_183f7c364,DAT_183f7c360);
          _DAT_183f7c558 = _UNK_140278d38;
          _DAT_183f7c550 = _DAT_140278d30;
          DAT_183f7c54c = DAT_183f7c368;
          DAT_183f7c570 = 1.0;
          _DAT_183f7c560 = _DAT_183f7c550;
          FUN_14007b2a0(&DAT_183f7c550,&DAT_183f7c55c);
          FUN_14007b2a0(&DAT_183f7c550,&DAT_183f7c550);
          DAT_183f7c574 = (float)_DAT_140278d30;
          _DAT_183f7c578 = (undefined4)((ulonglong)_DAT_140278d30 >> 0x20);
          _DAT_183f7c57c = (undefined4)_UNK_140278d38;
          _DAT_183f7c580 = (undefined4)((ulonglong)_UNK_140278d38 >> 0x20);
        }
        FUN_14011fd00();
      }
    }
    DAT_1a4d2dd04 = 0;
    if ((DAT_183ebfaa0 != 0) && (DAT_1ad04adc0 != 0)) {
      _DAT_1abc2d9dc = DAT_183f79de4;
      FUN_14002db60(0xff,DAT_183f7c540);
      local_5e8 = 0;
      local_5f8 = 0;
      local_5d8 = 8;
      local_5f0 = &DAT_1abc2d8a0;
      local_5e0 = &DAT_189c3bcc4;
      do {
        iVar20 = local_5f0[-1];
        *(int *)((longlong)&DAT_189c1dc80 + local_5e8) = iVar20;
        if (iVar20 == 0) {
          *(undefined8 *)(local_5e0 + -1) = 0;
          *(undefined8 *)(local_5e0 + 1) = 0;
          *(undefined8 *)(local_5e0 + 3) = 0;
          *(undefined8 *)(local_5e0 + 5) = 0;
          *(undefined8 *)(local_5e0 + 7) = 0;
          *(undefined8 *)(local_5e0 + 9) = 0;
          *(undefined8 *)(local_5e0 + 0xb) = 0;
          *(undefined8 *)(local_5e0 + 0xd) = 0;
          *(undefined8 *)(local_5e0 + 0xf) = 0;
          *(undefined8 *)(local_5e0 + 0x11) = 0;
          *(undefined8 *)(local_5e0 + 0x13) = 0;
          *(undefined8 *)(local_5e0 + 0x15) = 0;
          *(undefined8 *)(local_5e0 + 0x17) = 0;
          *(undefined8 *)(local_5e0 + 0x19) = 0;
          *(undefined8 *)(local_5e0 + 0x1b) = 0;
          *(undefined8 *)(local_5e0 + 0x1d) = 0;
          *(undefined8 *)(local_5e0 + 0x1f) = 0;
          *(undefined8 *)(local_5e0 + 0x21) = 0;
          *(undefined8 *)(local_5e0 + 0x23) = 0;
          *(undefined8 *)(local_5e0 + 0x25) = 0;
          *(undefined8 *)(local_5e0 + 0x27) = 0;
          *(undefined8 *)(local_5e0 + 0x29) = 0;
          *(undefined8 *)(local_5e0 + 0x2b) = 0;
          *(undefined8 *)(local_5e0 + 0x2d) = 0;
          *(undefined8 *)(local_5e0 + 0x2f) = 0;
          *(undefined8 *)(local_5e0 + 0x31) = 0;
          *(undefined8 *)(local_5e0 + 0x33) = 0;
          *(undefined8 *)(local_5e0 + 0x35) = 0;
          *(undefined8 *)(local_5e0 + 0x37) = 0;
          *(undefined8 *)(local_5e0 + 0x39) = 0;
          *(undefined8 *)(local_5e0 + 0x3b) = 0;
          *(undefined8 *)(local_5e0 + 0x3d) = 0;
        }
        else {
          iVar20 = *local_5f0;
          puVar33 = &DAT_189c3c6c0 + local_5f8;
          *(int *)((longlong)&DAT_189c1dc90 + local_5e8) = local_5f0[1];
          *(int *)((longlong)&DAT_189c1dc94 + local_5e8) = local_5f0[2];
          *(int *)((longlong)&DAT_189c1dc88 + local_5e8) = iVar20;
          local_548 = (longlong)iVar20 * 0x20214;
          piVar27 = (int *)((longlong)&DAT_189c3bcc0 + local_5e8);
          *(undefined4 *)((longlong)&DAT_189c3bcb8 + local_5e8) =
               *(undefined4 *)(&DAT_187bde86c + local_548);
          lVar23 = local_548 - local_5f8;
          local_548 = local_548 - local_5e8;
          local_558 = lVar23 + -0x205ac4c;
          local_540 = lVar23 + -0x205a44c;
          local_538 = lVar23 + -0x205dc4c;
          local_5b8 = local_548 + -0x205d348;
          local_530 = local_548 + -0x205d34c;
          local_5b0 = local_548 + -0x205d448;
          local_528 = local_548 + -0x205d44c;
          local_5a8 = local_548 + -0x205d344;
          local_5a0 = local_548 + -0x205d444;
          local_598 = local_548 + -0x205d340;
          local_590 = local_548 + -0x205d440;
          local_588 = local_548 + -0x205d33c;
          local_580 = local_548 + -0x205d43c;
          local_578 = local_548 + -0x205d338;
          local_570 = local_548 + -0x205d438;
          local_568 = local_548 + -0x205d334;
          local_560 = local_548 + -0x205d434;
          local_550 = local_548 + -0x205d330;
          local_548 = local_548 + -0x205d430;
          lVar26 = 8;
          local_5d0 = lVar23 + -0x205c44c;
          local_5c8 = lVar23 + -0x205bc4c;
          local_5c0 = lVar23 + -0x205b44c;
          do {
            iVar20 = *(int *)(local_530 + (longlong)piVar27);
            iVar21 = *(int *)(local_528 + (longlong)piVar27);
            *piVar27 = iVar20;
            piVar27[0x40] = iVar21;
            FUN_1401fc920(puVar33 + -0x800,puVar33 + local_538,(longlong)iVar20);
            iVar20 = *(int *)(local_5b8 + (longlong)piVar27);
            piVar27[1] = iVar20;
            piVar27[0x41] = *(int *)(local_5b0 + (longlong)piVar27);
            FUN_1401fc920(puVar33,puVar33 + lVar23 + -0x205d44c,(longlong)iVar20);
            iVar20 = *(int *)(local_5a8 + (longlong)piVar27);
            piVar27[2] = iVar20;
            piVar27[0x42] = *(int *)(local_5a0 + (longlong)piVar27);
            FUN_1401fc920(puVar33 + 0x800,puVar33 + lVar23 + -0x205cc4c,(longlong)iVar20);
            iVar20 = *(int *)(local_598 + (longlong)piVar27);
            piVar27[3] = iVar20;
            piVar27[0x43] = *(int *)(local_590 + (longlong)piVar27);
            FUN_1401fc920(puVar33 + 0x1000,puVar33 + lVar23 + -0x205c44c,(longlong)iVar20);
            iVar20 = *(int *)(local_588 + (longlong)piVar27);
            piVar27[4] = iVar20;
            piVar27[0x44] = *(int *)(local_580 + (longlong)piVar27);
            FUN_1401fc920(puVar33 + 0x1800,puVar33 + lVar23 + -0x205bc4c,(longlong)iVar20);
            iVar20 = *(int *)(local_578 + (longlong)piVar27);
            piVar27[5] = iVar20;
            piVar27[0x45] = *(int *)(local_570 + (longlong)piVar27);
            FUN_1401fc920(puVar33 + 0x2000,puVar33 + lVar23 + -0x205b44c,(longlong)iVar20);
            iVar20 = *(int *)(local_568 + (longlong)piVar27);
            piVar27[6] = iVar20;
            piVar27[0x46] = *(int *)(local_560 + (longlong)piVar27);
            FUN_1401fc920(puVar33 + 0x2800,puVar33 + local_558,(longlong)iVar20);
            iVar20 = *(int *)(local_550 + (longlong)piVar27);
            piVar27[7] = iVar20;
            piVar27[0x47] = *(int *)(local_548 + (longlong)piVar27);
            FUN_1401fc920(puVar33 + 0x3000,puVar33 + local_540,(longlong)iVar20);
            puVar33 = puVar33 + 0x4000;
            piVar27 = piVar27 + 8;
            lVar26 = lVar26 + -1;
          } while (lVar26 != 0);
        }
        local_5f8 = local_5f8 + 0x5e244;
        local_5f0 = local_5f0 + 10;
        local_5e8 = local_5e8 + 0x5e244;
        local_5e0 = local_5e0 + 0x17891;
        local_5d8 = local_5d8 + -1;
      } while (local_5d8 != 0);
      local_5d8 = 0;
    }
    FUN_14014fcf0(&DAT_183f7c544,&DAT_183f7c550,&DAT_183f7c578);
    if (DAT_183f7c540 == -1) {
      FUN_14009e210(0);
    }
    else {
      FUN_14009e210();
      lVar23 = (longlong)DAT_183f7c540;
      (&DAT_151620ca4)[lVar23 * 0xe0d] = 0;
      if ((&DAT_187bde860)[lVar23 * 0x8085] == 0) {
        (&DAT_151620ca4)[lVar23 * 0xe0d] = 1;
      }
    }
    (*DAT_1404046f0)(0x8d40,*(undefined4 *)(&DAT_183e990c0 + (longlong)DAT_183e97744 * 8));
    local_638 = local_638 & 0xffffffff00000000;
    (*DAT_140404718)(0x8d40,0x8ce0,0xde1,(&DAT_1a8572bc4)[(longlong)DAT_183ebe430 * 0x2a]);
    if ((DAT_183ebfaa0 == 0) || (DAT_183ebfaa4 == 3)) {
      (*DAT_144980d30)();
      (*DAT_144980d28)(0x4000);
    }
    FUN_14007bb00();
    if (DAT_183ebfaa0 != 0) {
      if ((((DAT_183ebfaa4 != 3) && (DAT_183f7aee0 == 0)) && (DAT_183ebfccc != 0)) &&
         (DAT_183f7c540 != -1)) {
        FUN_140086000();
      }
      if (DAT_183ebfaa0 != 0) {
        if ((DAT_183ebfaa4 != 3) && (DAT_183f7aee0 == 0)) {
          FUN_140092d70();
        }
        if (((DAT_183ebfaa0 != 0) && (DAT_183ebfaa4 != 3)) && (DAT_183f7aee4 == 0)) {
          FUN_140092370();
        }
      }
    }
    FUN_14007bb00();
    if (((DAT_183ebfaa0 != 0) && (DAT_183ebfaa4 != 3)) && (DAT_183f7aee0 == 0)) {
      FUN_140082420();
    }
    DAT_1a8bf79c0 = 2;
    if (DAT_183e93540 != 0) {
      if (DAT_183f7c540 == -1) {
        pcVar25 = "Chat:";
      }
      else {
        if (DAT_183e93544 == 0) {
          local_618 = fVar10;
          local_620 = fVar10;
          local_628 = fVar10;
          local_630 = fVar10;
          local_638 = 0;
          FUN_14006d930("Whisper:",uVar11,uVar58,fVar12);
        }
        if (DAT_183e93544 == 1) {
          local_618 = fVar10;
          local_620 = fVar10;
          local_628 = fVar10;
          local_630 = fVar10;
          local_638 = 0;
          FUN_14006d930(&DAT_140274a8c,uVar11,uVar58,fVar12);
        }
        if (DAT_183e93544 != 2) goto LAB_14009817e;
        pcVar25 = "Yell:";
      }
      local_618 = fVar10;
      local_620 = fVar10;
      local_628 = fVar10;
      local_630 = fVar10;
      local_638 = 0;
      FUN_14006d930(pcVar25,uVar11,uVar58,fVar12);
    }
LAB_14009817e:
    FUN_14007bb00();
    if (DAT_183ebfaa0 != 0) {
      if (((DAT_183ebfaa4 != 3) && (DAT_183ebfccc == 2)) && (0.0 < DAT_183f7aed8)) {
        (*DAT_140404050)(0xde1,DAT_1abd4ac94);
        local_618 = DAT_183f7aed8;
        local_620 = 0.0;
        local_628 = 0.0;
        local_630 = 0.0;
        local_638 = local_638 & 0xffffffff00000000;
        FUN_14006cff0();
      }
      if (((DAT_183ebfaa0 != 0) && (DAT_183ebfaa4 != 3)) &&
         ((DAT_144cbfaa4 != 0 && (DAT_183ebfccc == 3)))) {
        local_618 = fVar10;
        local_620 = fVar10;
        local_628 = fVar10;
        local_630 = fVar10;
        local_638 = CONCAT44(local_638._4_4_,1);
        FUN_14006d930("Replay End",uVar14,DAT_1402788c4,fVar12);
      }
    }
    FUN_14007bb00();
    if ((((DAT_183ebfaa0 != 0) && (DAT_183ebfaa4 != 3)) && (DAT_183f7c540 != -1)) &&
       (((DAT_183ebfaac == 3 || (DAT_183ebfaac - 5U < 3)) &&
        ((DAT_183ebfccc == 2 &&
         (((&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] == -1 && (DAT_183f79de8 == 0)))))))) {
      FUN_140088c00();
    }
    if (DAT_151e461d4 != 0) {
      local_618 = fVar10;
      local_620 = fVar10;
      local_628 = fVar10;
      local_630 = fVar10;
      local_638 = 0;
      FUN_14006d930("Ping:",0,DAT_1402788f0,fVar12);
      local_610 = DAT_1a6f9e138;
      local_618 = fVar10;
      local_620 = fVar10;
      local_628 = fVar10;
      local_630 = fVar10;
      local_638 = CONCAT44(local_638._4_4_,2);
      FUN_14006d930(&DAT_1402735b8,DAT_140278848,DAT_1402788f0,fVar12);
      piVar27 = (int *)&DAT_1a6f9e154;
      uVar31 = 0;
      uVar44 = 0;
      uVar46 = 0;
      uVar48 = 0;
      uVar50 = 0;
      uVar52 = 0;
      uVar54 = 0;
      uVar56 = 0;
      do {
        uVar39 = ~-(uint)(piVar27[-4] == 0) & uVar15;
        uVar40 = ~-(uint)(piVar27[-3] == 0) & uVar16;
        uVar41 = ~-(uint)(piVar27[-2] == 0) & uVar17;
        uVar42 = ~-(uint)(piVar27[-1] == 0) & uVar18;
        iVar20 = *piVar27;
        piVar2 = piVar27 + 1;
        piVar3 = piVar27 + 2;
        piVar4 = piVar27 + 3;
        piVar27 = piVar27 + 8;
        uVar31 = _DAT_140279150 + uVar31 & uVar39 | ~uVar39 & uVar31;
        uVar44 = _UNK_140279154 + uVar44 & uVar40 | ~uVar40 & uVar44;
        uVar46 = _UNK_140279158 + uVar46 & uVar41 | ~uVar41 & uVar46;
        uVar48 = _UNK_14027915c + uVar48 & uVar42 | ~uVar42 & uVar48;
        uVar39 = ~-(uint)(iVar20 == 0) & uVar15;
        uVar40 = ~-(uint)(*piVar2 == 0) & uVar16;
        uVar41 = ~-(uint)(*piVar3 == 0) & uVar17;
        uVar42 = ~-(uint)(*piVar4 == 0) & uVar18;
        uVar50 = _DAT_140279150 + uVar50 & uVar39 | ~uVar39 & uVar50;
        uVar52 = _UNK_140279154 + uVar52 & uVar40 | ~uVar40 & uVar52;
        uVar54 = _UNK_140279158 + uVar54 & uVar41 | ~uVar41 & uVar54;
        uVar56 = _UNK_14027915c + uVar56 & uVar42 | ~uVar42 & uVar56;
      } while ((longlong)piVar27 < 0x1a6f9e554);
      local_618 = fVar10;
      local_620 = fVar10;
      local_628 = fVar10;
      local_630 = fVar10;
      local_638 = 0;
      FUN_14006d930("Packetloss:",0,DAT_1402788fc,fVar12);
      local_610 = 100 - ((int)(uVar31 + uVar50 + uVar46 + uVar54 + uVar44 + uVar52 + uVar48 + uVar56
                              ) >> 8);
      local_618 = fVar10;
      local_620 = fVar10;
      local_628 = fVar10;
      local_630 = fVar10;
      local_638 = CONCAT44(local_638._4_4_,2);
      FUN_14006d930(&DAT_14027454c,DAT_140278848,DAT_1402788fc,fVar12);
    }
    local_610 = DAT_151e461dc;
    local_618 = DAT_183f7aedc;
    local_620 = fVar10;
    local_628 = fVar10;
    local_630 = fVar10;
    local_638 = CONCAT44(local_638._4_4_,0x20);
    FUN_14006d930("Mic:/i",uVar11,DAT_140278814,uVar59);
    iVar20 = 0;
    if (-1 < DAT_183f7c540) {
      iVar20 = DAT_183f7c540;
    }
    if ((DAT_183ebfaa0 == 0) && (DAT_183ebfaa4 != 3)) {
LAB_14009867d:
      if (DAT_183ebfaa4 == 0) {
        local_618 = fVar10;
        local_620 = fVar10;
        local_628 = fVar10;
        local_630 = fVar10;
        local_638._0_4_ = 1;
        FUN_14006d930("Sub Rosa",uVar14,DAT_140278888,fVar12);
        local_608 = DAT_1402b23dc + 0x61;
        local_610 = DAT_1402b231c;
        local_618 = fVar10;
        local_620 = fVar10;
        local_628 = fVar10;
        local_630 = fVar10;
        local_638._0_4_ = 1;
        FUN_14006d930("ALPHA /i/c",uVar14,DAT_140278898,fVar12);
        local_618 = fVar10;
        local_620 = fVar10;
        local_628 = fVar10;
        local_630 = fVar10;
        local_638 = CONCAT44(local_638._4_4_,0x41);
        FUN_14006d930(DAT_1402b2810,uVar14,DAT_1402788a4,DAT_140278760);
        if (DAT_1829f8bc0 != 0) {
          local_618 = fVar10;
          local_620 = fVar10;
          local_628 = fVar10;
          local_630 = fVar10;
          local_638 = 0;
          FUN_14006d930("Steam",fVar12,DAT_140278984,uVar59);
        }
      }
      if (DAT_183ebfaa4 == 1) {
        local_618 = fVar10;
        local_620 = fVar10;
        local_628 = fVar10;
        local_630 = fVar10;
        local_638 = 0;
        FUN_14006d930(&DAT_140276798,uVar11,DAT_1402787d4,uVar13);
        local_618 = fVar10;
        local_620 = fVar10;
        local_628 = fVar10;
        local_630 = fVar10;
        local_638._0_4_ = 2;
        FUN_14006d930(&DAT_1402767a0,DAT_140278950,DAT_1402787d4,uVar13);
        local_618 = fVar10;
        local_620 = fVar10;
        local_628 = fVar10;
        local_630 = fVar10;
        local_638._0_4_ = 2;
        FUN_14006d930("Players",DAT_14027898c,DAT_1402787d4,uVar13);
        local_618 = fVar10;
        local_620 = fVar10;
        local_628 = fVar10;
        local_630 = fVar10;
        local_638._0_4_ = 2;
        FUN_14006d930("Game Type",DAT_1402789b0,DAT_1402787d4,uVar13);
        local_618 = fVar10;
        local_620 = fVar10;
        local_628 = fVar10;
        local_630 = fVar10;
        local_638._0_4_ = 2;
        FUN_14006d930("Version",DAT_1402789d8,DAT_1402787d4,uVar13);
        local_618 = fVar10;
        local_620 = fVar10;
        local_628 = fVar10;
        local_630 = fVar10;
        local_638 = CONCAT44(local_638._4_4_,2);
        FUN_14006d930("Password",DAT_1402789ec,DAT_1402787d4,uVar13);
        local_610 = DAT_16b0a7ee4;
        local_618 = fVar10;
        local_620 = fVar10;
        local_628 = fVar10;
        local_630 = fVar10;
        local_638 = 0;
        FUN_14006d930(&DAT_1402735b8,uVar11,DAT_140278924,uVar59);
        local_610 = DAT_16b15ff2c;
        local_618 = fVar10;
        local_620 = fVar10;
        local_628 = fVar10;
        local_630 = fVar10;
        local_638 = 0;
        FUN_14006d930(&DAT_1402735b8,uVar11,DAT_140278928,uVar59);
      }
      if (DAT_183ebfaa4 == 2) {
        if (DAT_16b15ff3c - 1U < 2) {
          local_618 = fVar10;
          local_620 = fVar10;
          local_628 = fVar10;
          local_630 = fVar10;
          local_638 = CONCAT44(local_638._4_4_,1);
          FUN_14006d930("Connecting",uVar14,DAT_140278888,uVar13);
        }
        if (DAT_16b15ff3c == 4) {
          local_618 = fVar10;
          local_620 = fVar10;
          local_628 = fVar10;
          local_630 = fVar10;
          local_638 = CONCAT44(local_638._4_4_,1);
          FUN_14006d930(&DAT_16b160340,uVar14,DAT_140278888,uVar13);
        }
      }
      if (DAT_183ebfaa4 == 5) {
        FUN_1400fba50();
      }
      if (DAT_183ebfaa4 == 6) {
        FUN_1400fcc90();
      }
      if (DAT_183ebfaa0 != 0) goto LAB_140098c24;
      if (DAT_16b165f40 == 0) {
        if (DAT_1829f8bc0 == 0) {
          pcVar25 = "Steam Init Failed";
        }
        else {
          pcVar25 = "Steam Auth...";
          if (DAT_1829f8fd8 == 0) {
            pcVar25 = "Steam Ticket...";
          }
        }
LAB_140098bd8:
        local_618 = fVar10;
        local_620 = fVar10;
        local_628 = fVar10;
        local_630 = fVar10;
        local_638 = 0;
        FUN_14006d930(pcVar25,fVar12,DAT_14027898c,uVar59);
        if (DAT_183ebfaa0 != 0) goto LAB_140098c24;
      }
      else {
        if (DAT_16b165f40 == 1) {
          pcVar25 = "CS Auth...";
          goto LAB_140098bd8;
        }
        if (DAT_16b165f40 == 2) {
          FUN_140158ab0(local_2d8,"%03d-%04d",(ulonglong)DAT_1603612f0 / 10000,
                        DAT_1603612f0 + (int)((ulonglong)DAT_1603612f0 / 10000) * -10000);
          pcVar25 = local_2d8;
          goto LAB_140098bd8;
        }
      }
LAB_140098c52:
      uVar24 = 0;
    }
    else {
      if (((&DAT_187bde860)[(longlong)iVar20 * 0x8085] == 0) || (DAT_183ebfaa4 == 3)) {
        (*DAT_140404050)(0xde1,DAT_1abd4ac94);
        DAT_1ad059440 = 2;
        DAT_1ad059448 = 0;
        DAT_1ad05944c = 9;
        _DAT_1ad299450 = _DAT_140279690;
        _DAT_1ad299458 = _UNK_140279698;
        if ((&DAT_187bde860)[(longlong)iVar20 * 0x8085] == 0) {
          _DAT_1ad299450 = _DAT_140279700;
          _DAT_1ad299458 = _UNK_140279708;
        }
        fVar43 = fVar12;
        fVar45 = DAT_140278814;
        if (DAT_183ebfaa4 == 3) {
          fVar43 = DAT_1402789c8;
          fVar45 = DAT_1402788ec;
        }
        iVar20 = 0;
        psVar36 = &DAT_189bffc70;
        do {
          FUN_14007d420((float)iVar20 + fVar43,
                        (float)(int)(short)(&DAT_189bffc60)[iVar20 * 8] * fVar9 + fVar45);
          iVar20 = iVar20 + 1;
          FUN_14007d420((float)iVar20 + fVar43,(float)(int)*psVar36 * fVar9 + fVar45);
          psVar36 = psVar36 + 8;
        } while (iVar20 < 0xef);
        FUN_14006e0d0();
        uVar58 = DAT_140278900;
        uVar59 = DAT_140278750;
      }
      if (DAT_183ebfaa0 == 0) goto LAB_14009867d;
LAB_140098c24:
      if ((DAT_183ebfaa4 != 3) && (DAT_151e461d0 != 0)) {
        FUN_140085aa0();
      }
      if ((DAT_183ebfaa0 == 0) || (uVar24 = 1, DAT_18329cc24 != 0)) goto LAB_140098c52;
    }
    FUN_140072450(uVar24);
    iVar20 = SDL_GetTicks();
    fVar43 = 0.0;
    fVar45 = 0.0;
    fVar47 = 0.0;
    fVar49 = 0.0;
    fVar51 = 0.0;
    fVar53 = 0.0;
    fVar55 = 0.0;
    fVar57 = 0.0;
    *(int *)(&DAT_16b27df8c + (longlong)(int)DAT_16b27df88 * 4) = iVar20 - _DAT_16b27df80;
    if (DAT_16b27e08c < *(int *)(&DAT_16b27df8c + (longlong)(int)DAT_16b27df88 * 4)) {
      DAT_16b27e08c = *(int *)(&DAT_16b27df8c + (longlong)(int)DAT_16b27df88 * 4);
    }
    DAT_16b27df88 = DAT_16b27df88 + 1 & 0x1f;
    piVar27 = (int *)&DAT_16b27df9c;
    do {
      piVar2 = piVar27 + -4;
      piVar3 = piVar27 + -3;
      piVar4 = piVar27 + -2;
      piVar5 = piVar27 + -1;
      iVar20 = *piVar27;
      piVar6 = piVar27 + 1;
      piVar7 = piVar27 + 2;
      piVar8 = piVar27 + 3;
      piVar27 = piVar27 + 8;
      fVar43 = fVar43 + (float)*piVar2;
      fVar45 = fVar45 + (float)*piVar3;
      fVar47 = fVar47 + (float)*piVar4;
      fVar49 = fVar49 + (float)*piVar5;
      fVar51 = fVar51 + (float)iVar20;
      fVar53 = fVar53 + (float)*piVar6;
      fVar55 = fVar55 + (float)*piVar7;
      fVar57 = fVar57 + (float)*piVar8;
    } while ((longlong)piVar27 < 0x16b27e01c);
    DAT_1a4d2dd04 = 0;
    DAT_16b27e090 =
         (fVar47 + fVar55 + fVar43 + fVar51 + fVar49 + fVar57 + fVar45 + fVar53) * DAT_140278178;
    if (DAT_183ebfaa0 != 0) {
      iVar20 = 0;
      if (DAT_1ad04adc0 == 0) {
        if (DAT_144cbfaa4 == 0) {
          if (DAT_151e46204 == 0) {
            iVar21 = FUN_14003b920(1);
            for (; (iVar21 == 0 && (iVar20 < 0x14)); iVar20 = iVar20 + 1) {
              SDL_Delay(1);
              iVar21 = FUN_14003b920(1);
            }
            lVar23 = 4;
            do {
              FUN_14003b920(1);
              lVar23 = lVar23 + -1;
            } while (lVar23 != 0);
            for (iVar20 = 0; (DAT_1a4d2dd04 == 0 && (iVar20 < 0x32)); iVar20 = iVar20 + 1) {
              FUN_14003b920(1);
              SDL_Delay(1);
            }
          }
          else {
            iVar21 = FUN_14003b920(1);
            for (; (iVar21 == 0 && (iVar20 < 0x14)); iVar20 = iVar20 + 1) {
              SDL_Delay(1);
              iVar21 = FUN_14003b920(1);
            }
            lVar23 = 4;
            do {
              FUN_14003b920(1);
              lVar23 = lVar23 + -1;
            } while (lVar23 != 0);
          }
        }
        else {
          iVar21 = FUN_14003b920(1);
          for (; (iVar21 == 0 && (iVar20 < 0x14)); iVar20 = iVar20 + 1) {
            SDL_Delay(1);
            iVar21 = FUN_14003b920(1);
          }
          uVar31 = 4;
          if (DAT_183f7c969 != '\0') {
            uVar31 = 0x10;
          }
          uVar28 = (ulonglong)uVar31;
          if (DAT_183f7c96a != '\0') {
            uVar28 = 0x40;
          }
          do {
            FUN_14003b920(1);
            uVar28 = uVar28 - 1;
          } while (uVar28 != 0);
        }
      }
      else {
        iVar21 = FUN_14003b920(1);
        for (; (iVar21 == 0 && (iVar20 < 0x14)); iVar20 = iVar20 + 1) {
          SDL_Delay(1);
          iVar21 = FUN_14003b920(1);
        }
        lVar23 = 4;
        do {
          FUN_14003b920(1);
          lVar23 = lVar23 + -1;
        } while (lVar23 != 0);
      }
    }
    (*DAT_1404046f0)(0x8d40,0);
    (*DAT_144980d30)();
    (*DAT_144980d28)(0x4000);
    iVar20 = 0;
    fVar43 = 0.0;
    if (DAT_182a7d55c < DAT_160fc47d8) {
      iVar20 = (DAT_160fc47d8 - DAT_182a7d55c) / 2;
    }
    if (DAT_182a7d560 < DAT_160fc47dc) {
      fVar43 = (float)((DAT_160fc47dc - DAT_182a7d560) / 2);
    }
    (*DAT_1404046f0)(0x8ca8);
    (*DAT_1404046f0)(0x8ca9);
    local_610 = 0x2600;
    local_618 = 2.29589e-41;
    local_620 = (float)(DAT_182a7d560 + (int)fVar43);
    local_628 = (float)(DAT_182a7d55c + iVar20);
    local_638 = CONCAT44(local_638._4_4_,iVar20);
    local_630 = fVar43;
    (*DAT_140404740)(0);
    (*DAT_1404046f0)(0x8ca8);
    SDL_GL_SwapWindow(DAT_160fc47c8);
  } while( true );
}



===== FUN_140040490 @ 140040490 root=true =====

void FUN_140040490(void)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  float fVar12;
  float fVar13;
  undefined4 uVar14;
  double dVar15;
  double dVar16;
  double dVar17;
  int iVar18;
  undefined4 *puVar19;
  longlong lVar20;
  longlong lVar21;
  undefined4 *puVar22;
  longlong lVar23;
  longlong lVar24;
  ulonglong uVar25;
  undefined *puVar26;
  uint uVar27;
  undefined4 *puVar28;
  int *piVar29;
  longlong lVar30;
  undefined4 *puVar31;
  longlong lVar32;
  longlong lVar33;
  ulonglong uVar34;
  double dVar35;
  float fVar36;
  float fVar37;
  float fVar38;
  float fVar39;
  uint local_res8;
  longlong local_res18;
  
  puVar31 = &DAT_18329e570;
  uVar25 = (ulonglong)(DAT_183ebfd34 & 0x3f);
  uVar27 = DAT_1a4d3bd2c & 0x3f;
  lVar24 = 0x100;
  puVar28 = (undefined4 *)(&DAT_1a4d3bd78 + (ulonglong)(DAT_183ebfd34 & 0x3f) * 0x89880);
  DAT_1a4d3bd30 = DAT_183ebfd34;
  DAT_1a4d3bd2c = DAT_183ebfd34 & 0x3f;
  do {
    iVar18 = puVar31[-0x9a];
    puVar28[-0x10] = iVar18;
    if (iVar18 != 0) {
      iVar18 = puVar31[-0x7b];
      puVar28[-0xf] = puVar31[-0x74];
      lVar33 = 3;
      puVar28[-0xe] = puVar31[-0x73];
      puVar28[-0xd] = puVar31[-100];
      puVar28[-0xb] = puVar31[-0x5c];
      puVar28[-10] = puVar31[-0x5b];
      uVar14 = puVar31[-0x11];
      puVar28[-9] = (float)iVar18;
      puVar28[-8] = uVar14;
      puVar28[-7] = puVar31[-0x10];
      puVar28[-6] = puVar31[-0xf];
      puVar28[-5] = puVar31[-5];
      puVar28[-4] = puVar31[-4];
      puVar28[-3] = puVar31[-3];
      puVar28[-2] = puVar31[-2];
      puVar28[-1] = puVar31[-1];
      *puVar28 = *puVar31;
      puVar28[1] = puVar31[1];
      puVar28[2] = puVar31[2];
      puVar28[3] = puVar31[3];
      puVar19 = puVar28 + 0x1e;
      puVar22 = puVar31 + 0x77;
      do {
        puVar19[-5] = puVar22[-5];
        puVar19[-4] = puVar22[-4];
        puVar19[-3] = puVar22[-3];
        puVar19[-2] = puVar22[-2];
        puVar19[-1] = puVar22[-1];
        *puVar19 = *puVar22;
        puVar19[1] = puVar22[1];
        puVar19[2] = puVar22[2];
        puVar19[3] = puVar22[3];
        puVar19[0x10] = puVar22[0x49];
        puVar19[0x11] = puVar22[0x4a];
        puVar19[0x12] = puVar22[0x4b];
        puVar19[0x13] = puVar22[0x4c];
        puVar19[0x14] = puVar22[0x4d];
        puVar19[0x15] = puVar22[0x4e];
        puVar19[0x16] = puVar22[0x4f];
        puVar19[0x17] = puVar22[0x50];
        puVar19[0x18] = puVar22[0x51];
        puVar19[0x25] = puVar22[0x97];
        puVar19[0x26] = puVar22[0x98];
        puVar19[0x27] = puVar22[0x99];
        puVar19[0x28] = puVar22[0x9a];
        puVar19[0x29] = puVar22[0x9b];
        puVar19[0x2a] = puVar22[0x9c];
        puVar19[0x2b] = puVar22[0x9d];
        puVar19[0x2c] = puVar22[0x9e];
        puVar19[0x2d] = puVar22[0x9f];
        puVar19[0x3a] = puVar22[0xe5];
        puVar19[0x3b] = puVar22[0xe6];
        puVar19[0x3c] = puVar22[0xe7];
        puVar19[0x3d] = puVar22[0xe8];
        puVar19[0x3e] = puVar22[0xe9];
        puVar19[0x3f] = puVar22[0xea];
        puVar19[0x40] = puVar22[0xeb];
        puVar19[0x41] = puVar22[0xec];
        puVar19[0x42] = puVar22[0xed];
        puVar19[0x4f] = puVar22[0x133];
        puVar19[0x50] = puVar22[0x134];
        puVar19[0x51] = puVar22[0x135];
        puVar19[0x52] = puVar22[0x136];
        puVar19[0x53] = puVar22[0x137];
        puVar19[0x54] = puVar22[0x138];
        puVar19[0x55] = puVar22[0x139];
        puVar19[0x56] = puVar22[0x13a];
        puVar19[0x57] = puVar22[0x13b];
        lVar33 = lVar33 + -1;
        puVar19 = puVar19 + 0x69;
        puVar22 = puVar22 + 0x186;
      } while (lVar33 != 0);
    }
    puVar28 = puVar28 + 0x158;
    puVar31 = puVar31 + 0x1bfe;
    lVar24 = lVar24 + -1;
  } while (lVar24 != 0);
  lVar32 = 0;
  puVar28 = &DAT_15f2d9258;
  puVar31 = (undefined4 *)(&DAT_1a4d91d5c + uVar25 * 0x89880);
  lVar33 = 0x200;
  lVar24 = lVar32;
  do {
    iVar18 = puVar28[-0x16];
    puVar31[-9] = iVar18;
    if (iVar18 != 0) {
      puVar31[-8] = puVar28[-0xb];
      puVar31[-7] = puVar28[-10];
      puVar31[-6] = puVar28[-9];
      puVar31[-5] = puVar28[-5];
      puVar31[-4] = puVar28[-4];
      puVar31[-3] = puVar28[-3];
      puVar31[-2] = puVar28[-2];
      puVar31[-1] = puVar28[-1];
      *puVar31 = *puVar28;
      puVar31[1] = puVar28[1];
      puVar31[2] = puVar28[2];
      puVar31[3] = puVar28[3];
      lVar20 = uVar25 * 0x89880 + lVar24;
      *(undefined4 *)(&DAT_1a4d91d70 + lVar20) = puVar28[0xe39];
      lVar23 = uVar25 * 0x89880 + lVar24;
      *(undefined4 *)(&DAT_1a4d91d78 + lVar23) = puVar28[0xe4b];
      *(undefined4 *)(&DAT_1a4d91d74 + lVar23) = puVar28[0xe57];
      *(undefined4 *)(&DAT_1a4d91d80 + lVar20) = puVar28[0xe39];
      *(undefined4 *)(&DAT_1a4d91d88 + lVar23) = puVar28[0xe76];
      *(undefined4 *)(&DAT_1a4d91d84 + lVar23) = puVar28[0xe82];
      *(undefined4 *)(&DAT_1a4d91d90 + lVar20) = 0;
      *(undefined4 *)(&DAT_1a4d91d98 + lVar23) = puVar28[0xea1];
      *(undefined4 *)(&DAT_1a4d91d94 + lVar23) = puVar28[0xead];
      *(undefined4 *)(&DAT_1a4d91da0 + lVar20) = 0;
      *(undefined4 *)(&DAT_1a4d91da8 + lVar23) = puVar28[0xecc];
      *(undefined4 *)(&DAT_1a4d91da4 + lVar23) = puVar28[0xed8];
    }
    puVar28 = puVar28 + 0x145a;
    lVar24 = lVar24 + 0x134;
    puVar31 = puVar31 + 0x4d;
    lVar33 = lVar33 + -1;
  } while (lVar33 != 0);
  uVar34 = (ulonglong)uVar27;
  puVar28 = &DAT_182bbb238;
  puVar31 = &DAT_1a4db855c + uVar25 * 0x22620;
  lVar33 = 0x400;
  lVar24 = lVar32;
  do {
    iVar18 = puVar28[-0x2e];
    puVar31[-9] = iVar18;
    if (iVar18 != 0) {
      uVar14 = puVar28[-0x17];
      uVar1 = puVar28[-0x16];
      uVar2 = puVar28[-0x15];
      uVar3 = puVar28[-5];
      uVar4 = puVar28[-4];
      uVar5 = puVar28[-3];
      uVar6 = puVar28[-2];
      uVar7 = puVar28[-1];
      uVar8 = *puVar28;
      uVar9 = puVar28[1];
      uVar10 = puVar28[2];
      uVar11 = puVar28[3];
      puVar31[-8] = uVar14;
      puVar31[-7] = uVar1;
      puVar31[-6] = uVar2;
      puVar31[-5] = uVar3;
      puVar31[-4] = uVar4;
      puVar31[-3] = uVar5;
      puVar31[-2] = uVar6;
      puVar31[-1] = uVar7;
      *puVar31 = uVar8;
      puVar31[1] = uVar9;
      puVar31[2] = uVar10;
      puVar31[3] = uVar11;
      if (*(int *)(&DAT_1a4db8538 + uVar34 * 0x89880 + lVar24) == 0) {
        puVar19 = (undefined4 *)((longlong)&DAT_1a4db855c + lVar24);
        lVar20 = 0x10;
        do {
          puVar19[-8] = uVar14;
          puVar19[-7] = uVar1;
          puVar19[-6] = uVar2;
          puVar19[-5] = uVar3;
          puVar19[-4] = uVar4;
          puVar19[-3] = uVar5;
          puVar19[-2] = uVar6;
          puVar19[-1] = uVar7;
          *puVar19 = uVar8;
          puVar19[1] = uVar9;
          puVar19[2] = uVar10;
          puVar19[3] = uVar11;
          puVar19[0x22618] = uVar14;
          puVar19[0x22619] = uVar1;
          puVar19[0x2261a] = uVar2;
          puVar19[0x2261b] = uVar3;
          puVar19[0x2261c] = uVar4;
          puVar19[0x2261d] = uVar5;
          puVar19[0x2261e] = uVar6;
          puVar19[0x2261f] = uVar7;
          puVar19[0x22620] = uVar8;
          puVar19[0x22621] = uVar9;
          puVar19[0x22622] = uVar10;
          puVar19[0x22623] = uVar11;
          puVar19[0x44c38] = uVar14;
          puVar19[0x44c39] = uVar1;
          puVar19[0x44c3a] = uVar2;
          puVar19[0x44c3b] = uVar3;
          puVar19[0x44c3c] = uVar4;
          puVar19[0x44c3d] = uVar5;
          puVar19[0x44c3e] = uVar6;
          puVar19[0x44c3f] = uVar7;
          puVar19[0x44c40] = uVar8;
          puVar19[0x44c41] = uVar9;
          puVar19[0x44c42] = uVar10;
          puVar19[0x44c43] = uVar11;
          puVar19[0x67258] = uVar14;
          puVar19[0x67259] = uVar1;
          puVar19[0x6725a] = uVar2;
          puVar19[0x6725b] = uVar3;
          puVar19[0x6725c] = uVar4;
          puVar19[0x6725d] = uVar5;
          puVar19[0x6725e] = uVar6;
          puVar19[0x6725f] = uVar7;
          puVar19[0x67260] = uVar8;
          puVar19[0x67261] = uVar9;
          puVar19[0x67262] = uVar10;
          puVar19[0x67263] = uVar11;
          puVar19 = puVar19 + 0x89880;
          lVar20 = lVar20 + -1;
        } while (lVar20 != 0);
      }
    }
    puVar28 = puVar28 + 0x6e0;
    lVar24 = lVar24 + 0x34;
    puVar31 = puVar31 + 0xd;
    lVar33 = lVar33 + -1;
  } while (lVar33 != 0);
  piVar29 = &DAT_15f2d9200;
  iVar18 = DAT_1a4d3bd2c - uVar27;
  if ((int)DAT_1a4d3bd2c <= (int)uVar27) {
    iVar18 = (DAT_1a4d3bd2c - uVar27) + 0x40;
  }
  fVar36 = (float)iVar18;
  do {
    if (*piVar29 != 0) {
      lVar33 = uVar25 * 0x89880 + lVar32;
      lVar24 = uVar34 * 0x89880 + lVar32;
      *(float *)(&DAT_1a4d91d6c + lVar33) =
           fVar36 * *(float *)(&DAT_1a4d91d78 + lVar33) + *(float *)(&DAT_1a4d91d6c + lVar24);
      *(float *)(&DAT_1a4d91d7c + lVar33) =
           fVar36 * *(float *)(&DAT_1a4d91d88 + lVar33) + *(float *)(&DAT_1a4d91d7c + lVar24);
      *(float *)(&DAT_1a4d91d8c + lVar33) =
           fVar36 * *(float *)(&DAT_1a4d91d98 + lVar33) + *(float *)(&DAT_1a4d91d8c + lVar24);
      *(float *)(&DAT_1a4d91d9c + lVar33) =
           fVar36 * *(float *)(&DAT_1a4d91da8 + lVar33) + *(float *)(&DAT_1a4d91d9c + lVar24);
    }
    dVar16 = DAT_140278620;
    dVar15 = DAT_1402785e8;
    piVar29 = piVar29 + 0x145a;
    lVar32 = lVar32 + 0x134;
  } while ((longlong)piVar29 < 0x15fd06200);
  fVar39 = 0.0;
  DAT_1a4d3bd28 = (fVar36 - DAT_1a4d3bd28) * DAT_140278224 + DAT_1a4d3bd28;
  if (0.0 <= DAT_1a4d3bd28) {
    if (DAT_140278774 < DAT_1a4d3bd28) {
      DAT_1a4d3bd28 = 16.0;
    }
  }
  else {
    DAT_1a4d3bd28 = 0.0;
  }
  if (0.0 < fVar36) {
    fVar39 = DAT_1402783f4 / fVar36;
  }
  local_res8 = uVar27 + 1 & 0x3f;
  uVar25 = (ulonglong)local_res8;
  if (local_res8 != DAT_1a4d3bd2c) {
    lVar24 = uVar34 * 0x89880;
    fVar36 = fVar39;
    do {
      lVar20 = 0;
      piVar29 = &DAT_18329e308;
      lVar32 = uVar25 * 0x89880;
      local_res18 = 0x100;
      lVar33 = lVar20;
      do {
        iVar18 = *piVar29;
        *(int *)(&DAT_1a4d3bd38 + lVar33 + lVar32) = iVar18;
        if (iVar18 != 0) {
          lVar23 = lVar24 + lVar33;
          fVar12 = *(float *)(&DAT_1a4d3bd3c + lVar23);
          fVar37 = *(float *)(&DAT_1a4d3bd3c + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar33);
          if (dVar15 <= (double)(fVar12 - fVar37)) {
            fVar37 = (float)((double)fVar37 + dVar16);
          }
          fVar38 = fVar12;
          if (dVar15 <= (double)(fVar37 - fVar12)) {
            fVar38 = (float)((double)fVar12 + dVar16);
          }
          *(float *)(&DAT_1a4d3bd3c + lVar33 + lVar32) = (fVar37 - fVar38) * fVar36 + fVar12;
          fVar12 = *(float *)(&DAT_1a4d3bd44 + lVar23);
          fVar37 = *(float *)(&DAT_1a4d3bd44 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar33);
          if (dVar15 <= (double)(fVar12 - fVar37)) {
            fVar37 = (float)((double)fVar37 + dVar16);
          }
          fVar38 = fVar12;
          if (dVar15 <= (double)(fVar37 - fVar12)) {
            fVar38 = (float)((double)fVar12 + dVar16);
          }
          puVar26 = &DAT_1a4d3bddc + lVar20 + lVar32;
          *(float *)(&DAT_1a4d3bd44 + lVar33 + lVar32) = (fVar37 - fVar38) * fVar36 + fVar12;
          *(float *)(&DAT_1a4d3bd4c + lVar33 + lVar32) =
               (*(float *)(&DAT_1a4d3bd4c + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar33) -
               *(float *)(&DAT_1a4d3bd4c + lVar23)) * fVar36 + *(float *)(&DAT_1a4d3bd4c + lVar23);
          *(float *)(&DAT_1a4d3bd50 + lVar33 + lVar32) =
               (*(float *)(&DAT_1a4d3bd50 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar33) -
               *(float *)(&DAT_1a4d3bd50 + lVar23)) * fVar36 + *(float *)(&DAT_1a4d3bd50 + lVar23);
          *(float *)(&DAT_1a4d3bd54 + lVar33 + lVar32) =
               (*(float *)(&DAT_1a4d3bd54 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar33) -
               *(float *)(&DAT_1a4d3bd54 + lVar23)) * fVar36 + *(float *)(&DAT_1a4d3bd54 + lVar23);
          fVar12 = *(float *)(&DAT_1a4d3bd60 + lVar23);
          fVar37 = *(float *)(&DAT_1a4d3bd5c + lVar23);
          lVar21 = (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar33;
          fVar38 = *(float *)(&DAT_1a4d3bd5c + lVar21);
          fVar13 = *(float *)(&DAT_1a4d3bd60 + lVar21);
          *(float *)(&DAT_1a4d3bd58 + lVar33 + lVar32) =
               (*(float *)(&DAT_1a4d3bd58 + lVar21) - *(float *)(&DAT_1a4d3bd58 + lVar23)) * fVar36
               + *(float *)(&DAT_1a4d3bd58 + lVar23);
          *(float *)(&DAT_1a4d3bd5c + lVar33 + lVar32) =
               (fVar38 - fVar37) * fVar36 + *(float *)(&DAT_1a4d3bd5c + lVar23);
          *(float *)(&DAT_1a4d3bd60 + lVar33 + lVar32) =
               (fVar13 - fVar12) * fVar36 + *(float *)(&DAT_1a4d3bd60 + lVar23);
          FUN_1400c2f90(puVar26 + -0x78,&DAT_1a4d3bd64 + lVar20 + lVar24,
                        &DAT_1a4d3bd64 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20,fVar36);
          lVar23 = 0xf;
          do {
            FUN_1400c2f90(puVar26,puVar26 + lVar24 + uVar25 * -0x89880,
                          puVar26 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + uVar25 * -0x89880,
                          fVar36);
            puVar26 = puVar26 + 0x54;
            lVar23 = lVar23 + -1;
          } while (lVar23 != 0);
        }
        lVar20 = lVar20 + 0x560;
        piVar29 = piVar29 + 0x1bfe;
        lVar33 = lVar33 + 0x560;
        local_res18 = local_res18 + -1;
      } while (local_res18 != 0);
      lVar33 = uVar34 - uVar25;
      piVar29 = &DAT_15f2d9200;
      lVar20 = 0;
      puVar26 = &DAT_1a4d91d48 + lVar32;
      lVar23 = 0x200;
      do {
        iVar18 = *piVar29;
        puVar28 = (undefined4 *)(&DAT_1a4d91d5c + lVar20 + lVar32);
        puVar28[-9] = puVar28[uVar34 * 0x22620 + uVar25 * -0x22620 + -9];
        if (iVar18 != 0) {
          lVar21 = (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20;
          if (puVar28[uVar34 * 0x22620 + uVar25 * -0x22620 + -9] == 0) {
            puVar28[-8] = *(undefined4 *)(&DAT_1a4d91d3c + lVar21);
            puVar28[-7] = *(undefined4 *)(&DAT_1a4d91d40 + lVar21);
            puVar28[-6] = *(undefined4 *)(&DAT_1a4d91d44 + lVar21);
            lVar21 = (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20;
            puVar28[-5] = *(undefined4 *)(&DAT_1a4d91d48 + lVar21);
            puVar28[-4] = *(undefined4 *)(&DAT_1a4d91d4c + lVar21);
            puVar28[-3] = *(undefined4 *)(&DAT_1a4d91d50 + lVar21);
            puVar28[-2] = *(undefined4 *)(&DAT_1a4d91d54 + lVar21);
            puVar28[-1] = *(undefined4 *)(&DAT_1a4d91d58 + lVar21);
            *puVar28 = *(undefined4 *)(&DAT_1a4d91d5c + lVar21);
            puVar28[1] = *(undefined4 *)(&DAT_1a4d91d60 + lVar21);
            puVar28[2] = *(undefined4 *)(&DAT_1a4d91d64 + lVar21);
            puVar28[3] = *(undefined4 *)(&DAT_1a4d91d68 + lVar21);
            lVar21 = uVar25 * 0x89880 + lVar20;
            *(undefined4 *)(&DAT_1a4d91d6c + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91d6c + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
            *(undefined4 *)(&DAT_1a4d91d70 + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91d70 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
            *(undefined4 *)(&DAT_1a4d91d74 + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91d74 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
            *(undefined4 *)(&DAT_1a4d91d78 + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91d78 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
            *(undefined4 *)(&DAT_1a4d91d7c + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91d7c + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
            *(undefined4 *)(&DAT_1a4d91d80 + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91d80 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
            *(undefined4 *)(&DAT_1a4d91d84 + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91d84 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
            *(undefined4 *)(&DAT_1a4d91d88 + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91d88 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
            *(undefined4 *)(&DAT_1a4d91d8c + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91d8c + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
            *(undefined4 *)(&DAT_1a4d91d90 + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91d90 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
            *(undefined4 *)(&DAT_1a4d91d94 + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91d94 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
            *(undefined4 *)(&DAT_1a4d91d98 + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91d98 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
            *(undefined4 *)(&DAT_1a4d91d9c + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91d9c + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
            *(undefined4 *)(&DAT_1a4d91da0 + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91da0 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
            *(undefined4 *)(&DAT_1a4d91da4 + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91da4 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
            *(undefined4 *)(&DAT_1a4d91da8 + lVar21) =
                 *(undefined4 *)(&DAT_1a4d91da8 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20);
          }
          else {
            fVar12 = *(float *)(&DAT_1a4d91d40 + lVar21);
            fVar37 = *(float *)(&DAT_1a4d91d44 + lVar21);
            fVar38 = (float)puVar28[lVar33 * 0x22620 + -6];
            fVar13 = (float)puVar28[lVar33 * 0x22620 + -7];
            puVar28[-8] = (*(float *)(&DAT_1a4d91d3c + lVar21) -
                          (float)puVar28[uVar25 * -0x22620 + uVar34 * 0x22620 + -8]) * fVar36 +
                          (float)puVar28[uVar25 * -0x22620 + uVar34 * 0x22620 + -8];
            puVar28[-7] = (fVar12 - fVar13) * fVar36 + (float)puVar28[lVar33 * 0x22620 + -7];
            puVar28[-6] = (fVar37 - fVar38) * fVar36 + (float)puVar28[lVar33 * 0x22620 + -6];
            FUN_1400c2f90(puVar26,puVar26 + lVar33 * 0x89880,
                          puVar26 + uVar25 * -0x89880 + (longlong)(int)DAT_1a4d3bd2c * 0x89880,
                          fVar36);
            lVar21 = uVar34 * 0x89880 + lVar20;
            lVar30 = uVar25 * 0x89880 + lVar20;
            *(float *)(&DAT_1a4d91d6c + lVar30) =
                 (*(float *)(&DAT_1a4d91d6c + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91d6c + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91d6c + lVar21)
            ;
            *(float *)(&DAT_1a4d91d70 + lVar30) =
                 (*(float *)(&DAT_1a4d91d70 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91d70 + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91d70 + lVar21)
            ;
            *(float *)(&DAT_1a4d91d74 + lVar30) =
                 (*(float *)(&DAT_1a4d91d74 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91d74 + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91d74 + lVar21)
            ;
            *(float *)(&DAT_1a4d91d78 + lVar30) =
                 (*(float *)(&DAT_1a4d91d78 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91d78 + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91d78 + lVar21)
            ;
            *(float *)(&DAT_1a4d91d7c + lVar30) =
                 (*(float *)(&DAT_1a4d91d7c + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91d7c + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91d7c + lVar21)
            ;
            *(float *)(&DAT_1a4d91d80 + lVar30) =
                 (*(float *)(&DAT_1a4d91d80 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91d80 + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91d80 + lVar21)
            ;
            *(float *)(&DAT_1a4d91d84 + lVar30) =
                 (*(float *)(&DAT_1a4d91d84 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91d84 + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91d84 + lVar21)
            ;
            *(float *)(&DAT_1a4d91d88 + lVar30) =
                 (*(float *)(&DAT_1a4d91d88 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91d88 + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91d88 + lVar21)
            ;
            *(float *)(&DAT_1a4d91d8c + lVar30) =
                 (*(float *)(&DAT_1a4d91d8c + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91d8c + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91d8c + lVar21)
            ;
            *(float *)(&DAT_1a4d91d90 + lVar30) =
                 (*(float *)(&DAT_1a4d91d90 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91d90 + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91d90 + lVar21)
            ;
            *(float *)(&DAT_1a4d91d94 + lVar30) =
                 (*(float *)(&DAT_1a4d91d94 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91d94 + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91d94 + lVar21)
            ;
            *(float *)(&DAT_1a4d91d98 + lVar30) =
                 (*(float *)(&DAT_1a4d91d98 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91d98 + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91d98 + lVar21)
            ;
            *(float *)(&DAT_1a4d91d9c + lVar30) =
                 (*(float *)(&DAT_1a4d91d9c + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91d9c + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91d9c + lVar21)
            ;
            *(float *)(&DAT_1a4d91da0 + lVar30) =
                 (*(float *)(&DAT_1a4d91da0 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91da0 + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91da0 + lVar21)
            ;
            *(float *)(&DAT_1a4d91da4 + lVar30) =
                 (*(float *)(&DAT_1a4d91da4 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91da4 + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91da4 + lVar21)
            ;
            *(float *)(&DAT_1a4d91da8 + lVar30) =
                 (*(float *)(&DAT_1a4d91da8 + (longlong)(int)DAT_1a4d3bd2c * 0x89880 + lVar20) -
                 *(float *)(&DAT_1a4d91da8 + lVar21)) * fVar36 + *(float *)(&DAT_1a4d91da8 + lVar21)
            ;
          }
        }
        puVar26 = puVar26 + 0x134;
        piVar29 = piVar29 + 0x145a;
        lVar20 = lVar20 + 0x134;
        lVar23 = lVar23 + -1;
      } while (lVar23 != 0);
      piVar29 = &DAT_182bbb180;
      lVar32 = 0x400;
      puVar31 = &DAT_1a4db8548 + uVar25 * 0x22620;
      puVar28 = &DAT_1a4db855c + uVar25 * 0x22620;
      do {
        iVar18 = *piVar29;
        puVar28[-9] = iVar18;
        if (iVar18 != 0) {
          puVar19 = puVar28 + uVar25 * -0x22620 +
                              (longlong)(int)DAT_1a4d3bd2c * 0x22620 + -0x6936e157;
          if (puVar28[uVar34 * 0x22620 + uVar25 * -0x22620 + -9] == 0) {
            puVar28[-8] = *(undefined4 *)((longlong)&DAT_1a4db853c + (longlong)puVar19);
            puVar28[-7] = *(undefined4 *)((longlong)&DAT_1a4db8540 + (longlong)puVar19);
            puVar28[-6] = *(undefined4 *)((longlong)&DAT_1a4db8544 + (longlong)puVar19);
            puVar19 = puVar28 + uVar25 * -0x22620 +
                                (longlong)(int)DAT_1a4d3bd2c * 0x22620 + -0x6936e157;
            puVar28[-5] = *(undefined4 *)((longlong)&DAT_1a4db8548 + (longlong)puVar19);
            puVar28[-4] = *(undefined4 *)((longlong)&DAT_1a4db854c + (longlong)puVar19);
            puVar28[-3] = *(undefined4 *)((longlong)&DAT_1a4db8550 + (longlong)puVar19);
            puVar28[-2] = *(undefined4 *)((longlong)&DAT_1a4db8554 + (longlong)puVar19);
            puVar28[-1] = *(undefined4 *)((longlong)&DAT_1a4db8558 + (longlong)puVar19);
            *puVar28 = *(undefined4 *)((longlong)&DAT_1a4db855c + (longlong)puVar19);
            puVar28[1] = *(undefined4 *)((longlong)&DAT_1a4db8560 + (longlong)puVar19);
            puVar28[2] = *(undefined4 *)((longlong)&DAT_1a4db8564 + (longlong)puVar19);
            puVar28[3] = *(undefined4 *)((longlong)&DAT_1a4db8568 + (longlong)puVar19);
          }
          else {
            fVar12 = *(float *)((longlong)&DAT_1a4db8540 + (longlong)puVar19);
            fVar37 = *(float *)((longlong)&DAT_1a4db8544 + (longlong)puVar19);
            fVar38 = (float)puVar28[lVar33 * 0x22620 + -6];
            fVar13 = (float)puVar28[lVar33 * 0x22620 + -7];
            puVar28[-8] = (*(float *)((longlong)&DAT_1a4db853c + (longlong)puVar19) -
                          (float)puVar28[uVar25 * -0x22620 + uVar34 * 0x22620 + -8]) * fVar36 +
                          (float)puVar28[uVar25 * -0x22620 + uVar34 * 0x22620 + -8];
            puVar28[-7] = (fVar12 - fVar13) * fVar36 + (float)puVar28[lVar33 * 0x22620 + -7];
            puVar28[-6] = (fVar37 - fVar38) * fVar36 + (float)puVar28[lVar33 * 0x22620 + -6];
            FUN_1400c2f90(puVar31,puVar31 + lVar33 * 0x22620,
                          puVar31 + (longlong)(int)DAT_1a4d3bd2c * 0x22620 + uVar25 * -0x22620,
                          fVar36);
          }
        }
        puVar31 = puVar31 + 0xd;
        piVar29 = piVar29 + 0x6e0;
        puVar28 = puVar28 + 0xd;
        lVar32 = lVar32 + -1;
      } while (lVar32 != 0);
      FUN_140030590(local_res8);
      fVar36 = fVar36 + fVar39;
      local_res8 = local_res8 + 1 & 0x3f;
      uVar25 = (ulonglong)local_res8;
    } while (local_res8 != DAT_1a4d3bd2c);
  }
  lVar24 = 0;
  piVar29 = &DAT_15f2d9200;
  FUN_140030590(uVar25);
  dVar17 = DAT_140278cd8;
  do {
    if (*piVar29 != 0) {
      lVar33 = uVar25 * 0x89880 + lVar24;
      dVar35 = (double)*(float *)(&DAT_1a4d91d6c + lVar33);
      if (dVar17 <= dVar35) {
        if (dVar15 < dVar35) {
          dVar35 = dVar35 - dVar16;
          goto LAB_140041a87;
        }
      }
      else {
        dVar35 = dVar35 + dVar16;
LAB_140041a87:
        *(float *)(&DAT_1a4d91d6c + lVar33) = (float)dVar35;
      }
      dVar35 = (double)*(float *)(&DAT_1a4d91d7c + lVar33);
      if (dVar17 <= dVar35) {
        if (dVar15 < dVar35) {
          dVar35 = dVar35 - dVar16;
          goto LAB_140041ab9;
        }
      }
      else {
        dVar35 = dVar35 + dVar16;
LAB_140041ab9:
        *(float *)(&DAT_1a4d91d7c + lVar33) = (float)dVar35;
      }
      dVar35 = (double)*(float *)(&DAT_1a4d91d8c + lVar33);
      if (dVar17 <= dVar35) {
        if (dVar15 < dVar35) {
          dVar35 = dVar35 - dVar16;
          goto LAB_140041aeb;
        }
      }
      else {
        dVar35 = dVar35 + dVar16;
LAB_140041aeb:
        *(float *)(&DAT_1a4d91d8c + lVar33) = (float)dVar35;
      }
      dVar35 = (double)*(float *)(&DAT_1a4d91d9c + lVar33);
      if (dVar17 <= dVar35) {
        if (dVar35 <= dVar15) goto LAB_140041b2b;
        dVar35 = dVar35 - dVar16;
      }
      else {
        dVar35 = dVar35 + dVar16;
      }
      *(float *)(&DAT_1a4d91d9c + lVar33) = (float)dVar35;
    }
LAB_140041b2b:
    piVar29 = piVar29 + 0x145a;
    lVar24 = lVar24 + 0x134;
    if (0x15fd061ff < (longlong)piVar29) {
      return;
    }
  } while( true );
}



===== FUN_1400584b0 @ 1400584b0 root=true =====

void FUN_1400584b0(int param_1,longlong param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined8 uVar9;
  undefined8 uVar10;
  undefined8 uVar11;
  undefined4 uVar12;
  uint uVar13;
  int *piVar14;
  ulonglong uVar15;
  int iVar16;
  ulonglong uVar17;
  int iVar18;
  ulonglong uVar19;
  ulonglong uVar20;
  longlong lVar21;
  longlong lVar22;
  longlong lVar23;
  ulonglong uVar24;
  longlong lVar25;
  
  lVar25 = (longlong)param_1;
  lVar22 = lVar25 * 0x6e0;
  uVar13 = 1;
  uVar24 = 0;
  piVar14 = (int *)(&DAT_182bbb2fc + lVar25 * 0x1b80);
  lVar21 = 2;
  lVar23 = 4;
  do {
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 + -2 >> 5) + lVar22) * 4) & uVar13) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar14[-1] * 0x9c) = 0;
    }
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 + -1 >> 5) + lVar22) * 4) & uVar13 << 1) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)*piVar14 * 0x9c) = 0;
    }
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 >> 5) + lVar22) * 4) & uVar13 << 2) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar14[1] * 0x9c) = 0;
    }
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 + 1 >> 5) + lVar22) * 4) & uVar13 << 3) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar14[2] * 0x9c) = 0;
    }
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 + 2 >> 5) + lVar22) * 4) & uVar13 << 4) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar14[3] * 0x9c) = 0;
    }
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 + 3 >> 5) + lVar22) * 4) & uVar13 << 5) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar14[4] * 0x9c) = 0;
    }
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 + 4 >> 5) + lVar22) * 4) & uVar13 << 6) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar14[5] * 0x9c) = 0;
    }
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 + 5 >> 5) + lVar22) * 4) & uVar13 << 7) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar14[6] * 0x9c) = 0;
    }
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 + 6 >> 5) + lVar22) * 4) & uVar13 << 8) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar14[7] * 0x9c) = 0;
    }
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 + 7 >> 5) + lVar22) * 4) & uVar13 << 9) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar14[8] * 0x9c) = 0;
    }
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 + 8 >> 5) + lVar22) * 4) & uVar13 << 10) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar14[9] * 0x9c) = 0;
    }
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 + 9 >> 5) + lVar22) * 4) & uVar13 << 0xb) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar14[10] * 0x9c) = 0;
    }
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 + 10 >> 5) + lVar22) * 4) & uVar13 << 0xc) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar14[0xb] * 0x9c) = 0;
    }
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 + 0xb >> 5) + lVar22) * 4) & uVar13 << 0xd) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar14[0xc] * 0x9c) = 0;
    }
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 + 0xc >> 5) + lVar22) * 4) & uVar13 << 0xe) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar14[0xd] * 0x9c) = 0;
    }
    if ((*(uint *)(&DAT_182bbb2f0 + ((lVar21 + 0xd >> 5) + lVar22) * 4) & uVar13 << 0xf) != 0) {
      *(undefined4 *)((longlong)&DAT_1857bd740 + (longlong)piVar14[0xe] * 0x9c) = 0;
    }
    lVar21 = lVar21 + 0x10;
    uVar13 = uVar13 << 0x10 | uVar13 >> 0x10;
    piVar14 = piVar14 + 0x10;
    lVar23 = lVar23 + -1;
  } while (lVar23 != 0);
  lVar22 = lVar25 * 0x1b80;
  lVar21 = -1;
  *(undefined8 *)(&DAT_182bbb2f0 + lVar22) = 0;
  do {
    lVar21 = lVar21 + 1;
  } while (*(char *)(param_2 + lVar21) != '\0');
  iVar18 = (int)lVar21 + 1;
  if (0x3ff < iVar18) {
    iVar18 = 0x3ff;
  }
  FUN_1401fc920(&DAT_182bbb4e8 + lVar25 * 0x6e0,param_2,(longlong)iVar18);
  (&DAT_182bbb8e7)[lVar22] = 0;
  uVar12 = DAT_183ebfd34;
  uVar19 = uVar24;
  uVar20 = uVar24;
  if (-1 < iVar18 >> 6) {
    do {
      piVar14 = (int *)&DAT_1857bd740;
      uVar15 = uVar24;
      uVar17 = uVar24;
      do {
        iVar16 = (int)uVar17;
        if (*piVar14 == 0) {
          if (iVar16 != -1) {
            lVar21 = lVar22 + uVar19;
            *(undefined8 *)((longlong)&DAT_1857bd740 + uVar15 * 0x9c) = 1;
            (&DAT_1857bd74c)[uVar15 * 0x27] = uVar12;
            (&DAT_1857bd748)[uVar15 * 0x27] = 0;
            (&DAT_1857bd750)[uVar15 * 0x27] = param_1;
            (&DAT_1857bd754)[uVar15 * 0x27] = (int)uVar20;
            (&DAT_1857bd758)[uVar15 * 0x27] = 0x40;
            lVar23 = (longlong)iVar16 * 0x9c;
            uVar9 = *(undefined8 *)(&DAT_182bbb4f0 + lVar21);
            uVar10 = *(undefined8 *)(&DAT_182bbb4f8 + lVar21);
            uVar11 = *(undefined8 *)(&DAT_182bbb500 + lVar21);
            *(undefined8 *)(&DAT_1857bd75c + lVar23) =
                 *(undefined8 *)((longlong)&DAT_182bbb4e8 + lVar21);
            *(undefined8 *)(lVar23 + 0x1857bd764) = uVar9;
            uVar1 = *(undefined4 *)(&DAT_182bbb508 + lVar21);
            uVar2 = *(undefined4 *)(&DAT_182bbb50c + lVar21);
            uVar3 = *(undefined4 *)(&DAT_182bbb510 + lVar21);
            uVar4 = *(undefined4 *)(&DAT_182bbb514 + lVar21);
            *(undefined8 *)(&DAT_1857bd76c + lVar23) = uVar10;
            *(undefined8 *)(lVar23 + 0x1857bd774) = uVar11;
            uVar5 = *(undefined4 *)(lVar21 + 0x182bbb518);
            uVar6 = *(undefined4 *)(&DAT_182bbb51c + lVar21);
            uVar7 = *(undefined4 *)(lVar21 + 0x182bbb520);
            uVar8 = *(undefined4 *)(lVar21 + 0x182bbb524);
            *(undefined4 *)(&DAT_1857bd77c + lVar23) = uVar1;
            *(undefined4 *)(lVar23 + 0x1857bd780) = uVar2;
            *(undefined4 *)(lVar23 + 0x1857bd784) = uVar3;
            *(undefined4 *)(lVar23 + 0x1857bd788) = uVar4;
            *(undefined4 *)(&DAT_1857bd78c + lVar23) = uVar5;
            *(undefined4 *)(lVar23 + 0x1857bd790) = uVar6;
            *(undefined4 *)(lVar23 + 0x1857bd794) = uVar7;
            *(undefined4 *)(lVar23 + 0x1857bd798) = uVar8;
            FUN_1400c3ba0(param_1,uVar5,0xffffffff);
          }
          break;
        }
        uVar17 = (ulonglong)(iVar16 + 1);
        uVar15 = uVar15 + 1;
        piVar14 = piVar14 + 0x27;
      } while ((longlong)piVar14 < 0x185a2d740);
      uVar13 = (int)uVar20 + 1;
      uVar19 = uVar19 + 0x40;
      uVar20 = (ulonglong)uVar13;
    } while ((int)uVar13 <= iVar18 >> 6);
  }
  return;
}



===== FUN_1400cc610 @ 1400cc610 root=true =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400cc610(void)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  uint uVar9;
  int iVar10;
  uint uVar11;
  int iVar12;
  longlong lVar13;
  int iVar14;
  longlong lVar15;
  longlong lVar16;
  float *pfVar17;
  ulonglong uVar18;
  ulonglong uVar19;
  int *piVar20;
  ulonglong uVar21;
  uint uVar22;
  ulonglong uVar23;
  ulonglong uVar24;
  float fVar25;
  undefined4 uVar26;
  undefined4 uVar27;
  float fVar28;
  undefined4 uVar29;
  float fVar30;
  float fVar31;
  float fVar32;
  float fVar33;
  float fVar34;
  
  uVar23 = 0;
  _DAT_1816760a0 = 0;
  _DAT_1816764a4 = 0;
  _DAT_1816768a8 = 0;
  _DAT_181676cac = 0;
  _DAT_1816770b0 = 0;
  _DAT_1816774b4 = 0;
  _DAT_1816778b8 = 0;
  _DAT_181677cbc = 0;
  _DAT_1816780c0 = 0;
  _DAT_1816784c4 = 0;
  _DAT_1816788c8 = 0;
  _DAT_181678ccc = 0;
  _DAT_1816790d0 = 0;
  _DAT_1816794d4 = 0;
  _DAT_1816798d8 = 0;
  _DAT_181679cdc = 0;
  _DAT_18167a0e0 = 0;
  _DAT_18167a4e4 = 0;
  _DAT_18167a8e8 = 0;
  _DAT_18167acec = 0;
  _DAT_18167b0f0 = 0;
  _DAT_18167b4f4 = 0;
  _DAT_18167b8f8 = 0;
  _DAT_18167bcfc = 0;
  _DAT_18167c100 = 0;
  _DAT_18167c504 = 0;
  _DAT_18167c908 = 0;
  _DAT_18167cd0c = 0;
  _DAT_18167d110 = 0;
  _DAT_18167d514 = 0;
  _DAT_18167d918 = 0;
  _DAT_18167dd1c = 0;
  _DAT_18167e120 = 0;
  _DAT_18167e524 = 0;
  _DAT_18167e928 = 0;
  _DAT_18167ed2c = 0;
  _DAT_18167f130 = 0;
  _DAT_18167f534 = 0;
  _DAT_18167f938 = 0;
  _DAT_18167fd3c = 0;
  _DAT_181680140 = 0;
  _DAT_181680544 = 0;
  _DAT_181680948 = 0;
  _DAT_181680d4c = 0;
  _DAT_181681150 = 0;
  _DAT_181681554 = 0;
  _DAT_181681958 = 0;
  _DAT_181681d5c = 0;
  _DAT_181682160 = 0;
  _DAT_181682564 = 0;
  _DAT_181682968 = 0;
  _DAT_181682d6c = 0;
  _DAT_181683170 = 0;
  _DAT_181683574 = 0;
  _DAT_181683978 = 0;
  _DAT_181683d7c = 0;
  _DAT_181684180 = 0;
  _DAT_181684584 = 0;
  _DAT_181684988 = 0;
  _DAT_181684d8c = 0;
  _DAT_181685190 = 0;
  _DAT_181685594 = 0;
  _DAT_181685998 = 0;
  _DAT_181685d9c = 0;
  _DAT_1816861a0 = 0;
  _DAT_1816865a4 = 0;
  _DAT_1816869a8 = 0;
  _DAT_181686dac = 0;
  _DAT_1816871b0 = 0;
  _DAT_1816875b4 = 0;
  _DAT_1816879b8 = 0;
  _DAT_181687dbc = 0;
  _DAT_1816881c0 = 0;
  _DAT_1816885c4 = 0;
  _DAT_1816889c8 = 0;
  _DAT_181688dcc = 0;
  piVar20 = &DAT_182bbb194;
  _DAT_1816891d0 = 0;
  _DAT_1816895d4 = 0;
  _DAT_1816899d8 = 0;
  _DAT_181689ddc = 0;
  _DAT_18168a1e0 = 0;
  _DAT_18168a5e4 = 0;
  _DAT_18168a9e8 = 0;
  _DAT_18168adec = 0;
  _DAT_18168b1f0 = 0;
  _DAT_18168b5f4 = 0;
  _DAT_18168b9f8 = 0;
  _DAT_18168bdfc = 0;
  _DAT_18168c200 = 0;
  _DAT_18168c604 = 0;
  _DAT_18168ca08 = 0;
  _DAT_18168ce0c = 0;
  _DAT_18168d210 = 0;
  _DAT_18168d614 = 0;
  _DAT_18168da18 = 0;
  _DAT_18168de1c = 0;
  _DAT_18168e220 = 0;
  _DAT_18168e624 = 0;
  _DAT_18168ea28 = 0;
  _DAT_18168ee2c = 0;
  _DAT_18168f230 = 0;
  _DAT_18168f634 = 0;
  _DAT_18168fa38 = 0;
  _DAT_18168fe3c = 0;
  _DAT_181690240 = 0;
  _DAT_181690644 = 0;
  _DAT_181690a48 = 0;
  _DAT_181690e4c = 0;
  _DAT_181691250 = 0;
  _DAT_181691654 = 0;
  _DAT_181691a58 = 0;
  _DAT_181691e5c = 0;
  _DAT_181692260 = 0;
  _DAT_181692664 = 0;
  _DAT_181692a68 = 0;
  _DAT_181692e6c = 0;
  _DAT_181693270 = 0;
  _DAT_181693674 = 0;
  _DAT_181693a78 = 0;
  _DAT_181693e7c = 0;
  _DAT_181694280 = 0;
  _DAT_181694684 = 0;
  _DAT_181694a88 = 0;
  _DAT_181694e8c = 0;
  _DAT_181695290 = 0;
  _DAT_181695694 = 0;
  _DAT_181695a98 = 0;
  _DAT_181695e9c = 0;
  uVar21 = uVar23;
  do {
    if (piVar20[-5] != 0) {
      if (*piVar20 == 0x1a) {
        lVar16 = (ulonglong)(piVar20[0xd5] & 0x7f) * 0x404;
        if (*(int *)(&DAT_1816760a0 + lVar16) < 0x100) {
          *(int *)(&DAT_1816760a4 +
                  ((ulonglong)(piVar20[0xd5] & 0x7f) * 0x101 +
                  (longlong)*(int *)(&DAT_1816760a0 + lVar16)) * 4) = (int)uVar21;
          *(int *)(&DAT_1816760a0 + lVar16) = *(int *)(&DAT_1816760a0 + lVar16) + 1;
        }
      }
      if (piVar20[4] != -1) {
        FUN_1401380f0(uVar21);
      }
    }
    fVar8 = DAT_182aaeb50;
    fVar30 = DAT_1402781f4;
    fVar31 = DAT_1402781bc;
    uVar22 = (int)uVar21 + 1;
    uVar21 = (ulonglong)uVar22;
    piVar20 = piVar20 + 0x6e0;
  } while ((int)uVar22 < 0x400);
  pfVar17 = (float *)&DAT_182bbb244;
  lVar16 = 0x400;
  do {
    if ((pfVar17[-0x31] != 0.0) && (lVar13 = (longlong)(int)pfVar17[-0x27], pfVar17[-0x27] != -NAN))
    {
      fVar32 = (float)(&DAT_182bbb1dc)[lVar13 * 0x6e0];
      pfVar17[-0x1a] = fVar32;
      fVar33 = (float)(&DAT_182bbb1e0)[lVar13 * 0x6e0];
      pfVar17[-0x19] = fVar33;
      fVar34 = (float)(&DAT_182bbb1e4)[lVar13 * 0x6e0];
      pfVar17[-0x18] = fVar34;
      fVar1 = (float)(&DAT_182bbb224)[lVar13 * 0x6e0];
      pfVar17[-8] = fVar1;
      fVar28 = (float)(&DAT_182bbb228)[lVar13 * 0x6e0];
      pfVar17[-7] = fVar28;
      fVar2 = (float)(&DAT_182bbb22c)[lVar13 * 0x6e0];
      pfVar17[-6] = fVar2;
      fVar25 = (float)(&DAT_182bbb230)[lVar13 * 0x6e0];
      pfVar17[-5] = fVar25;
      fVar3 = (float)(&DAT_182bbb234)[lVar13 * 0x6e0];
      pfVar17[-4] = fVar3;
      fVar4 = (float)(&DAT_182bbb238)[lVar13 * 0x6e0];
      pfVar17[-3] = fVar4;
      fVar5 = (float)(&DAT_182bbb23c)[lVar13 * 0x6e0];
      pfVar17[-2] = fVar5;
      fVar6 = (float)(&DAT_182bbb240)[lVar13 * 0x6e0];
      pfVar17[-1] = fVar6;
      fVar7 = (float)(&DAT_182bbb244)[lVar13 * 0x6e0];
      *pfVar17 = fVar7;
      if ((&DAT_182bbb194)[lVar13 * 0x6e0] - 0xf < 2) {
        if (pfVar17[-0x2c] == 2.38221e-44) {
          fVar25 = (float)(int)pfVar17[-0x26] * fVar30 - DAT_14027825c;
          fVar32 = fVar1 * fVar25 + fVar32;
          fVar33 = fVar28 * fVar25 + fVar33;
          fVar34 = fVar2 * fVar25 + fVar34;
          goto LAB_1400cccb6;
        }
        if (pfVar17[-0x2c] == 2.52234e-44) {
          fVar25 = (float)(int)pfVar17[-0x26] * fVar30 - DAT_14027825c;
          fVar32 = fVar1 * fVar25 + fVar32;
          fVar34 = fVar2 * fVar25 + fVar34;
          goto LAB_1400cccae;
        }
      }
      else {
        if ((&DAT_182bbb194)[lVar13 * 0x6e0] == 0x27) {
          fVar32 = fVar25 * fVar8 + fVar32;
          fVar33 = fVar3 * fVar8 + fVar33;
          fVar34 = fVar4 * fVar8 + fVar34;
          pfVar17[-0x1a] = fVar32;
          pfVar17[-0x19] = fVar33;
          pfVar17[-0x18] = fVar34;
          fVar25 = *(float *)(&DAT_182a7e6a4 +
                             (longlong)(int)(&DAT_182bbb194)[lVar13 * 0x6e0] * 0x13d0);
          fVar32 = fVar5 * fVar25 + fVar32;
          fVar34 = fVar7 * fVar25 + fVar34;
          fVar28 = fVar6;
LAB_1400cccae:
          fVar33 = fVar28 * fVar25 + fVar33;
        }
        else {
          fVar32 = fVar32 - fVar25 * fVar31;
          fVar33 = fVar33 - fVar3 * fVar31;
          fVar34 = fVar34 - fVar4 * fVar31;
        }
LAB_1400cccb6:
        pfVar17[-0x1a] = fVar32;
        pfVar17[-0x19] = fVar33;
        pfVar17[-0x18] = fVar34;
      }
      pfVar17[-0x17] = fVar32;
      pfVar17[-0x16] = fVar33;
      pfVar17[-0x15] = fVar34;
    }
    fVar32 = DAT_1402785b8;
    pfVar17 = pfVar17 + 0x6e0;
    lVar16 = lVar16 + -1;
    uVar21 = uVar23;
    uVar24 = uVar23;
  } while (lVar16 != 0);
  do {
    lVar16 = uVar24 * 0x1b80;
    uVar22 = (uint)uVar21;
    if ((&DAT_182bbb180)[uVar24 * 0x6e0] != 0) {
      if ((((&DAT_182bbb1a4)[uVar24 * 0x6e0] == -1) && ((&DAT_182bbb1a8)[uVar24 * 0x6e0] == -1)) &&
         ((0x24 < (uint)(&DAT_182bbb194)[uVar24 * 0x6e0] ||
          ((0x1002060000U >> ((longlong)(int)(&DAT_182bbb194)[uVar24 * 0x6e0] & 0x3fU) & 1) == 0))))
      {
        uVar18 = 1;
      }
      else {
        iVar10 = (&DAT_182bbb1a8)[uVar24 * 0x6e0];
        uVar18 = uVar23;
        if (((iVar10 != -1) &&
            (uVar18 = 0,
            *(int *)(&DAT_182a7e190 +
                    (longlong)(int)(&DAT_182bbb194)[(longlong)iVar10 * 0x6e0] * 0x13d0) != 0)) &&
           (uVar18 = 0, (&DAT_182bbb1a4)[(longlong)iVar10 * 0x6e0] == -1)) {
          uVar18 = 1;
        }
      }
      iVar10 = (&DAT_182bbb194)[uVar24 * 0x6e0];
      iVar14 = (&DAT_182bbb19c)[uVar24 * 0x6e0];
      uVar19 = uVar23;
      if (5 < iVar10 - 0x13U) {
        uVar19 = uVar18;
      }
      if (iVar14 < 0x10000) {
LAB_1400ccdf9:
        if ((int)uVar19 == 0) goto LAB_1400cce44;
        if (18000 < iVar14) {
          iVar14 = 18000;
        }
        if (((iVar10 == 0x26) || (iVar10 == 0x2d)) && (18000 < iVar14)) {
          iVar14 = 18000;
        }
        iVar14 = iVar14 + -1;
        if (0 < (int)(&DAT_182bbb1b4)[uVar24 * 0x6e0]) {
          iVar14 = 18000;
        }
        uVar9 = DAT_183ebfaac - 3;
        (&DAT_182bbb19c)[uVar24 * 0x6e0] = iVar14;
        if (((uVar9 & 0xfffffffd) == 0) && (0 < iVar14)) goto LAB_1400cce4e;
      }
      else {
        if ((&DAT_182bbb1a4)[uVar24 * 0x6e0] != -1) {
          (&DAT_182bbb19c)[uVar24 * 0x6e0] = 18000;
          iVar14 = 18000;
          goto LAB_1400ccdf9;
        }
LAB_1400cce44:
        if (iVar14 - 1U < 0xffff) {
LAB_1400cce4e:
          (&DAT_182bbb19c)[uVar24 * 0x6e0] = 0xffff;
        }
      }
      if (*(int *)(&DAT_182a7e190 + (longlong)iVar10 * 0x13d0) != 0) {
        FUN_1400cf670(uVar21);
      }
      iVar10 = (&DAT_182bbb194)[uVar24 * 0x6e0];
      if (iVar10 == 0x1b) {
        uVar9 = (&DAT_182bbb400)[uVar24 * 0x6e0];
        if (uVar9 < 0x200) {
          lVar13 = (longlong)(int)uVar9 * 0x5168;
          if ((&DAT_15f2d9200)[(longlong)(int)uVar9 * 0x145a] != 0) {
            (&DAT_182bbb19c)[uVar24 * 0x6e0] = 0xffff;
          }
          iVar10 = (&DAT_182bbb1a4)[uVar24 * 0x6e0];
          *(undefined4 *)(&DAT_15f2d9220 + lVar13) = 1;
          if ((iVar10 != -1) && ((&DAT_18329e330)[(longlong)iVar10 * 0x1bfe] == uVar9)) {
            *(undefined4 *)(&DAT_15f2d9224 + lVar13) = (&DAT_18329e310)[(longlong)iVar10 * 0x1bfe];
            *(undefined4 *)(&DAT_15f2d9220 + lVar13) = 0;
          }
        }
      }
      else if (iVar10 == 0x1a) {
        (&DAT_182bbb4ec)[uVar24 * 0x6e0] = 0;
        if ((*(byte *)(&DAT_182bbb2d0 + uVar24 * 0x6e0) & 1) != 0) {
          (&DAT_182bbb4ec)[uVar24 * 0x6e0] = 1;
        }
      }
      else if ((iVar10 - 0x19U & 0xfffffff7) == 0) {
        if (0 < (int)(&DAT_182bbb2bc)[uVar24 * 0x6e0]) {
          (&DAT_182bbb2bc)[uVar24 * 0x6e0] = (&DAT_182bbb2bc)[uVar24 * 0x6e0] + -1;
        }
        uVar9 = DAT_183ebfd34;
        iVar10 = (&DAT_182bbb3fc)[uVar24 * 0x6e0];
        uVar18 = uVar21;
        if (iVar10 == 0) {
          *(undefined4 *)(lVar16 + 0x182bbb2e4) = 0;
          if (((*(byte *)(&DAT_182bbb2d0 + uVar24 * 0x6e0) & 1) == 0) ||
             ((*(byte *)(&DAT_182bbb2d4 + uVar24 * 0x6e0) & 1) != 0)) goto LAB_1400cd48b;
          (&DAT_182bbb3fc)[uVar24 * 0x6e0] = 1;
          *(undefined8 *)(&DAT_182bbb2e8 + lVar16) = 0;
        }
        else {
          if (iVar10 != 4) {
            if (iVar10 == 1) {
              *(undefined4 *)(lVar16 + 0x182bbb2e4) = 0;
              if (((*(byte *)(&DAT_182bbb2d0 + uVar24 * 0x6e0) & 1) != 0) &&
                 ((*(byte *)(&DAT_182bbb2d4 + uVar24 * 0x6e0) & 1) == 0)) {
                (&DAT_182bbb3fc)[uVar24 * 0x6e0] = 0;
                *(undefined8 *)(&DAT_182bbb2e8 + lVar16) = 0;
                FUN_140051940(uVar21);
              }
              iVar10 = *(int *)(&DAT_182bbb2ec + lVar16);
              if (999 < iVar10) {
                *(undefined4 *)(&DAT_182bbb2ec + lVar16) = 0;
                piVar20 = &DAT_182bbb194;
                (&DAT_182bbb2bc)[uVar24 * 0x6e0] = 0xb4;
                uVar19 = uVar23;
                uVar18 = uVar23;
                do {
                  if ((((piVar20[-5] != 0) && (uVar19 != uVar24)) &&
                      ((*piVar20 - 0x19U & 0xfffffff7) == 0)) && (iVar10 == piVar20[0x53])) {
                    if ((&DAT_182bbb2dc)[uVar19 * 0x6e0] == -1) {
                      (&DAT_182bbb3fc)[uVar24 * 0x6e0] = 2;
                      (&DAT_182bbb3fc)[uVar19 * 0x6e0] = 2;
                      uVar26 = (&DAT_182bbb2e0)[uVar24 * 0x6e0];
                      (&DAT_182bbb2dc)[uVar24 * 0x6e0] = (int)uVar18;
                      *(undefined4 *)(&DAT_182bbb2e8 + lVar16) = 0;
                      *(undefined4 *)(&DAT_182bbb2e8 + uVar19 * 0x1b80) = uVar26;
                      FUN_140051940(uVar21);
                    }
                    else {
                      (&DAT_182bbb3fc)[uVar24 * 0x6e0] = 4;
                      *(undefined4 *)(&DAT_182bbb2e8 + lVar16) = 0;
                      uVar18 = uVar21;
                    }
                    goto LAB_1400cd486;
                  }
                  uVar9 = (int)uVar18 + 1;
                  uVar18 = (ulonglong)uVar9;
                  uVar19 = uVar19 + 1;
                  piVar20 = piVar20 + 0x6e0;
                } while ((int)uVar9 < 0x400);
              }
              goto LAB_1400cd48b;
            }
            if (iVar10 == 3) {
              if ((&DAT_182bbb2dc)[uVar24 * 0x6e0] != -1) {
                if ((&DAT_182bbb180)[(longlong)(int)(&DAT_182bbb2dc)[uVar24 * 0x6e0] * 0x6e0] == 0)
                {
                  (&DAT_182bbb3fc)[uVar24 * 0x6e0] = 0;
                  (&DAT_182bbb2dc)[uVar24 * 0x6e0] = 0xffffffff;
                  *(undefined4 *)(&DAT_182bbb2e8 + lVar16) = 0;
                  FUN_140051940(uVar21);
                  iVar10 = 0;
                }
                goto LAB_1400cd1c9;
              }
              (&DAT_182bbb3fc)[uVar24 * 0x6e0] = 0;
              (&DAT_182bbb2dc)[uVar24 * 0x6e0] = 0xffffffff;
              *(undefined4 *)(&DAT_182bbb2e8 + lVar16) = 0;
              FUN_140051940(uVar21);
            }
            else {
LAB_1400cd1c9:
              uVar9 = DAT_183ebfd34;
              uVar26 = DAT_183e93668;
              if (iVar10 == 2) {
                iVar10 = (&DAT_182bbb2dc)[uVar24 * 0x6e0];
                if ((iVar10 == -1) || ((&DAT_182bbb2dc)[(longlong)iVar10 * 0x6e0] != -1)) {
                  *(undefined4 *)(lVar16 + 0x182bbb2e4) = 0;
                }
                else {
                  if (((DAT_183ebfd34 & 0x7f) == 0) && (DAT_1ad04adc0 != 0)) {
                    lVar13 = (longlong)(int)DAT_189c1dc64;
                    DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
                    lVar15 = (longlong)(int)DAT_189c1dc64;
                    (&DAT_1873de460)[lVar13 * 0x20] = 0x13;
                    (&DAT_1873de464)[lVar13 * 0x20] = uVar9;
                    (&DAT_1873de480)[lVar13 * 0x20] = uVar26;
                    (&DAT_1873de484)[lVar13 * 0x20] = iVar10;
                    *(undefined4 *)(&DAT_1873de490 + lVar13 * 0x80) = 0x3f800000;
                    *(undefined4 *)(&DAT_1873de494 + lVar13 * 0x80) = 0x3f800000;
                    DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
                    (&DAT_1873de460)[lVar15 * 0x20] = 0x13;
                    (&DAT_1873de464)[lVar15 * 0x20] = uVar9;
                    (&DAT_1873de480)[lVar15 * 0x20] = uVar26;
                    (&DAT_1873de484)[lVar15 * 0x20] = uVar22;
                    *(undefined4 *)(&DAT_1873de490 + lVar15 * 0x80) = 0x3f000000;
                    *(undefined4 *)(&DAT_1873de494 + lVar15 * 0x80) = 0x3f800000;
                  }
                  *(int *)(lVar16 + 0x182bbb2e4) = *(int *)(lVar16 + 0x182bbb2e4) + 1;
                  if (0x2ff < *(int *)(lVar16 + 0x182bbb2e4)) {
                    (&DAT_182bbb3fc)[uVar24 * 0x6e0] = 0;
                    (&DAT_182bbb3fc)[(longlong)iVar10 * 0x6e0] = 0;
                    *(undefined4 *)
                     (&DAT_182bbb2e8 + (longlong)(int)(&DAT_182bbb2dc)[uVar24 * 0x6e0] * 0x1b80) = 0
                    ;
                    FUN_140051940((&DAT_182bbb2dc)[uVar24 * 0x6e0]);
                    (&DAT_182bbb2dc)[uVar24 * 0x6e0] = 0xffffffff;
                    *(undefined4 *)(&DAT_182bbb2e8 + lVar16) = 0;
                    FUN_140051940(uVar21);
                  }
                }
              }
            }
            if (((*(byte *)(&DAT_182bbb2d0 + uVar24 * 0x6e0) & 1) != 0) &&
               ((*(byte *)(&DAT_182bbb2d4 + uVar24 * 0x6e0) & 1) == 0)) {
              if ((&DAT_182bbb2dc)[uVar24 * 0x6e0] != -1) {
                (&DAT_182bbb3fc)[uVar24 * 0x6e0] = 0;
                (&DAT_182bbb3fc)[(longlong)(int)(&DAT_182bbb2dc)[uVar24 * 0x6e0] * 0x6e0] = 0;
                (&DAT_182bbb2dc)[(longlong)(int)(&DAT_182bbb2dc)[uVar24 * 0x6e0] * 0x6e0] =
                     0xffffffff;
                *(undefined4 *)
                 (&DAT_182bbb2e8 + (longlong)(int)(&DAT_182bbb2dc)[uVar24 * 0x6e0] * 0x1b80) = 0;
                FUN_140051940((&DAT_182bbb2dc)[uVar24 * 0x6e0]);
                *(undefined4 *)(&DAT_182bbb2e8 + lVar16) = 0;
                goto LAB_1400cd478;
              }
              piVar20 = &DAT_182bbb194;
              uVar18 = uVar23;
              do {
                uVar9 = (uint)uVar18;
                if ((((piVar20[-5] != 0) && (uVar9 != uVar22)) &&
                    ((*piVar20 - 0x19U & 0xfffffff7) == 0)) && (piVar20[0x52] == uVar22)) {
                  (&DAT_182bbb3fc)[uVar24 * 0x6e0] = 3;
                  piVar20[0x9a] = 3;
                  (&DAT_182bbb2dc)[uVar24 * 0x6e0] = uVar9;
                  *(int *)(&DAT_182bbb2e8 + lVar16) = piVar20[0x53];
                  FUN_140051940(uVar21);
                  piVar20[0x55] = (&DAT_182bbb2e0)[uVar24 * 0x6e0];
                  FUN_140051940(uVar18);
                }
                uVar18 = (ulonglong)(uVar9 + 1);
                piVar20 = piVar20 + 0x6e0;
              } while ((int)(uVar9 + 1) < 0x400);
            }
            goto LAB_1400cd48b;
          }
          iVar10 = *(int *)(lVar16 + 0x182bbb2e4) + 1;
          *(int *)(lVar16 + 0x182bbb2e4) = iVar10;
          uVar26 = DAT_183e93694;
          if (((uVar9 & 0x3f) == 0) && (DAT_1ad04adc0 != 0)) {
            lVar13 = (longlong)(int)DAT_189c1dc64;
            DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
            (&DAT_1873de460)[lVar13 * 0x20] = 0x13;
            (&DAT_1873de464)[lVar13 * 0x20] = uVar9;
            (&DAT_1873de480)[lVar13 * 0x20] = uVar26;
            (&DAT_1873de484)[lVar13 * 0x20] = uVar22;
            *(undefined4 *)(&DAT_1873de490 + lVar13 * 0x80) = 0x3f800000;
            *(undefined4 *)(&DAT_1873de494 + lVar13 * 0x80) = 0x3f800000;
          }
          if ((iVar10 < 0x168) &&
             (((*(byte *)(&DAT_182bbb2d0 + uVar24 * 0x6e0) & 1) == 0 ||
              ((*(byte *)(&DAT_182bbb2d4 + uVar24 * 0x6e0) & 1) != 0)))) goto LAB_1400cd48b;
          (&DAT_182bbb3fc)[uVar24 * 0x6e0] = 0;
          *(undefined8 *)(lVar16 + 0x182bbb2e4) = 0;
          *(undefined4 *)(&DAT_182bbb2ec + lVar16) = 0;
LAB_1400cd478:
          (&DAT_182bbb2dc)[uVar24 * 0x6e0] = 0xffffffff;
        }
LAB_1400cd486:
        FUN_140051940(uVar18);
      }
LAB_1400cd48b:
      if ((&DAT_182bbb194)[uVar24 * 0x6e0] == 0x27) {
        iVar10 = (&DAT_182bbc7dc)[uVar24 * 0x6e0];
        if (iVar10 == 0) {
          FUN_1400c3ed0(uVar21);
          iVar10 = (&DAT_182bbc7dc)[uVar24 * 0x6e0];
        }
        if (((iVar10 == 1) && (0 < (int)(&DAT_182bbcbec)[uVar24 * 0x6e0])) &&
           (iVar14 = (&DAT_182bbcbec)[uVar24 * 0x6e0] + -1,
           (&DAT_182bbcbec)[uVar24 * 0x6e0] = iVar14, iVar14 == 0)) {
          iVar10 = FUN_14023b1b0();
          iVar10 = iVar10 % 0x1a;
          lVar13 = uVar24 * 0x6e0;
          uVar18 = uVar23;
          do {
            if ((*(int *)(&DAT_182bbcae8 +
                         (*(int *)(&DAT_182bbc9e8 + (iVar10 + lVar13) * 4) + lVar13) * 4) != 0) &&
               (*(int *)(&DAT_182bbcb68 +
                        (*(int *)(&DAT_182bbc9e8 + (iVar10 + lVar13) * 4) + lVar13) * 4) == -1))
            break;
            iVar10 = FUN_14023b1b0();
            uVar9 = (int)uVar18 + 1;
            uVar18 = (ulonglong)uVar9;
            iVar10 = iVar10 % 0x1a;
          } while ((int)uVar9 < 1000);
          *(int *)(&DAT_182bbcb68 + (*(int *)(&DAT_182bbc9e8 + (iVar10 + lVar13) * 4) + lVar13) * 4)
               = iVar10;
          FUN_1400c5750(uVar21);
          (&DAT_182bbb534)[lVar16] = 0;
          FUN_140050f90(uVar21,1);
          iVar10 = (&DAT_182bbc7dc)[uVar24 * 0x6e0];
        }
        if (iVar10 == 2) {
          FUN_1400c8500(uVar21);
          iVar10 = (&DAT_182bbc7dc)[uVar24 * 0x6e0];
        }
        if (iVar10 == 3) {
          FUN_1400c9820(uVar21);
        }
      }
      if ((&DAT_182bbb194)[uVar24 * 0x6e0] == 0x28) {
        (&DAT_182bbb4ec)[uVar24 * 0x6e0] = 0x40;
        (&DAT_182bbb4e8)[uVar24 * 0x6e0] = (&DAT_182bbb4e8)[uVar24 * 0x6e0] + 1 & 0xff;
      }
      else if (((&DAT_182bbb194)[uVar24 * 0x6e0] == 0xd) && (DAT_183ebfccc == 2)) {
        if ((int)(&DAT_182bbb2c4)[uVar24 * 0x6e0] < 1) {
          iVar10 = (&DAT_182bbb2bc)[uVar24 * 0x6e0];
          if (0 < iVar10) {
            if (iVar10 == 0xf0) {
              if (((*(byte *)(&DAT_182bbb2d0 + uVar24 * 0x6e0) & 2) == 0) ||
                 ((*(byte *)(&DAT_182bbb2d4 + uVar24 * 0x6e0) & 2) != 0)) {
                if ((&DAT_182bbb1a4)[uVar24 * 0x6e0] == -1) {
                  (&DAT_182bbb2bc)[uVar24 * 0x6e0] = 0xef;
                }
              }
              else {
                (&DAT_182bbb2c4)[uVar24 * 0x6e0] = 1;
                *(undefined4 *)(&DAT_182bbb1a0 + lVar16) = 0xffffffff;
              }
            }
            else {
              (&DAT_182bbb2bc)[uVar24 * 0x6e0] = iVar10 + -1;
              if (iVar10 + -1 == 1) {
                (&DAT_182bbb19c)[uVar24 * 0x6e0] = 0;
                uVar9 = DAT_183ebfd34;
                if (DAT_1ad04adc0 != 0) {
                  lVar13 = (longlong)(int)DAT_189c1dc64;
                  lVar16 = lVar13 * 0x80;
                  (&DAT_1873de460)[lVar13 * 0x20] = 0x14;
                  (&DAT_1873de464)[lVar13 * 0x20] = uVar9;
                  (&DAT_1873de480)[lVar13 * 0x20] = 0;
                  if (&DAT_182bbb1dc + uVar24 * 0x6e0 == (undefined4 *)0x0) {
                    uVar26 = 0;
                    uVar27 = 0;
                    uVar29 = 0;
                  }
                  else {
                    uVar26 = (&DAT_182bbb1e4)[uVar24 * 0x6e0];
                    uVar27 = (&DAT_182bbb1e0)[uVar24 * 0x6e0];
                    uVar29 = (&DAT_182bbb1dc)[uVar24 * 0x6e0];
                  }
                  *(undefined4 *)(&DAT_1873de468 + lVar16) = uVar29;
                  *(undefined4 *)(&DAT_1873de46c + lVar16) = uVar27;
                  *(undefined4 *)(&DAT_1873de470 + lVar16) = uVar26;
                  DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
                }
                FUN_1400a70b0(uVar21);
              }
            }
          }
        }
        else if (((*(byte *)(&DAT_182bbb2d0 + uVar24 * 0x6e0) & 2) != 0) &&
                ((*(byte *)(&DAT_182bbb2d4 + uVar24 * 0x6e0) & 2) == 0)) {
          (&DAT_182bbb2bc)[uVar24 * 0x6e0] = 0xf0;
          (&DAT_182bbb2c4)[uVar24 * 0x6e0] = 0;
          if ((&DAT_182bbb1a4)[uVar24 * 0x6e0] != -1) {
            *(undefined4 *)(&DAT_182bbb1a0 + lVar16) =
                 (&DAT_18329e310)[(longlong)(int)(&DAT_182bbb1a4)[uVar24 * 0x6e0] * 0x1bfe];
          }
        }
      }
      uVar9 = (&DAT_182bbb2d0)[uVar24 * 0x6e0];
      uVar11 = uVar9 & 1;
      if ((uVar11 != 0) && ((*(byte *)(&DAT_182bbb2d4 + uVar24 * 0x6e0) & 1) == 0)) {
        if ((&DAT_182bbb194)[uVar24 * 0x6e0] == 0xf) {
          (&DAT_182bbb194)[uVar24 * 0x6e0] = 0x10;
        }
        else {
          if ((&DAT_182bbb194)[uVar24 * 0x6e0] != 0x10) goto LAB_1400cd7e2;
          (&DAT_182bbb194)[uVar24 * 0x6e0] = 0xf;
        }
        if ((DAT_1ad04adc0 != 0) && (uVar22 < 0x400)) {
          (&DAT_18329b1e0)[uVar24] = (&DAT_18329b1e0)[uVar24] + 1;
        }
      }
LAB_1400cd7e2:
      if ((&DAT_182bbb194)[uVar24 * 0x6e0] == 0x1e) {
        if ((((uVar11 == 0) && ((*(byte *)(&DAT_182bbb2d4 + uVar24 * 0x6e0) & 1) != 0)) &&
            (lVar16 = (longlong)(int)(&DAT_182bbb1a4)[uVar24 * 0x6e0],
            (&DAT_182bbb1a4)[uVar24 * 0x6e0] != -1)) && ((&DAT_18329e320)[lVar16 * 0x1bfe] == 0)) {
          (&DAT_18329e328)[lVar16 * 0x1bfe] = (&DAT_18329e328)[lVar16 * 0x1bfe] + 0x10;
          (&DAT_18329e320)[lVar16 * 0x1bfe] = 300;
          iVar10 = (&DAT_18329e328)[lVar16 * 0x1bfe];
          if (0xff < (int)(&DAT_18329e328)[lVar16 * 0x1bfe]) {
            iVar10 = 0xff;
          }
          (&DAT_18329e31c)[lVar16 * 0x1bfe] = (&DAT_18329e31c)[lVar16 * 0x1bfe] + 8;
          (&DAT_18329e328)[lVar16 * 0x1bfe] = iVar10;
          iVar10 = (&DAT_18329e31c)[lVar16 * 0x1bfe];
          if (0x69 < iVar10) {
            iVar10 = 0x69;
          }
          (&DAT_18329e31c)[lVar16 * 0x1bfe] = iVar10;
LAB_1400cdb49:
          (&DAT_182bbb2c4)[uVar24 * 0x6e0] = (&DAT_182bbb2c4)[uVar24 * 0x6e0] + -1;
          if ((int)(&DAT_182bbb2c4)[uVar24 * 0x6e0] < 1) {
            (&DAT_182bbb19c)[uVar24 * 0x6e0] = 0;
          }
        }
      }
      else if ((&DAT_182bbb194)[uVar24 * 0x6e0] == 0xe) {
        if (uVar11 == 0) {
          (&DAT_182bbb2bc)[uVar24 * 0x6e0] = 0;
        }
        else {
          iVar10 = -1;
          pfVar17 = (float *)&DAT_18329e390;
          lVar13 = 2;
          lVar16 = -1;
          fVar31 = fVar32;
          iVar14 = 2;
          do {
            if ((((pfVar17[-0x22] != 0.0) && (0 < (int)pfVar17[-0x13])) &&
                ((pfVar17[0x1b34] != 0.0 || ((int)pfVar17[-0x13] < 10)))) &&
               (fVar30 = SQRT((pfVar17[-1] - (float)(&DAT_182bbb1e0)[uVar24 * 0x6e0]) *
                              (pfVar17[-1] - (float)(&DAT_182bbb1e0)[uVar24 * 0x6e0]) +
                              (pfVar17[-2] - (float)(&DAT_182bbb1dc)[uVar24 * 0x6e0]) *
                              (pfVar17[-2] - (float)(&DAT_182bbb1dc)[uVar24 * 0x6e0]) +
                              (*pfVar17 - (float)(&DAT_182bbb1e4)[uVar24 * 0x6e0]) *
                              (*pfVar17 - (float)(&DAT_182bbb1e4)[uVar24 * 0x6e0])), fVar30 < fVar31
               )) {
              iVar10 = iVar14 + -2;
              lVar16 = lVar13 + -2;
              fVar31 = fVar30;
            }
            if (((pfVar17[0x1bdc] != 0.0) && (0 < (int)pfVar17[0x1beb])) &&
               (((pfVar17[0x3732] != 0.0 || ((int)pfVar17[0x1beb] < 10)) &&
                (fVar30 = SQRT((pfVar17[0x1bfd] - (float)(&DAT_182bbb1e0)[uVar24 * 0x6e0]) *
                               (pfVar17[0x1bfd] - (float)(&DAT_182bbb1e0)[uVar24 * 0x6e0]) +
                               (pfVar17[0x1bfc] - (float)(&DAT_182bbb1dc)[uVar24 * 0x6e0]) *
                               (pfVar17[0x1bfc] - (float)(&DAT_182bbb1dc)[uVar24 * 0x6e0]) +
                               (pfVar17[0x1bfe] - (float)(&DAT_182bbb1e4)[uVar24 * 0x6e0]) *
                               (pfVar17[0x1bfe] - (float)(&DAT_182bbb1e4)[uVar24 * 0x6e0])),
                fVar30 < fVar31)))) {
              iVar10 = iVar14 + -1;
              lVar16 = lVar13 + -1;
              fVar31 = fVar30;
            }
            if ((((pfVar17[0x37da] != 0.0) && (0 < (int)pfVar17[0x37e9])) &&
                ((pfVar17[0x5330] != 0.0 || ((int)pfVar17[0x37e9] < 10)))) &&
               (fVar30 = SQRT((pfVar17[0x37fb] - (float)(&DAT_182bbb1e0)[uVar24 * 0x6e0]) *
                              (pfVar17[0x37fb] - (float)(&DAT_182bbb1e0)[uVar24 * 0x6e0]) +
                              (pfVar17[0x37fa] - (float)(&DAT_182bbb1dc)[uVar24 * 0x6e0]) *
                              (pfVar17[0x37fa] - (float)(&DAT_182bbb1dc)[uVar24 * 0x6e0]) +
                              (pfVar17[0x37fc] - (float)(&DAT_182bbb1e4)[uVar24 * 0x6e0]) *
                              (pfVar17[0x37fc] - (float)(&DAT_182bbb1e4)[uVar24 * 0x6e0])),
               fVar30 < fVar31)) {
              lVar16 = lVar13;
              fVar31 = fVar30;
              iVar10 = iVar14;
            }
            if (((pfVar17[0x53d8] != 0.0) && (0 < (int)pfVar17[0x53e7])) &&
               (((pfVar17[0x6f2e] != 0.0 || ((int)pfVar17[0x53e7] < 10)) &&
                (fVar30 = SQRT((pfVar17[0x53f9] - (float)(&DAT_182bbb1e0)[uVar24 * 0x6e0]) *
                               (pfVar17[0x53f9] - (float)(&DAT_182bbb1e0)[uVar24 * 0x6e0]) +
                               (pfVar17[0x53f8] - (float)(&DAT_182bbb1dc)[uVar24 * 0x6e0]) *
                               (pfVar17[0x53f8] - (float)(&DAT_182bbb1dc)[uVar24 * 0x6e0]) +
                               (pfVar17[0x53fa] - (float)(&DAT_182bbb1e4)[uVar24 * 0x6e0]) *
                               (pfVar17[0x53fa] - (float)(&DAT_182bbb1e4)[uVar24 * 0x6e0])),
                fVar30 < fVar31)))) {
              iVar10 = iVar14 + 1;
              lVar16 = lVar13 + 1;
              fVar31 = fVar30;
            }
            lVar13 = lVar13 + 4;
            pfVar17 = pfVar17 + 0x6ff8;
            iVar12 = iVar14 + 2;
            iVar14 = iVar14 + 4;
          } while (iVar12 < 0x100);
          if (iVar10 != -1) {
            iVar10 = (&DAT_182bbb2bc)[uVar24 * 0x6e0] + 1;
            (&DAT_182bbb2bc)[uVar24 * 0x6e0] = iVar10;
            if ((&DAT_182bbb1a4)[uVar24 * 0x6e0] != -1) {
              (&DAT_1832a50e4)[(longlong)(int)(&DAT_182bbb1a4)[uVar24 * 0x6e0] * 0x1bfe] =
                   (int)(iVar10 * 0x100 + (iVar10 * 0x100 >> 0x1f & 0xffU)) >> 8;
            }
            if (0xff < iVar10) {
              (&DAT_182bbb2bc)[uVar24 * 0x6e0] = 0;
              (&DAT_1832a5060)[lVar16 * 0x1bfe] = 0;
              if ((int)(&DAT_18329e344)[lVar16 * 0x1bfe] < 10) {
                (&DAT_18329e344)[lVar16 * 0x1bfe] = 10;
              }
              goto LAB_1400cdb49;
            }
          }
        }
      }
      (&DAT_182bbb2d4)[uVar24 * 0x6e0] = uVar9;
      (&DAT_182bbb2d0)[uVar24 * 0x6e0] = 0;
    }
    uVar21 = (ulonglong)(uVar22 + 1);
    uVar24 = uVar24 + 1;
    if (0x3ff < (int)(uVar22 + 1)) {
      return;
    }
  } while( true );
}



===== FUN_1400c86d0 @ 1400c86d0 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1400c86d0(uint param_1)

{
  undefined *puVar1;
  char cVar2;
  char cVar3;
  ulonglong uVar4;
  int iVar5;
  char *pcVar6;
  ulonglong uVar7;
  uint uVar8;
  ulonglong uVar9;
  longlong lVar10;
  longlong lVar11;
  ulonglong uVar12;
  longlong lVar13;
  longlong lVar14;
  undefined1 auStack_268 [48];
  char local_238 [16];
  undefined1 local_228;
  ulonglong local_38;
  
  local_38 = DAT_1403020a0 ^ (ulonglong)auStack_268;
  uVar9 = 0;
  uVar12 = (ulonglong)(int)param_1;
  lVar14 = uVar12 * 0x1b80;
  lVar13 = uVar12 * 0x6e;
  uVar7 = uVar9;
  uVar4 = uVar9;
  if (*(int *)(&DAT_182bbc7e4 + lVar14) < 1) {
    do {
      if (uVar4 == 0) {
        FUN_140158ab0(local_238,"UPLOAD FILE");
        puVar1 = &DAT_182bbbcf4 + lVar14;
        pcVar6 = local_238;
        lVar10 = 0x14;
        do {
          cVar3 = *pcVar6;
          if (cVar3 == '\0') {
            cVar3 = ' ';
          }
          else {
            pcVar6 = pcVar6 + 1;
          }
          puVar1[-0x800] = cVar3;
          *puVar1 = 0xf0;
          puVar1 = puVar1 + 1;
          lVar10 = lVar10 + -1;
        } while (lVar10 != 0);
        (&DAT_182bbb508)[uVar12 * 0x1b80] = 0;
      }
      else if (uVar4 - 4 < 0x10) {
        iVar5 = (*(uint *)(&DAT_182bbc7f4 + lVar14) & 0xfffffff0) + (int)uVar7;
        uVar8 = iVar5 - 4;
        if ((int)uVar8 < (int)*(uint *)(&DAT_182bbc7fc + lVar14)) {
          FUN_140158ab0(local_238,&DAT_140276174,
                        &DAT_181fefbd4 +
                        (longlong)*(int *)(&DAT_182bbb4b4 + lVar14) * 0x2828 +
                        (longlong)*(int *)(&DAT_182bbc7f0 + (uVar12 * 0x6e0 + (longlong)iVar5) * 4)
                        * 0x18);
          lVar10 = 0x10;
          lVar11 = (uVar4 + lVar13) * 0x40;
          puVar1 = &DAT_182bbbcf4 + lVar11;
          pcVar6 = local_238;
          if (uVar8 == *(uint *)(&DAT_182bbc7f4 + lVar14)) {
            do {
              cVar3 = *pcVar6;
              if (cVar3 == '\0') {
                cVar3 = ' ';
              }
              else {
                pcVar6 = pcVar6 + 1;
              }
              puVar1[-0x800] = cVar3;
              *puVar1 = 0xb8;
              puVar1 = puVar1 + 1;
              lVar10 = lVar10 + -1;
            } while (lVar10 != 0);
            (&DAT_182bbb504)[lVar11] = 0;
          }
          else {
            do {
              cVar3 = *pcVar6;
              if (cVar3 == '\0') {
                cVar3 = ' ';
              }
              else {
                pcVar6 = pcVar6 + 1;
              }
              puVar1[-0x800] = cVar3;
              *puVar1 = 0xf;
              puVar1 = puVar1 + 1;
              lVar10 = lVar10 + -1;
            } while (lVar10 != 0);
            (&DAT_182bbb504)[lVar11] = 0;
          }
        }
        else if (uVar8 == *(uint *)(&DAT_182bbc7fc + lVar14)) {
          lVar11 = (uVar4 + lVar13) * 0x40;
          puVar1 = &DAT_182bbbcf4 + lVar11;
          pcVar6 = " CANCEL";
          lVar10 = 0x10;
          if (uVar8 == *(uint *)(&DAT_182bbc7f4 + lVar14)) {
            do {
              cVar3 = *pcVar6;
              if (cVar3 == '\0') {
                cVar3 = ' ';
              }
              else {
                pcVar6 = pcVar6 + 1;
              }
              puVar1[-0x800] = cVar3;
              *puVar1 = 0xb8;
              puVar1 = puVar1 + 1;
              lVar10 = lVar10 + -1;
            } while (lVar10 != 0);
            (&DAT_182bbb504)[lVar11] = 0;
          }
          else {
            do {
              cVar3 = *pcVar6;
              if (cVar3 == '\0') {
                cVar3 = ' ';
              }
              else {
                pcVar6 = pcVar6 + 1;
              }
              puVar1[-0x800] = cVar3;
              *puVar1 = 0xf;
              puVar1 = puVar1 + 1;
              lVar10 = lVar10 + -1;
            } while (lVar10 != 0);
            (&DAT_182bbb504)[lVar11] = 0;
          }
        }
        else {
          (&DAT_182bbb4f4)[(uVar4 + lVar13) * 0x40] = 0;
        }
      }
      else {
        (&DAT_182bbb4f4)[(lVar13 + uVar4) * 0x40] = 0;
      }
      uVar4 = uVar4 + 1;
      uVar7 = (ulonglong)((int)uVar7 + 1);
    } while ((longlong)uVar4 < 0x18);
    uVar12 = (ulonglong)param_1;
  }
  else {
    do {
      if (uVar7 == 0) {
        FUN_140158ab0(local_238,"UPLOADING");
        puVar1 = &DAT_182bbbcf4 + lVar14;
        pcVar6 = local_238;
        lVar10 = 0x10;
        do {
          cVar3 = *pcVar6;
          cVar2 = ' ';
          if (cVar3 != '\0') {
            pcVar6 = pcVar6 + 1;
            cVar2 = cVar3;
          }
          puVar1[-0x800] = cVar2;
          *puVar1 = 0xf0;
          puVar1 = puVar1 + 1;
          lVar10 = lVar10 + -1;
        } while (lVar10 != 0);
        (&DAT_182bbb504)[uVar12 * 0x1b80] = 0;
      }
      else if (uVar7 == 1) {
        iVar5 = *(int *)(&DAT_182bbc7e4 + lVar14);
        uVar4 = uVar9;
        do {
          cVar3 = '\x7f';
          if ((longlong)(0xff - iVar5) >> 4 < (longlong)uVar4) {
            cVar3 = ' ';
          }
          local_238[uVar4] = cVar3;
          uVar4 = uVar4 + 1;
        } while ((longlong)uVar4 < 0x10);
        local_228 = 0;
        puVar1 = &DAT_182bbbd34 + lVar14;
        pcVar6 = local_238;
        lVar10 = 0x10;
        do {
          cVar3 = *pcVar6;
          if (cVar3 == '\0') {
            cVar3 = ' ';
          }
          else {
            pcVar6 = pcVar6 + 1;
          }
          puVar1[-0x800] = cVar3;
          *puVar1 = 0xf0;
          puVar1 = puVar1 + 1;
          lVar10 = lVar10 + -1;
        } while (lVar10 != 0);
        (&DAT_182bbb544)[uVar12 * 0x1b80] = 0;
      }
      else {
        (&DAT_182bbb4f4)[(lVar13 + uVar7) * 0x40] = 0;
      }
      uVar7 = uVar7 + 1;
    } while ((longlong)uVar7 < 0x18);
  }
  do {
    FUN_140050f90(uVar12 & 0xffffffff,uVar9);
    uVar8 = (int)uVar9 + 1;
    uVar9 = (ulonglong)uVar8;
  } while ((int)uVar8 < 0x18);
  return;
}



===== FUN_1400ca740 @ 1400ca740 root=true =====

void FUN_1400ca740(int param_1,int param_2)

{
  byte bVar1;
  uint uVar2;
  int iVar3;
  longlong lVar4;
  
  lVar4 = (longlong)param_1 * 0x1b80;
  iVar3 = *(int *)(&DAT_182bbb424 + lVar4);
  if (iVar3 == 0) {
    (&DAT_182bbb19c)[(longlong)param_1 * 0x6e0] = 0;
    return;
  }
  if ((0 < iVar3) && (*(int *)(&DAT_182bbb424 + lVar4) = iVar3 + -1, param_2 <= iVar3 + -1)) {
    uVar2 = *(uint *)(&DAT_182bbb428 + lVar4);
    iVar3 = param_2 * 3;
    do {
      bVar1 = (byte)iVar3;
      param_2 = param_2 + 1;
      uVar2 = ~(7 << (bVar1 & 0x1f)) & uVar2;
      iVar3 = iVar3 + 3;
      uVar2 = (uVar2 >> (bVar1 + 3 & 0x1f) & 7) << (bVar1 & 0x1f) | uVar2;
      *(uint *)(&DAT_182bbb428 + lVar4) = uVar2;
    } while (param_2 <= *(int *)(&DAT_182bbb424 + lVar4));
  }
  return;
}



===== FUN_1400a87a0 @ 1400a87a0 root=true =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400a87a0(uint param_1)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  float fVar7;
  bool bVar8;
  int iVar9;
  uint uVar10;
  ulonglong uVar11;
  int iVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  longlong lVar15;
  longlong lVar16;
  int *piVar17;
  ulonglong uVar18;
  uint uVar19;
  int *piVar20;
  float *pfVar21;
  longlong lVar22;
  float *pfVar23;
  ulonglong uVar24;
  int iVar25;
  longlong lVar26;
  float fVar27;
  float fVar28;
  float fVar29;
  double dVar30;
  float fVar31;
  float fVar32;
  float fVar33;
  float fVar34;
  float fVar35;
  float fVar36;
  
  uVar24 = (ulonglong)(int)param_1;
  lVar15 = uVar24 * 0x6ff8;
  iVar9 = -1;
  *(undefined4 *)(&DAT_1832a50e8 + lVar15) = 0xffffffff;
  fVar28 = DAT_140278338;
  if (*(int *)(&DAT_1832a50fc + lVar15) == *(int *)(&DAT_1832a5100 + lVar15)) {
    return;
  }
  iVar25 = 0;
  piVar20 = &DAT_182bbb1a4;
  lVar16 = (longlong)*(int *)(&DAT_1832a50fc + lVar15) * 0x30 + lVar15;
  *(undefined4 *)(&DAT_1832a50e8 + lVar15) = *(undefined4 *)(&DAT_1832a5104 + lVar16);
  *(undefined4 *)(&DAT_1832a50ec + lVar15) = *(undefined4 *)(&DAT_1832a5108 + lVar16);
  *(int *)(&DAT_1832a50f0 + lVar15) = (int)(*(float *)(&DAT_1832a5108 + lVar16) * DAT_14027883c);
  iVar12 = *(int *)(&DAT_1832a5104 + lVar16);
  uVar11 = uVar24;
  if (iVar12 == 4) {
    if ((&DAT_18329e330)[uVar24 * 0x1bfe] == -1) {
      piVar17 = &DAT_182bbb1a4;
      fVar29 = fVar28;
      do {
        if ((((piVar17[-9] != 0) && (*piVar17 == -1)) && (piVar17[1] == -1)) &&
           (fVar27 = (float)FUN_14007aba0(), fVar27 < fVar29)) {
          fVar29 = fVar27;
          iVar9 = iVar25;
        }
        iVar25 = iVar25 + 1;
        piVar17 = piVar17 + 0x6e0;
      } while (iVar25 < 0x400);
      uVar11 = (ulonglong)param_1;
      if (((iVar9 != -1) && ((&DAT_182bbb194)[(longlong)iVar9 * 0x6e0] == 0x27)) &&
         ((&DAT_1832a4dd8)[uVar24 * 0x1bfe] == 0)) {
        FUN_1400e35d0();
      }
    }
    *(uint *)(&DAT_1832a50fc + lVar15) = *(int *)(&DAT_1832a50fc + lVar15) + 1U & 7;
    iVar12 = *(int *)(&DAT_1832a5104 + lVar16);
  }
  uVar14 = 0xffffffff;
  uVar19 = 0xffffffff;
  if (iVar12 != 2) {
    if (iVar12 == 1) {
      uVar10 = *(uint *)(&DAT_1832a512c + lVar16);
      if (uVar10 == 3) {
        if (((int)(&DAT_1832a4e00)[uVar24 * 0x1bfe] < 1) ||
           ((int)(&DAT_1832a4dd8)[uVar24 * 0x1bfe] < 1)) {
          iVar9 = (&DAT_1832a4dd8)[uVar24 * 0x1bfe];
          if ((iVar9 != 0) || (uVar10 = uVar19, (&DAT_1832a4e00)[uVar24 * 0x1bfe] != 0)) {
            uVar10 = (uint)(iVar9 != 0);
            uVar14 = (ulonglong)(iVar9 != 0) ^ 1;
            if ((0 < (int)(&DAT_1832a4dd8)[uVar14 * 10 + uVar24 * 0x1bfe]) &&
               ((&DAT_182bbb1b4)
                [(longlong)(int)(&DAT_1832a4ddc)[uVar14 * 10 + uVar24 * 0x1bfe] * 0x6e0] == 0)) {
              uVar10 = uVar19;
            }
          }
        }
        else {
          uVar10 = 1;
          if ((*(int *)(&DAT_182a7e29c +
                       ((longlong)
                        (int)(&DAT_182bbb194)
                             [(longlong)(int)(&DAT_1832a4e04)[uVar24 * 0x1bfe] * 0x6e0] * 0x4f4 +
                       (longlong)
                       (int)(&DAT_182bbb194)
                            [(longlong)(int)(&DAT_1832a4ddc)[uVar24 * 0x1bfe] * 0x6e0]) * 4) == 0)
             && (uVar10 = 0,
                *(int *)(&DAT_182a7e29c +
                        ((longlong)
                         (int)(&DAT_182bbb194)
                              [(longlong)(int)(&DAT_1832a4ddc)[uVar24 * 0x1bfe] * 0x6e0] * 0x4f4 +
                        (longlong)
                        (int)(&DAT_182bbb194)
                             [(longlong)(int)(&DAT_1832a4e04)[uVar24 * 0x1bfe] * 0x6e0]) * 4) == 0))
          {
            uVar10 = uVar19;
          }
        }
        *(uint *)(&DAT_1832a512c + lVar16) = uVar10;
      }
      fVar28 = DAT_1402783b8;
      if (uVar10 != 0xffffffff) {
        fVar29 = *(float *)(&DAT_1832a5108 + lVar16) + DAT_140278180;
        bVar8 = DAT_1402783b8 <= fVar29;
        *(float *)(&DAT_1832a5108 + lVar16) = fVar29;
        if (((bVar8) &&
            (uVar14 = (ulonglong)(int)uVar10,
            0 < (int)(&DAT_1832a4dd8)[uVar14 * 10 + uVar24 * 0x1bfe])) &&
           (0 < (int)(&DAT_1832a4dd8)[(uVar14 ^ 1) * 10 + uVar24 * 0x1bfe])) {
          lVar26 = (longlong)(int)(&DAT_1832a4ddc)[(uVar14 ^ 1) * 10 + uVar24 * 0x1bfe];
          if (((*(int *)(&DAT_182a7e29c +
                        ((longlong)
                         (int)(&DAT_182bbb194)
                              [(longlong)(int)(&DAT_1832a4ddc)[uVar14 * 10 + uVar24 * 0x1bfe] *
                               0x6e0] * 0x4f4 + (longlong)(int)(&DAT_182bbb194)[lVar26 * 0x6e0]) * 4
                        ) != 0) &&
              (*(int *)(&DAT_182a7e190 + (longlong)(int)(&DAT_182bbb194)[lVar26 * 0x6e0] * 0x13d0)
               != 0)) && (0 < (int)(&DAT_182bbb1b4)[lVar26 * 0x6e0])) {
            lVar22 = (longlong)
                     (int)(&DAT_182bbb1b4)
                          [lVar26 * 0x6e0 + (longlong)(int)(&DAT_182bbb1b4)[lVar26 * 0x6e0]];
            if ((uint)(&DAT_182bbb1b4)
                      [lVar26 * 0x6e0 + (longlong)(int)(&DAT_182bbb1b4)[lVar26 * 0x6e0]] < 0x400) {
              if ((&DAT_182bbb1a8)[lVar22 * 0x6e0] == -1) {
                if ((&DAT_182bbb1a4)[lVar22 * 0x6e0] == -1) goto LAB_1400a8eb5;
                FUN_1400ca7c0(lVar22,(&DAT_182bbb1a4)[lVar22 * 0x6e0],
                              (&DAT_182bbb1ac)[lVar22 * 0x6e0]);
              }
              else {
                FUN_1400ca9b0();
              }
              if (DAT_1ad04adc0 != 0) {
                (&DAT_18329b1e0)[lVar22] = (&DAT_18329b1e0)[lVar22] + 1;
              }
            }
LAB_1400a8eb5:
            *(undefined4 *)(&DAT_1832a5108 + lVar16) = 0;
            fVar29 = 0.0;
          }
        }
        iVar9 = FUN_1400a85e0(uVar11 & 0xffffffff,1,uVar10,0);
        fVar27 = DAT_1402783f4;
        if (iVar9 == 0) {
          *(undefined4 *)(&DAT_1832a5108 + lVar16) = 0x3f800000;
        }
        else if (fVar29 < DAT_1402783f4) goto LAB_1400a916c;
        uVar14 = (ulonglong)(int)uVar10;
        uVar18 = uVar14 ^ 1;
        if (((int)(&DAT_1832a4dd8)[uVar14 * 10 + uVar24 * 0x1bfe] < 1) ||
           ((int)(&DAT_1832a4dd8)[uVar18 * 10 + uVar24 * 0x1bfe] < 1)) {
          if (((&DAT_1832a4dd8)[uVar14 * 10 + uVar24 * 0x1bfe] == 0) &&
             (0 < (int)(&DAT_1832a4dd8)[uVar18 * 10 + uVar24 * 0x1bfe])) {
            lVar16 = (longlong)(int)(&DAT_1832a4ddc)[uVar18 * 10 + uVar24 * 0x1bfe];
            if (((0 < (int)(&DAT_182bbb1b4)[lVar16 * 0x6e0]) &&
                (*(int *)(&DAT_182a7e29c +
                         ((longlong)
                          (int)(&DAT_182bbb194)
                               [(longlong)*(int *)(&DAT_182bbb1b8 + lVar16 * 0x1b80) * 0x6e0] *
                          0x4f4 + (longlong)(int)(&DAT_182bbb194)[lVar16 * 0x6e0]) * 4) != 0)) &&
               (iVar9 = FUN_1400e35d0((&DAT_182bbb1b4)
                                      [lVar16 * 0x6e0 +
                                       (longlong)(int)(&DAT_182bbb1b4)[lVar16 * 0x6e0]],0xffffffff,
                                      uVar11 & 0xffffffff,uVar10), iVar9 != 0)) {
              iVar9 = *(int *)(&DAT_182a7e190 +
                              (longlong)
                              (int)(&DAT_182bbb194)
                                   [(longlong)(int)(&DAT_1832a4ddc)[uVar18 * 10 + uVar24 * 0x1bfe] *
                                    0x6e0] * 0x13d0);
              goto joined_r0x0001400a912a;
            }
          }
        }
        else {
          lVar16 = (longlong)(int)(&DAT_1832a4ddc)[uVar18 * 10 + uVar24 * 0x1bfe];
          if (*(int *)(&DAT_182a7e29c +
                      ((longlong)
                       (int)(&DAT_182bbb194)
                            [(longlong)(int)(&DAT_1832a4ddc)[uVar14 * 10 + uVar24 * 0x1bfe] * 0x6e0]
                       * 0x4f4 + (longlong)(int)(&DAT_182bbb194)[lVar16 * 0x6e0]) * 4) != 0) {
            if (((*(int *)(&DAT_182a7e190 + (longlong)(int)(&DAT_182bbb194)[lVar16 * 0x6e0] * 0x13d0
                          ) != 0) && (0 < (int)(&DAT_182bbb1b4)[lVar16 * 0x6e0])) &&
               (lVar26 = (longlong)
                         (int)(&DAT_182bbb1b4)
                              [lVar16 * 0x6e0 + (longlong)(int)(&DAT_182bbb1b4)[lVar16 * 0x6e0]],
               (uint)(&DAT_182bbb1b4)
                     [lVar16 * 0x6e0 + (longlong)(int)(&DAT_182bbb1b4)[lVar16 * 0x6e0]] < 0x400)) {
              if ((&DAT_182bbb1a8)[lVar26 * 0x6e0] == -1) {
                if ((&DAT_182bbb1a4)[lVar26 * 0x6e0] == -1) goto LAB_1400a9002;
                FUN_1400ca7c0(lVar26,(&DAT_182bbb1a4)[lVar26 * 0x6e0],
                              (&DAT_182bbb1ac)[lVar26 * 0x6e0]);
              }
              else {
                FUN_1400ca9b0();
              }
              if (DAT_1ad04adc0 != 0) {
                (&DAT_18329b1e0)[lVar26] = (&DAT_18329b1e0)[lVar26] + 1;
              }
            }
LAB_1400a9002:
            iVar9 = FUN_1400e35d0((&DAT_1832a4ddc)[uVar18 * 10 + uVar24 * 0x1bfe],
                                  (&DAT_1832a4ddc)[uVar14 * 10 + uVar24 * 0x1bfe],0xffffffff,0);
            if (iVar9 != 0) {
              iVar9 = *(int *)(&DAT_182a7e190 +
                              (longlong)
                              (int)(&DAT_182bbb194)
                                   [(longlong)(int)(&DAT_1832a4ddc)[uVar18 * 10 + uVar24 * 0x1bfe] *
                                    0x6e0] * 0x13d0);
              fVar28 = fVar27;
joined_r0x0001400a912a:
              if (iVar9 != 0) {
                FUN_1400515e0(DAT_183e936ac,
                              &DAT_182bbb1dc +
                              (longlong)(int)(&DAT_1832a4ddc)[uVar14 * 10 + uVar24 * 0x1bfe] * 0x6e0
                              ,fVar27,fVar28);
              }
            }
          }
        }
      }
      *(uint *)(&DAT_1832a50fc + lVar15) = *(int *)(&DAT_1832a50fc + lVar15) + 1U & 7;
LAB_1400a916c:
      *(uint *)(&DAT_1832a50f4 + lVar15) = uVar10;
      return;
    }
    if (iVar12 == 0) {
      uVar10 = *(uint *)(&DAT_1832a512c + lVar16);
      if (1 < (int)uVar10) {
        uVar14 = (ulonglong)(uVar10 != 2);
        uVar11 = (ulonglong)(uVar10 != 2 ^ 1);
        if ((&DAT_1832a4dd8)[uVar14 * 10 + uVar24 * 0x1bfe] != 0) {
          uVar11 = uVar14;
        }
        uVar10 = (uint)uVar11;
        if ((&DAT_1832a4dd8)[uVar11 * 10 + uVar24 * 0x1bfe] == 0) {
          uVar10 = uVar19;
        }
        *(uint *)(&DAT_1832a512c + lVar16) = uVar10;
      }
      if (uVar10 == 0xffffffff) goto LAB_1400a96f0;
      fVar28 = *(float *)(&DAT_18329e378 + lVar15);
      if (((double)fVar28 <= _DAT_140278c48) || (DAT_140278470 <= (double)fVar28))
      goto LAB_1400a9295;
      if ((0 < (int)(&DAT_1832a4dd8)[(longlong)(int)uVar10 * 10 + uVar24 * 0x1bfe]) &&
         (lVar16 = (longlong)(int)(&DAT_1832a4ddc)[(longlong)(int)uVar10 * 10 + uVar24 * 0x1bfe],
         (uint)(&DAT_1832a4ddc)[(longlong)(int)uVar10 * 10 + uVar24 * 0x1bfe] < 0x400)) {
        if ((&DAT_182bbb1a8)[lVar16 * 0x6e0] == -1) {
          if ((&DAT_182bbb1a4)[lVar16 * 0x6e0] == -1) goto LAB_1400a9276;
          FUN_1400ca7c0(lVar16,(&DAT_182bbb1a4)[lVar16 * 0x6e0],(&DAT_182bbb1ac)[lVar16 * 0x6e0]);
        }
        else {
          FUN_1400ca9b0();
        }
        if (DAT_1ad04adc0 != 0) {
          (&DAT_18329b1e0)[lVar16] = (&DAT_18329b1e0)[lVar16] + 1;
        }
      }
LAB_1400a9276:
      *(uint *)(&DAT_1832a50fc + lVar15) = *(int *)(&DAT_1832a50fc + lVar15) + 1U & 7;
      fVar28 = *(float *)(&DAT_18329e378 + lVar15);
LAB_1400a9295:
      dVar30 = (double)fVar28;
      if (dVar30 < _DAT_140278c38) {
        *(float *)(&DAT_18329e378 + lVar15) = (float)(dVar30 + _DAT_140278498);
        return;
      }
      if (DAT_140278480 < dVar30) {
        *(float *)(&DAT_18329e378 + lVar15) = (float)(dVar30 - DAT_140278480);
        return;
      }
      *(undefined4 *)(&DAT_18329e378 + lVar15) = 0;
      return;
    }
    if (iVar12 != 3) {
      return;
    }
    if ((&DAT_18329e330)[uVar24 * 0x1bfe] != -1) goto LAB_1400a96f0;
    uVar18 = 0;
    do {
      if ((((piVar20[-9] != 0) && (*piVar20 == -1)) && (piVar20[1] == -1)) &&
         (fVar29 = (float)FUN_14007aba0(), fVar29 < fVar28)) {
        uVar14 = uVar18;
        fVar28 = fVar29;
      }
      uVar19 = (int)uVar18 + 1;
      uVar18 = (ulonglong)uVar19;
      piVar20 = piVar20 + 0x6e0;
    } while ((int)uVar19 < 0x400);
    if ((int)uVar14 == -1) {
      pfVar21 = (float *)&DAT_15f2d9230;
      iVar9 = 0;
      fVar28 = DAT_1402783a0;
      fVar29 = DAT_140278454;
      do {
        if (pfVar21[-0xc] != 0.0) {
          fVar27 = pfVar21[0x142b];
          iVar12 = 0;
          if (0 < (int)fVar27) {
            fVar1 = pfVar21[5];
            pfVar23 = pfVar21 + 0x142d;
            fVar2 = pfVar21[-1];
            fVar3 = pfVar21[6];
            fVar4 = *pfVar21;
            fVar5 = pfVar21[7];
            do {
              fVar34 = pfVar23[-1];
              fVar6 = *pfVar23;
              fVar7 = pfVar23[1];
              fVar32 = fVar3 * fVar34 + fVar4 + fVar6 * pfVar21[9] + fVar7 * pfVar21[0xc];
              fVar35 = (float)(&DAT_18329e8d8)[uVar24 * 0x1bfe] -
                       *(float *)(&DAT_18329e920 + lVar15) * fVar28;
              fVar33 = fVar5 * fVar34 + pfVar21[1] + fVar6 * pfVar21[10] + fVar7 * pfVar21[0xd];
              fVar36 = (float)(&DAT_18329e8dc)[uVar24 * 0x1bfe] -
                       *(float *)(&DAT_18329e924 + lVar15) * fVar28;
              fVar31 = fVar32 - fVar35;
              fVar28 = fVar33 - fVar36;
              fVar34 = (fVar1 * fVar34 + fVar2 + fVar6 * pfVar21[8] + fVar7 * pfVar21[0xb]) -
                       ((float)(&DAT_18329e8d4)[uVar24 * 0x1bfe] -
                       *(float *)(&DAT_18329e91c + lVar15) * DAT_1402783a0);
              fVar34 = fVar34 * fVar34;
              if (SQRT(fVar31 * fVar31 + fVar34 + fVar28 * fVar28) < fVar29) {
                piVar20 = &DAT_18329e330;
                do {
                  if (((piVar20[-10] != 0) && (*piVar20 == iVar9)) && (piVar20[1] == iVar12))
                  goto LAB_1400a9694;
                  piVar20 = piVar20 + 0x1bfe;
                } while ((longlong)piVar20 < 0x18399db30);
                fVar32 = fVar32 - fVar35;
                (&DAT_18329e330)[uVar24 * 0x1bfe] = iVar9;
                fVar33 = fVar33 - fVar36;
                (&DAT_18329e334)[uVar24 * 0x1bfe] = iVar12;
                fVar29 = SQRT(fVar32 * fVar32 + fVar34 + fVar33 * fVar33);
              }
LAB_1400a9694:
              iVar12 = iVar12 + 1;
              pfVar23 = pfVar23 + 3;
              fVar28 = DAT_1402783a0;
            } while (iVar12 < (int)fVar27);
          }
        }
        iVar9 = iVar9 + 1;
        pfVar21 = pfVar21 + 0x145a;
      } while (iVar9 < 0x200);
      goto LAB_1400a96f0;
    }
    uVar19 = (&DAT_182bbb194)[(longlong)(int)uVar14 * 0x6e0];
    if (((uVar19 - 0x27 & 0xfffffffc) == 0) && (uVar19 != 0x28)) goto LAB_1400a96f0;
    iVar9 = *(int *)(&DAT_1832a512c + lVar16);
    if (iVar9 == 3) {
      lVar26 = (longlong)(int)uVar19 * 0x13d0;
      if ((uVar19 < 0x25) && ((0x100200e000U >> ((longlong)(int)uVar19 & 0x3fU) & 1) != 0)) {
LAB_1400a943f:
        uVar18 = 0;
      }
      else {
        uVar18 = 0;
        if (*(int *)(&DAT_182a7e190 + lVar26) == 0) {
          uVar18 = (ulonglong)(0 < *(int *)(&DAT_182a7e1a4 + lVar26));
        }
        if (uVar19 == 0x10) goto LAB_1400a943f;
      }
      uVar13 = (ulonglong)((uint)uVar18 ^ 1);
      if ((int)(&DAT_1832a4dd8)[uVar18 * 10 + uVar24 * 0x1bfe] < 1) {
        uVar13 = uVar18;
      }
      iVar9 = (int)uVar13;
      *(int *)(&DAT_1832a512c + lVar16) = iVar9;
    }
    if ((&DAT_1832a4dd8)[(longlong)iVar9 * 10 + uVar24 * 0x1bfe] == 0) {
      FUN_1400e35d0(uVar14,0xffffffff,uVar11 & 0xffffffff);
    }
LAB_1400a96f0:
    *(uint *)(&DAT_1832a50fc + lVar15) = *(int *)(&DAT_1832a50fc + lVar15) + 1U & 7;
    return;
  }
  iVar9 = *(int *)(&DAT_1832a512c + lVar16);
  iVar12 = *(int *)(&DAT_1832a5130 + lVar16);
  lVar26 = (longlong)iVar12;
  if (1 < iVar9) {
    uVar18 = 1;
    iVar25 = (&DAT_1832a4dd8)[(lVar26 + 2) * 10 + uVar24 * 0x1bfe];
    if (((0 < iVar25) &&
        (0 < *(int *)(&DAT_182a7e1a4 +
                     (longlong)
                     (int)(&DAT_182bbb194)
                          [(longlong)(int)(&DAT_1832a4ddc)[(lVar26 + 2) * 10 + uVar24 * 0x1bfe] *
                           0x6e0] * 0x13d0))) &&
       (uVar18 = 1,
       1 < (&DAT_182bbb194)
           [(longlong)(int)(&DAT_1832a4ddc)[(lVar26 + 2) * 10 + uVar24 * 0x1bfe] * 0x6e0] - 0xd)) {
      uVar18 = 0;
    }
    uVar13 = (ulonglong)((uint)uVar18 ^ 1);
    if ((&DAT_1832a4dd8)[uVar18 * 10 + uVar24 * 0x1bfe] != 0) {
      uVar13 = uVar18;
    }
    uVar18 = (ulonglong)((uint)uVar13 ^ 1);
    if (iVar9 != 2) {
      uVar18 = uVar13;
    }
    if ((int)(&DAT_1832a4dd8)[uVar18 * 10 + uVar24 * 0x1bfe] < 1) {
      if ((((&DAT_1832a4dd8)[uVar18 * 10 + uVar24 * 0x1bfe] != 0) ||
          (*(int *)(&DAT_1832a4f28 + uVar18 * 0x38 + lVar15) != 0)) || (iVar25 < 1))
      goto LAB_1400a8ade;
    }
    else if ((*(int *)(&DAT_182a7e75c +
                      ((longlong)
                       (int)(&DAT_182bbb194)
                            [(longlong)(int)(&DAT_1832a4ddc)[uVar18 * 10 + uVar24 * 0x1bfe] * 0x6e0]
                       * 0x4f4 + lVar26) * 4) == 0) || (1 < iVar25)) {
LAB_1400a8ade:
      uVar19 = (uint)uVar18 ^ 1;
      iVar9 = FUN_1400a85e0(uVar11 & 0xffffffff,2,uVar19,iVar12);
      uVar18 = (ulonglong)uVar19;
      if (iVar9 == 0) {
        uVar18 = uVar14;
      }
    }
    iVar9 = (int)uVar18;
    *(int *)(&DAT_1832a512c + lVar16) = iVar9;
  }
  if (iVar9 != -1) {
    fVar28 = *(float *)(&DAT_1832a5108 + lVar16) + DAT_1402781c4;
    lVar22 = (longlong)iVar9;
    *(float *)(&DAT_1832a5108 + lVar16) = fVar28;
    iVar25 = (&DAT_1832a4dd8)[lVar22 * 10 + uVar24 * 0x1bfe];
    if (iVar25 < 1) {
      if (((iVar25 != 0) || (*(int *)(&DAT_1832a4f28 + lVar22 * 0x38 + lVar15) != 0)) ||
         ((int)(&DAT_1832a4e28)[lVar26 * 10 + uVar24 * 0x1bfe] < 1)) goto LAB_1400a8b8b;
LAB_1400a8c06:
      if (fVar28 < DAT_1402783f4) goto LAB_1400a8c6e;
    }
    else {
      if ((*(int *)(&DAT_182a7e75c +
                   ((longlong)
                    (int)(&DAT_182bbb194)
                         [(longlong)(int)(&DAT_1832a4ddc)[lVar22 * 10 + uVar24 * 0x1bfe] * 0x6e0] *
                    0x4f4 + lVar26) * 4) != 0) &&
         ((int)(&DAT_1832a4e28)[lVar26 * 10 + uVar24 * 0x1bfe] < 2)) goto LAB_1400a8c06;
LAB_1400a8b8b:
      *(undefined4 *)(&DAT_1832a5108 + lVar16) = 0x3f800000;
      iVar25 = (&DAT_1832a4dd8)[lVar22 * 10 + uVar24 * 0x1bfe];
    }
    if (iVar25 < 1) {
      if (((iVar25 == 0) && (*(int *)(&DAT_1832a4f28 + lVar22 * 0x38 + lVar15) == 0)) &&
         (0 < (int)(&DAT_1832a4dd8)[(lVar26 + 2) * 10 + uVar24 * 0x1bfe])) {
        uVar24 = (ulonglong)(uint)(&DAT_1832a4ddc)[(lVar26 + 2) * 10 + uVar24 * 0x1bfe];
        iVar25 = iVar9;
        goto LAB_1400a8c47;
      }
    }
    else {
      uVar24 = (ulonglong)(int)(&DAT_1832a4ddc)[lVar22 * 10 + uVar24 * 0x1bfe];
      if (*(int *)(&DAT_182a7e75c +
                  ((longlong)(int)(&DAT_182bbb194)[uVar24 * 0x6e0] * 0x4f4 + lVar26) * 4) != 0) {
        iVar25 = iVar12 + 2;
LAB_1400a8c47:
        FUN_1400e35d0(uVar24,0xffffffff,uVar11 & 0xffffffff,iVar25);
      }
    }
  }
  *(uint *)(&DAT_1832a50fc + lVar15) = *(int *)(&DAT_1832a50fc + lVar15) + 1U & 7;
LAB_1400a8c6e:
  *(int *)(&DAT_1832a50f4 + lVar15) = iVar9;
  *(int *)(&DAT_1832a50f8 + lVar15) = iVar12;
  return;
}



===== FUN_1401307d0 @ 1401307d0 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_1401307d0(int param_1,char *param_2)

{
  uint *puVar1;
  char cVar2;
  uint uVar3;
  undefined8 uVar4;
  undefined2 uVar5;
  undefined8 uVar6;
  float fVar7;
  char cVar8;
  int iVar9;
  uint uVar10;
  undefined4 uVar11;
  char *pcVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  int *piVar15;
  int iVar16;
  longlong lVar17;
  uint uVar18;
  longlong lVar19;
  longlong lVar20;
  longlong lVar21;
  ulonglong uVar22;
  longlong lVar23;
  int *piVar24;
  undefined1 auStack_3d8 [32];
  undefined4 *local_3b8;
  uint local_3a8 [2];
  undefined8 local_3a0;
  float local_398;
  longlong local_390;
  longlong local_388;
  undefined4 local_380;
  undefined4 uStack_37c;
  undefined4 uStack_378;
  undefined4 uStack_374;
  undefined4 local_370;
  undefined4 uStack_36c;
  undefined4 uStack_368;
  undefined4 uStack_364;
  undefined4 local_360;
  undefined8 local_358;
  undefined8 uStack_350;
  undefined8 local_348;
  undefined8 uStack_340;
  undefined4 local_338;
  undefined4 uStack_334;
  undefined4 uStack_330;
  undefined4 uStack_32c;
  undefined4 local_328;
  undefined4 uStack_324;
  undefined4 uStack_320;
  undefined4 uStack_31c;
  char local_258 [512];
  ulonglong local_58;
  
  local_58 = DAT_1403020a0 ^ (ulonglong)auStack_3d8;
  lVar19 = (longlong)param_1;
  if (param_1 == -1) {
    return 0;
  }
  lVar23 = lVar19 * 0x3834;
  if (0 < (int)(&DAT_151620ca0)[lVar19 * 0xe0d]) {
    return 1;
  }
  param_2[0x3f] = '\0';
  lVar17 = -1;
  do {
    lVar17 = lVar17 + 1;
  } while (param_2[lVar17] != '\0');
  uVar18 = 0;
  local_3a8[0] = 0;
  local_3a0 = param_2;
  local_390 = lVar23;
  local_388 = lVar19;
  if ((int)lVar17 < 0x40) {
    if (0 < (int)lVar17) goto LAB_140130892;
  }
  else {
    lVar17 = 0x3f;
LAB_140130892:
    do {
      iVar9 = tolower((int)param_2[(int)local_3a8[0]]);
      *(char *)((longlong)&local_358 + (longlong)(int)local_3a8[0]) = (char)iVar9;
      local_3a8[0] = local_3a8[0] + 1;
    } while ((int)local_3a8[0] < (int)lVar17);
  }
  if (0xff < (ulonglong)(longlong)(int)lVar17) {
                    /* WARNING: Subroutine does not return */
    __report_rangecheckfailure();
  }
  *(undefined1 *)((longlong)&local_358 + (longlong)(int)lVar17) = 0;
  local_3a8[0] = 0;
  (&DAT_151624438)[lVar23] = 0;
  lVar17 = -1;
  do {
    lVar21 = lVar17 + 1;
    lVar20 = lVar17 + 1;
    lVar17 = lVar21;
  } while (*(char *)((longlong)&local_358 + lVar20) != '\0');
  iVar9 = (int)lVar21 + -5;
  uVar10 = uVar18;
  if (0 < iVar9) {
    do {
      if ((((*(char *)((longlong)&local_358 + (longlong)(int)uVar10) == 'n') &&
           (*(char *)((longlong)&local_358 + (longlong)(int)(uVar10 + 1)) == 'i')) &&
          (*(char *)((longlong)&local_358 + (longlong)(int)(uVar10 + 2)) == 'g')) &&
         (((*(char *)((longlong)&local_358 + (longlong)(int)(uVar10 + 3)) == 'g' &&
           (*(char *)((longlong)&local_358 + (longlong)(int)(uVar10 + 4)) == 'e')) &&
          (*(char *)((longlong)&local_358 + (longlong)(int)(uVar10 + 5)) == 'r')))) {
        pcVar12 = param_2;
        do {
          cVar8 = *pcVar12;
          pcVar12[(longlong)(&DAT_151624438 + (lVar23 - (longlong)param_2))] = cVar8;
          pcVar12 = pcVar12 + 1;
        } while (cVar8 != '\0');
        *(undefined8 *)param_2 = s_i_m_an_idiot_140273be8._0_8_;
        *(undefined4 *)(param_2 + 8) = s_i_m_an_idiot_140273be8._8_4_;
        param_2[0xc] = s_i_m_an_idiot_140273be8[0xc];
      }
      local_3a8[0] = uVar10 + 1;
      uVar10 = local_3a8[0];
    } while ((int)local_3a8[0] < iVar9);
  }
  if (*param_2 != '/') {
    return 0;
  }
  iVar9 = strncmp(param_2,"/admin ",7);
  if (((iVar9 == 0) &&
      (*(int *)(&DAT_151620c98 + lVar23) = *(int *)(&DAT_151620c98 + lVar23) + 1,
      *(int *)(&DAT_151620c98 + lVar23) < 5)) && (DAT_151e45d4c != '\0')) {
    pcVar12 = param_2 + 7;
    lVar17 = (longlong)&DAT_151e45d4c - (longlong)pcVar12;
    do {
      cVar8 = *pcVar12;
      cVar2 = pcVar12[lVar17];
      if (cVar8 != cVar2) break;
      pcVar12 = pcVar12 + 1;
    } while (cVar2 != '\0');
    if (cVar8 == cVar2) {
      uVar10 = 0xffffffff;
      local_3a8[0] = 0;
      uVar3 = uVar10;
      if (0 < DAT_1ad04ada0) {
        do {
          uVar10 = uVar18;
          if ((&DAT_1a8e3da38)[(longlong)(int)uVar18 * 0xb878] != param_1) {
            uVar10 = uVar3;
          }
          local_3a8[0] = uVar18 + 1;
          uVar3 = uVar10;
          uVar18 = local_3a8[0];
        } while ((int)local_3a8[0] < DAT_1ad04ada0);
      }
      *(undefined4 *)(&DAT_151620c94 + lVar23) = 1;
      if (uVar10 != 0xffffffff) {
        (&DAT_1a8e3da34)[(longlong)(int)uVar10 * 0xb878] = 1;
      }
      FUN_140158ab0(&local_358,"%s admin",&DAT_151620c64 + lVar19 * 0xe0d);
      uVar18 = DAT_189c1dc64;
      uVar11 = DAT_183ebfd34;
      if (DAT_1ad04adc0 != 0) {
        lVar17 = -1;
        do {
          lVar21 = lVar17 + 1;
          lVar20 = lVar17 + 1;
          lVar17 = lVar21;
        } while (*(char *)((longlong)&local_358 + lVar20) != '\0');
        lVar17 = (longlong)(int)DAT_189c1dc64;
        iVar9 = (int)lVar21;
        if (0x3f < iVar9) {
          iVar9 = 0x3f;
        }
        lVar20 = lVar17 * 0x80;
        (&DAT_1873de460)[lVar17 * 0x20] = 2;
        (&DAT_1873de464)[lVar17 * 0x20] = uVar11;
        FUN_1401fc920(&DAT_1873de4a0 + lVar20,&local_358,(longlong)iVar9);
        DAT_189c1dc64._0_2_ = (short)uVar18 + 1;
        (&DAT_1873de4a0)[iVar9 + lVar20] = 0;
        (&DAT_1873de480)[lVar17 * 0x20] = iVar9;
        DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
        (&DAT_1873de484)[lVar17 * 0x20] = 4;
        *(undefined4 *)(&DAT_1873de488 + lVar20) = 0xffffffff;
        *(undefined4 *)(&DAT_1873de48c + lVar20) = 0;
      }
    }
  }
  if (*(int *)(&DAT_151620c94 + lVar23) == 0) {
    return 1;
  }
  iVar9 = strncmp(param_2,"/hlist",6);
  if (iVar9 == 0) {
    local_3a8[0] = 0;
    do {
      if ((&DAT_18329e308)[(longlong)(int)local_3a8[0] * 0x1bfe] != 0) {
        if ((&DAT_18329e310)[(longlong)(int)local_3a8[0] * 0x1bfe] == -1) {
          FUN_140158ab0(&local_358,"%d:%d",local_3a8[0]);
        }
        else {
          local_3b8 = &DAT_151620c64 +
                      (longlong)(int)(&DAT_18329e310)[(longlong)(int)local_3a8[0] * 0x1bfe] * 0xe0d;
          FUN_140158ab0(&local_358,"%d:%d %s",local_3a8[0]);
        }
        uVar18 = DAT_189c1dc64;
        uVar11 = DAT_183ebfd34;
        if (DAT_1ad04adc0 != 0) {
          lVar19 = -1;
          do {
            lVar17 = lVar19 + 1;
            lVar23 = lVar19 + 1;
            lVar19 = lVar17;
          } while (*(char *)((longlong)&local_358 + lVar23) != '\0');
          lVar19 = (longlong)(int)DAT_189c1dc64;
          iVar9 = (int)lVar17;
          if (0x3f < iVar9) {
            iVar9 = 0x3f;
          }
          lVar23 = lVar19 * 0x80;
          (&DAT_1873de460)[lVar19 * 0x20] = 2;
          (&DAT_1873de464)[lVar19 * 0x20] = uVar11;
          FUN_1401fc920(&DAT_1873de4a0 + lVar23,&local_358,(longlong)iVar9);
          DAT_189c1dc64._0_2_ = (short)uVar18 + 1;
          (&DAT_1873de4a0)[iVar9 + lVar23] = 0;
          (&DAT_1873de480)[lVar19 * 0x20] = iVar9;
          (&DAT_1873de484)[lVar19 * 0x20] = 4;
          *(undefined4 *)(&DAT_1873de488 + lVar23) = 0xffffffff;
          *(undefined4 *)(&DAT_1873de48c + lVar23) = 0;
          DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
        }
      }
      local_3a8[0] = local_3a8[0] + 1;
      lVar23 = local_390;
      lVar19 = local_388;
      param_2 = local_3a0;
    } while ((int)local_3a8[0] < 10);
  }
  iVar9 = strncmp(param_2,"/list1",6);
  if ((iVar9 == 0) && (local_3a8[0] = 0, 0 < DAT_1ad04ada0)) {
    do {
      if (((int)local_3a8[0] < 10) &&
         ((iVar9 = (&DAT_1a8e3da38)[(longlong)(int)local_3a8[0] * 0xb878], iVar9 != -1 &&
          (FUN_140158ab0(&local_358,"%s  %d",&DAT_151620c64 + (longlong)iVar9 * 0xe0d,
                         (&DAT_151620c90)[(longlong)iVar9 * 0xe0d]), uVar18 = DAT_189c1dc64,
          uVar11 = DAT_183ebfd34, DAT_1ad04adc0 != 0)))) {
        lVar19 = -1;
        do {
          lVar17 = lVar19 + 1;
          lVar23 = lVar19 + 1;
          lVar19 = lVar17;
        } while (*(char *)((longlong)&local_358 + lVar23) != '\0');
        lVar19 = (longlong)(int)DAT_189c1dc64;
        iVar9 = (int)lVar17;
        if (0x3f < iVar9) {
          iVar9 = 0x3f;
        }
        lVar23 = lVar19 * 0x80;
        (&DAT_1873de460)[lVar19 * 0x20] = 2;
        (&DAT_1873de464)[lVar19 * 0x20] = uVar11;
        FUN_1401fc920(&DAT_1873de4a0 + lVar23,&local_358,(longlong)iVar9);
        DAT_189c1dc64._0_2_ = (short)uVar18 + 1;
        (&DAT_1873de4a0)[iVar9 + lVar23] = 0;
        (&DAT_1873de480)[lVar19 * 0x20] = iVar9;
        (&DAT_1873de484)[lVar19 * 0x20] = 4;
        *(undefined4 *)(&DAT_1873de488 + lVar23) = 0xffffffff;
        *(undefined4 *)(&DAT_1873de48c + lVar23) = 0;
        DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
      }
      local_3a8[0] = local_3a8[0] + 1;
      lVar23 = local_390;
      lVar19 = local_388;
    } while ((int)local_3a8[0] < DAT_1ad04ada0);
  }
  iVar9 = strncmp(param_2,"/list2",6);
  if ((iVar9 == 0) && (local_3a8[0] = 10, 10 < DAT_1ad04ada0)) {
    do {
      if ((((int)local_3a8[0] < 0x14) &&
          (iVar9 = (&DAT_1a8e3da38)[(longlong)(int)local_3a8[0] * 0xb878], iVar9 != -1)) &&
         (FUN_140158ab0(&local_358,"%s  %d",&DAT_151620c64 + (longlong)iVar9 * 0xe0d,
                        (&DAT_151620c90)[(longlong)iVar9 * 0xe0d]), uVar18 = DAT_189c1dc64,
         uVar11 = DAT_183ebfd34, DAT_1ad04adc0 != 0)) {
        lVar19 = -1;
        do {
          lVar17 = lVar19 + 1;
          lVar23 = lVar19 + 1;
          lVar19 = lVar17;
        } while (*(char *)((longlong)&local_358 + lVar23) != '\0');
        lVar19 = (longlong)(int)DAT_189c1dc64;
        iVar9 = (int)lVar17;
        if (0x3f < iVar9) {
          iVar9 = 0x3f;
        }
        lVar23 = lVar19 * 0x80;
        (&DAT_1873de460)[lVar19 * 0x20] = 2;
        (&DAT_1873de464)[lVar19 * 0x20] = uVar11;
        FUN_1401fc920(&DAT_1873de4a0 + lVar23,&local_358,(longlong)iVar9);
        DAT_189c1dc64._0_2_ = (short)uVar18 + 1;
        (&DAT_1873de4a0)[iVar9 + lVar23] = 0;
        (&DAT_1873de480)[lVar19 * 0x20] = iVar9;
        (&DAT_1873de484)[lVar19 * 0x20] = 4;
        *(undefined4 *)(&DAT_1873de488 + lVar23) = 0xffffffff;
        *(undefined4 *)(&DAT_1873de48c + lVar23) = 0;
        DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
      }
      local_3a8[0] = local_3a8[0] + 1;
      lVar23 = local_390;
      lVar19 = local_388;
    } while ((int)local_3a8[0] < DAT_1ad04ada0);
  }
  iVar9 = strncmp(param_2,"/list3",6);
  if ((iVar9 == 0) && (local_3a8[0] = 0x14, 0x14 < DAT_1ad04ada0)) {
    do {
      if ((((int)local_3a8[0] < 0x1e) &&
          (iVar9 = (&DAT_1a8e3da38)[(longlong)(int)local_3a8[0] * 0xb878], iVar9 != -1)) &&
         (FUN_140158ab0(&local_358,"%s  %d",&DAT_151620c64 + (longlong)iVar9 * 0xe0d,
                        (&DAT_151620c90)[(longlong)iVar9 * 0xe0d]), uVar18 = DAT_189c1dc64,
         uVar11 = DAT_183ebfd34, DAT_1ad04adc0 != 0)) {
        lVar19 = -1;
        do {
          lVar17 = lVar19 + 1;
          lVar23 = lVar19 + 1;
          lVar19 = lVar17;
        } while (*(char *)((longlong)&local_358 + lVar23) != '\0');
        lVar19 = (longlong)(int)DAT_189c1dc64;
        iVar9 = (int)lVar17;
        if (0x3f < iVar9) {
          iVar9 = 0x3f;
        }
        lVar23 = lVar19 * 0x80;
        (&DAT_1873de460)[lVar19 * 0x20] = 2;
        (&DAT_1873de464)[lVar19 * 0x20] = uVar11;
        FUN_1401fc920(&DAT_1873de4a0 + lVar23,&local_358,(longlong)iVar9);
        DAT_189c1dc64._0_2_ = (short)uVar18 + 1;
        (&DAT_1873de4a0)[iVar9 + lVar23] = 0;
        (&DAT_1873de480)[lVar19 * 0x20] = iVar9;
        (&DAT_1873de484)[lVar19 * 0x20] = 4;
        *(undefined4 *)(&DAT_1873de488 + lVar23) = 0xffffffff;
        *(undefined4 *)(&DAT_1873de48c + lVar23) = 0;
        DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
      }
      local_3a8[0] = local_3a8[0] + 1;
      lVar23 = local_390;
      lVar19 = local_388;
    } while ((int)local_3a8[0] < DAT_1ad04ada0);
  }
  iVar9 = strncmp(param_2,"/list4",6);
  if ((iVar9 == 0) && (local_3a8[0] = 0x1e, 0x1e < DAT_1ad04ada0)) {
    do {
      iVar9 = (&DAT_1a8e3da38)[(longlong)(int)local_3a8[0] * 0xb878];
      if ((iVar9 != -1) &&
         (FUN_140158ab0(&local_358,"%s  %d",&DAT_151620c64 + (longlong)iVar9 * 0xe0d,
                        (&DAT_151620c90)[(longlong)iVar9 * 0xe0d]), uVar18 = DAT_189c1dc64,
         uVar11 = DAT_183ebfd34, DAT_1ad04adc0 != 0)) {
        lVar19 = -1;
        do {
          lVar17 = lVar19 + 1;
          lVar23 = lVar19 + 1;
          lVar19 = lVar17;
        } while (*(char *)((longlong)&local_358 + lVar23) != '\0');
        lVar19 = (longlong)(int)DAT_189c1dc64;
        iVar9 = (int)lVar17;
        if (0x3f < iVar9) {
          iVar9 = 0x3f;
        }
        lVar23 = lVar19 * 0x80;
        (&DAT_1873de460)[lVar19 * 0x20] = 2;
        (&DAT_1873de464)[lVar19 * 0x20] = uVar11;
        FUN_1401fc920(&DAT_1873de4a0 + lVar23,&local_358,(longlong)iVar9);
        DAT_189c1dc64._0_2_ = (short)uVar18 + 1;
        (&DAT_1873de4a0)[iVar9 + lVar23] = 0;
        (&DAT_1873de480)[lVar19 * 0x20] = iVar9;
        (&DAT_1873de484)[lVar19 * 0x20] = 4;
        *(undefined4 *)(&DAT_1873de488 + lVar23) = 0xffffffff;
        *(undefined4 *)(&DAT_1873de48c + lVar23) = 0;
        DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
      }
      local_3a8[0] = local_3a8[0] + 1;
      lVar23 = local_390;
      lVar19 = local_388;
    } while ((int)local_3a8[0] < DAT_1ad04ada0);
  }
  strncmp(param_2,"/traffic",8);
  iVar9 = strncmp(param_2,"/savereplay",0xb);
  if (iVar9 == 0) {
    if (param_2[0xb] == ' ') {
      pcVar12 = param_2 + 0xc;
      lVar17 = (longlong)&local_358 - (longlong)pcVar12;
      do {
        cVar8 = *pcVar12;
        pcVar12[lVar17] = cVar8;
        pcVar12 = pcVar12 + 1;
      } while (cVar8 != '\0');
      if ((((char)local_358 == '\0') ||
          (iVar9 = FUN_14015b070(&local_358,&DAT_1402734f8,local_3a8), iVar9 == -1)) ||
         (uVar18 = local_3a8[0], (int)local_3a8[0] < 0)) {
        uVar18 = DAT_144cbfaa8;
      }
    }
    else {
      uVar18 = DAT_144cbfaa8 + 1;
    }
    DAT_144cbfaa8 = uVar18;
    FUN_140158ab0(&local_358,"savereplay: %d",DAT_144cbfaa8);
    uVar18 = DAT_189c1dc64;
    uVar11 = DAT_183ebfd34;
    if (DAT_1ad04adc0 != 0) {
      lVar17 = -1;
      do {
        lVar21 = lVar17 + 1;
        lVar20 = lVar17 + 1;
        lVar17 = lVar21;
      } while (*(char *)((longlong)&local_358 + lVar20) != '\0');
      lVar17 = (longlong)(int)DAT_189c1dc64;
      iVar9 = (int)lVar21;
      if (0x3f < iVar9) {
        iVar9 = 0x3f;
      }
      lVar20 = lVar17 * 0x80;
      (&DAT_1873de460)[lVar17 * 0x20] = 2;
      (&DAT_1873de464)[lVar17 * 0x20] = uVar11;
      FUN_1401fc920(&DAT_1873de4a0 + lVar20,&local_358,(longlong)iVar9);
      DAT_189c1dc64._0_2_ = (short)uVar18 + 1;
      (&DAT_1873de4a0)[iVar9 + lVar20] = 0;
      (&DAT_1873de480)[lVar17 * 0x20] = iVar9;
      DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
      (&DAT_1873de484)[lVar17 * 0x20] = 4;
      *(undefined4 *)(&DAT_1873de488 + lVar20) = 0xffffffff;
      *(undefined4 *)(&DAT_1873de48c + lVar20) = 0;
    }
  }
  uVar18 = 0;
  iVar9 = strncmp(param_2,"/godmode",8);
  if (iVar9 == 0) {
    puVar1 = (uint *)(&DAT_151620cc0 + lVar23);
    *puVar1 = *puVar1 ^ 1;
    uVar11 = DAT_183ebfd34;
    uVar6 = s_godmode_off_140273ca8._0_8_;
    uVar4 = s_godmode_on_140273c98._0_8_;
    if (*puVar1 == 0) {
      if (DAT_1ad04adc0 == 0) goto LAB_140131540;
      lVar20 = (longlong)(int)DAT_189c1dc64;
      lVar17 = lVar20 * 0x80;
      (&DAT_1873de460)[lVar20 * 0x20] = 2;
      (&DAT_1873de464)[lVar20 * 0x20] = uVar11;
      uVar5 = s_godmode_off_140273ca8._8_2_;
      *(undefined8 *)(&DAT_1873de4a0 + lVar17) = uVar6;
      *(undefined2 *)(&DAT_1873de4a8 + lVar17) = uVar5;
      (&DAT_1873de4aa)[lVar17] = s_godmode_off_140273ca8[10];
      (&DAT_1873de4ab)[lVar17] = 0;
      (&DAT_1873de480)[lVar20 * 0x20] = 0xb;
    }
    else {
      if (DAT_1ad04adc0 == 0) goto LAB_140131540;
      lVar20 = (longlong)(int)DAT_189c1dc64;
      lVar17 = lVar20 * 0x80;
      (&DAT_1873de460)[lVar20 * 0x20] = 2;
      (&DAT_1873de464)[lVar20 * 0x20] = uVar11;
      uVar5 = s_godmode_on_140273c98._8_2_;
      *(undefined8 *)(&DAT_1873de4a0 + lVar17) = uVar4;
      *(undefined2 *)(&DAT_1873de4a8 + lVar17) = uVar5;
      (&DAT_1873de4aa)[lVar17] = 0;
      (&DAT_1873de480)[lVar20 * 0x20] = 10;
    }
    *(undefined4 *)((longlong)&DAT_1873de484 + lVar17) = 4;
    DAT_189c1dc64._0_2_ = (short)DAT_189c1dc64 + 1;
    *(undefined4 *)(&DAT_1873de488 + lVar17) = 0xffffffff;
    DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
    *(undefined4 *)(&DAT_1873de48c + lVar17) = 0;
  }
LAB_140131540:
  iVar9 = strncmp(param_2,"/heli",5);
  fVar7 = DAT_140278688;
  if ((iVar9 == 0) &&
     (lVar17 = (longlong)*(int *)((longlong)&DAT_151620cfc + lVar23),
     *(int *)((longlong)&DAT_151620cfc + lVar23) != -1)) {
    local_360 = 0x3f800000;
    local_3b8 = (undefined4 *)CONCAT44(local_3b8._4_4_,1);
    local_3a0 = (char *)CONCAT44((float)(&DAT_18329e530)[lVar17 * 0x1bfe] -
                                 (float)(&DAT_18329e578)[lVar17 * 0x1bfe] * DAT_140278688,
                                 (float)(&DAT_18329e52c)[lVar17 * 0x1bfe] -
                                 (float)(&DAT_18329e574)[lVar17 * 0x1bfe] * DAT_140278688);
    local_398 = (float)(&DAT_18329e534)[lVar17 * 0x1bfe] -
                (float)(&DAT_18329e57c)[lVar17 * 0x1bfe] * DAT_140278688;
    local_380 = _DAT_140278d30;
    uStack_37c = _UNK_140278d34;
    uStack_378 = _UNK_140278d38;
    uStack_374 = _UNK_140278d3c;
    local_370 = _DAT_140278d30;
    uStack_36c = _UNK_140278d34;
    uStack_368 = _UNK_140278d38;
    uStack_364 = _UNK_140278d3c;
    FUN_14005bca0(_DAT_140278d30,&local_3a0,0,&local_380);
  }
  iVar9 = strncmp(param_2,"/car",4);
  if ((iVar9 == 0) &&
     (lVar17 = (longlong)*(int *)((longlong)&DAT_151620cfc + lVar23),
     *(int *)((longlong)&DAT_151620cfc + lVar23) != -1)) {
    local_360 = 0x3f800000;
    local_3b8 = (undefined4 *)CONCAT44(local_3b8._4_4_,1);
    local_3a0 = (char *)CONCAT44((float)(&DAT_18329e530)[lVar17 * 0x1bfe] -
                                 (float)(&DAT_18329e578)[lVar17 * 0x1bfe] * fVar7,
                                 (float)(&DAT_18329e52c)[lVar17 * 0x1bfe] -
                                 (float)(&DAT_18329e574)[lVar17 * 0x1bfe] * fVar7);
    local_398 = (float)(&DAT_18329e534)[lVar17 * 0x1bfe] -
                (float)(&DAT_18329e57c)[lVar17 * 0x1bfe] * fVar7;
    local_380 = _DAT_140278d30;
    uStack_37c = _UNK_140278d34;
    uStack_378 = _UNK_140278d38;
    uStack_374 = _UNK_140278d3c;
    local_370 = _DAT_140278d30;
    uStack_36c = _UNK_140278d34;
    uStack_368 = _UNK_140278d38;
    uStack_364 = _UNK_140278d3c;
    FUN_14005bca0(_DAT_140278d30,&local_3a0,0,&local_380);
  }
  iVar9 = strncmp(param_2,"/beamer",7);
  if ((iVar9 == 0) &&
     (lVar17 = (longlong)*(int *)((longlong)&DAT_151620cfc + lVar23),
     *(int *)((longlong)&DAT_151620cfc + lVar23) != -1)) {
    local_360 = 0x3f800000;
    local_3b8 = (undefined4 *)CONCAT44(local_3b8._4_4_,1);
    local_3a0 = (char *)CONCAT44((float)(&DAT_18329e530)[lVar17 * 0x1bfe] -
                                 (float)(&DAT_18329e578)[lVar17 * 0x1bfe] * fVar7,
                                 (float)(&DAT_18329e52c)[lVar17 * 0x1bfe] -
                                 (float)(&DAT_18329e574)[lVar17 * 0x1bfe] * fVar7);
    local_398 = (float)(&DAT_18329e534)[lVar17 * 0x1bfe] -
                (float)(&DAT_18329e57c)[lVar17 * 0x1bfe] * fVar7;
    local_380 = _DAT_140278d30;
    uStack_37c = _UNK_140278d34;
    uStack_378 = _UNK_140278d38;
    uStack_374 = _UNK_140278d3c;
    local_370 = _DAT_140278d30;
    uStack_36c = _UNK_140278d34;
    uStack_368 = _UNK_140278d38;
    uStack_364 = _UNK_140278d3c;
    FUN_14005bca0(_DAT_140278d30,&local_3a0,0,&local_380);
  }
  iVar9 = strncmp(param_2,"/pickup",7);
  if ((iVar9 == 0) &&
     (lVar17 = (longlong)*(int *)((longlong)&DAT_151620cfc + lVar23),
     *(int *)((longlong)&DAT_151620cfc + lVar23) != -1)) {
    local_360 = 0x3f800000;
    local_3b8 = (undefined4 *)CONCAT44(local_3b8._4_4_,1);
    local_3a0 = (char *)CONCAT44((float)(&DAT_18329e530)[lVar17 * 0x1bfe] -
                                 (float)(&DAT_18329e578)[lVar17 * 0x1bfe] * fVar7,
                                 (float)(&DAT_18329e52c)[lVar17 * 0x1bfe] -
                                 (float)(&DAT_18329e574)[lVar17 * 0x1bfe] * fVar7);
    local_398 = (float)(&DAT_18329e534)[lVar17 * 0x1bfe] -
                (float)(&DAT_18329e57c)[lVar17 * 0x1bfe] * fVar7;
    local_380 = _DAT_140278d30;
    uStack_37c = _UNK_140278d34;
    uStack_378 = _UNK_140278d38;
    uStack_374 = _UNK_140278d3c;
    local_370 = _DAT_140278d30;
    uStack_36c = _UNK_140278d34;
    uStack_368 = _UNK_140278d38;
    uStack_364 = _UNK_140278d3c;
    FUN_14005bca0(_DAT_140278d30,&local_3a0,0,&local_380);
  }
  iVar9 = strncmp(param_2,"/turbo",6);
  if ((iVar9 == 0) &&
     (lVar17 = (longlong)*(int *)((longlong)&DAT_151620cfc + lVar23),
     *(int *)((longlong)&DAT_151620cfc + lVar23) != -1)) {
    local_360 = 0x3f800000;
    local_3b8 = (undefined4 *)CONCAT44(local_3b8._4_4_,1);
    local_3a0 = (char *)CONCAT44((float)(&DAT_18329e530)[lVar17 * 0x1bfe] -
                                 (float)(&DAT_18329e578)[lVar17 * 0x1bfe] * fVar7,
                                 (float)(&DAT_18329e52c)[lVar17 * 0x1bfe] -
                                 (float)(&DAT_18329e574)[lVar17 * 0x1bfe] * fVar7);
    local_398 = (float)(&DAT_18329e534)[lVar17 * 0x1bfe] -
                (float)(&DAT_18329e57c)[lVar17 * 0x1bfe] * fVar7;
    local_380 = _DAT_140278d30;
    uStack_37c = _UNK_140278d34;
    uStack_378 = _UNK_140278d38;
    uStack_374 = _UNK_140278d3c;
    local_370 = _DAT_140278d30;
    uStack_36c = _UNK_140278d34;
    uStack_368 = _UNK_140278d38;
    uStack_364 = _UNK_140278d3c;
    FUN_14005bca0(_DAT_140278d30,&local_3a0,0,&local_380);
  }
  iVar9 = strncmp(param_2,"/van",4);
  if ((iVar9 == 0) &&
     (lVar17 = (longlong)*(int *)((longlong)&DAT_151620cfc + lVar23),
     *(int *)((longlong)&DAT_151620cfc + lVar23) != -1)) {
    local_360 = 0x3f800000;
    local_3b8 = (undefined4 *)CONCAT44(local_3b8._4_4_,1);
    local_3a0 = (char *)CONCAT44((float)(&DAT_18329e530)[lVar17 * 0x1bfe] -
                                 (float)(&DAT_18329e578)[lVar17 * 0x1bfe] * fVar7,
                                 (float)(&DAT_18329e52c)[lVar17 * 0x1bfe] -
                                 (float)(&DAT_18329e574)[lVar17 * 0x1bfe] * fVar7);
    local_398 = (float)(&DAT_18329e534)[lVar17 * 0x1bfe] -
                (float)(&DAT_18329e57c)[lVar17 * 0x1bfe] * fVar7;
    local_380 = _DAT_140278d30;
    uStack_37c = _UNK_140278d34;
    uStack_378 = _UNK_140278d38;
    uStack_374 = _UNK_140278d3c;
    local_370 = _DAT_140278d30;
    uStack_36c = _UNK_140278d34;
    uStack_368 = _UNK_140278d38;
    uStack_364 = _UNK_140278d3c;
    FUN_14005bca0(_DAT_140278d30,&local_3a0,0,&local_380);
  }
  iVar9 = strncmp(param_2,"/phone",6);
  if (iVar9 == 0) {
    do {
      lVar17 = (longlong)(int)uVar18;
      if ((((&DAT_182bbb180)[lVar17 * 0x6e0] != 0) && ((&DAT_182bbb194)[lVar17 * 0x6e0] == 0x19)) &&
         ((&DAT_182bbb2e0)[lVar17 * 0x6e0] == 9999)) {
        if ((&DAT_182bbb2dc)[lVar17 * 0x6e0] != -1) {
          (&DAT_182bbb3fc)[(longlong)(int)(&DAT_182bbb2dc)[lVar17 * 0x6e0] * 0x6e0] = 0;
          (&DAT_182bbb2dc)[(longlong)(int)(&DAT_182bbb2dc)[lVar17 * 0x6e0] * 0x6e0] = 0xffffffff;
          *(undefined4 *)(&DAT_182bbb2e8 + (longlong)(int)(&DAT_182bbb2dc)[lVar17 * 0x6e0] * 0x1b80)
               = 0;
          FUN_140051940((&DAT_182bbb2dc)[lVar17 * 0x6e0]);
        }
        (&DAT_182bbb19c)[lVar17 * 0x6e0] = 0;
      }
      uVar18 = uVar18 + 1;
    } while ((int)uVar18 < 0x400);
    local_3a8[0] = uVar18;
    iVar9 = FUN_140054130(0x19,&DAT_18329e52c +
                               (longlong)*(int *)((longlong)&DAT_151620cfc + lVar23) * 0x1bfe,0,
                          &DAT_18329e55c +
                          (longlong)*(int *)((longlong)&DAT_151620cfc + lVar23) * 0x1bfe);
    uVar11 = *(undefined4 *)((longlong)&DAT_151620cfc + lVar23);
    (&DAT_182bbb2e0)[(longlong)iVar9 * 0x6e0] = 9999;
    FUN_1400e35d0(iVar9,0xffffffff,uVar11);
  }
  iVar9 = strncmp(param_2,"/arm",4);
  if ((iVar9 == 0) && ((&DAT_151620cfc)[lVar19 * 0xe0d] != -1)) {
    pcVar12 = param_2 + 5;
    lVar23 = (longlong)&local_358 - (longlong)pcVar12;
    uVar11 = 3;
    do {
      cVar8 = *pcVar12;
      pcVar12[lVar23] = cVar8;
      pcVar12 = pcVar12 + 1;
    } while (cVar8 != '\0');
    if (((char)local_358 != '\0') &&
       (iVar9 = FUN_14015b070(&local_358,&DAT_1402734f8,local_3a8), iVar9 != -1)) {
      if (local_3a8[0] == 1) {
        uVar11 = 1;
      }
      else if (local_3a8[0] != 2) {
        if (local_3a8[0] == 3) {
          uVar11 = 7;
        }
        else if (local_3a8[0] == 4) {
          uVar11 = 9;
        }
        else {
          uVar11 = 3;
          if (local_3a8[0] == 5) {
            uVar11 = 0xb;
          }
        }
      }
    }
    FUN_14012cd60((&DAT_151620cfc)[lVar19 * 0xe0d],uVar11,4);
    iVar9 = (&DAT_151620cfc)[lVar19 * 0xe0d];
    if (iVar9 != -1) {
      uVar11 = FUN_140054130(0xe,&DAT_18329e52c + (longlong)iVar9 * 0x1bfe,0,
                             &DAT_18329e55c + (longlong)iVar9 * 0x1bfe);
      FUN_1400e35d0(uVar11,0xffffffff,iVar9);
      uVar11 = FUN_140054130(0xe,&DAT_18329e52c + (longlong)iVar9 * 0x1bfe,0,
                             &DAT_18329e55c + (longlong)iVar9 * 0x1bfe);
      FUN_1400e35d0(uVar11,0xffffffff,iVar9);
    }
  }
  iVar9 = strncmp(param_2,"/cash",5);
  if (iVar9 == 0) {
    (&DAT_151620cac)[lVar19 * 0xe0d] = (&DAT_151620cac)[lVar19 * 0xe0d] + 100000;
  }
  iVar9 = strncmp(param_2,"/kill",5);
  if ((iVar9 == 0) && ((&DAT_151620cfc)[lVar19 * 0xe0d] != -1)) {
    (&DAT_18329e344)[(longlong)(int)(&DAT_151620cfc)[lVar19 * 0xe0d] * 0x1bfe] = 0;
  }
  iVar9 = strncmp(param_2,"/setmap",7);
  if ((iVar9 == 0) && (param_2[7] == ' ')) {
    pcVar12 = param_2 + 8;
    lVar19 = (longlong)&local_358 - (longlong)pcVar12;
    do {
      cVar8 = *pcVar12;
      pcVar12[lVar19] = cVar8;
      pcVar12 = pcVar12 + 1;
    } while (cVar8 != '\0');
    if ((((char)local_358 != '\0') &&
        (iVar9 = FUN_14015b070(&local_358,&DAT_1402734f8,local_3a8), iVar9 != -1)) &&
       (DAT_183f7a610 = local_3a8[0] - 1, 0x1f < local_3a8[0] - 1)) {
      DAT_183f7a610 = 0;
    }
    FUN_140158ab0(&local_358,"mapnum: %d",DAT_183f7a610 + 1);
    uVar18 = DAT_189c1dc64;
    uVar11 = DAT_183ebfd34;
    if (DAT_1ad04adc0 != 0) {
      lVar19 = -1;
      do {
        lVar17 = lVar19 + 1;
        lVar23 = lVar19 + 1;
        lVar19 = lVar17;
      } while (*(char *)((longlong)&local_358 + lVar23) != '\0');
      lVar19 = (longlong)(int)DAT_189c1dc64;
      iVar9 = (int)lVar17;
      if (0x3f < iVar9) {
        iVar9 = 0x3f;
      }
      lVar23 = lVar19 * 0x80;
      (&DAT_1873de460)[lVar19 * 0x20] = 2;
      (&DAT_1873de464)[lVar19 * 0x20] = uVar11;
      FUN_1401fc920(&DAT_1873de4a0 + lVar23,&local_358,(longlong)iVar9);
      DAT_189c1dc64._0_2_ = (short)uVar18 + 1;
      (&DAT_1873de4a0)[lVar23 + iVar9] = 0;
      (&DAT_1873de480)[lVar19 * 0x20] = iVar9;
      (&DAT_1873de484)[lVar19 * 0x20] = 4;
      *(undefined4 *)(&DAT_1873de488 + lVar23) = 0xffffffff;
      *(undefined4 *)(&DAT_1873de48c + lVar23) = 0;
      DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
    }
  }
  uVar13 = 0;
  iVar9 = strncmp(param_2,"/resetgame",10);
  if ((iVar9 == 0) && (DAT_1ad04b218 = 1, param_2[10] == ' ')) {
    cVar8 = param_2[0xb];
    if (cVar8 == 'r') {
      DAT_1ad04b21c = 3;
      DAT_183ebfcc4 = 5;
      cVar8 = param_2[0xb];
    }
    if (cVar8 == 'e') {
      DAT_1ad04b21c = 5;
      cVar8 = param_2[0xb];
    }
    if (cVar8 == 'v') {
      DAT_1ad04b21c = 7;
      DAT_183ebfcc4 = 5;
    }
  }
  iVar9 = strncmp(param_2,"/ban ",5);
  piVar24 = &DAT_160361354;
  if (iVar9 == 0) {
    pcVar12 = param_2 + 5;
    lVar19 = (longlong)&local_358 - (longlong)pcVar12;
    do {
      cVar8 = *pcVar12;
      pcVar12[lVar19] = cVar8;
      pcVar12 = pcVar12 + 1;
    } while (cVar8 != '\0');
    if ((char)local_358 != '\0') {
      pcVar12 = local_258;
      uVar14 = uVar13;
      uVar22 = uVar13;
      do {
        iVar9 = (int)uVar22;
        cVar8 = *(char *)((longlong)&local_358 + uVar14);
        if (cVar8 == '\0') break;
        if ((byte)(cVar8 - 0x30U) < 10) {
          uVar22 = (ulonglong)(iVar9 + 1);
          *pcVar12 = cVar8;
          pcVar12 = pcVar12 + 1;
        }
        iVar9 = (int)uVar22;
        uVar14 = uVar14 + 1;
      } while ((longlong)uVar14 < 0x10);
      if (0x1ff < (ulonglong)(longlong)iVar9) {
                    /* WARNING: Subroutine does not return */
        __report_rangecheckfailure();
      }
      local_258[iVar9] = '\0';
      FUN_14015b070(local_258,&DAT_140273518,&local_390);
      if (0 < DAT_160361344) {
        piVar15 = &DAT_160361354;
        do {
          iVar9 = (int)uVar13;
          if (*piVar15 == (int)local_390) {
            if (((-1 < iVar9) && (iVar9 < DAT_160361344)) &&
               (DAT_1ad04b214 = iVar9,
               FUN_140158ab0(&local_358,"%s(%d) ban?",&DAT_160361360 + (longlong)iVar9 * 0x70,
                             (&DAT_160361354)[(longlong)iVar9 * 0x1c]), uVar18 = DAT_189c1dc64,
               uVar11 = DAT_183ebfd34, DAT_1ad04adc0 != 0)) {
              lVar19 = -1;
              do {
                lVar17 = lVar19 + 1;
                lVar23 = lVar19 + 1;
                lVar19 = lVar17;
              } while (*(char *)((longlong)&local_358 + lVar23) != '\0');
              lVar19 = (longlong)(int)DAT_189c1dc64;
              iVar9 = (int)lVar17;
              if (0x3f < iVar9) {
                iVar9 = 0x3f;
              }
              lVar23 = lVar19 * 0x80;
              (&DAT_1873de460)[lVar19 * 0x20] = 2;
              (&DAT_1873de464)[lVar19 * 0x20] = uVar11;
              FUN_1401fc920(&DAT_1873de4a0 + lVar23,&local_358,(longlong)iVar9);
              DAT_189c1dc64._0_2_ = (short)uVar18 + 1;
              (&DAT_1873de4a0)[lVar23 + iVar9] = 0;
              (&DAT_1873de480)[lVar19 * 0x20] = iVar9;
              (&DAT_1873de484)[lVar19 * 0x20] = 4;
              *(undefined4 *)(&DAT_1873de488 + lVar23) = 0xffffffff;
              *(undefined4 *)(&DAT_1873de48c + lVar23) = 0;
              DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
            }
            break;
          }
          uVar13 = (ulonglong)(iVar9 + 1U);
          piVar15 = piVar15 + 0x1c;
        } while ((int)(iVar9 + 1U) < DAT_160361344);
      }
    }
  }
  uVar13 = 0;
  iVar9 = strncmp(param_2,"/give ",6);
  if (iVar9 == 0) {
    pcVar12 = param_2 + 6;
    lVar19 = (longlong)&local_358 - (longlong)pcVar12;
    do {
      cVar8 = *pcVar12;
      pcVar12[lVar19] = cVar8;
      pcVar12 = pcVar12 + 1;
    } while (cVar8 != '\0');
    uVar14 = uVar13;
    if ((char)local_358 != '\0') {
      do {
        cVar8 = *(char *)((longlong)&local_358 + uVar14);
        (&DAT_1862ae028)[uVar14] = cVar8;
        uVar14 = uVar14 + 1;
      } while (cVar8 != '\0');
      DAT_1862ae020 = 0;
      lVar19 = -1;
      do {
        lVar17 = lVar19 + 1;
        lVar23 = lVar19 + 1;
        lVar19 = lVar17;
      } while (*(char *)((longlong)&local_358 + lVar23) != '\0');
      DAT_1862ae024 = (undefined4)lVar17;
      iVar9 = FUN_140115360();
      if (0 < DAT_160361344) {
        piVar15 = &DAT_160361354;
        uVar14 = uVar13;
        do {
          iVar16 = (int)uVar14;
          if (*piVar15 == iVar9) {
            iVar9 = FUN_1400a3d70();
            if ((-1 < iVar16) && (iVar16 < DAT_160361344)) {
              lVar19 = (longlong)iVar16;
              (&DAT_160361384)[lVar19 * 0x1c] = (&DAT_160361384)[lVar19 * 0x1c] + iVar9;
              do {
                lVar23 = (longlong)(int)uVar13;
                if (((&DAT_151620c60)[lVar23 * 0xe0d] != 0) &&
                   ((&DAT_151620c9c)[lVar23 * 0xe0d] == iVar16)) {
                  (&DAT_151620cac)[lVar23 * 0xe0d] = (&DAT_151620cac)[lVar23 * 0xe0d] + iVar9;
                }
                local_3a8[0] = (int)uVar13 + 1;
                uVar13 = (ulonglong)local_3a8[0];
              } while ((int)local_3a8[0] < 0x100);
              local_3b8 = (undefined4 *)CONCAT44(local_3b8._4_4_,iVar9);
              FUN_140158ab0(&local_358,"%s(%d) %d cash",&DAT_160361360 + lVar19 * 0x70,
                            (&DAT_160361354)[lVar19 * 0x1c]);
              uVar18 = DAT_189c1dc64;
              uVar11 = DAT_183ebfd34;
              if (DAT_1ad04adc0 != 0) {
                lVar19 = -1;
                do {
                  lVar17 = lVar19 + 1;
                  lVar23 = lVar19 + 1;
                  lVar19 = lVar17;
                } while (*(char *)((longlong)&local_358 + lVar23) != '\0');
                lVar19 = (longlong)(int)DAT_189c1dc64;
                iVar9 = (int)lVar17;
                if (0x3f < iVar9) {
                  iVar9 = 0x3f;
                }
                lVar23 = lVar19 * 0x80;
                (&DAT_1873de460)[lVar19 * 0x20] = 2;
                (&DAT_1873de464)[lVar19 * 0x20] = uVar11;
                FUN_1401fc920(&DAT_1873de4a0 + lVar23,&local_358,(longlong)iVar9);
                DAT_189c1dc64._0_2_ = (short)uVar18 + 1;
                (&DAT_1873de4a0)[iVar9 + lVar23] = 0;
                (&DAT_1873de480)[lVar19 * 0x20] = iVar9;
                (&DAT_1873de484)[lVar19 * 0x20] = 4;
                *(undefined4 *)(&DAT_1873de488 + lVar23) = 0xffffffff;
                *(undefined4 *)(&DAT_1873de48c + lVar23) = 0;
                DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
              }
            }
            goto LAB_140132087;
          }
          uVar14 = (ulonglong)(iVar16 + 1U);
          piVar15 = piVar15 + 0x1c;
        } while ((int)(iVar16 + 1U) < DAT_160361344);
      }
      FUN_1400a3d70();
    }
  }
LAB_140132087:
  uVar13 = 0;
  iVar9 = strncmp(param_2,"/setrating ",0xb);
  if (iVar9 == 0) {
    pcVar12 = param_2 + 0xb;
    lVar19 = (longlong)&local_358 - (longlong)pcVar12;
    do {
      cVar8 = *pcVar12;
      pcVar12[lVar19] = cVar8;
      pcVar12 = pcVar12 + 1;
    } while (cVar8 != '\0');
    uVar14 = uVar13;
    if ((char)local_358 != '\0') {
      do {
        cVar8 = *(char *)((longlong)&local_358 + uVar14);
        (&DAT_1862ae028)[uVar14] = cVar8;
        uVar14 = uVar14 + 1;
      } while (cVar8 != '\0');
      DAT_1862ae020 = 0;
      lVar19 = -1;
      do {
        lVar17 = lVar19 + 1;
        lVar23 = lVar19 + 1;
        lVar19 = lVar17;
      } while (*(char *)((longlong)&local_358 + lVar23) != '\0');
      DAT_1862ae024 = (undefined4)lVar17;
      iVar9 = FUN_140115360();
      uVar14 = uVar13;
      if (0 < DAT_160361344) {
        do {
          iVar16 = (int)uVar14;
          if (*piVar24 == iVar9) {
            uVar11 = FUN_1400a3d70();
            if ((-1 < iVar16) && (iVar16 < DAT_160361344)) {
              lVar19 = (longlong)iVar16;
              (&DAT_16036138c)[lVar19 * 0x1c] = uVar11;
              do {
                lVar23 = (longlong)(int)uVar13;
                if (((&DAT_151620c60)[lVar23 * 0xe0d] != 0) &&
                   ((&DAT_151620c9c)[lVar23 * 0xe0d] == iVar16)) {
                  (&DAT_151620cbc)[lVar23 * 0xe0d] = uVar11;
                }
                local_3a8[0] = (int)uVar13 + 1;
                uVar13 = (ulonglong)local_3a8[0];
              } while ((int)local_3a8[0] < 0x100);
              local_3b8 = (undefined4 *)CONCAT44(local_3b8._4_4_,uVar11);
              FUN_140158ab0(&local_358,"%s(%d) %d rating",&DAT_160361360 + lVar19 * 0x70,
                            (&DAT_160361354)[lVar19 * 0x1c]);
              uVar18 = DAT_189c1dc64;
              uVar11 = DAT_183ebfd34;
              if (DAT_1ad04adc0 != 0) {
                lVar19 = -1;
                do {
                  lVar17 = lVar19 + 1;
                  lVar23 = lVar19 + 1;
                  lVar19 = lVar17;
                } while (*(char *)((longlong)&local_358 + lVar23) != '\0');
                lVar19 = (longlong)(int)DAT_189c1dc64;
                iVar9 = (int)lVar17;
                if (0x3f < iVar9) {
                  iVar9 = 0x3f;
                }
                lVar23 = lVar19 * 0x80;
                (&DAT_1873de460)[lVar19 * 0x20] = 2;
                (&DAT_1873de464)[lVar19 * 0x20] = uVar11;
                FUN_1401fc920(&DAT_1873de4a0 + lVar23,&local_358,(longlong)iVar9);
                DAT_189c1dc64._0_2_ = (short)uVar18 + 1;
                (&DAT_1873de4a0)[iVar9 + lVar23] = 0;
                (&DAT_1873de480)[lVar19 * 0x20] = iVar9;
                (&DAT_1873de484)[lVar19 * 0x20] = 4;
                *(undefined4 *)(&DAT_1873de488 + lVar23) = 0xffffffff;
                *(undefined4 *)(&DAT_1873de48c + lVar23) = 0;
                DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
              }
            }
            goto LAB_140132135;
          }
          uVar14 = (ulonglong)(iVar16 + 1U);
          piVar24 = piVar24 + 0x1c;
        } while ((int)(iVar16 + 1U) < DAT_160361344);
      }
      FUN_1400a3d70();
    }
  }
LAB_140132135:
  iVar9 = strncmp(param_2,"/bany ",6);
  if (iVar9 == 0) {
    pcVar12 = param_2 + 6;
    lVar19 = (longlong)&local_358 - (longlong)pcVar12;
    do {
      cVar8 = *pcVar12;
      pcVar12[lVar19] = cVar8;
      pcVar12 = pcVar12 + 1;
    } while (cVar8 != '\0');
    if (((((char)local_358 != '\0') &&
         (iVar9 = FUN_14015b070(&local_358,&DAT_1402734f8,local_3a8), iVar9 != -1)) &&
        (lVar19 = (longlong)DAT_1ad04b214, -1 < DAT_1ad04b214)) && (DAT_1ad04b214 < DAT_160361344))
    {
      local_3b8 = (undefined4 *)CONCAT44(local_3b8._4_4_,local_3a8[0]);
      (&DAT_1603613b0)[lVar19 * 0x1c] = local_3a8[0];
      FUN_140158ab0(&local_358,"%s(%d) banned %d",&DAT_160361360 + lVar19 * 0x70,
                    (&DAT_160361354)[lVar19 * 0x1c]);
      uVar18 = DAT_189c1dc64;
      uVar11 = DAT_183ebfd34;
      if (DAT_1ad04adc0 != 0) {
        lVar19 = -1;
        do {
          lVar17 = lVar19 + 1;
          lVar23 = lVar19 + 1;
          lVar19 = lVar17;
        } while (*(char *)((longlong)&local_358 + lVar23) != '\0');
        lVar19 = (longlong)(int)DAT_189c1dc64;
        iVar9 = (int)lVar17;
        if (0x3f < iVar9) {
          iVar9 = 0x3f;
        }
        lVar23 = lVar19 * 0x80;
        (&DAT_1873de460)[lVar19 * 0x20] = 2;
        (&DAT_1873de464)[lVar19 * 0x20] = uVar11;
        FUN_1401fc920(&DAT_1873de4a0 + lVar23,&local_358,(longlong)iVar9);
        DAT_189c1dc64._0_2_ = (short)uVar18 + 1;
        (&DAT_1873de4a0)[iVar9 + lVar23] = 0;
        (&DAT_1873de480)[lVar19 * 0x20] = iVar9;
        (&DAT_1873de484)[lVar19 * 0x20] = 4;
        *(undefined4 *)(&DAT_1873de488 + lVar23) = 0xffffffff;
        *(undefined4 *)(&DAT_1873de48c + lVar23) = 0;
        DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
      }
      DAT_1ad04b214 = -1;
    }
  }
  uVar18 = 0;
  iVar9 = strncmp(param_2,"/bann",5);
  uVar11 = DAT_183ebfd34;
  uVar4 = s_ban_canceled_140273db0._0_8_;
  if (iVar9 == 0) {
    if (DAT_1ad04adc0 != 0) {
      lVar23 = (longlong)(int)DAT_189c1dc64;
      lVar19 = lVar23 * 0x80;
      DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
      (&DAT_1873de460)[lVar23 * 0x20] = 2;
      (&DAT_1873de464)[lVar23 * 0x20] = uVar11;
      uVar11 = s_ban_canceled_140273db0._8_4_;
      *(undefined8 *)(&DAT_1873de4a0 + lVar19) = uVar4;
      *(undefined4 *)(&DAT_1873de4a8 + lVar19) = uVar11;
      (&DAT_1873de4ac)[lVar19] = 0;
      (&DAT_1873de480)[lVar23 * 0x20] = 0xc;
      (&DAT_1873de484)[lVar23 * 0x20] = 4;
      *(undefined4 *)(&DAT_1873de488 + lVar19) = 0xffffffff;
      *(undefined4 *)(&DAT_1873de48c + lVar19) = 0;
    }
    DAT_1ad04b214 = -1;
  }
  iVar9 = strncmp(param_2,"/kick ",6);
  if (iVar9 == 0) {
    uVar10 = 0xffffffff;
    local_3a8[0] = 0;
    if (0 < DAT_1ad04ada0) {
      do {
        if ((&DAT_1a8e3da38)[(longlong)(int)uVar18 * 0xb878] != -1) {
          pcVar12 = param_2 + 6;
          lVar19 = (longlong)(int)(&DAT_1a8e3da38)[(longlong)(int)uVar18 * 0xb878] * 0x3834 -
                   (longlong)pcVar12;
          do {
            cVar8 = *pcVar12;
            cVar2 = pcVar12[(longlong)&DAT_151620c64 + lVar19];
            if (cVar8 != cVar2) break;
            pcVar12 = pcVar12 + 1;
          } while (cVar2 != '\0');
          if (cVar8 == cVar2) {
            uVar10 = uVar18;
          }
        }
        local_3a8[0] = uVar18 + 1;
        uVar18 = local_3a8[0];
      } while ((int)local_3a8[0] < DAT_1ad04ada0);
      if (uVar10 != 0xffffffff) {
        (&DAT_1a8e3ca00)[DAT_1a8e3da00] = (&DAT_1a8e3da20)[(longlong)(int)uVar10 * 0xb878];
        DAT_1a8e3da00 = DAT_1a8e3da00 + 1;
        (&DAT_1a8e3da44)[(longlong)(int)uVar10 * 0xb878] = 0x4b0;
      }
    }
  }
  iVar9 = strncmp(param_2,"/message ",9);
  uVar18 = DAT_189c1dc64;
  uVar11 = DAT_183ebfd34;
  if (iVar9 == 0) {
    local_358 = *(undefined8 *)(param_2 + 9);
    uStack_350 = *(undefined8 *)(param_2 + 0x11);
    local_348 = *(undefined8 *)(param_2 + 0x19);
    uStack_340 = *(undefined8 *)(param_2 + 0x21);
    local_338 = *(undefined4 *)(param_2 + 0x29);
    uStack_334 = *(undefined4 *)(param_2 + 0x2d);
    uStack_330 = *(undefined4 *)(param_2 + 0x31);
    uStack_32c = *(undefined4 *)(param_2 + 0x35);
    local_328 = *(undefined4 *)(param_2 + 0x39);
    uStack_324 = *(undefined4 *)(param_2 + 0x3d);
    uStack_320 = *(undefined4 *)(param_2 + 0x41);
    uStack_31c = *(undefined4 *)(param_2 + 0x45);
    if (DAT_1ad04adc0 != 0) {
      lVar19 = -1;
      do {
        lVar17 = lVar19 + 1;
        lVar23 = lVar19 + 1;
        lVar19 = lVar17;
      } while (*(char *)((longlong)&local_358 + lVar23) != '\0');
      lVar19 = (longlong)(int)DAT_189c1dc64;
      iVar9 = (int)lVar17;
      if (0x3f < iVar9) {
        iVar9 = 0x3f;
      }
      lVar23 = lVar19 * 0x80;
      (&DAT_1873de460)[lVar19 * 0x20] = 2;
      (&DAT_1873de464)[lVar19 * 0x20] = uVar11;
      FUN_1401fc920(&DAT_1873de4a0 + lVar23,&local_358,(longlong)iVar9);
      DAT_189c1dc64._0_2_ = (short)uVar18 + 1;
      (&DAT_1873de4a0)[iVar9 + lVar23] = 0;
      (&DAT_1873de480)[lVar19 * 0x20] = iVar9;
      (&DAT_1873de484)[lVar19 * 0x20] = 0;
      *(undefined4 *)(&DAT_1873de488 + lVar23) = 0xffffffff;
      *(undefined4 *)(&DAT_1873de48c + lVar23) = 0;
      DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
    }
  }
  iVar9 = strncmp(param_2,"/clearkick",10);
  if (iVar9 == 0) {
    DAT_1a8e3da00 = 0;
  }
  return 1;
}



===== FUN_140153850 @ 140153850 root=true =====

undefined8
FUN_140153850(float *param_1,float *param_2,float *param_3,int param_4,float *param_5,float *param_6
             ,float *param_7,float param_8)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  uint uVar7;
  int iVar8;
  longlong lVar9;
  int iVar10;
  longlong lVar11;
  int *piVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float local_178;
  float local_174;
  float local_170;
  float local_168;
  float local_164;
  float local_160;
  float local_158;
  float local_154;
  float local_150;
  float local_148;
  float local_144;
  float local_140;
  float local_138;
  float local_134;
  float local_130;
  float local_12c;
  float local_128;
  float local_120;
  float local_11c;
  float local_118;
  float local_110;
  float local_10c;
  float local_108;
  float local_100;
  float local_fc;
  float local_f8;
  float local_f0;
  float local_ec;
  float local_e8;
  undefined1 local_e0 [4];
  undefined1 local_dc [164];
  
  iVar10 = 0;
  lVar11 = (longlong)param_4 * 0x13d0;
  *param_3 = 65536.0;
  if (0 < *(int *)(&DAT_182a7ea80 + lVar11)) {
    piVar12 = (int *)(&DAT_182a7ea90 + lVar11);
    do {
      uVar7 = DAT_140279870;
      fVar13 = param_6[3];
      fVar16 = *param_6;
      lVar9 = (longlong)piVar12[-1] * 0xc + lVar11;
      fVar1 = *(float *)(&DAT_182a7e780 + lVar9);
      fVar2 = *(float *)(&DAT_182a7e784 + lVar9);
      fVar3 = *(float *)(&DAT_182a7e788 + lVar9);
      lVar9 = (longlong)*piVar12 * 0xc + lVar11;
      fVar14 = *(float *)(&DAT_182a7e784 + lVar9);
      fVar4 = *(float *)(&DAT_182a7e780 + lVar9);
      fVar17 = fVar13 * fVar2 + fVar16 * fVar1 + param_6[6] * fVar3;
      fVar5 = *(float *)(&DAT_182a7e788 + lVar9);
      fVar18 = param_6[4] * fVar2 + param_6[1] * fVar1 + param_6[7] * fVar3;
      fVar15 = param_6[5] * fVar2 + param_6[2] * fVar1 + param_6[8] * fVar3;
      lVar9 = (longlong)piVar12[1] * 0xc + lVar11;
      fVar1 = *(float *)(&DAT_182a7e780 + lVar9);
      local_100 = fVar4 * fVar16 + fVar14 * fVar13 + fVar5 * param_6[6];
      fVar2 = *(float *)(&DAT_182a7e784 + lVar9);
      local_138 = fVar4 * param_6[1] + fVar14 * param_6[4] + fVar5 * param_6[7];
      local_134 = fVar4 * param_6[2] + fVar14 * param_6[5] + fVar5 * param_6[8];
      fVar3 = *(float *)(&DAT_182a7e788 + lVar9);
      fVar14 = local_100 - fVar17;
      local_130 = fVar1 * fVar16 + fVar2 * fVar13 + fVar3 * param_6[6];
      local_12c = fVar1 * param_6[1] + fVar2 * param_6[4] + fVar3 * param_6[7];
      local_128 = fVar1 * param_6[2] + fVar2 * param_6[5] + fVar3 * param_6[8];
      local_178 = (local_12c - fVar18) * (local_134 - fVar15) -
                  (local_128 - fVar15) * (local_138 - fVar18);
      local_174 = (local_128 - fVar15) * fVar14 - (local_130 - fVar17) * (local_134 - fVar15);
      fVar16 = (local_130 - fVar17) * (local_138 - fVar18) - (local_12c - fVar18) * fVar14;
      fVar13 = SQRT(local_174 * local_174 + local_178 * local_178 + fVar16 * fVar16);
      if (fVar13 == 0.0) {
        local_178 = 0.0;
        local_174 = 0.0;
        fVar13 = 0.0;
      }
      else {
        fVar13 = DAT_1402783f4 / fVar13;
        local_178 = fVar13 * local_178;
        local_174 = fVar13 * local_174;
        fVar13 = fVar13 * fVar16;
      }
      fVar14 = local_174;
      fVar3 = local_178;
      fVar16 = *param_5;
      fVar1 = param_5[1];
      local_100 = fVar16 + local_100;
      fVar2 = param_5[2];
      local_fc = fVar1 + local_138;
      fVar17 = fVar16 + fVar17;
      fVar18 = fVar1 + fVar18;
      local_f8 = fVar2 + local_134;
      fVar15 = fVar2 + fVar15;
      local_120 = fVar16 + local_130;
      local_11c = fVar1 + local_12c;
      local_118 = fVar2 + local_128;
      if (piVar12[-2] == 4) {
        lVar9 = (longlong)piVar12[2] * 0xc + lVar11;
        fVar4 = *(float *)(&DAT_182a7e784 + lVar9);
        fVar5 = *(float *)(&DAT_182a7e780 + lVar9);
        fVar6 = *(float *)(&DAT_182a7e788 + lVar9);
        local_f0 = fVar5 * *param_6 + fVar4 * param_6[3] + fVar6 * param_6[6] + fVar16;
        local_e8 = fVar6 * param_6[8] + fVar5 * param_6[2] + fVar4 * param_6[5] + fVar2;
        local_ec = fVar6 * param_6[7] + fVar5 * param_6[1] + fVar4 * param_6[4] + fVar1;
      }
      local_154 = param_7[1] - fVar18;
      local_158 = *param_7 - fVar17;
      local_150 = param_7[2] - fVar15;
      fVar16 = local_174 * local_154 + local_178 * local_158 + fVar13 * local_150;
      local_170 = fVar13;
      local_110 = fVar17;
      local_10c = fVar18;
      local_108 = fVar15;
      if ((fVar16 <= param_8) && (0.0 <= fVar16)) {
        fVar16 = (float)((uint)param_8 ^ DAT_140279870);
        local_158 = local_178 * fVar16 + *param_7;
        local_154 = local_174 * fVar16 + param_7[1];
        local_150 = fVar13 * fVar16 + param_7[2];
        iVar8 = FUN_140077fa0(&local_168,&local_178,local_e0,param_7,&local_158,&local_110,
                              &local_100,&local_120);
        if ((iVar8 != 0) &&
           (fVar16 = SQRT((local_168 - *param_7) * (local_168 - *param_7) +
                          (local_164 - param_7[1]) * (local_164 - param_7[1]) +
                          (local_160 - param_7[2]) * (local_160 - param_7[2])), fVar16 < *param_3))
        {
          *param_1 = local_168;
          param_1[1] = local_164;
          param_1[2] = local_160;
          *param_2 = fVar3;
          param_2[1] = fVar14;
          param_2[2] = fVar13;
          *param_3 = fVar16;
        }
      }
      if (piVar12[-2] == 4) {
        local_144 = param_7[1] - fVar18;
        local_148 = *param_7 - fVar17;
        local_140 = param_7[2] - fVar15;
        fVar16 = fVar14 * local_144 + fVar3 * local_148 + fVar13 * local_140;
        if ((fVar16 <= param_8) && (0.0 <= fVar16)) {
          fVar16 = (float)((uint)param_8 ^ uVar7);
          local_148 = fVar3 * fVar16 + *param_7;
          local_144 = fVar14 * fVar16 + param_7[1];
          local_140 = fVar13 * fVar16 + param_7[2];
          iVar8 = FUN_140077fa0(&local_168,&local_178,local_dc,param_7,&local_148,&local_110,
                                &local_120,&local_f0);
          if ((iVar8 != 0) &&
             (fVar16 = SQRT((local_168 - *param_7) * (local_168 - *param_7) +
                            (local_164 - param_7[1]) * (local_164 - param_7[1]) +
                            (local_160 - param_7[2]) * (local_160 - param_7[2])), fVar16 < *param_3)
             ) {
            *param_1 = local_168;
            param_1[1] = local_164;
            param_1[2] = local_160;
            *param_2 = fVar3;
            param_2[1] = fVar14;
            param_2[2] = fVar13;
            *param_3 = fVar16;
          }
        }
      }
      iVar10 = iVar10 + 1;
      piVar12 = piVar12 + 6;
    } while (iVar10 < *(int *)(&DAT_182a7ea80 + lVar11));
    if (*param_3 < DAT_140278adc) {
      return 1;
    }
  }
  return 0;
}



===== FUN_14013fcd0 @ 14013fcd0 root=true =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_14013fcd0(int param_1,int param_2)

{
  float fVar1;
  float fVar2;
  float fVar3;
  int iVar4;
  longlong lVar5;
  longlong lVar6;
  float fVar7;
  int iVar8;
  undefined8 uVar9;
  int iVar10;
  longlong lVar11;
  longlong lVar12;
  longlong lVar13;
  undefined4 *puVar14;
  float *pfVar15;
  undefined4 *puVar16;
  int *piVar17;
  longlong lVar18;
  longlong lVar19;
  longlong lVar20;
  longlong lVar21;
  longlong lVar22;
  float *pfVar23;
  longlong lVar24;
  longlong lVar25;
  longlong lVar26;
  longlong lVar27;
  longlong lVar28;
  longlong lVar29;
  bool bVar30;
  
  fVar7 = DAT_140278478;
  lVar13 = 0;
  lVar19 = (longlong)param_1 * 0x13d0;
  DAT_16ad03db4 = 0;
  DAT_16a7dbda0 = *(int *)(&DAT_182a7f520 + lVar19);
  lVar11 = (longlong)DAT_16a7dbda0;
  if (lVar11 < 4) {
    if (DAT_16a7dbda0 < 1) goto LAB_1401400db;
    lVar26 = *(longlong *)(&DAT_182a7f530 + lVar19);
  }
  else {
    lVar21 = *(longlong *)(&DAT_182a7f528 + lVar19);
    lVar26 = *(longlong *)(&DAT_182a7f530 + lVar19);
    lVar5 = -lVar21;
    lVar22 = (longlong)&DAT_16a7dbdac + lVar5;
    lVar6 = -lVar21;
    lVar24 = (longlong)&DAT_16a7dbdb0 + lVar6;
    puVar14 = (undefined4 *)(lVar21 + 0x14);
    lVar28 = (longlong)&DAT_16a7dbda4 - lVar21;
    lVar29 = (longlong)&DAT_16a7dbdb4 - lVar21;
    puVar16 = (undefined4 *)(lVar26 + 0x14);
    lVar27 = (longlong)&DAT_16a7dbdc0 - lVar21;
    lVar25 = (longlong)&DAT_16a7dbdbc - lVar21;
    lVar18 = (longlong)&DAT_16a7dbda8 - lVar21;
    lVar20 = (longlong)&DAT_16a7dbda0 - lVar21;
    lVar21 = (longlong)&DAT_16a7dbdb8 - lVar21;
    lVar12 = (lVar11 - 4U >> 2) + 1;
    lVar13 = lVar12 * 4;
    do {
      *(undefined4 *)((longlong)puVar14 + lVar18 + -0x14) = puVar14[-5];
      *(undefined4 *)(lVar5 + 0x16a7dbd98 + (longlong)puVar14) = puVar14[-4];
      *(undefined4 *)(lVar6 + 0x16a7dbd9c + (longlong)puVar14) = puVar14[-3];
      bVar30 = param_1 == 0x2d;
      if (bVar30) {
        *(float *)((longlong)puVar14 + lVar18 + -0x14) =
             *(float *)((longlong)puVar14 + lVar18 + -0x14) * fVar7;
        *(float *)(lVar5 + 0x16a7dbd98 + (longlong)puVar14) =
             *(float *)(lVar5 + 0x16a7dbd98 + (longlong)puVar14) * fVar7;
        *(float *)(lVar6 + 0x16a7dbd9c + (longlong)puVar14) =
             *(float *)(lVar6 + 0x16a7dbd9c + (longlong)puVar14) * fVar7;
      }
      *(undefined4 *)((longlong)puVar16 + ((longlong)&DAT_16a80bd94 - lVar26)) = puVar16[-5];
      *(undefined4 *)((longlong)puVar16 + ((longlong)&DAT_16a80bd98 - lVar26)) = puVar16[-4];
      *(undefined4 *)((longlong)puVar14 + lVar20) = puVar14[-2];
      *(undefined4 *)(lVar28 + (longlong)puVar14) = puVar14[-1];
      *(undefined4 *)(lVar18 + (longlong)puVar14) = *puVar14;
      if (bVar30) {
        *(float *)((longlong)puVar14 + lVar20) = *(float *)((longlong)puVar14 + lVar20) * fVar7;
        *(float *)(lVar28 + (longlong)puVar14) = *(float *)(lVar28 + (longlong)puVar14) * fVar7;
        *(float *)(lVar18 + (longlong)puVar14) = *(float *)(lVar18 + (longlong)puVar14) * fVar7;
      }
      *(undefined4 *)((longlong)puVar16 + ((longlong)&DAT_16a80bd9c - lVar26)) = puVar16[-3];
      *(undefined4 *)((longlong)puVar16 + ((longlong)&DAT_16a80bda0 - lVar26)) = puVar16[-2];
      *(undefined4 *)(lVar22 + (longlong)puVar14) = puVar14[1];
      *(undefined4 *)(lVar24 + (longlong)puVar14) = puVar14[2];
      *(undefined4 *)(lVar29 + (longlong)puVar14) = puVar14[3];
      if (bVar30) {
        *(float *)(lVar22 + (longlong)puVar14) = *(float *)(lVar22 + (longlong)puVar14) * fVar7;
        *(float *)(lVar24 + (longlong)puVar14) = *(float *)(lVar24 + (longlong)puVar14) * fVar7;
        *(float *)(lVar29 + (longlong)puVar14) = *(float *)(lVar29 + (longlong)puVar14) * fVar7;
      }
      *(undefined4 *)((longlong)puVar16 + ((longlong)&DAT_16a80bda4 - lVar26)) = puVar16[-1];
      *(undefined4 *)((longlong)puVar16 + ((longlong)&DAT_16a80bda8 - lVar26)) = *puVar16;
      *(undefined4 *)((longlong)puVar14 + lVar21) = puVar14[4];
      *(undefined4 *)((longlong)puVar14 + lVar25) = puVar14[5];
      *(undefined4 *)((longlong)puVar14 + lVar27) = puVar14[6];
      if (bVar30) {
        *(float *)((longlong)puVar14 + lVar21) = *(float *)((longlong)puVar14 + lVar21) * fVar7;
        *(float *)((longlong)puVar14 + lVar25) = *(float *)((longlong)puVar14 + lVar25) * fVar7;
        *(float *)((longlong)puVar14 + lVar27) = *(float *)((longlong)puVar14 + lVar27) * fVar7;
      }
      puVar14 = puVar14 + 0xc;
      *(undefined4 *)((longlong)puVar16 + ((longlong)&DAT_16a80bdac - lVar26)) = puVar16[1];
      *(undefined4 *)((longlong)puVar16 + ((longlong)&DAT_16a80bdb0 - lVar26)) = puVar16[2];
      puVar16 = puVar16 + 8;
      lVar12 = lVar12 + -1;
    } while (lVar12 != 0);
    if (lVar11 <= lVar13) goto LAB_1401400db;
  }
  pfVar15 = (float *)(&DAT_16a7dbdb0 + lVar13 * 3);
  lVar21 = *(longlong *)(&DAT_182a7f528 + lVar19);
  puVar14 = (undefined4 *)(lVar26 + lVar13 * 8);
  pfVar23 = (float *)(lVar21 + (lVar13 * 3 + 2) * 4);
  lVar11 = lVar11 - lVar13;
  do {
    fVar1 = *(float *)(lVar21 + -0x16a7dbdb0 + (longlong)pfVar15);
    pfVar15[-2] = fVar1;
    fVar2 = pfVar23[-1];
    pfVar15[-1] = fVar2;
    fVar3 = *pfVar23;
    *pfVar15 = fVar3;
    if (param_1 == 0x2d) {
      pfVar15[-2] = fVar1 * fVar7;
      pfVar15[-1] = fVar2 * fVar7;
      *pfVar15 = fVar3 * fVar7;
    }
    pfVar23 = pfVar23 + 3;
    *(undefined4 *)((longlong)puVar14 + ((longlong)&DAT_16a80bda8 - lVar26)) = *puVar14;
    pfVar15 = pfVar15 + 3;
    *(undefined4 *)((longlong)puVar14 + ((longlong)&DAT_16a80bdac - lVar26)) = puVar14[1];
    puVar14 = puVar14 + 2;
    lVar11 = lVar11 + -1;
  } while (lVar11 != 0);
LAB_1401400db:
  iVar10 = DAT_183ebb770;
  uVar9 = _DAT_183ebb764;
  iVar8 = DAT_183ebb75c._4_4_;
  lVar11 = 0;
  DAT_16a91bda8 = *(int *)(&DAT_182a7f538 + lVar19);
  lVar13 = (longlong)DAT_16a91bda8;
  if (0 < DAT_16a91bda8) {
    lVar26 = *(longlong *)(&DAT_182a7f540 + lVar19);
    lVar21 = *(longlong *)(&DAT_182a7f530 + lVar19);
    piVar17 = (int *)(lVar26 + 8);
    do {
      *(int *)(((longlong)&DAT_16a91bda4 - lVar26) + (longlong)piVar17) = piVar17[-2];
      iVar4 = piVar17[-2];
      *(undefined4 *)((longlong)&DAT_16ab13db0 + lVar11) =
           *(undefined4 *)(lVar21 + (longlong)(iVar4 * 2) * 4);
      *(undefined4 *)((longlong)&DAT_16ab13db0 + lVar11 + 4) =
           *(undefined4 *)(lVar21 + 4 + (longlong)(iVar4 * 2) * 4);
      *(int *)(((longlong)&DAT_16a91bda8 - lVar26) + (longlong)piVar17) = piVar17[-1];
      iVar4 = piVar17[-1];
      *(undefined4 *)((longlong)&DAT_16ab13db8 + lVar11) =
           *(undefined4 *)(lVar21 + (longlong)(iVar4 * 2) * 4);
      *(undefined4 *)((longlong)&DAT_16ab13db8 + lVar11 + 4) =
           *(undefined4 *)(lVar21 + 4 + (longlong)(iVar4 * 2) * 4);
      *(int *)(((longlong)&DAT_16a91bdac - lVar26) + (longlong)piVar17) = *piVar17;
      iVar4 = *piVar17;
      *(undefined4 *)((longlong)&DAT_16ab13dc0 + lVar11) =
           *(undefined4 *)(lVar21 + (longlong)(iVar4 * 2) * 4);
      *(undefined4 *)((longlong)&DAT_16ab13dc0 + lVar11 + 4) =
           *(undefined4 *)(lVar21 + 4 + (longlong)(iVar4 * 2) * 4);
      if ((param_2 == iVar8) || (param_2 == (int)uVar9)) {
        lVar5 = *(longlong *)(&DAT_182a7f548 + lVar19);
        *(undefined4 *)((longlong)&DAT_16ab13db0 + lVar11) = *(undefined4 *)(lVar5 + lVar11);
        *(undefined4 *)((longlong)&DAT_16ab13db0 + lVar11 + 4) = *(undefined4 *)(lVar5 + 4 + lVar11)
        ;
        *(undefined4 *)((longlong)&DAT_16ab13db8 + lVar11) = *(undefined4 *)(lVar5 + 8 + lVar11);
        *(undefined4 *)((longlong)&DAT_16ab13db8 + lVar11 + 4) =
             *(undefined4 *)(lVar5 + 0xc + lVar11);
        *(undefined4 *)((longlong)&DAT_16ab13dc0 + lVar11) = *(undefined4 *)(lVar5 + 0x10 + lVar11);
        *(undefined4 *)((longlong)&DAT_16ab13dc0 + lVar11 + 4) =
             *(undefined4 *)(lVar5 + 0x14 + lVar11);
      }
      if (param_2 == iVar10) {
        *(undefined4 *)((longlong)&DAT_16ab13db0 + lVar11) = 0x3dc00000;
        *(undefined4 *)((longlong)&DAT_16ab13db0 + lVar11 + 4) = 0x3f680000;
        *(undefined4 *)((longlong)&DAT_16ab13db8 + lVar11) = 0x3dc00000;
        *(undefined4 *)((longlong)&DAT_16ab13db8 + lVar11 + 4) = 0x3f680000;
        *(undefined4 *)((longlong)&DAT_16ab13dc0 + lVar11) = 0x3dc00000;
        *(undefined4 *)((longlong)&DAT_16ab13dc0 + lVar11 + 4) = 0x3f680000;
      }
      piVar17 = piVar17 + 3;
      lVar11 = lVar11 + 0x18;
      lVar13 = lVar13 + -1;
    } while (lVar13 != 0);
  }
  FUN_1401449c0(param_2,1);
  return;
}



===== FUN_1400db460 @ 1400db460 root=true =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8
FUN_1400db460(undefined4 *param_1,float *param_2,float *param_3,int param_4,float *param_5,
             float *param_6,undefined8 param_7,undefined8 param_8)

{
  longlong lVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  int iVar6;
  int *piVar7;
  longlong lVar8;
  int iVar9;
  float fVar10;
  float fVar11;
  float fVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float local_res20 [2];
  float local_140;
  float local_13c;
  float local_138;
  undefined4 local_130;
  undefined4 local_12c;
  undefined4 local_128;
  float local_120;
  float local_11c;
  float local_118;
  float local_110;
  float local_10c;
  float local_108;
  float local_100;
  float local_fc;
  float local_f8;
  float local_f0;
  float local_ec;
  float local_e8;
  
  iVar9 = 0;
  lVar8 = (longlong)param_4 * 0x13d0;
  *param_3 = 1.0;
  if (0 < *(int *)(&DAT_182a7ea80 + lVar8)) {
    piVar7 = (int *)(&DAT_182a7ea90 + lVar8);
    do {
      fVar10 = *param_6;
      fVar11 = param_6[3];
      lVar1 = lVar8 + (longlong)piVar7[-1] * 0xc;
      fVar13 = *(float *)(&DAT_182a7e780 + lVar1);
      fVar2 = *(float *)(&DAT_182a7e784 + lVar1);
      fVar3 = *(float *)(&DAT_182a7e788 + lVar1);
      lVar1 = lVar8 + (longlong)*piVar7 * 0xc;
      fVar12 = *(float *)(&DAT_182a7e780 + lVar1);
      fVar14 = *(float *)(&DAT_182a7e784 + lVar1);
      local_110 = fVar11 * fVar2 + fVar10 * fVar13 + param_6[6] * fVar3;
      fVar15 = *(float *)(&DAT_182a7e788 + lVar1);
      local_10c = param_6[4] * fVar2 + param_6[1] * fVar13 + param_6[7] * fVar3;
      local_108 = param_6[5] * fVar2 + param_6[2] * fVar13 + param_6[8] * fVar3;
      lVar1 = lVar8 + (longlong)piVar7[1] * 0xc;
      fVar13 = *(float *)(&DAT_182a7e780 + lVar1);
      local_100 = fVar12 * fVar10 + fVar14 * fVar11 + fVar15 * param_6[6];
      fVar2 = *(float *)(&DAT_182a7e784 + lVar1);
      local_fc = fVar12 * param_6[1] + fVar14 * param_6[4] + fVar15 * param_6[7];
      local_f8 = fVar12 * param_6[2] + fVar14 * param_6[5] + fVar15 * param_6[8];
      fVar3 = *(float *)(&DAT_182a7e788 + lVar1);
      local_120 = fVar13 * fVar10 + fVar2 * fVar11 + fVar3 * param_6[6];
      fVar14 = local_120 - local_110;
      fVar15 = fVar13 * param_6[1] + fVar2 * param_6[4] + fVar3 * param_6[7];
      fVar10 = local_f8 - local_108;
      fVar12 = local_100 - local_110;
      local_118 = fVar13 * param_6[2] + fVar2 * param_6[5] + fVar3 * param_6[8];
      fVar11 = local_fc - local_10c;
      fVar13 = local_118 - local_108;
      local_140 = (fVar15 - local_10c) * fVar10 - fVar13 * fVar11;
      fVar13 = fVar13 * fVar12 - fVar14 * fVar10;
      local_138 = fVar14 * fVar11 - (fVar15 - local_10c) * fVar12;
      fVar10 = SQRT(fVar13 * fVar13 + local_140 * local_140 + local_138 * local_138);
      if (fVar10 == 0.0) {
        local_140 = 0.0;
        local_138 = 0.0;
        fVar13 = 0.0;
      }
      else {
        fVar10 = DAT_1402783f4 / fVar10;
        local_140 = local_140 * fVar10;
        local_138 = local_138 * fVar10;
        fVar13 = fVar13 * fVar10;
      }
      fVar12 = local_138;
      fVar3 = local_140;
      fVar10 = *param_5;
      local_110 = local_110 + fVar10;
      local_100 = local_100 + fVar10;
      local_120 = local_120 + fVar10;
      fVar11 = param_5[1];
      local_10c = local_10c + fVar11;
      local_fc = local_fc + fVar11;
      local_11c = fVar15 + fVar11;
      fVar2 = param_5[2];
      local_108 = local_108 + fVar2;
      local_f8 = local_f8 + fVar2;
      local_118 = local_118 + fVar2;
      if (piVar7[-2] == 4) {
        lVar1 = lVar8 + (longlong)piVar7[2] * 0xc;
        fVar14 = *(float *)(&DAT_182a7e780 + lVar1);
        fVar4 = *(float *)(&DAT_182a7e784 + lVar1);
        fVar5 = *(float *)(&DAT_182a7e788 + lVar1);
        local_f0 = fVar5 * param_6[6] + fVar14 * *param_6 + fVar4 * param_6[3] + fVar10;
        local_ec = fVar5 * param_6[7] + fVar14 * param_6[1] + fVar4 * param_6[4] + fVar11;
        local_e8 = fVar5 * param_6[8] + fVar14 * param_6[2] + fVar4 * param_6[5] + fVar2;
      }
      local_13c = fVar13;
      iVar6 = FUN_140077fa0(&local_130,&local_140,local_res20,param_7,param_8,&local_110,&local_100,
                            &local_120,fVar15);
      if ((iVar6 != 0) && (local_res20[0] < *param_3)) {
        *param_1 = local_130;
        param_1[2] = local_128;
        param_1[1] = local_12c;
        *param_2 = fVar3;
        param_2[1] = fVar13;
        param_2[2] = fVar12;
        *param_3 = local_res20[0];
      }
      if (piVar7[-2] == 4) {
        iVar6 = FUN_140077fa0(&local_130,&local_140,local_res20,param_7,param_8,&local_110,
                              &local_120,&local_f0,fVar15);
        if ((iVar6 != 0) && (local_res20[0] < *param_3)) {
          *param_1 = local_130;
          param_1[2] = local_128;
          param_1[1] = local_12c;
          *param_2 = fVar3;
          param_2[1] = fVar13;
          param_2[2] = fVar12;
          *param_3 = local_res20[0];
        }
      }
      iVar9 = iVar9 + 1;
      piVar7 = piVar7 + 6;
    } while (iVar9 < *(int *)(&DAT_182a7ea80 + lVar8));
    if (*param_3 < DAT_1402783f4) {
      _DAT_151a848a0 = 0;
      DAT_151a848a8 = 0;
      return 1;
    }
  }
  return 0;
}



===== FUN_140108930 @ 140108930 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140108930(void)

{
  undefined4 uVar1;
  bool bVar2;
  bool bVar3;
  undefined4 uVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  float fVar10;
  byte bVar11;
  int iVar12;
  int iVar13;
  longlong lVar14;
  longlong lVar15;
  float *pfVar16;
  int *piVar17;
  undefined4 *puVar18;
  uint uVar19;
  ulonglong uVar20;
  int iVar21;
  longlong lVar22;
  float *pfVar23;
  float fVar24;
  float fVar25;
  undefined4 uVar26;
  float fVar27;
  float fVar28;
  float fVar29;
  float fVar30;
  float fVar31;
  float fVar32;
  float fVar33;
  float fVar34;
  float fVar35;
  float fVar36;
  float fVar37;
  undefined4 uVar38;
  float fVar39;
  float fVar40;
  undefined1 auStack_998 [32];
  undefined4 *local_978;
  undefined4 *local_970;
  undefined4 *local_968;
  undefined4 *local_960;
  undefined4 local_958;
  float local_948;
  float local_940;
  float local_93c;
  float local_938;
  longlong local_930;
  undefined4 *local_928;
  float local_920;
  undefined4 *local_918;
  float *local_910;
  uint local_908 [2];
  int local_900 [514];
  float local_f8;
  float local_f4;
  float local_f0;
  float local_e8;
  float local_e4;
  float local_e0;
  ulonglong local_d8;
  
  fVar31 = DAT_1402785b8;
  fVar25 = DAT_140278338;
  local_d8 = DAT_1403020a0 ^ (ulonglong)auStack_998;
  pfVar16 = (float *)&DAT_15f2d929c;
  iVar21 = 0;
  _DAT_183f7cbec = 0;
  fVar39 = DAT_14027880c;
  fVar30 = DAT_140278094;
  fVar29 = DAT_1402783b8;
  fVar33 = DAT_1402783f4;
  fVar37 = DAT_140278224;
  do {
    fVar32 = 0.0;
    if (pfVar16[-0x27] != 0.0) {
      fVar28 = *pfVar16;
      fVar27 = pfVar16[-1] - pfVar16[-4];
      lVar22 = (longlong)(int)pfVar16[-0x1d];
      fVar24 = pfVar16[1] - pfVar16[-2];
      pfVar16[-1] = pfVar16[-4];
      *pfVar16 = pfVar16[-3];
      pfVar16[1] = pfVar16[-2];
      fVar28 = SQRT((fVar28 - pfVar16[-3]) * (fVar28 - pfVar16[-3]) + fVar27 * fVar27 +
                    fVar24 * fVar24);
      if (pfVar16[-0x1b] <= DAT_140278d24 && DAT_140278d24 != pfVar16[-0x1b]) {
        pfVar16[-0x20] = 0.0;
      }
      if (pfVar16[-0x26] != 1.96182e-44) {
        if (fVar28 <= _DAT_140278204) {
          pfVar23 = pfVar16 + 0x1429;
          fVar24 = *pfVar23;
          if (fVar28 <= DAT_140278180) {
            if (fVar25 < fVar24) {
              bVar11 = FUN_14023b1b0();
              uVar4 = DAT_183ebfd34;
              if (DAT_1ad04adc0 != 0) {
                lVar15 = (longlong)(int)DAT_189c1dc64;
                fVar37 = *pfVar23;
                lVar14 = lVar15 * 0x80;
                DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
                (&DAT_1873de460)[lVar15 * 0x20] = 9;
                (&DAT_1873de464)[lVar15 * 0x20] = uVar4;
                (&DAT_1873de480)[lVar15 * 0x20] = DAT_183e9361c;
                *(float *)(&DAT_1873de468 + lVar14) = pfVar16[-0x1c];
                *(float *)(&DAT_1873de46c + lVar14) = pfVar16[-0x1b];
                *(float *)(&DAT_1873de470 + lVar14) = pfVar16[-0x1a];
                *(float *)(&DAT_1873de490 + lVar14) = fVar37 * fVar25;
                *(float *)(&DAT_1873de494 + lVar14) = (float)bVar11 * fVar30 + fVar29;
              }
            }
            *pfVar23 = 0.0;
            goto LAB_140108c73;
          }
        }
        else {
          FUN_14000b650(iVar21,(int)(fVar28 * fVar39 + DAT_140278730));
          fVar24 = pfVar16[0x1429];
        }
        pfVar23 = pfVar16 + 0x1429;
        fVar24 = fVar28 * fVar39 * fVar37 + fVar24;
        *pfVar23 = fVar24;
        if (fVar31 < fVar24) {
          bVar11 = FUN_14023b1b0();
          uVar4 = DAT_183ebfd34;
          if (DAT_1ad04adc0 == 0) {
            *pfVar23 = *pfVar23 - fVar31;
          }
          else {
            lVar15 = (longlong)(int)DAT_189c1dc64;
            fVar37 = *pfVar23;
            lVar14 = lVar15 * 0x80;
            DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
            (&DAT_1873de460)[lVar15 * 0x20] = 9;
            (&DAT_1873de464)[lVar15 * 0x20] = uVar4;
            (&DAT_1873de480)[lVar15 * 0x20] = DAT_183e9361c;
            *(float *)(&DAT_1873de468 + lVar14) = pfVar16[-0x1c];
            *(float *)(&DAT_1873de46c + lVar14) = pfVar16[-0x1b];
            *(float *)(&DAT_1873de470 + lVar14) = pfVar16[-0x1a];
            *(float *)(&DAT_1873de490 + lVar14) = fVar37 * fVar25;
            *(float *)(&DAT_1873de494 + lVar14) = (float)bVar11 * fVar30 + fVar29;
            *pfVar23 = fVar37 - fVar31;
          }
        }
      }
LAB_140108c73:
      fVar30 = (float)(&DAT_144981708)[lVar22 * 0x2f];
      fVar39 = (float)(&DAT_144981704)[lVar22 * 0x2f];
      fVar37 = (float)(&DAT_14498170c)[lVar22 * 0x2f];
      fVar28 = fVar39 * fVar39 + fVar30 * fVar30;
      fVar35 = fVar37 * fVar37 + fVar28;
      fVar36 = SQRT(fVar35);
      fVar24 = fVar32;
      fVar27 = fVar32;
      if (fVar36 != 0.0) {
        fVar33 = fVar33 / fVar36;
        fVar32 = fVar33 * fVar30;
        fVar24 = fVar33 * fVar37;
        fVar27 = fVar33 * fVar39;
      }
      fVar29 = DAT_140278bb0;
      if (DAT_1873de440 < (float)(&DAT_1449816fc)[lVar22 * 0x2f]) {
        fVar29 = DAT_140278b38;
      }
      fVar40 = fVar36 * DAT_140278b90;
      fVar36 = fVar36 * DAT_140278224;
      fVar29 = fVar35 * fVar29 *
               (fVar32 * (float)(&DAT_144981720)[lVar22 * 0x2f] +
                fVar27 * (float)(&DAT_14498171c)[lVar22 * 0x2f] +
               fVar24 * (float)(&DAT_144981724)[lVar22 * 0x2f]);
      if (fVar29 <= fVar40) {
        fVar29 = fVar40;
      }
      if (fVar36 <= fVar29) {
        fVar29 = fVar36;
      }
      fVar28 = (fVar37 + fVar37) * fVar37 + fVar28 + fVar28;
      fVar39 = (float)(&DAT_14498171c)[lVar22 * 0x2f] * fVar29 + fVar39;
      (&DAT_144981704)[lVar22 * 0x2f] = fVar39;
      (&DAT_144981708)[lVar22 * 0x2f] = fVar29 * (float)(&DAT_144981720)[lVar22 * 0x2f] + fVar30;
      (&DAT_14498170c)[lVar22 * 0x2f] = fVar29 * (float)(&DAT_144981724)[lVar22 * 0x2f] + fVar37;
      if ((float)(&DAT_1449816fc)[lVar22 * 0x2f] <= DAT_1873de440) {
        fVar30 = fVar28 * DAT_140278bb0;
      }
      else {
        fVar30 = fVar28 * _DAT_140278b2c - fVar28 * _DAT_140278090;
      }
      fVar30 = (fVar32 * (float)(&DAT_14498172c)[lVar22 * 0x2f] +
                fVar27 * (float)(&DAT_144981728)[lVar22 * 0x2f] +
               fVar24 * (float)(&DAT_144981730)[lVar22 * 0x2f]) * fVar30;
      if (fVar30 <= fVar40) {
        fVar30 = fVar40;
      }
      if (fVar36 <= fVar30) {
        fVar30 = fVar36;
      }
      fVar39 = (float)(&DAT_144981728)[lVar22 * 0x2f] * fVar30 + fVar39;
      (&DAT_144981704)[lVar22 * 0x2f] = fVar39;
      (&DAT_144981708)[lVar22 * 0x2f] =
           fVar30 * (float)(&DAT_14498172c)[lVar22 * 0x2f] + (float)(&DAT_144981708)[lVar22 * 0x2f];
      fVar10 = DAT_1873de440;
      fVar34 = fVar30 * (float)(&DAT_144981730)[lVar22 * 0x2f] +
               (float)(&DAT_14498170c)[lVar22 * 0x2f];
      (&DAT_14498170c)[lVar22 * 0x2f] = fVar34;
      fVar33 = DAT_1402783f4;
      fVar29 = DAT_1402783b8;
      fVar37 = DAT_140278224;
      fVar30 = DAT_140278094;
      if ((float)(&DAT_1449816fc)[lVar22 * 0x2f] <= fVar10) {
        fVar28 = fVar35 * _DAT_140278b80;
      }
      else {
        fVar28 = fVar28 * _DAT_140278b24;
      }
      fVar28 = (fVar32 * (float)(&DAT_144981738)[lVar22 * 0x2f] +
                fVar27 * (float)(&DAT_144981734)[lVar22 * 0x2f] +
               fVar24 * (float)(&DAT_14498173c)[lVar22 * 0x2f]) * fVar28;
      if (fVar28 <= fVar40) {
        fVar28 = fVar40;
      }
      if (fVar36 <= fVar28) {
        fVar28 = fVar36;
      }
      (&DAT_144981704)[lVar22 * 0x2f] = (float)(&DAT_144981734)[lVar22 * 0x2f] * fVar28 + fVar39;
      (&DAT_144981708)[lVar22 * 0x2f] =
           fVar28 * (float)(&DAT_144981738)[lVar22 * 0x2f] + (float)(&DAT_144981708)[lVar22 * 0x2f];
      fVar39 = DAT_14027880c;
      (&DAT_14498170c)[lVar22 * 0x2f] = fVar28 * (float)(&DAT_14498173c)[lVar22 * 0x2f] + fVar34;
    }
    fVar32 = DAT_140278280;
    uVar4 = DAT_140278148;
    iVar21 = iVar21 + 1;
    pfVar16 = pfVar16 + 0x145a;
  } while (iVar21 < 0x200);
  pfVar16 = (float *)&DAT_15f2d9230;
  local_948 = 0.0;
  local_918 = &DAT_15f2d922c;
  local_928 = &DAT_15f2d922c;
  local_910 = (float *)&DAT_15f2d9230;
  fVar30 = DAT_14027831c;
  fVar25 = DAT_140278b64;
  uVar38 = DAT_140278178;
  do {
    puVar18 = local_928;
    fVar29 = local_948;
    if (pfVar16[-0xc] != 0.0) {
      local_920 = pfVar16[-2];
      lVar22 = (longlong)(int)local_920;
      fVar31 = pfVar16[-10];
      if (fVar31 == 1.4013e-45) {
        FUN_14010aa70();
        fVar31 = pfVar16[-10];
      }
      if (fVar31 == 2.8026e-45) {
        FUN_14010af90();
      }
      if ((pfVar16[-0xb] == 1.82169e-44) && (FUN_14010c110(), pfVar16[-0xb] == 1.82169e-44)) {
        fVar31 = pfVar16[0x18];
        fVar39 = pfVar16[0x17];
        fVar28 = pfVar16[0x19];
        fVar24 = fVar31 * pfVar16[0xc] + fVar39 * pfVar16[0xb] + fVar28 * pfVar16[0xd];
        pfVar16[0xe40] = (float)(int)((float)((uint)fVar24 & DAT_140279840) * _DAT_140278ab0);
        uVar38 = DAT_183ebfd34;
        lVar14 = (longlong)(int)pfVar16[0x13e0];
        if (pfVar16[0x13e0] != -NAN) {
          fVar27 = (float)(&DAT_195adf9fc)
                          [(longlong)(int)(&DAT_195adf9dc)[lVar14 * 0x3c48] * 0x3c48];
          if ((float)(&DAT_195adf9fc)[lVar14 * 0x3c48] <=
              (float)(&DAT_195adf9fc)[(longlong)(int)(&DAT_195adf9dc)[lVar14 * 0x3c48] * 0x3c48]) {
            fVar27 = (float)(&DAT_195adf9fc)[lVar14 * 0x3c48];
          }
          if ((float)(&DAT_195adf9fc)[(longlong)(int)(&DAT_195adf9e0)[lVar14 * 0x3c48] * 0x3c48] <=
              fVar27) {
            fVar27 = (float)(&DAT_195adf9fc)
                            [(longlong)(int)(&DAT_195adf9e0)[lVar14 * 0x3c48] * 0x3c48];
          }
          fVar30 = fVar27 * fVar30 * fVar27;
        }
        if (fVar24 <= fVar25) {
          if (pfVar16[0x9f6] != 0.0) {
            if (DAT_1ad04adc0 != 0) {
              lVar15 = (longlong)(int)DAT_189c1dc64;
              lVar14 = lVar15 * 0x80;
              (&DAT_1873de460)[lVar15 * 0x20] = 4;
              (&DAT_1873de464)[lVar15 * 0x20] = uVar38;
              (&DAT_1873de480)[lVar15 * 0x20] = fVar29;
              (&DAT_1873de484)[lVar15 * 0x20] = 6;
              *(undefined4 *)(&DAT_1873de488 + lVar14) = 3;
              if (pfVar16 + -1 == (float *)0x0) {
                fVar25 = 0.0;
                fVar27 = 0.0;
                fVar35 = 0.0;
              }
              else {
                fVar25 = pfVar16[1];
                fVar27 = *pfVar16;
                fVar35 = pfVar16[-1];
              }
              *(float *)(&DAT_1873de468 + lVar14) = fVar35;
              *(float *)(&DAT_1873de46c + lVar14) = fVar27;
              *(float *)(&DAT_1873de470 + lVar14) = fVar25;
              *(float *)(&DAT_1873de474 + lVar14) = fVar39;
              *(float *)(&DAT_1873de478 + lVar14) = fVar31;
              *(float *)(&DAT_1873de47c + lVar14) = fVar28;
              DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
            }
            pfVar16[0x9f6] = 0.0;
          }
        }
        else if (pfVar16[0x9f6] == 0.0) {
          if (DAT_1ad04adc0 != 0) {
            lVar15 = (longlong)(int)DAT_189c1dc64;
            lVar14 = lVar15 * 0x80;
            (&DAT_1873de460)[lVar15 * 0x20] = 4;
            (&DAT_1873de464)[lVar15 * 0x20] = uVar38;
            (&DAT_1873de480)[lVar15 * 0x20] = fVar29;
            (&DAT_1873de484)[lVar15 * 0x20] = 0;
            *(undefined4 *)(&DAT_1873de488 + lVar14) = 3;
            if (pfVar16 + -1 == (float *)0x0) {
              fVar25 = 0.0;
              fVar27 = 0.0;
              fVar35 = 0.0;
            }
            else {
              fVar25 = pfVar16[1];
              fVar27 = *pfVar16;
              fVar35 = pfVar16[-1];
            }
            *(float *)(&DAT_1873de468 + lVar14) = fVar35;
            *(float *)(&DAT_1873de46c + lVar14) = fVar27;
            *(float *)(&DAT_1873de470 + lVar14) = fVar25;
            *(float *)(&DAT_1873de474 + lVar14) = fVar39;
            *(float *)(&DAT_1873de478 + lVar14) = fVar31;
            *(float *)(&DAT_1873de47c + lVar14) = fVar28;
            DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
          }
          pfVar16[0x9f6] = 1.4013e-45;
        }
        lVar14 = (longlong)(int)pfVar16[0x13e2];
        fVar31 = (float)(&DAT_15b1ac808)[lVar14 * 5] - pfVar16[-1];
        fVar39 = (float)(&DAT_15b1ac80c)[lVar14 * 5] - *pfVar16;
        fVar25 = (float)(&DAT_15b1ac810)[lVar14 * 5] - pfVar16[1];
        if (fVar39 * fVar39 + fVar31 * fVar31 + fVar25 * fVar25 < DAT_140278adc) {
          local_f8 = pfVar16[-1] - (float)(&DAT_15b1ac808)[lVar14 * 5];
          local_f4 = *pfVar16 - (float)(&DAT_15b1ac80c)[lVar14 * 5];
          local_f0 = pfVar16[1] - (float)(&DAT_15b1ac810)[lVar14 * 5];
          fVar30 = local_f4 * pfVar16[0xc] + local_f8 * pfVar16[0xb] + local_f0 * pfVar16[0xd];
          if (fVar30 < DAT_140278774) {
            fVar30 = 0.0;
          }
          if (pfVar16[0x13e1] == 1.4013e-45) {
            fVar30 = (float)((uint)fVar30 ^ DAT_140279870);
          }
          fVar30 = fVar30 * _DAT_1402780b0;
          if ((fVar24 < DAT_14027814c) && (_DAT_140278b58 < fVar24)) {
            pfVar16[0x13df] = (float)((int)pfVar16[0x13df] + 1);
            if ((int)pfVar16[0x13df] < 900) goto LAB_1401093bc;
            fVar25 = (float)((int)pfVar16[0x13e2] + 1);
            if (DAT_15b1ac800 <= (int)fVar25) {
              fVar25 = 0.0;
            }
            pfVar16[0x13e2] = fVar25;
          }
          pfVar16[0x13df] = 0.0;
        }
LAB_1401093bc:
        lVar14 = (longlong)(int)pfVar16[-2];
        fVar30 = (fVar24 + fVar30) * DAT_140278728;
        if (fVar30 <= DAT_140278bf8) {
          fVar30 = DAT_140278bf8;
        }
        if (DAT_1402783a0 <= fVar30) {
          fVar30 = DAT_1402783a0;
        }
        fVar30 = fVar30 * _DAT_140278b34;
        (&DAT_144981704)[lVar14 * 0x2f] =
             fVar30 * (float)(&DAT_144981734)[lVar14 * 0x2f] +
             (float)(&DAT_144981704)[lVar14 * 0x2f];
        (&DAT_144981708)[lVar14 * 0x2f] =
             fVar30 * (float)(&DAT_144981738)[lVar14 * 0x2f] +
             (float)(&DAT_144981708)[lVar14 * 0x2f];
        (&DAT_14498170c)[lVar14 * 0x2f] =
             fVar30 * (float)(&DAT_14498173c)[lVar14 * 0x2f] +
             (float)(&DAT_14498170c)[lVar14 * 0x2f];
      }
      fVar30 = DAT_140278c08;
      iVar21 = 0;
      local_930 = lVar22;
      if (0 < (int)pfVar16[0xe44]) {
        pfVar23 = pfVar16 + 0xe5a;
        do {
          fVar37 = pfVar23[-0xc];
          fVar25 = pfVar23[-10];
          lVar14 = (longlong)(int)pfVar23[-0x15];
          fVar31 = pfVar23[-0xb] + pfVar23[8];
          local_f8 = (float)(&DAT_1449816f8)[lVar14 * 0x2f] -
                     (fVar37 * (float)(&DAT_14498171c)[lVar22 * 0x2f] +
                      (float)(&DAT_144981728)[lVar22 * 0x2f] * fVar31 +
                     fVar25 * (float)(&DAT_144981734)[lVar22 * 0x2f] +
                     (float)(&DAT_1449816f8)[lVar22 * 0x2f]);
          local_f4 = (float)(&DAT_1449816fc)[lVar14 * 0x2f] -
                     ((float)(&DAT_14498172c)[lVar22 * 0x2f] * fVar31 +
                      fVar37 * (float)(&DAT_144981720)[lVar22 * 0x2f] +
                     fVar25 * (float)(&DAT_144981738)[lVar22 * 0x2f] +
                     (float)(&DAT_1449816fc)[lVar22 * 0x2f]);
          local_f0 = (float)(&DAT_144981700)[lVar14 * 0x2f] -
                     ((float)(&DAT_144981730)[lVar22 * 0x2f] * fVar31 +
                      fVar37 * (float)(&DAT_144981724)[lVar22 * 0x2f] +
                     fVar25 * (float)(&DAT_14498173c)[lVar22 * 0x2f] +
                     (float)(&DAT_144981700)[lVar22 * 0x2f]);
          fVar37 = (float)(&DAT_14498172c)[lVar22 * 0x2f] * local_f4 +
                   (float)(&DAT_144981728)[lVar22 * 0x2f] * local_f8 +
                   local_f0 * (float)(&DAT_144981730)[lVar22 * 0x2f];
          if (fVar37 <= fVar30) {
            fVar37 = fVar30;
          }
          if (fVar33 < fVar37) {
            fVar37 = fVar33;
          }
          fVar25 = (float)(&DAT_144981798)[lVar14 * 0x2f];
          pfVar23[7] = fVar37;
          pfVar23[0xc] = fVar25;
          if (0.0 <= fVar25) {
            if (fVar33 < fVar25) {
              pfVar23[0xc] = 1.0;
            }
          }
          else {
            pfVar23[0xc] = 0.0;
          }
          pfVar23[-4] = pfVar23[-5] + pfVar23[-4];
          FUN_14010d0d0(fVar29,iVar21);
          lVar14 = (longlong)(int)pfVar23[-0x15];
          iVar21 = iVar21 + 1;
          pfVar23[-2] = (float)(&DAT_1449816f8)[lVar14 * 0x2f];
          pfVar23[-1] = (float)(&DAT_1449816fc)[lVar14 * 0x2f];
          *pfVar23 = (float)(&DAT_144981700)[lVar14 * 0x2f];
          pfVar23[4] = (float)(&DAT_144981704)[lVar14 * 0x2f];
          pfVar23[5] = (float)(&DAT_144981708)[lVar14 * 0x2f];
          pfVar23[6] = (float)(&DAT_14498170c)[lVar14 * 0x2f];
          pfVar23 = pfVar23 + 0x2b;
          puVar18 = local_928;
          fVar37 = DAT_140278224;
        } while (iVar21 < (int)pfVar16[0xe44]);
      }
      lVar22 = (longlong)(int)pfVar16[-0xb] * 0x2c040;
      iVar21 = 0;
      fVar30 = DAT_14027831c;
      fVar25 = DAT_140278b64;
      uVar38 = DAT_140278178;
      if (0 < *(int *)(&DAT_19028ec54 + lVar22)) {
        pfVar23 = (float *)(&DAT_19028ec5c + lVar22);
        lVar14 = local_930;
        do {
          fVar30 = *pfVar23;
          fVar25 = pfVar23[-1];
          local_f8 = fVar25 * pfVar16[5] + pfVar16[-1] + fVar30 * pfVar16[8];
          local_f4 = fVar25 * pfVar16[6] + *pfVar16 + fVar30 * pfVar16[9];
          local_f0 = fVar25 * pfVar16[7] + pfVar16[1] + fVar30 * pfVar16[10];
          fVar29 = pfVar23[1];
          local_e8 = fVar29 * pfVar16[0xb] + fVar30 * pfVar16[8] + fVar25 * pfVar16[5] + pfVar16[-1]
          ;
          local_e4 = fVar29 * pfVar16[0xc] + local_f4;
          local_e0 = fVar29 * pfVar16[0xd] + local_f0;
          iVar12 = FUN_1400dc050(puVar18,&local_e8);
          fVar29 = local_e0;
          fVar25 = local_e4;
          fVar30 = local_e8;
          uVar9 = DAT_151a848f4;
          uVar8 = DAT_151a848f0;
          iVar7 = DAT_151a848e0;
          iVar6 = DAT_151a848dc;
          iVar13 = DAT_151a848d8;
          uVar5 = DAT_151a848d4;
          uVar38 = DAT_140278178;
          if (iVar12 != 0) {
            bVar3 = false;
            bVar2 = false;
            if (((((DAT_151a848d4 != 0xffffffff) && (bVar2 = false, DAT_151a848d8 != -1)) &&
                 (bVar2 = bVar3, DAT_151a848d4 < 4)) &&
                ((-1 < DAT_151a848d8 && ((DAT_151a848f0 & 0xe0000000) == 0x80000000)))) &&
               ((DAT_151a848f4 >> 0x10 & 1) != 0)) {
              uVar19 = DAT_151a848f4 & 0xffff;
              if (DAT_1ad04adc0 != 0) {
                lVar15 = (longlong)(int)DAT_189c1dc64;
                lVar14 = lVar15 * 0x80;
                (&DAT_1873de460)[lVar15 * 0x20] = 0x10;
                (&DAT_1873de464)[lVar15 * 0x20] = DAT_183ebfd34;
                (&DAT_1873de480)[lVar15 * 0x20] = iVar13 * 0x10000 + uVar5;
                (&DAT_1873de484)[lVar15 * 0x20] = iVar7 * 0x10000 + iVar6;
                *(uint *)(&DAT_1873de488 + lVar14) = uVar8;
                *(uint *)(&DAT_1873de48c + lVar14) = uVar19;
                *(float *)(&DAT_1873de468 + lVar14) = local_e8;
                *(float *)(&DAT_1873de46c + lVar14) = local_e4;
                *(float *)(&DAT_1873de470 + lVar14) = local_e0;
                if (pfVar16 + 0x17 == (float *)0x0) {
                  fVar37 = 0.0;
                  fVar33 = 0.0;
                  fVar31 = 0.0;
                }
                else {
                  fVar37 = pfVar16[0x19];
                  fVar33 = pfVar16[0x18];
                  fVar31 = pfVar16[0x17];
                }
                *(float *)(&DAT_1873de474 + lVar14) = fVar31;
                *(float *)(&DAT_1873de478 + lVar14) = fVar33;
                *(float *)(&DAT_1873de47c + lVar14) = fVar37;
                DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
                lVar14 = local_930;
              }
              local_978 = (undefined4 *)
                          CONCAT44(local_978._4_4_,0x10000 << ((byte)uVar9 & 0x1f) | uVar8);
              FUN_140016e30(uVar5,iVar13,iVar6,iVar7);
              bVar2 = true;
            }
            local_f4 = DAT_151a84884 - fVar25;
            local_940 = DAT_151a8488c;
            local_f8 = DAT_151a84880 - fVar30;
            local_93c = DAT_151a84890;
            local_938 = DAT_151a84894;
            local_f0 = DAT_151a84888 - fVar29;
            fVar33 = DAT_151a84890 * local_f4 + DAT_151a8488c * local_f8 + DAT_151a84894 * local_f0;
            puVar18 = local_928;
            uVar38 = DAT_140278178;
            fVar37 = DAT_140278224;
            if (DAT_151a84908 == -1) {
              local_f8 = DAT_1402f6188 * fVar32 + fVar30;
              local_f4 = DAT_1402f618c * fVar32 + fVar25;
              local_f0 = DAT_1402f6190 * fVar32 + fVar29;
              if ((*pfVar23 <= 0.0 && *pfVar23 != 0.0) &&
                 (iVar13 = FUN_1400dc050(&local_f8,&local_e8,0), iVar13 != 0)) {
                local_940 = DAT_151a8488c;
                local_93c = DAT_151a84890;
                local_938 = DAT_151a84894;
                fVar33 = (DAT_151a84884 - local_e4) * DAT_151a84890 +
                         (DAT_151a84880 - local_e8) * DAT_151a8488c +
                         (DAT_151a84888 - local_e0) * DAT_151a84894;
              }
              fVar37 = DAT_140278224;
              uVar38 = DAT_140278178;
              uVar26 = uVar4;
              uVar1 = DAT_140278178;
              if (bVar2) {
                uVar26 = DAT_1402780b4;
                uVar1 = DAT_1402780cc;
              }
              local_968 = (undefined4 *)CONCAT44(local_968._4_4_,uVar1);
              if (DAT_140278224 <= fVar33) {
                fVar33 = DAT_140278224;
              }
              local_970 = (undefined4 *)CONCAT44(local_970._4_4_,uVar26);
              local_978 = (undefined4 *)CONCAT44(local_978._4_4_,DAT_140278368);
              local_f8 = DAT_151a84880 - (float)(&DAT_1449816f8)[lVar14 * 0x2f];
              local_f4 = DAT_151a84884 - (float)(&DAT_1449816fc)[lVar14 * 0x2f];
              local_f0 = DAT_151a84888 - (float)(&DAT_144981700)[lVar14 * 0x2f];
              FUN_140005160(local_920,&local_f8,&local_940,fVar33);
              puVar18 = local_928;
            }
          }
          iVar21 = iVar21 + 1;
          pfVar23 = pfVar23 + 3;
          fVar30 = DAT_14027831c;
          fVar25 = DAT_140278b64;
        } while (iVar21 < *(int *)(&DAT_19028ec54 + lVar22));
      }
    }
    fVar29 = DAT_1402781bc;
    local_948 = (float)((int)local_948 + 1);
    local_928 = puVar18 + 0x145a;
    pfVar16 = pfVar16 + 0x145a;
    fVar33 = DAT_1402783f4;
    if (0x1ff < (int)local_948) {
      puVar18 = &DAT_15f2d9258;
      do {
        if (((puVar18[-0x16] != 0) && (puVar18[-0x15] == 0x11)) && (0 < (int)puVar18[0x139b])) {
          lVar22 = (longlong)(int)puVar18[0x139c];
          lVar14 = (longlong)(int)puVar18[-0xc];
          fVar30 = (float)(&DAT_14498172c)[lVar22 * 0x2f];
          fVar25 = (float)(&DAT_144981730)[lVar22 * 0x2f];
          fVar33 = (float)(&DAT_144981728)[lVar22 * 0x2f];
          lVar22 = (longlong)(int)puVar18[0x13a9];
          fVar31 = (float)(&DAT_144981728)[lVar14 * 0x2f];
          fVar39 = (float)(&DAT_14498172c)[lVar14 * 0x2f];
          fVar32 = (float)(&DAT_144981730)[lVar14 * 0x2f];
          uVar1 = puVar18[-2];
          (&DAT_1b4037c50)[lVar22 * 0x24] =
               (fVar30 * (float)(&DAT_144981730)[lVar14 * 0x2f] -
               fVar25 * (float)(&DAT_14498172c)[lVar14 * 0x2f]) * fVar29;
          (&DAT_1b4037c58)[lVar22 * 0x24] = (fVar33 * fVar39 - fVar31 * fVar30) * fVar29;
          (&DAT_1b4037c54)[lVar22 * 0x24] = (fVar31 * fVar25 - fVar33 * fVar32) * fVar29;
          (&DAT_1b4037c9c)[lVar22 * 0x24] = 1;
          (&DAT_1b4037ca0)[lVar22 * 0x24] = uVar1;
          (&DAT_1b4037ca4)[lVar22 * 0x24] = puVar18[-1];
          (&DAT_1b4037ca8)[lVar22 * 0x24] = *puVar18;
        }
        if (((puVar18[0x1444] != 0) && (puVar18[0x1445] == 0x11)) && (0 < (int)puVar18[0x27f5])) {
          lVar22 = (longlong)(int)puVar18[0x27f6];
          lVar14 = (longlong)(int)puVar18[0x144e];
          fVar30 = (float)(&DAT_14498172c)[lVar22 * 0x2f];
          fVar25 = (float)(&DAT_144981730)[lVar22 * 0x2f];
          fVar33 = (float)(&DAT_144981728)[lVar22 * 0x2f];
          lVar22 = (longlong)(int)puVar18[0x2803];
          fVar31 = (float)(&DAT_144981728)[lVar14 * 0x2f];
          fVar39 = (float)(&DAT_14498172c)[lVar14 * 0x2f];
          fVar32 = (float)(&DAT_144981730)[lVar14 * 0x2f];
          uVar1 = puVar18[0x1458];
          (&DAT_1b4037c50)[lVar22 * 0x24] =
               (fVar30 * (float)(&DAT_144981730)[lVar14 * 0x2f] -
               fVar25 * (float)(&DAT_14498172c)[lVar14 * 0x2f]) * fVar29;
          (&DAT_1b4037c54)[lVar22 * 0x24] = (fVar31 * fVar25 - fVar33 * fVar32) * fVar29;
          (&DAT_1b4037c58)[lVar22 * 0x24] = (fVar33 * fVar39 - fVar31 * fVar30) * fVar29;
          (&DAT_1b4037c9c)[lVar22 * 0x24] = 1;
          (&DAT_1b4037ca0)[lVar22 * 0x24] = uVar1;
          (&DAT_1b4037ca4)[lVar22 * 0x24] = puVar18[0x1459];
          (&DAT_1b4037ca8)[lVar22 * 0x24] = puVar18[0x145a];
        }
        if (((puVar18[0x289e] != 0) && (puVar18[0x289f] == 0x11)) && (0 < (int)puVar18[0x3c4f])) {
          lVar22 = (longlong)(int)puVar18[0x3c50];
          lVar14 = (longlong)(int)puVar18[0x28a8];
          fVar30 = (float)(&DAT_14498172c)[lVar22 * 0x2f];
          fVar25 = (float)(&DAT_144981730)[lVar22 * 0x2f];
          fVar33 = (float)(&DAT_144981728)[lVar22 * 0x2f];
          lVar22 = (longlong)(int)puVar18[0x3c5d];
          fVar31 = (float)(&DAT_144981728)[lVar14 * 0x2f];
          fVar39 = (float)(&DAT_14498172c)[lVar14 * 0x2f];
          fVar32 = (float)(&DAT_144981730)[lVar14 * 0x2f];
          uVar1 = puVar18[0x28b2];
          (&DAT_1b4037c50)[lVar22 * 0x24] =
               (fVar30 * (float)(&DAT_144981730)[lVar14 * 0x2f] -
               fVar25 * (float)(&DAT_14498172c)[lVar14 * 0x2f]) * fVar29;
          (&DAT_1b4037c54)[lVar22 * 0x24] = (fVar31 * fVar25 - fVar33 * fVar32) * fVar29;
          (&DAT_1b4037c58)[lVar22 * 0x24] = (fVar33 * fVar39 - fVar31 * fVar30) * fVar29;
          (&DAT_1b4037c9c)[lVar22 * 0x24] = 1;
          (&DAT_1b4037ca0)[lVar22 * 0x24] = uVar1;
          (&DAT_1b4037ca4)[lVar22 * 0x24] = puVar18[0x28b3];
          (&DAT_1b4037ca8)[lVar22 * 0x24] = puVar18[0x28b4];
        }
        if (((puVar18[0x3cf8] != 0) && (puVar18[0x3cf9] == 0x11)) && (0 < (int)puVar18[0x50a9])) {
          lVar22 = (longlong)(int)puVar18[0x50aa];
          lVar14 = (longlong)(int)puVar18[0x3d02];
          fVar30 = (float)(&DAT_14498172c)[lVar22 * 0x2f];
          fVar25 = (float)(&DAT_144981730)[lVar22 * 0x2f];
          fVar33 = (float)(&DAT_144981728)[lVar22 * 0x2f];
          lVar22 = (longlong)(int)puVar18[0x50b7];
          fVar31 = (float)(&DAT_144981728)[lVar14 * 0x2f];
          fVar39 = (float)(&DAT_14498172c)[lVar14 * 0x2f];
          fVar32 = (float)(&DAT_144981730)[lVar14 * 0x2f];
          uVar1 = puVar18[0x3d0c];
          (&DAT_1b4037c50)[lVar22 * 0x24] =
               (fVar30 * (float)(&DAT_144981730)[lVar14 * 0x2f] -
               fVar25 * (float)(&DAT_14498172c)[lVar14 * 0x2f]) * fVar29;
          (&DAT_1b4037c54)[lVar22 * 0x24] = (fVar31 * fVar25 - fVar33 * fVar32) * fVar29;
          (&DAT_1b4037c58)[lVar22 * 0x24] = (fVar33 * fVar39 - fVar31 * fVar30) * fVar29;
          (&DAT_1b4037c9c)[lVar22 * 0x24] = 1;
          (&DAT_1b4037ca0)[lVar22 * 0x24] = uVar1;
          (&DAT_1b4037ca4)[lVar22 * 0x24] = puVar18[0x3d0d];
          (&DAT_1b4037ca8)[lVar22 * 0x24] = puVar18[0x3d0e];
        }
        if (((puVar18[0x5152] != 0) && (puVar18[0x5153] == 0x11)) && (0 < (int)puVar18[0x6503])) {
          lVar22 = (longlong)(int)puVar18[0x6504];
          lVar14 = (longlong)(int)puVar18[0x515c];
          fVar30 = (float)(&DAT_14498172c)[lVar22 * 0x2f];
          fVar25 = (float)(&DAT_144981730)[lVar22 * 0x2f];
          fVar33 = (float)(&DAT_144981728)[lVar22 * 0x2f];
          lVar22 = (longlong)(int)puVar18[0x6511];
          fVar31 = (float)(&DAT_144981728)[lVar14 * 0x2f];
          fVar39 = (float)(&DAT_14498172c)[lVar14 * 0x2f];
          fVar32 = (float)(&DAT_144981730)[lVar14 * 0x2f];
          uVar1 = puVar18[0x5166];
          (&DAT_1b4037c50)[lVar22 * 0x24] =
               (fVar30 * (float)(&DAT_144981730)[lVar14 * 0x2f] -
               fVar25 * (float)(&DAT_14498172c)[lVar14 * 0x2f]) * fVar29;
          (&DAT_1b4037c54)[lVar22 * 0x24] = (fVar31 * fVar25 - fVar33 * fVar32) * fVar29;
          (&DAT_1b4037c58)[lVar22 * 0x24] = (fVar33 * fVar39 - fVar31 * fVar30) * fVar29;
          (&DAT_1b4037c9c)[lVar22 * 0x24] = 1;
          (&DAT_1b4037ca0)[lVar22 * 0x24] = uVar1;
          (&DAT_1b4037ca4)[lVar22 * 0x24] = puVar18[0x5167];
          (&DAT_1b4037ca8)[lVar22 * 0x24] = puVar18[0x5168];
        }
        if (((puVar18[0x65ac] != 0) && (puVar18[0x65ad] == 0x11)) && (0 < (int)puVar18[0x795d])) {
          lVar22 = (longlong)(int)puVar18[0x795e];
          lVar14 = (longlong)(int)puVar18[0x65b6];
          fVar30 = (float)(&DAT_14498172c)[lVar22 * 0x2f];
          fVar25 = (float)(&DAT_144981730)[lVar22 * 0x2f];
          fVar33 = (float)(&DAT_144981728)[lVar22 * 0x2f];
          lVar22 = (longlong)(int)puVar18[0x796b];
          fVar31 = (float)(&DAT_144981728)[lVar14 * 0x2f];
          fVar39 = (float)(&DAT_14498172c)[lVar14 * 0x2f];
          fVar32 = (float)(&DAT_144981730)[lVar14 * 0x2f];
          uVar1 = puVar18[0x65c0];
          (&DAT_1b4037c50)[lVar22 * 0x24] =
               (fVar30 * (float)(&DAT_144981730)[lVar14 * 0x2f] -
               fVar25 * (float)(&DAT_14498172c)[lVar14 * 0x2f]) * fVar29;
          (&DAT_1b4037c54)[lVar22 * 0x24] = (fVar31 * fVar25 - fVar33 * fVar32) * fVar29;
          (&DAT_1b4037c58)[lVar22 * 0x24] = (fVar33 * fVar39 - fVar31 * fVar30) * fVar29;
          (&DAT_1b4037c9c)[lVar22 * 0x24] = 1;
          (&DAT_1b4037ca0)[lVar22 * 0x24] = uVar1;
          (&DAT_1b4037ca4)[lVar22 * 0x24] = puVar18[0x65c1];
          (&DAT_1b4037ca8)[lVar22 * 0x24] = puVar18[0x65c2];
        }
        if (((puVar18[0x7a06] != 0) && (puVar18[0x7a07] == 0x11)) && (0 < (int)puVar18[0x8db7])) {
          lVar22 = (longlong)(int)puVar18[0x8db8];
          lVar14 = (longlong)(int)puVar18[0x7a10];
          fVar30 = (float)(&DAT_14498172c)[lVar22 * 0x2f];
          fVar25 = (float)(&DAT_144981730)[lVar22 * 0x2f];
          fVar33 = (float)(&DAT_144981728)[lVar22 * 0x2f];
          lVar22 = (longlong)(int)puVar18[0x8dc5];
          fVar31 = (float)(&DAT_144981728)[lVar14 * 0x2f];
          fVar39 = (float)(&DAT_14498172c)[lVar14 * 0x2f];
          fVar32 = (float)(&DAT_144981730)[lVar14 * 0x2f];
          uVar1 = puVar18[0x7a1a];
          (&DAT_1b4037c50)[lVar22 * 0x24] =
               (fVar30 * (float)(&DAT_144981730)[lVar14 * 0x2f] -
               fVar25 * (float)(&DAT_14498172c)[lVar14 * 0x2f]) * fVar29;
          (&DAT_1b4037c54)[lVar22 * 0x24] = (fVar31 * fVar25 - fVar33 * fVar32) * fVar29;
          (&DAT_1b4037c58)[lVar22 * 0x24] = (fVar33 * fVar39 - fVar31 * fVar30) * fVar29;
          (&DAT_1b4037c9c)[lVar22 * 0x24] = 1;
          (&DAT_1b4037ca0)[lVar22 * 0x24] = uVar1;
          (&DAT_1b4037ca4)[lVar22 * 0x24] = puVar18[0x7a1b];
          (&DAT_1b4037ca8)[lVar22 * 0x24] = puVar18[0x7a1c];
        }
        if (((puVar18[0x8e60] != 0) && (puVar18[0x8e61] == 0x11)) && (0 < (int)puVar18[0xa211])) {
          lVar22 = (longlong)(int)puVar18[0xa212];
          lVar14 = (longlong)(int)puVar18[0x8e6a];
          fVar30 = (float)(&DAT_14498172c)[lVar22 * 0x2f];
          fVar25 = (float)(&DAT_144981730)[lVar22 * 0x2f];
          fVar33 = (float)(&DAT_144981728)[lVar22 * 0x2f];
          lVar22 = (longlong)(int)puVar18[0xa21f];
          fVar31 = (float)(&DAT_144981728)[lVar14 * 0x2f];
          fVar39 = (float)(&DAT_14498172c)[lVar14 * 0x2f];
          fVar32 = (float)(&DAT_144981730)[lVar14 * 0x2f];
          uVar1 = puVar18[0x8e74];
          (&DAT_1b4037c50)[lVar22 * 0x24] =
               (fVar30 * (float)(&DAT_144981730)[lVar14 * 0x2f] -
               fVar25 * (float)(&DAT_14498172c)[lVar14 * 0x2f]) * fVar29;
          (&DAT_1b4037c54)[lVar22 * 0x24] = (fVar31 * fVar25 - fVar33 * fVar32) * fVar29;
          (&DAT_1b4037c58)[lVar22 * 0x24] = (fVar33 * fVar39 - fVar31 * fVar30) * fVar29;
          (&DAT_1b4037c9c)[lVar22 * 0x24] = 1;
          (&DAT_1b4037ca0)[lVar22 * 0x24] = uVar1;
          (&DAT_1b4037ca4)[lVar22 * 0x24] = puVar18[0x8e75];
          (&DAT_1b4037ca8)[lVar22 * 0x24] = puVar18[0x8e76];
        }
        puVar18 = puVar18 + 0xa2d0;
      } while ((longlong)puVar18 < 0x15fd06258);
      _DAT_16b2a2ea0 = 1;
      local_930 = 0x200;
      puVar18 = &DAT_15f2d922c;
      pfVar16 = (float *)&DAT_15f2d92b8;
      do {
        lVar22 = local_930;
        if (pfVar16[-0x2e] != 0.0) {
          fVar30 = pfVar16[-0x2d];
          FUN_140038230(local_908,puVar18 + 0x27,puVar18 + 0x2a);
          if (0 < (int)local_908[0]) {
            piVar17 = local_900;
            uVar20 = (ulonglong)local_908[0];
            do {
              lVar22 = (longlong)*piVar17;
              if ((((float)(&DAT_182bbb284)[lVar22 * 0x6e0] < pfVar16[1] ||
                    (float)(&DAT_182bbb284)[lVar22 * 0x6e0] == pfVar16[1]) &&
                  (pfVar16[-2] <= (float)(&DAT_182bbb290)[lVar22 * 0x6e0])) &&
                 (((float)(&DAT_182bbb28c)[lVar22 * 0x6e0] < pfVar16[3] ||
                   (float)(&DAT_182bbb28c)[lVar22 * 0x6e0] == pfVar16[3] &&
                  (((*pfVar16 <= (float)(&DAT_182bbb298)[lVar22 * 0x6e0] &&
                    ((float)(&DAT_182bbb288)[lVar22 * 0x6e0] < pfVar16[2] ||
                     (float)(&DAT_182bbb288)[lVar22 * 0x6e0] == pfVar16[2])) &&
                   (pfVar16[-1] <= (float)(&DAT_182bbb294)[lVar22 * 0x6e0])))))) {
                local_978 = puVar18;
                if ((fVar30 == 2.38221e-44) &&
                   ((&DAT_182a7e180)[(longlong)(int)(&DAT_182bbb194)[lVar22 * 0x6e0] * 0x4f4] == 1))
                {
                  local_958 = 1;
                  local_970 = puVar18 + 6;
                  local_960 = &DAT_182bbb224 + lVar22 * 0x6e0;
                  local_968 = &DAT_182bbb1dc + lVar22 * 0x6e0;
                  iVar21 = FUN_140048da0(pfVar16[-0x24],(&DAT_182bbb1d8)[lVar22 * 0x6e0],
                                         &DAT_1905a2dc8,
                                         &DAT_182a7f260 +
                                         (longlong)(int)(&DAT_182bbb194)[lVar22 * 0x6e0] * 0x13d0);
                }
                else {
                  local_970 = puVar18 + 6;
                  local_960 = &DAT_182bbb224 + lVar22 * 0x6e0;
                  local_968 = &DAT_182bbb1dc + lVar22 * 0x6e0;
                  iVar21 = FUN_14004a7a0(pfVar16[-0x24],(&DAT_182bbb1d8)[lVar22 * 0x6e0],
                                         &DAT_1902b67b0 + (longlong)(int)fVar30 * 0x2c040,
                                         &DAT_182a7f088 +
                                         (longlong)(int)(&DAT_182bbb194)[lVar22 * 0x6e0] * 0x4f4);
                }
                if (iVar21 != 0) {
                  *(undefined8 *)(&DAT_182bbb188 + lVar22 * 0x6e0) = 0;
                }
              }
              piVar17 = piVar17 + 2;
              uVar20 = uVar20 - 1;
              lVar22 = local_930;
            } while (uVar20 != 0);
          }
        }
        uVar1 = DAT_140278304;
        puVar18 = puVar18 + 0x145a;
        pfVar16 = pfVar16 + 0x145a;
        local_930 = lVar22 + -1;
      } while (local_930 != 0);
      puVar18 = &DAT_15f2d922c;
      _DAT_16b2a2ea0 = 0;
      local_948 = 0.0;
      local_930 = 0;
      pfVar16 = local_910;
      do {
        fVar30 = local_948;
        if ((pfVar16[-0xc] != 0.0) && (pfVar16[-10] != 4.2039e-45)) {
          fVar25 = 0.0;
          piVar17 = &DAT_15f2d9208;
          do {
            puVar18 = local_918;
            if (((((fVar25 != fVar30) && (piVar17[-2] != 0)) && (*piVar17 != 3)) &&
                ((pfVar16[0xd7e] != fVar25 && ((float)piVar17[0xd88] != fVar30)))) &&
               (((((float)piVar17[0x2a] < pfVar16[0x23] || (float)piVar17[0x2a] == pfVar16[0x23] &&
                  (((float)piVar17[0x2b] < pfVar16[0x24] || (float)piVar17[0x2b] == pfVar16[0x24] &&
                   ((float)piVar17[0x2c] < pfVar16[0x25] || (float)piVar17[0x2c] == pfVar16[0x25])))
                  ) && (pfVar16[0x20] <= (float)piVar17[0x2d])) &&
                (((pfVar16[0x21] <= (float)piVar17[0x2e] && (pfVar16[0x22] <= (float)piVar17[0x2f]))
                 && ((pfVar16[-0xb] != 1.4013e-44 || (piVar17[-1] != 0xb)))))))) {
              lVar22 = (longlong)(int)pfVar16[-0xb] * 0x2c040;
              iVar21 = 0;
              if (0 < *(int *)(&DAT_19028ec54 + lVar22)) {
                pfVar23 = (float *)(&DAT_19028ec5c + lVar22);
                do {
                  fVar30 = *pfVar23;
                  fVar29 = pfVar23[-1];
                  local_f8 = fVar29 * pfVar16[5] + pfVar16[-1] + fVar30 * pfVar16[8];
                  local_f4 = fVar29 * pfVar16[6] + *pfVar16 + fVar30 * pfVar16[9];
                  local_f0 = fVar29 * pfVar16[7] + pfVar16[1] + fVar30 * pfVar16[10];
                  fVar33 = pfVar23[1];
                  local_e8 = fVar33 * pfVar16[0xb] + fVar30 * pfVar16[8] +
                             fVar29 * pfVar16[5] + pfVar16[-1];
                  local_e4 = fVar33 * pfVar16[0xc] + local_f4;
                  local_e0 = fVar33 * pfVar16[0xd] + local_f0;
                  iVar13 = FUN_1400e21f0(fVar25,puVar18,&local_e8);
                  if (iVar13 != 0) {
                    lVar15 = (longlong)(int)pfVar16[-2];
                    lVar14 = (longlong)piVar17[8];
                    local_960 = (undefined4 *)CONCAT44(local_960._4_4_,uVar4);
                    local_968 = (undefined4 *)CONCAT44(local_968._4_4_,uVar1);
                    local_f8 = DAT_151a84880 - (float)(&DAT_1449816f8)[lVar15 * 0x2f];
                    local_f4 = DAT_151a84884 - (float)(&DAT_1449816fc)[lVar15 * 0x2f];
                    local_f0 = DAT_151a84888 - (float)(&DAT_144981700)[lVar15 * 0x2f];
                    local_940 = DAT_151a84880 - (float)(&DAT_1449816f8)[lVar14 * 0x2f];
                    local_93c = DAT_151a84884 - (float)(&DAT_1449816fc)[lVar14 * 0x2f];
                    local_938 = DAT_151a84888 - (float)(&DAT_144981700)[lVar14 * 0x2f];
                    fVar30 = (DAT_151a84884 - local_e4) * DAT_151a84890 +
                             (DAT_151a84880 - local_e8) * DAT_151a8488c +
                             (DAT_151a84888 - local_e0) * DAT_151a84894;
                    if (fVar37 <= fVar30) {
                      fVar30 = fVar37;
                    }
                    local_970 = (undefined4 *)CONCAT44(local_970._4_4_,fVar30);
                    local_978 = &DAT_151a8488c;
                    local_958 = uVar38;
                    FUN_1400052c0(pfVar16[-2],lVar14,&local_f8,&local_940);
                  }
                  iVar21 = iVar21 + 1;
                  pfVar23 = pfVar23 + 3;
                  fVar30 = local_948;
                } while (iVar21 < *(int *)(&DAT_19028ec54 + lVar22));
              }
            }
            fVar25 = (float)((int)fVar25 + 1);
            piVar17 = piVar17 + 0x145a;
            puVar18 = local_918;
          } while ((int)fVar25 < 0x200);
        }
        local_948 = (float)((int)fVar30 + 1);
        puVar18 = puVar18 + 0x145a;
        pfVar16 = pfVar16 + 0x145a;
        local_918 = puVar18;
      } while ((int)local_948 < 0x200);
      return;
    }
  } while( true );
}



===== FUN_1401402c0 @ 1401402c0 root=true =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1401402c0(void)

{
  float fVar1;
  float fVar2;
  float fVar3;
  undefined4 uVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  undefined8 uVar8;
  longlong lVar9;
  longlong lVar10;
  int iVar11;
  float *pfVar12;
  longlong lVar13;
  ulonglong uVar14;
  char *pcVar15;
  longlong lVar16;
  uint uVar17;
  ulonglong uVar18;
  undefined4 *puVar19;
  ulonglong uVar20;
  int iVar21;
  ulonglong uVar22;
  ulonglong uVar23;
  uint uVar24;
  uint uVar25;
  double dVar26;
  uint uVar27;
  float fVar28;
  float fVar29;
  float fVar30;
  float fVar31;
  float fVar32;
  float fVar33;
  undefined1 auStack_128 [32];
  float local_108;
  float local_104;
  float local_100;
  float local_fc;
  undefined1 local_f8 [16];
  undefined1 local_e8 [16];
  undefined4 local_d8;
  ulonglong local_d0;
  
  local_d0 = DAT_1403020a0 ^ (ulonglong)auStack_128;
  FUN_1400e7f80(0,"data/uzi.itm");
  fVar31 = DAT_140278710;
  uVar4 = DAT_1402784b0;
  fVar3 = DAT_1402783f4;
  fVar2 = DAT_140278338;
  fVar1 = DAT_140278280;
  _DAT_182a7e1b0 = DAT_140275cf8;
  _DAT_182a7e1b4 = DAT_140275cfc;
  _DAT_182a7e188 = DAT_140278674;
  DAT_182a7e1b6 = DAT_140275cfe;
  _DAT_182a7e184 = 500;
  _DAT_182a7e190 = 1;
  DAT_182a7e19c = 2;
  _DAT_182a7e198 = 6;
  DAT_182a7e1a8 = 6.6666665;
  _DAT_182a7e1ac = 0x3daaaaab;
  _DAT_182a7e1a0 = 0x5a;
  _DAT_182a7e1a4 = 300;
  _DAT_182a7e274 = 0x3d200000;
  _DAT_182a7e280 = 0x3d200000;
  _DAT_182a7e278 = 0x3f000000;
  _DAT_182a7e27c = 0x3e800000;
  _DAT_182a7e1fc = 2;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,DAT_1402784b0);
  FUN_14010e370(&local_108,local_f8);
  fVar30 = DAT_140278c08;
  _DAT_182a7e230 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a7e230 == 0.0) {
    _DAT_182a7e238 = 0.0;
    _DAT_182a7e234 = 0.0;
    _DAT_182a7e230 = 0.0;
  }
  else {
    _DAT_182a7e230 = fVar3 / _DAT_182a7e230;
    _DAT_182a7e238 = local_100 * _DAT_182a7e230;
    _DAT_182a7e234 = local_104 * _DAT_182a7e230;
    _DAT_182a7e230 = local_108 * _DAT_182a7e230;
  }
  fVar28 = local_fc;
  if (local_fc <= DAT_140278c08) {
    fVar28 = DAT_140278c08;
  }
  if (fVar3 <= fVar28) {
    fVar28 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar28);
  local_d8 = 0x3f800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  _DAT_182a7e23c = (float)(dVar26 + dVar26);
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a7e240 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a7e240 == 0.0) {
    _DAT_182a7e248 = 0.0;
    _DAT_182a7e244 = 0.0;
    _DAT_182a7e240 = 0.0;
  }
  else {
    _DAT_182a7e240 = fVar3 / _DAT_182a7e240;
    _DAT_182a7e248 = local_100 * _DAT_182a7e240;
    _DAT_182a7e244 = local_104 * _DAT_182a7e240;
    _DAT_182a7e240 = local_108 * _DAT_182a7e240;
  }
  fVar28 = local_fc;
  if (local_fc <= fVar30) {
    fVar28 = fVar30;
  }
  if (fVar3 <= fVar28) {
    fVar28 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar28);
  _DAT_182a7e218 = 0;
  uVar20 = 0;
  _DAT_182a7e21c = 0xbd800000;
  _DAT_182a7e220 = 0x3ec00000;
  DAT_182a7e284 = 0x3d000000;
  _DAT_182a7e24c = (float)(dVar26 + dVar26);
  _DAT_182a7f580 = DAT_140274ba8;
  _DAT_182a7f584 = DAT_140274bac;
  DAT_182a7e288 = 0x3d400000;
  DAT_182a7e28c = 0x3ee147ae;
  DAT_182a7f554 = 500;
  _DAT_182a7f560 = 1;
  _DAT_182a7f568 = 8;
  _DAT_182a7f57c = 0x3daaaaab;
  _DAT_182a7e270 = DAT_182a7e1a8 * (float)(&DAT_1a8a873c0)[(longlong)DAT_182a7e19c * 6] * fVar1;
  _DAT_182a7f570 = 0x5a;
  _DAT_182a7f644 = 0x3d200000;
  DAT_182a7f578 = DAT_140278738;
  _DAT_182a7f558 = DAT_1402786bc;
  _DAT_182a7f650 = 0x3d200000;
  _DAT_182a7f648 = 0x3f000000;
  _DAT_182a7f64c = 0x3e800000;
  _DAT_182a7f5c0 = 0;
  _DAT_182a7f5c8 = 0xbf200000;
  _DAT_182a7f5cc = 2;
  _DAT_182a7f5d4 = 0xbdc00000;
  _DAT_182a7f5d8 = 0x3d800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a7f600 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a7f600 == 0.0) {
    _DAT_182a7f608 = 0.0;
    _DAT_182a7f604 = 0.0;
    _DAT_182a7f600 = 0.0;
  }
  else {
    _DAT_182a7f600 = fVar3 / _DAT_182a7f600;
    _DAT_182a7f608 = local_100 * _DAT_182a7f600;
    _DAT_182a7f604 = local_104 * _DAT_182a7f600;
    _DAT_182a7f600 = local_108 * _DAT_182a7f600;
  }
  fVar28 = local_fc;
  if (local_fc <= fVar30) {
    fVar28 = fVar30;
  }
  if (fVar3 <= fVar28) {
    fVar28 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar28);
  _DAT_182a7f5dc = 0;
  _DAT_182a7f5e0 = 0xbd800000;
  _DAT_182a7f5e4 = 0xbe000000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  _DAT_182a7f60c = (float)(dVar26 + dVar26);
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a7f610 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a7f610 == 0.0) {
    _DAT_182a7f618 = 0.0;
    _DAT_182a7f614 = 0.0;
    _DAT_182a7f610 = 0.0;
  }
  else {
    _DAT_182a7f610 = fVar3 / _DAT_182a7f610;
    _DAT_182a7f618 = local_100 * _DAT_182a7f610;
    _DAT_182a7f614 = local_104 * _DAT_182a7f610;
    _DAT_182a7f610 = local_108 * _DAT_182a7f610;
  }
  fVar28 = local_fc;
  if (local_fc <= fVar30) {
    fVar28 = fVar30;
  }
  if (fVar3 <= fVar28) {
    fVar28 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar28);
  _DAT_182a7f5e8 = 0;
  _DAT_182a7f5ec = 0xbd800000;
  _DAT_182a7f5f0 = 0x3ec00000;
  DAT_182a7f654 = 0x3d000000;
  _DAT_182a7f61c = (float)(dVar26 + dVar26);
  DAT_182a80958 = s_AK_47_Magazine_140274be0[8];
  DAT_182a80958_1._0_1_ = s_AK_47_Magazine_140274be0[9];
  DAT_182a80958_1._1_1_ = s_AK_47_Magazine_140274be0[10];
  DAT_182a80958_1._2_1_ = s_AK_47_Magazine_140274be0[0xb];
  DAT_182a8095c = s_AK_47_Magazine_140274be0[0xc];
  register0x00000001 = s_AK_47_Magazine_140274be0[0xd];
  DAT_182a8095e = s_AK_47_Magazine_140274be0[0xe];
  DAT_182a7f658 = 0x3d400000;
  DAT_182a7f65c = 0x3ee147ae;
  _DAT_182a808e4 = 0;
  _DAT_182a808e8 = 0xbd800000;
  _DAT_182a7f640 = DAT_182a7f578 * (float)(&DAT_1a8a873c0)[(longlong)DAT_182a7f56c * 6] * fVar1;
  _DAT_182a808ec = 0x3ec00000;
  _DAT_182a7fb2c = 1;
  DAT_182a80924 = 0x32;
  DAT_182a80950 = s_AK_47_Magazine_140274be0[0];
  DAT_182a80950_1._0_1_ = s_AK_47_Magazine_140274be0[1];
  DAT_182a80950_1._1_1_ = s_AK_47_Magazine_140274be0[2];
  DAT_182a80950_1._2_1_ = s_AK_47_Magazine_140274be0[3];
  DAT_182a80950_1._3_1_ = s_AK_47_Magazine_140274be0[4];
  DAT_182a80950_1._4_1_ = s_AK_47_Magazine_140274be0[5];
  DAT_182a80950_1._5_1_ = s_AK_47_Magazine_140274be0[6];
  DAT_182a80950_1._6_1_ = s_AK_47_Magazine_140274be0[7];
  _DAT_182a80930 = 0;
  _DAT_182a80928 = 0x3f400000;
  _DAT_182a80944 = 0x1e;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a809d0 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a809d0 == 0.0) {
    _DAT_182a809d8 = 0.0;
    _DAT_182a809d4 = 0.0;
    _DAT_182a809d0 = 0.0;
  }
  else {
    _DAT_182a809d0 = fVar3 / _DAT_182a809d0;
    _DAT_182a809d8 = _DAT_182a809d0 * local_100;
    _DAT_182a809d4 = _DAT_182a809d0 * local_104;
    _DAT_182a809d0 = _DAT_182a809d0 * local_108;
  }
  fVar28 = local_fc;
  if (local_fc <= fVar30) {
    fVar28 = fVar30;
  }
  if (fVar3 <= fVar28) {
    fVar28 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar28);
  _DAT_182a81d20 = DAT_140274bb0;
  DAT_182a81d24 = DAT_140274bb4;
  _DAT_182a80a24 = 0x3d800000;
  _DAT_182a80a28 = 0x3e000000;
  _DAT_182a809dc = (float)(dVar26 + dVar26);
  _DAT_182a80a2c = 0x3e800000;
  _DAT_182a80a40 = 1;
  DAT_182a81cf4._0_4_ = 0x2ee;
  _DAT_182a81d00 = 1;
  DAT_182a81d0c = 1;
  _DAT_182a80f00 = _DAT_140278ee0;
  uRam0000000182a80f08 = _UNK_140278ee8;
  _DAT_182a81d08 = 7;
  DAT_182a81d18 = DAT_14027876c;
  DAT_182a81cf4._4_4_ = DAT_140278658;
  _DAT_182a81d1c = 0x3d4ccccd;
  _DAT_182a81d10 = 0x5a;
  _DAT_182a81de4 = 0x3d200000;
  _DAT_182a81df0 = 0x3d200000;
  _DAT_182a81de8 = 0x3f000000;
  _DAT_182a81dec = 0x3e800000;
  _DAT_182a81d60 = 0;
  _DAT_182a81d68 = 0xbf200000;
  _DAT_182a81d6c = 2;
  _DAT_182a81d74 = 0xbdc00000;
  _DAT_182a81d78 = 0x3d800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a81da0 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a81da0 == 0.0) {
    _DAT_182a81da8 = 0.0;
    _DAT_182a81da4 = 0.0;
    _DAT_182a81da0 = 0.0;
  }
  else {
    _DAT_182a81da0 = fVar3 / _DAT_182a81da0;
    _DAT_182a81da8 = _DAT_182a81da0 * local_100;
    _DAT_182a81da4 = _DAT_182a81da0 * local_104;
    _DAT_182a81da0 = _DAT_182a81da0 * local_108;
  }
  fVar28 = local_fc;
  if (local_fc <= fVar30) {
    fVar28 = fVar30;
  }
  if (fVar3 <= fVar28) {
    fVar28 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar28);
  _DAT_182a81d7c = 0;
  _DAT_182a81d80 = 0xbd800000;
  _DAT_182a81d84 = 0xbe000000;
  local_d8 = 0x3f800000;
  _DAT_182a81dac = (float)(dVar26 + dVar26);
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a81db0 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a81db0 == 0.0) {
    _DAT_182a81db8 = 0.0;
    _DAT_182a81db4 = 0.0;
    _DAT_182a81db0 = 0.0;
  }
  else {
    _DAT_182a81db0 = fVar3 / _DAT_182a81db0;
    _DAT_182a81db8 = _DAT_182a81db0 * local_100;
    _DAT_182a81db4 = _DAT_182a81db0 * local_104;
    _DAT_182a81db0 = _DAT_182a81db0 * local_108;
  }
  fVar28 = local_fc;
  if (local_fc <= fVar30) {
    fVar28 = fVar30;
  }
  if (fVar3 <= fVar28) {
    fVar28 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar28);
  _DAT_182a81d88 = 0;
  _DAT_182a81d8c = 0xbd800000;
  _DAT_182a81d90 = 0x3ec00000;
  _DAT_182a81df4 = 0x3d000000;
  _DAT_182a81dbc = (float)(dVar26 + dVar26);
  DAT_182a830f8 = s_M_16_Magazine_140274bf0[8];
  DAT_182a830f8_1._0_1_ = s_M_16_Magazine_140274bf0[9];
  DAT_182a830f8_1._1_1_ = s_M_16_Magazine_140274bf0[10];
  DAT_182a830f8_1._2_1_ = s_M_16_Magazine_140274bf0[0xb];
  DAT_182a830fc = s_M_16_Magazine_140274bf0[0xc];
  register0x00000001 = s_M_16_Magazine_140274bf0[0xd];
  _DAT_182a81df8 = 0x3d900000;
  _DAT_182a81dfc = 0x3ec00000;
  _DAT_182a83084 = 0;
  _DAT_182a83088 = 0xbd000000;
  _DAT_182a8308c = 0x3ec00000;
  _DAT_182a822cc = 1;
  _DAT_182a81de0 = DAT_182a81d18 * (float)(&DAT_1a8a873c0)[(longlong)DAT_182a81d0c * 6] * fVar1;
  DAT_182a830c4._0_4_ = 0x4b;
  _DAT_182a830d0 = 0;
  DAT_182a830c4._4_4_ = 0x3f400000;
  DAT_182a830f0 = s_M_16_Magazine_140274bf0[0];
  DAT_182a830f0_1._0_1_ = s_M_16_Magazine_140274bf0[1];
  DAT_182a830f0_1._1_1_ = s_M_16_Magazine_140274bf0[2];
  DAT_182a830f0_1._2_1_ = s_M_16_Magazine_140274bf0[3];
  DAT_182a830f0_1._3_1_ = s_M_16_Magazine_140274bf0[4];
  DAT_182a830f0_1._4_1_ = s_M_16_Magazine_140274bf0[5];
  DAT_182a830f0_1._5_1_ = s_M_16_Magazine_140274bf0[6];
  DAT_182a830f0_1._6_1_ = s_M_16_Magazine_140274bf0[7];
  _DAT_182a830e4 = 0x1e;
  _DAT_182a831c4 = 0x3d800000;
  _DAT_182a831c8 = 0x3e000000;
  _DAT_182a831cc = 0x3e800000;
  _DAT_182a83140 = 0;
  _DAT_182a83144 = 0xbd800000;
  _DAT_182a83148 = 0xbdc00000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a83170 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a83170 == 0.0) {
    _DAT_182a83178 = 0.0;
    _DAT_182a83174 = 0.0;
    _DAT_182a83170 = 0.0;
  }
  else {
    _DAT_182a83170 = fVar3 / _DAT_182a83170;
    _DAT_182a83178 = _DAT_182a83170 * local_100;
    _DAT_182a83174 = _DAT_182a83170 * local_104;
    _DAT_182a83170 = _DAT_182a83170 * local_108;
  }
  fVar28 = local_fc;
  if (local_fc <= fVar30) {
    fVar28 = fVar30;
  }
  if (fVar3 <= fVar28) {
    fVar28 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar28);
  _DAT_182a836a0 = _DAT_140278ee0;
  uRam0000000182a836a8 = _UNK_140278ee8;
  _DAT_182a831e8 = 1;
  DAT_182a86c34._0_4_ = 300;
  _DAT_182a86c40 = 1;
  _DAT_182a8317c = (float)(dVar26 + dVar26);
  _DAT_182a86c4c = 2;
  _DAT_182a86c48 = 5;
  _DAT_182a86c58 = 0x40d55555;
  _DAT_182a86c5c = 0x3d088889;
  _DAT_182a86c50 = 0x5a;
  DAT_182a86c34._4_4_ = 0x40200000;
  _DAT_182a86c60 = 0x35504d;
  _DAT_182a86d24 = 0x3d200000;
  _DAT_182a86d20 = DAT_1a8a873f0 * fVar31 * fVar1;
  _DAT_182a86d30 = 0x3d200000;
  _DAT_182a86d28 = 0x3f000000;
  _DAT_182a86d2c = 0x3e800000;
  _DAT_182a86ca0 = 0;
  _DAT_182a86ca8 = 0xbf200000;
  _DAT_182a86d34 = 0x3d000000;
  _DAT_182a86d38 = 0x3d900000;
  _DAT_182a86d3c = 0x3ec00000;
  _DAT_182a86cac = 2;
  _DAT_182a86cb4 = 0xbdc00000;
  _DAT_182a86cb8 = 0x3d800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a86ce0 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a86ce0 == 0.0) {
    _DAT_182a86ce8 = 0.0;
    _DAT_182a86ce4 = 0.0;
    _DAT_182a86ce0 = 0.0;
  }
  else {
    _DAT_182a86ce0 = fVar3 / _DAT_182a86ce0;
    _DAT_182a86ce8 = _DAT_182a86ce0 * local_100;
    _DAT_182a86ce4 = _DAT_182a86ce0 * local_104;
    _DAT_182a86ce0 = _DAT_182a86ce0 * local_108;
  }
  fVar28 = local_fc;
  if (local_fc <= fVar30) {
    fVar28 = fVar30;
  }
  if (fVar3 <= fVar28) {
    fVar28 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar28);
  _DAT_182a86cbc = 0;
  _DAT_182a86cc0 = 0xbd800000;
  _DAT_182a86cc4 = 0xbe000000;
  local_d8 = 0x3f800000;
  _DAT_182a86cec = (float)(dVar26 + dVar26);
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a86cf0 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a86cf0 == 0.0) {
    _DAT_182a86cf8 = 0.0;
    _DAT_182a86cf4 = 0.0;
    _DAT_182a86cf0 = 0.0;
  }
  else {
    _DAT_182a86cf0 = fVar3 / _DAT_182a86cf0;
    _DAT_182a86cf8 = _DAT_182a86cf0 * local_100;
    _DAT_182a86cf4 = _DAT_182a86cf0 * local_104;
    _DAT_182a86cf0 = _DAT_182a86cf0 * local_108;
  }
  fVar28 = local_fc;
  if (local_fc <= fVar30) {
    fVar28 = fVar30;
  }
  if (fVar3 <= fVar28) {
    fVar28 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar28);
  DAT_182a88038 = s_MP5_Magazine_140274bd0[8];
  DAT_182a88038_1._0_1_ = s_MP5_Magazine_140274bd0[9];
  DAT_182a88038_1._1_1_ = s_MP5_Magazine_140274bd0[10];
  DAT_182a88038_1._2_1_ = s_MP5_Magazine_140274bd0[0xb];
  DAT_182a8803c = s_MP5_Magazine_140274bd0[0xc];
  DAT_182a88030 = s_MP5_Magazine_140274bd0[0];
  DAT_182a88030_1._0_1_ = s_MP5_Magazine_140274bd0[1];
  DAT_182a88030_1._1_1_ = s_MP5_Magazine_140274bd0[2];
  DAT_182a88030_1._2_1_ = s_MP5_Magazine_140274bd0[3];
  DAT_182a88030_1._3_1_ = s_MP5_Magazine_140274bd0[4];
  DAT_182a88030_1._4_1_ = s_MP5_Magazine_140274bd0[5];
  DAT_182a88030_1._5_1_ = s_MP5_Magazine_140274bd0[6];
  DAT_182a88030_1._6_1_ = s_MP5_Magazine_140274bd0[7];
  _DAT_182a86cfc = (float)(dVar26 + dVar26);
  _DAT_182a86cc8 = 0;
  _DAT_182a86ccc = 0xbd800000;
  _DAT_182a86cd0 = 0x3ec00000;
  _DAT_182a87fc4 = 0;
  _DAT_182a87fc8 = 0xbd800000;
  _DAT_182a87fcc = 0x3ec00000;
  _DAT_182a8720c = 1;
  DAT_182a88004._0_4_ = 0x1e;
  _DAT_182a88010 = 0;
  DAT_182a88004._4_4_ = 0x3f200000;
  _DAT_182a88024 = 0x1e;
  _DAT_182a88104 = 0x3d800000;
  _DAT_182a88108 = 0x3e000000;
  _DAT_182a8810c = 0x3e800000;
  _DAT_182a88080 = 0;
  _DAT_182a88084 = 0xbd800000;
  _DAT_182a88088 = 0xbdc00000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a880b0 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a880b0 == 0.0) {
    _DAT_182a880b8 = 0.0;
    _DAT_182a880b4 = 0.0;
    _DAT_182a880b0 = 0.0;
  }
  else {
    _DAT_182a880b0 = fVar3 / _DAT_182a880b0;
    _DAT_182a880b8 = _DAT_182a880b0 * local_100;
    _DAT_182a880b4 = _DAT_182a880b0 * local_104;
    _DAT_182a880b0 = _DAT_182a880b0 * local_108;
  }
  fVar28 = local_fc;
  if (local_fc <= fVar30) {
    fVar28 = fVar30;
  }
  if (fVar3 <= fVar28) {
    fVar28 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar28);
  _DAT_182a88138 = 1;
  _DAT_182a885e0 = _DAT_140278ee0;
  uRam0000000182a885e8 = _UNK_140278ee8;
  _DAT_182a880bc = (float)(dVar26 + dVar26);
  FUN_1400e7f80(9,"data/uzi.itm");
  DAT_182a893d4._0_4_ = 1000;
  _DAT_182a893e0 = 1;
  DAT_182a893ec = 2;
  _DAT_182a893e8 = 6;
  DAT_182a893f8 = 6.6666665;
  _DAT_182a893fc = 0x3d4ccccd;
  _DAT_182a893f0 = 0x5a;
  DAT_182a893d4._4_4_ = 0x40200000;
  _DAT_182a89400 = 0x697a55;
  _DAT_182a894c4 = 0x3d200000;
  _DAT_182a894d0 = 0x3d200000;
  _DAT_182a894c8 = 0x3f000000;
  _DAT_182a894cc = 0x3e800000;
  _DAT_182a8944c = 2;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a89480 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a89480 == 0.0) {
    _DAT_182a89488 = 0.0;
    _DAT_182a89484 = 0.0;
    _DAT_182a89480 = 0.0;
  }
  else {
    _DAT_182a89480 = fVar3 / _DAT_182a89480;
    _DAT_182a89488 = _DAT_182a89480 * local_100;
    _DAT_182a89484 = _DAT_182a89480 * local_104;
    _DAT_182a89480 = _DAT_182a89480 * local_108;
  }
  fVar28 = local_fc;
  if (local_fc <= fVar30) {
    fVar28 = fVar30;
  }
  if (fVar3 <= fVar28) {
    fVar28 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar28);
  local_d8 = 0x3f800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  _DAT_182a8948c = (float)(dVar26 + dVar26);
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a89490 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a89490 == 0.0) {
    _DAT_182a89498 = 0.0;
    _DAT_182a89494 = 0.0;
    _DAT_182a89490 = 0.0;
  }
  else {
    _DAT_182a89490 = fVar3 / _DAT_182a89490;
    _DAT_182a89498 = _DAT_182a89490 * local_100;
    _DAT_182a89494 = _DAT_182a89490 * local_104;
    _DAT_182a89490 = _DAT_182a89490 * local_108;
  }
  fVar28 = local_fc;
  if (local_fc <= fVar30) {
    fVar28 = fVar30;
  }
  if (fVar3 <= fVar28) {
    fVar28 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar28);
  _DAT_182a89468 = 0;
  _DAT_182a8946c = 0xbd800000;
  _DAT_182a89470 = 0x3ec00000;
  _DAT_182a8949c = (float)(dVar26 + dVar26);
  _DAT_182a894d4 = 0x3d800000;
  _DAT_182a894d8 = 0x3dc00000;
  _DAT_182a894dc = 0x3ea00000;
  _DAT_182a899ac = 1;
  _DAT_182a8a764 = 0;
  _DAT_182a8a768 = 0xbd800000;
  _DAT_182a8a76c = 0x3ec00000;
  _DAT_182a894c0 = DAT_182a893f8 * (float)(&DAT_1a8a873c0)[(longlong)DAT_182a893ec * 6] * fVar1;
  FUN_1400e7f80(10,"data/uzi_magazine.itm");
  DAT_182a8a7d0 = s_Uzi_Magazine_140274c00[0];
  DAT_182a8a7d0_1._0_1_ = s_Uzi_Magazine_140274c00[1];
  DAT_182a8a7d0_1._1_1_ = s_Uzi_Magazine_140274c00[2];
  DAT_182a8a7d0_1._2_1_ = s_Uzi_Magazine_140274c00[3];
  DAT_182a8a7d0_1._3_1_ = s_Uzi_Magazine_140274c00[4];
  DAT_182a8a7d0_1._4_1_ = s_Uzi_Magazine_140274c00[5];
  DAT_182a8a7d0_1._5_1_ = s_Uzi_Magazine_140274c00[6];
  DAT_182a8a7d0_1._6_1_ = s_Uzi_Magazine_140274c00[7];
  DAT_182a8a7d8 = s_Uzi_Magazine_140274c00[8];
  DAT_182a8a7d8_1._0_1_ = s_Uzi_Magazine_140274c00[9];
  DAT_182a8a7d8_1._1_1_ = s_Uzi_Magazine_140274c00[10];
  DAT_182a8a7d8_1._2_1_ = s_Uzi_Magazine_140274c00[0xb];
  DAT_182a8a7dc = s_Uzi_Magazine_140274c00[0xc];
  DAT_182a8a7a4._0_4_ = 100;
  _DAT_182a8a7b0 = 0;
  DAT_182a8a7a4._4_4_ = 0x3f200000;
  _DAT_182a8a7c4 = 0x1e;
  _DAT_182a8a8a4 = 0x3d800000;
  _DAT_182a8a8a8 = 0x3e000000;
  _DAT_182a8a8ac = 0x3e000000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a8a850 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a8a850 == 0.0) {
    _DAT_182a8a858 = 0.0;
    _DAT_182a8a854 = 0.0;
    _DAT_182a8a850 = 0.0;
  }
  else {
    _DAT_182a8a850 = fVar3 / _DAT_182a8a850;
    _DAT_182a8a858 = _DAT_182a8a850 * local_100;
    _DAT_182a8a854 = _DAT_182a8a850 * local_104;
    _DAT_182a8a850 = _DAT_182a8a850 * local_108;
  }
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  DAT_182a844c0 = s_Magnum_140275d18[0];
  DAT_182a844c0_1._0_1_ = s_Magnum_140275d18[1];
  DAT_182a844c0_1._1_1_ = s_Magnum_140275d18[2];
  DAT_182a844c0_1._2_1_ = s_Magnum_140275d18[3];
  DAT_182a844c4 = s_Magnum_140275d18[4];
  register0x00000001 = s_Magnum_140275d18[5];
  _DAT_182a8a85c = (float)(dVar26 + dVar26);
  DAT_182a844c6 = s_Magnum_140275d18[6];
  _DAT_182a8a8e0 = 1;
  _DAT_182a84498 = DAT_140278428;
  _DAT_182a84508 = DAT_140278bcc;
  _DAT_182a84494 = 10000;
  _DAT_182a8ad80 = _DAT_140278ee0;
  uRam0000000182a8ad88 = _UNK_140278ee8;
  _DAT_182a844a0 = 1;
  _DAT_182a84580 = DAT_1a8a87408 * _DAT_14027871c * fVar2;
  _DAT_182a844a4 = 1;
  _DAT_182a844ac = 3;
  _DAT_182a844a8 = 0x1e;
  DAT_182a85890 = s__45_Bullets_140275d20[0];
  DAT_182a85890_1._0_1_ = s__45_Bullets_140275d20[1];
  DAT_182a85890_1._1_1_ = s__45_Bullets_140275d20[2];
  DAT_182a85890_1._2_1_ = s__45_Bullets_140275d20[3];
  DAT_182a85890_1._3_1_ = s__45_Bullets_140275d20[4];
  DAT_182a85890_1._4_1_ = s__45_Bullets_140275d20[5];
  DAT_182a85890_1._5_1_ = s__45_Bullets_140275d20[6];
  DAT_182a85890_1._6_1_ = s__45_Bullets_140275d20[7];
  _DAT_182a8bbe8 = DAT_140278bb4;
  _DAT_182a844b8 = 0x40f55555;
  _DAT_182a844bc = 0x3d088889;
  _DAT_182a844b0 = 0x12;
  _DAT_182a84584 = 0x3d800000;
  _DAT_182a84590 = 0x3d800000;
  _DAT_182a84588 = 0x3ec00000;
  _DAT_182a8458c = 0x3e000000;
  _DAT_182a84500 = 0;
  _DAT_182a84510 = 0;
  _DAT_182a84514 = 0xbe000000;
  _DAT_182a84518 = 0x3d800000;
  _DAT_182a84594 = 0x3d800000;
  _DAT_182a84598 = 0x3dc00000;
  _DAT_182a8459c = 0x3e400000;
  _DAT_182a84a6c = 1;
  _DAT_182a85864 = 1000;
  _DAT_182a85870 = 0;
  _DAT_182a85868 = 0x3f000000;
  _DAT_182a85884 = 6;
  DAT_182a85898 = s__45_Bullets_140275d20[8];
  DAT_182a85898_1._0_1_ = s__45_Bullets_140275d20[9];
  DAT_182a85898_1._1_1_ = s__45_Bullets_140275d20[10];
  DAT_182a85898_1._2_1_ = s__45_Bullets_140275d20[0xb];
  _DAT_182a85964 = 0x3d800000;
  _DAT_182a85968 = 0x3e000000;
  _DAT_182a8596c = 0x3e800000;
  _DAT_182a85990 = 1;
  _DAT_182a85e40 = _DAT_140278ee0;
  uRam0000000182a85e48 = _UNK_140278ee8;
  DAT_182a8bb74._0_4_ = 0x32;
  _DAT_182a8bb80 = 1;
  _DAT_182a8bb84 = 1;
  _DAT_182a8bb8c = 2;
  _DAT_182a8bb88 = 0x1e;
  _DAT_182a8bb98 = 0x40d55555;
  _DAT_182a8bb9c = 0x3d088889;
  _DAT_182a8bb90 = 0x20;
  DAT_182a8bb74._4_4_ = 0x3f800000;
  _DAT_182a8bba0 = 0x6d6d39;
  _DAT_182a8bc64 = 0x3d000000;
  _DAT_182a8bc70 = 0x3d000000;
  _DAT_182a8bc68 = 0x3e800000;
  _DAT_182a8bc6c = 0x3e000000;
  _DAT_182a8bbe0 = 0;
  _DAT_182a8bc74 = 0x3e000000;
  _DAT_182a8bc78 = 0x3e400000;
  _DAT_182a8bc7c = 0x3ec00000;
  _DAT_182a8bbec = 1;
  _DAT_182a8bc60 = DAT_1a8a873f0 * fVar31 * fVar2;
  _DAT_182a8bbf4 = 0xbd800000;
  _DAT_182a8bbf8 = 0xbd000000;
  local_d8 = 0x3f800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a8bc20 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a8bc20 == 0.0) {
    _DAT_182a8bc28 = 0.0;
    _DAT_182a8bc24 = 0.0;
    _DAT_182a8bc20 = 0.0;
  }
  else {
    _DAT_182a8bc20 = fVar3 / _DAT_182a8bc20;
    _DAT_182a8bc28 = _DAT_182a8bc20 * local_100;
    _DAT_182a8bc24 = _DAT_182a8bc20 * local_104;
    _DAT_182a8bc20 = _DAT_182a8bc20 * local_108;
  }
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  DAT_182a8cf78 = s_9mm_Magazine_140274bc0[8];
  DAT_182a8cf78_1._0_1_ = s_9mm_Magazine_140274bc0[9];
  DAT_182a8cf78_1._1_1_ = s_9mm_Magazine_140274bc0[10];
  DAT_182a8cf78_1._2_1_ = s_9mm_Magazine_140274bc0[0xb];
  DAT_182a8cf7c = s_9mm_Magazine_140274bc0[0xc];
  _DAT_182a8c14c = 1;
  DAT_182a8cf44._0_4_ = 5;
  _DAT_182a8bc2c = (float)(dVar26 + dVar26);
  _DAT_182a8cf50 = 0;
  DAT_182a8cf44._4_4_ = 0x3f000000;
  _DAT_182a8cf64 = 0xc;
  _DAT_182a8d044 = 0x3d800000;
  DAT_182a8cf70 = s_9mm_Magazine_140274bc0[0];
  DAT_182a8cf70_1._0_1_ = s_9mm_Magazine_140274bc0[1];
  DAT_182a8cf70_1._1_1_ = s_9mm_Magazine_140274bc0[2];
  DAT_182a8cf70_1._2_1_ = s_9mm_Magazine_140274bc0[3];
  DAT_182a8cf70_1._3_1_ = s_9mm_Magazine_140274bc0[4];
  DAT_182a8cf70_1._4_1_ = s_9mm_Magazine_140274bc0[5];
  DAT_182a8cf70_1._5_1_ = s_9mm_Magazine_140274bc0[6];
  DAT_182a8cf70_1._6_1_ = s_9mm_Magazine_140274bc0[7];
  _DAT_182a8d048 = 0x3e000000;
  _DAT_182a8d04c = 0x3e800000;
  _DAT_182a8d088 = 1;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a8cff0 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a8cff0 == 0.0) {
    _DAT_182a8cff8 = 0.0;
    _DAT_182a8cff4 = 0.0;
    _DAT_182a8cff0 = 0.0;
  }
  else {
    _DAT_182a8cff0 = fVar3 / _DAT_182a8cff0;
    _DAT_182a8cff8 = _DAT_182a8cff0 * local_100;
    _DAT_182a8cff4 = _DAT_182a8cff0 * local_104;
    _DAT_182a8cff0 = _DAT_182a8cff0 * local_108;
  }
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  _DAT_182a8d520 = _DAT_140278ee0;
  uRam0000000182a8d528 = _UNK_140278ee8;
  DAT_182a8f6e4._0_4_ = 10;
  _DAT_182a8f6f0 = 0;
  _DAT_182a8f704 = 2;
  _DAT_182a8cffc = (float)(dVar26 + dVar26);
  DAT_182a8f6e4._4_4_ = 0x3f800000;
  _DAT_182a8f710 = 0x656761646e6142;
  local_d8 = 0x3f800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a8f790 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a8f790 == 0.0) {
    _DAT_182a8f798 = 0.0;
    _DAT_182a8f794 = 0.0;
    _DAT_182a8f790 = 0.0;
  }
  else {
    _DAT_182a8f790 = fVar3 / _DAT_182a8f790;
    _DAT_182a8f798 = _DAT_182a8f790 * local_100;
    _DAT_182a8f794 = _DAT_182a8f790 * local_104;
    _DAT_182a8f790 = _DAT_182a8f790 * local_108;
  }
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  DAT_182a90ae8 = s_Briefcase_140274c18[8];
  register0x00000001 = s_Briefcase_140274c18[9];
  DAT_182a90ae0 = s_Briefcase_140274c18[0];
  DAT_182a90ae0_1._0_1_ = s_Briefcase_140274c18[1];
  DAT_182a90ae0_1._1_1_ = s_Briefcase_140274c18[2];
  DAT_182a90ae0_1._2_1_ = s_Briefcase_140274c18[3];
  DAT_182a90ae0_1._3_1_ = s_Briefcase_140274c18[4];
  DAT_182a90ae0_1._4_1_ = s_Briefcase_140274c18[5];
  DAT_182a90ae0_1._5_1_ = s_Briefcase_140274c18[6];
  DAT_182a90ae0_1._6_1_ = s_Briefcase_140274c18[7];
  _DAT_182a8f7e4 = 0x3e800000;
  _DAT_182a8f7e8 = 0x3e000000;
  _DAT_182a8f79c = (float)(dVar26 + dVar26);
  _DAT_182a8f7ec = 0x3e800000;
  DAT_182a90ab4 = 0x32;
  _DAT_182a90ac0 = 0;
  _DAT_182a90ab8 = 0x40800000;
  _DAT_182a8fcc0 = _DAT_140278ee0;
  uRam0000000182a8fcc8 = _UNK_140278ee8;
  _DAT_182a90bb4 = 0x3ea00000;
  _DAT_182a90bb8 = 0x3e000000;
  _DAT_182a90bbc = 0x3e800000;
  _DAT_182a90b2c = 1;
  _DAT_182a90b34 = 0;
  _DAT_182a90b38 = 0x3e800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a90b60 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a90b60 == 0.0) {
    _DAT_182a90b68 = 0.0;
    _DAT_182a90b64 = 0.0;
    _DAT_182a90b60 = 0.0;
  }
  else {
    _DAT_182a90b60 = fVar3 / _DAT_182a90b60;
    _DAT_182a90b68 = _DAT_182a90b60 * local_100;
    _DAT_182a90b64 = _DAT_182a90b60 * local_104;
    _DAT_182a90b60 = _DAT_182a90b60 * local_108;
  }
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  DAT_182a91eb8 = s_Open_Briefcase_140275d30[8];
  DAT_182a91eb8_1._0_1_ = s_Open_Briefcase_140275d30[9];
  DAT_182a91eb8_1._1_1_ = s_Open_Briefcase_140275d30[10];
  DAT_182a91eb8_1._2_1_ = s_Open_Briefcase_140275d30[0xb];
  DAT_182a91ebc = s_Open_Briefcase_140275d30[0xc];
  register0x00000001 = s_Open_Briefcase_140275d30[0xd];
  DAT_182a91ebe = s_Open_Briefcase_140275d30[0xe];
  _DAT_182a90b6c = (float)(dVar26 + dVar26);
  _DAT_182a91e90 = 0;
  _DAT_182a91e88 = 0x40800000;
  _DAT_182a91f84 = 0x3ea00000;
  _DAT_182a91f88 = 0x3e000000;
  DAT_182a91eb0 = s_Open_Briefcase_140275d30[0];
  DAT_182a91eb0_1._0_1_ = s_Open_Briefcase_140275d30[1];
  DAT_182a91eb0_1._1_1_ = s_Open_Briefcase_140275d30[2];
  DAT_182a91eb0_1._2_1_ = s_Open_Briefcase_140275d30[3];
  DAT_182a91eb0_1._3_1_ = s_Open_Briefcase_140275d30[4];
  DAT_182a91eb0_1._4_1_ = s_Open_Briefcase_140275d30[5];
  DAT_182a91eb0_1._5_1_ = s_Open_Briefcase_140275d30[6];
  DAT_182a91eb0_1._6_1_ = s_Open_Briefcase_140275d30[7];
  _DAT_182a91f8c = 0x3e800000;
  _DAT_182a91efc = 1;
  _DAT_182a91f04 = 0xbe000000;
  _DAT_182a91f08 = 0x3e800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a91f30 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a91f30 == 0.0) {
    _DAT_182a91f38 = 0.0;
    _DAT_182a91f34 = 0.0;
    _DAT_182a91f30 = 0.0;
  }
  else {
    _DAT_182a91f30 = fVar3 / _DAT_182a91f30;
    _DAT_182a91f38 = _DAT_182a91f30 * local_100;
    _DAT_182a91f34 = _DAT_182a91f30 * local_104;
    _DAT_182a91f30 = _DAT_182a91f30 * local_108;
  }
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  _DAT_182a93280 = DAT_140275d40;
  DAT_182a93284 = DAT_140275d44;
  _DAT_182a93260 = 0;
  _DAT_182a93258 = 0x3dcccccd;
  _DAT_182a91f3c = (float)(dVar26 + dVar26);
  local_d8 = 0x3f800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a93300 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a93300 == 0.0) {
    _DAT_182a93308 = 0.0;
    _DAT_182a93304 = 0.0;
    _DAT_182a93300 = 0.0;
  }
  else {
    _DAT_182a93300 = fVar3 / _DAT_182a93300;
    _DAT_182a93308 = _DAT_182a93300 * local_100;
    _DAT_182a93304 = _DAT_182a93300 * local_104;
    _DAT_182a93300 = _DAT_182a93300 * local_108;
  }
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  _DAT_182a94650 = DAT_140275d40;
  DAT_182a94654 = DAT_140275d44;
  _DAT_182a93354 = 0x3e000000;
  _DAT_182a93358 = 0x3d800000;
  _DAT_182a9330c = (float)(dVar26 + dVar26);
  _DAT_182a9335c = 0x3e800000;
  _DAT_182a933ac = 1;
  _DAT_182a94630 = 0;
  _DAT_182a94628 = 0x3dcccccd;
  _DAT_182a93830 = _DAT_140278ee0;
  uRam0000000182a93838 = _UNK_140278ee8;
  _DAT_182a946a0 = 0;
  _DAT_182a946a8 = 0x3e000000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  _DAT_182a946d0 = SQRT(local_108 * local_108 + local_104 * local_104 + local_100 * local_100);
  if (_DAT_182a946d0 == 0.0) {
    _DAT_182a946d8 = 0.0;
    _DAT_182a946d4 = 0.0;
    _DAT_182a946d0 = 0.0;
  }
  else {
    _DAT_182a946d0 = fVar3 / _DAT_182a946d0;
    _DAT_182a946d8 = _DAT_182a946d0 * local_100;
    _DAT_182a946d4 = _DAT_182a946d0 * local_104;
    _DAT_182a946d0 = _DAT_182a946d0 * local_108;
  }
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  DAT_182a95a28 = s_Black_Disk_140275d48[8];
  register0x00000001 = s_Black_Disk_140275d48[9];
  DAT_182a95a2a = s_Black_Disk_140275d48[10];
  _DAT_182a94724 = 0x3e000000;
  _DAT_182a94728 = 0x3d800000;
  _DAT_182a946dc = (float)(dVar26 + dVar26);
  _DAT_182a9472c = 0x3e800000;
  _DAT_182a9477c = 1;
  _DAT_182a959f4 = 0x14;
  _DAT_182a95a00 = 0;
  _DAT_182a959f8 = 0x3f800000;
  _DAT_182a94c00 = _DAT_140278ee0;
  uRam0000000182a94c08 = _UNK_140278ee8;
  DAT_182a95a20 = s_Black_Disk_140275d48[0];
  DAT_182a95a20_1._0_1_ = s_Black_Disk_140275d48[1];
  DAT_182a95a20_1._1_1_ = s_Black_Disk_140275d48[2];
  DAT_182a95a20_1._2_1_ = s_Black_Disk_140275d48[3];
  DAT_182a95a20_1._3_1_ = s_Black_Disk_140275d48[4];
  DAT_182a95a20_1._4_1_ = s_Black_Disk_140275d48[5];
  DAT_182a95a20_1._5_1_ = s_Black_Disk_140275d48[6];
  DAT_182a95a20_1._6_1_ = s_Black_Disk_140275d48[7];
  _DAT_182a95af4 = 0x3e800000;
  _DAT_182a95af8 = 0x3dc00000;
  _DAT_182a95afc = 0x3e800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182a95aa0,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  DAT_182a96df8 = s_Green_Disk_140275d58[8];
  register0x00000001 = s_Green_Disk_140275d58[9];
  DAT_182a96dfa = s_Green_Disk_140275d58[10];
  _DAT_182a95b4c = 1;
  _DAT_182a95ba8 = 1;
  _DAT_182a95aac = (float)(dVar26 + dVar26);
  _DAT_182a96dd0 = 0;
  _DAT_182a96dc8 = 0x3f800000;
  _DAT_182a96ec4 = 0x3e800000;
  _DAT_182a96ec8 = 0x3dc00000;
  _DAT_182a95fd0 = _DAT_140278ee0;
  uRam0000000182a95fd8 = _UNK_140278ee8;
  _DAT_182a96ecc = 0x3e800000;
  DAT_182a96df0 = s_Green_Disk_140275d58[0];
  DAT_182a96df0_1._0_1_ = s_Green_Disk_140275d58[1];
  DAT_182a96df0_1._1_1_ = s_Green_Disk_140275d58[2];
  DAT_182a96df0_1._2_1_ = s_Green_Disk_140275d58[3];
  DAT_182a96df0_1._3_1_ = s_Green_Disk_140275d58[4];
  DAT_182a96df0_1._4_1_ = s_Green_Disk_140275d58[5];
  DAT_182a96df0_1._5_1_ = s_Green_Disk_140275d58[6];
  DAT_182a96df0_1._6_1_ = s_Green_Disk_140275d58[7];
  local_d8 = 0x3f800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182a96e70,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  DAT_182a981c8 = s_Blue_Disk_140275d68[8];
  register0x00000001 = s_Blue_Disk_140275d68[9];
  _DAT_182a96f1c = 1;
  _DAT_182a96f78 = 1;
  _DAT_182a981a0 = 0;
  _DAT_182a98198 = 0x3f800000;
  _DAT_182a96e7c = (float)(dVar26 + dVar26);
  _DAT_182a98294 = 0x3e800000;
  _DAT_182a98298 = 0x3dc00000;
  _DAT_182a9829c = 0x3e800000;
  local_d8 = 0x3f800000;
  _DAT_182a973a0 = _DAT_140278ee0;
  uRam0000000182a973a8 = _UNK_140278ee8;
  DAT_182a981c0 = s_Blue_Disk_140275d68[0];
  DAT_182a981c0_1._0_1_ = s_Blue_Disk_140275d68[1];
  DAT_182a981c0_1._1_1_ = s_Blue_Disk_140275d68[2];
  DAT_182a981c0_1._2_1_ = s_Blue_Disk_140275d68[3];
  DAT_182a981c0_1._3_1_ = s_Blue_Disk_140275d68[4];
  DAT_182a981c0_1._4_1_ = s_Blue_Disk_140275d68[5];
  DAT_182a981c0_1._5_1_ = s_Blue_Disk_140275d68[6];
  DAT_182a981c0_1._6_1_ = s_Blue_Disk_140275d68[7];
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182a98240,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  DAT_182a99598 = s_White_Disk_140275d78[8];
  register0x00000001 = s_White_Disk_140275d78[9];
  DAT_182a9959a = s_White_Disk_140275d78[10];
  _DAT_182a982ec = 1;
  _DAT_182a98348 = 1;
  _DAT_182a9824c = (float)(dVar26 + dVar26);
  _DAT_182a99570 = 0;
  _DAT_182a99568 = 0x3f800000;
  _DAT_182a99664 = 0x3e800000;
  _DAT_182a99668 = 0x3dc00000;
  _DAT_182a98770 = _DAT_140278ee0;
  uRam0000000182a98778 = _UNK_140278ee8;
  _DAT_182a9966c = 0x3e800000;
  DAT_182a99590 = s_White_Disk_140275d78[0];
  DAT_182a99590_1._0_1_ = s_White_Disk_140275d78[1];
  DAT_182a99590_1._1_1_ = s_White_Disk_140275d78[2];
  DAT_182a99590_1._2_1_ = s_White_Disk_140275d78[3];
  DAT_182a99590_1._3_1_ = s_White_Disk_140275d78[4];
  DAT_182a99590_1._4_1_ = s_White_Disk_140275d78[5];
  DAT_182a99590_1._5_1_ = s_White_Disk_140275d78[6];
  DAT_182a99590_1._6_1_ = s_White_Disk_140275d78[7];
  local_d8 = 0x3f800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182a99610,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  DAT_182a9a968 = s_Gold_Disk_140275d88[8];
  register0x00000001 = s_Gold_Disk_140275d88[9];
  _DAT_182a9961c = (float)(dVar26 + dVar26);
  _DAT_182a996bc = 1;
  _DAT_182a99718 = 1;
  _DAT_182a9a940 = 0;
  _DAT_182a9a938 = 0x3f800000;
  _DAT_182a99b40 = _DAT_140278ee0;
  uRam0000000182a99b48 = _UNK_140278ee8;
  _DAT_182a9aa34 = 0x3e800000;
  DAT_182a9a960 = s_Gold_Disk_140275d88[0];
  DAT_182a9a960_1._0_1_ = s_Gold_Disk_140275d88[1];
  DAT_182a9a960_1._1_1_ = s_Gold_Disk_140275d88[2];
  DAT_182a9a960_1._2_1_ = s_Gold_Disk_140275d88[3];
  DAT_182a9a960_1._3_1_ = s_Gold_Disk_140275d88[4];
  DAT_182a9a960_1._4_1_ = s_Gold_Disk_140275d88[5];
  DAT_182a9a960_1._5_1_ = s_Gold_Disk_140275d88[6];
  DAT_182a9a960_1._6_1_ = s_Gold_Disk_140275d88[7];
  _DAT_182a9aa38 = 0x3dc00000;
  _DAT_182a9aa3c = 0x3e800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182a9a9e0,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  DAT_182a9bd38 = s_Red_Disk_140275d98[8];
  _DAT_182a9aa8c = 1;
  _DAT_182a9aae8 = 1;
  _DAT_182a9bd10 = 0;
  _DAT_182a9bd08 = 0x3f800000;
  _DAT_182a9a9ec = (float)(dVar26 + dVar26);
  _DAT_182a9be04 = 0x3e800000;
  _DAT_182a9be08 = 0x3dc00000;
  _DAT_182a9be0c = 0x3e800000;
  local_d8 = 0x3f800000;
  _DAT_182a9af10 = _DAT_140278ee0;
  uRam0000000182a9af18 = _UNK_140278ee8;
  DAT_182a9bd30 = s_Red_Disk_140275d98[0];
  DAT_182a9bd30_1._0_1_ = s_Red_Disk_140275d98[1];
  DAT_182a9bd30_1._1_1_ = s_Red_Disk_140275d98[2];
  DAT_182a9bd30_1._2_1_ = s_Red_Disk_140275d98[3];
  DAT_182a9bd30_1._3_1_ = s_Red_Disk_140275d98[4];
  DAT_182a9bd30_1._4_1_ = s_Red_Disk_140275d98[5];
  DAT_182a9bd30_1._5_1_ = s_Red_Disk_140275d98[6];
  DAT_182a9bd30_1._6_1_ = s_Red_Disk_140275d98[7];
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182a9bdb0,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  _DAT_182a9be5c = 1;
  _DAT_182a9beb8 = 1;
  _DAT_182a9d0e0 = 0;
  _DAT_182a9d0d8 = 0x3f800000;
  _DAT_182a9bdbc = (float)(dVar26 + dVar26);
  _DAT_182a9c2e0 = _DAT_140278ee0;
  uRam0000000182a9c2e8 = _UNK_140278ee8;
  DAT_182a9d108 = s_Cell_Phone_140275da8[8];
  register0x00000001 = s_Cell_Phone_140275da8[9];
  DAT_182a9d100 = s_Cell_Phone_140275da8[0];
  DAT_182a9d100_1._0_1_ = s_Cell_Phone_140275da8[1];
  DAT_182a9d100_1._1_1_ = s_Cell_Phone_140275da8[2];
  DAT_182a9d100_1._2_1_ = s_Cell_Phone_140275da8[3];
  DAT_182a9d100_1._3_1_ = s_Cell_Phone_140275da8[4];
  DAT_182a9d100_1._4_1_ = s_Cell_Phone_140275da8[5];
  DAT_182a9d100_1._5_1_ = s_Cell_Phone_140275da8[6];
  DAT_182a9d100_1._6_1_ = s_Cell_Phone_140275da8[7];
  DAT_182a9d10a = s_Cell_Phone_140275da8[10];
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182a9d180,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  DAT_182a9e4d8 = s_Walkie_talkie_140275db8[8];
  DAT_182a9e4d8_1._0_1_ = s_Walkie_talkie_140275db8[9];
  DAT_182a9e4d8_1._1_1_ = s_Walkie_talkie_140275db8[10];
  DAT_182a9e4d8_1._2_1_ = s_Walkie_talkie_140275db8[0xb];
  DAT_182a9e4dc = s_Walkie_talkie_140275db8[0xc];
  register0x00000001 = s_Walkie_talkie_140275db8[0xd];
  _DAT_182a9d1d4 = 0x3da00000;
  _DAT_182a9d1d8 = 0x3e700000;
  _DAT_182a9d18c = (float)(dVar26 + dVar26);
  _DAT_182a9d1dc = 0x3da00000;
  _DAT_182a9e4b0 = 0;
  _DAT_182a9e4a4 = 100;
  _DAT_182a9e4a8 = 0x3f400000;
  _DAT_182a9d6b0 = _DAT_140278ee0;
  uRam0000000182a9d6b8 = _UNK_140278ee8;
  local_d8 = 0x3f800000;
  DAT_182a9e4d0 = s_Walkie_talkie_140275db8[0];
  DAT_182a9e4d0_1._0_1_ = s_Walkie_talkie_140275db8[1];
  DAT_182a9e4d0_1._1_1_ = s_Walkie_talkie_140275db8[2];
  DAT_182a9e4d0_1._2_1_ = s_Walkie_talkie_140275db8[3];
  DAT_182a9e4d0_1._3_1_ = s_Walkie_talkie_140275db8[4];
  DAT_182a9e4d0_1._4_1_ = s_Walkie_talkie_140275db8[5];
  DAT_182a9e4d0_1._5_1_ = s_Walkie_talkie_140275db8[6];
  DAT_182a9e4d0_1._6_1_ = s_Walkie_talkie_140275db8[7];
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182a9e550,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  _DAT_182a9e5a8 = DAT_14027822c;
  _DAT_182a9e5a4 = 0x3d400000;
  _DAT_182a9e5ac = 0x3d400000;
  _DAT_182a9f880 = 0;
  _DAT_182a9e55c = (float)(dVar26 + dVar26);
  _DAT_182a9f878 = 0x3f800000;
  _DAT_182a9f8a0 = 0x79654b;
  local_d8 = 0x3f800000;
  _DAT_182a9ea80 = _DAT_140278ee0;
  uRam0000000182a9ea88 = _UNK_140278ee8;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182a9f920,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  DAT_182aa2048 = s_Newspaper_140275dc8[8];
  register0x00000001 = s_Newspaper_140275dc8[9];
  DAT_182ab4970 = s_Bottle_140275dd4[0];
  DAT_182ab4970_1._0_1_ = s_Bottle_140275dd4[1];
  DAT_182ab4970_1._1_1_ = s_Bottle_140275dd4[2];
  DAT_182ab4970_1._2_1_ = s_Bottle_140275dd4[3];
  DAT_182ab4974 = s_Bottle_140275dd4[4];
  register0x00000001 = s_Bottle_140275dd4[5];
  _DAT_182a9f92c = (float)(dVar26 + dVar26);
  DAT_182ab4976 = s_Bottle_140275dd4[6];
  DAT_182aae668 = s_computer_140275de0[8];
  DAT_182aae660 = s_computer_140275de0[0];
  DAT_182aae660_1._0_1_ = s_computer_140275de0[1];
  DAT_182aae660_1._1_1_ = s_computer_140275de0[2];
  DAT_182aae660_1._2_1_ = s_computer_140275de0[3];
  DAT_182aae660_1._3_1_ = s_computer_140275de0[4];
  DAT_182aae660_1._4_1_ = s_computer_140275de0[5];
  DAT_182aae660_1._5_1_ = s_computer_140275de0[6];
  DAT_182aae660_1._6_1_ = s_computer_140275de0[7];
  _DAT_182a9fe50 = _DAT_140278ee0;
  uRam0000000182a9fe58 = _UNK_140278ee8;
  _DAT_182a9f974 = 0x3d800000;
  DAT_182aa2040 = s_Newspaper_140275dc8[0];
  DAT_182aa2040_1._0_1_ = s_Newspaper_140275dc8[1];
  DAT_182aa2040_1._1_1_ = s_Newspaper_140275dc8[2];
  DAT_182aa2040_1._2_1_ = s_Newspaper_140275dc8[3];
  DAT_182aa2040_1._3_1_ = s_Newspaper_140275dc8[4];
  DAT_182aa2040_1._4_1_ = s_Newspaper_140275dc8[5];
  DAT_182aa2040_1._5_1_ = s_Newspaper_140275dc8[6];
  DAT_182aa2040_1._6_1_ = s_Newspaper_140275dc8[7];
  _DAT_182aa2090 = _DAT_1402798c0;
  uRam0000000182aa2098 = _UNK_1402798c8;
  _DAT_182a9f978 = 0x3d800000;
  _DAT_182aa25f0 = _DAT_140278ee0;
  uRam0000000182aa25f8 = _UNK_140278ee8;
  _DAT_182a9f97c = 0x3e000000;
  _DAT_182aa2020 = 0;
  _DAT_182aa2018 = 0x3f000000;
  _DAT_182aa2114 = 0x3e800000;
  _DAT_182aa2118 = 0x3e000000;
  _DAT_182aa211c = 0x3e800000;
  _DAT_182aa20a0 = 0;
  _DAT_182aa20a4 = 0x3e400000;
  _DAT_182aabe9c = 1;
  _DAT_182aabe98 = 0x41a00000;
  _DAT_182aabec0 = 0x786f42;
  DAT_182aabf94 = 0x3e800000;
  DAT_182aabf98 = 0x3e800000;
  DAT_182aabf9c = 0x3e800000;
  _DAT_182ab494c = 1;
  _DAT_182ab4948 = 0x40800000;
  _DAT_182ab4a44 = 0x3e000000;
  _DAT_182ab4a48 = 0x3e800000;
  _DAT_182ab4a4c = 0x3e000000;
  _DAT_182aae63c = 1;
  _DAT_182aae638 = 0x42200000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182aae6e0,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  _DAT_182aae6ec = (float)(dVar26 + dVar26);
  DAT_182aafa30 = s_arcade_140275dec[0];
  DAT_182aafa30_1._0_1_ = s_arcade_140275dec[1];
  DAT_182aafa30_1._1_1_ = s_arcade_140275dec[2];
  DAT_182aafa30_1._2_1_ = s_arcade_140275dec[3];
  DAT_182aafa34 = s_arcade_140275dec[4];
  register0x00000001 = s_arcade_140275dec[5];
  DAT_182aafa36 = s_arcade_140275dec[6];
  DAT_182aaeb50 = DAT_140278b94;
  _DAT_182aaeb4c = 0;
  _DAT_182aaeb54 = 0x3dc00000;
  _DAT_182aae734 = 0x3e800000;
  _DAT_182aae738 = 0x3e800000;
  _DAT_182aae73c = 0x3e800000;
  _DAT_182aafa0c = 1;
  _DAT_182aafa08 = 0x42200000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182aafab0,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  _DAT_182aaff1c = 0;
  _DAT_182aad290 = 0x786f4220676942;
  DAT_182ab0e00 = s_Table_140275df4[0];
  DAT_182ab0e00_1._0_1_ = s_Table_140275df4[1];
  DAT_182ab0e00_1._1_1_ = s_Table_140275df4[2];
  DAT_182ab0e00_1._2_1_ = s_Table_140275df4[3];
  DAT_182ab0e04 = s_Table_140275df4[4];
  register0x00000001 = s_Table_140275df4[5];
  _DAT_182aafabc = (float)(dVar26 + dVar26);
  DAT_182ab21d8 = s_tabletest2_140275e00[8];
  register0x00000001 = s_tabletest2_140275e00[9];
  DAT_182ab21da = s_tabletest2_140275e00[10];
  DAT_182ab35a8 = s_cubewall_140275e10[8];
  _DAT_182ab0dd8 = DAT_140278900;
  DAT_182ab21d0 = s_tabletest2_140275e00[0];
  DAT_182ab21d0_1._0_1_ = s_tabletest2_140275e00[1];
  DAT_182ab21d0_1._1_1_ = s_tabletest2_140275e00[2];
  DAT_182ab21d0_1._2_1_ = s_tabletest2_140275e00[3];
  DAT_182ab21d0_1._3_1_ = s_tabletest2_140275e00[4];
  DAT_182ab21d0_1._4_1_ = s_tabletest2_140275e00[5];
  DAT_182ab21d0_1._5_1_ = s_tabletest2_140275e00[6];
  DAT_182ab21d0_1._6_1_ = s_tabletest2_140275e00[7];
  _DAT_182ab3578 = DAT_140278828;
  _DAT_182aaff20 = 0xbd800000;
  _DAT_182aaff24 = 0x3e000000;
  _DAT_182aafb04 = 0x3e800000;
  _DAT_182aafb08 = 0x3e800000;
  _DAT_182aafb0c = 0x3e800000;
  _DAT_182aad26c = 1;
  _DAT_182aad268 = 0x41a00000;
  DAT_182aad364 = 0x3f800000;
  DAT_182aad368 = 0x3e000000;
  DAT_182aad36c = 0x3f000000;
  _DAT_182ab0ddc = 1;
  _DAT_182ab0ed4 = 0x3f800000;
  _DAT_182ab0ed8 = 0x3f000000;
  _DAT_182ab0edc = 0x3f000000;
  _DAT_182ab21ac = 1;
  _DAT_182ab21a8 = 0x42200000;
  _DAT_182ab22a4 = 0x3f800000;
  _DAT_182ab22a8 = 0x3f000000;
  _DAT_182ab22ac = 0x3f000000;
  _DAT_182ab357c = 1;
  DAT_182ab35a0 = s_cubewall_140275e10[0];
  DAT_182ab35a0_1._0_1_ = s_cubewall_140275e10[1];
  DAT_182ab35a0_1._1_1_ = s_cubewall_140275e10[2];
  DAT_182ab35a0_1._2_1_ = s_cubewall_140275e10[3];
  DAT_182ab35a0_1._3_1_ = s_cubewall_140275e10[4];
  DAT_182ab35a0_1._4_1_ = s_cubewall_140275e10[5];
  DAT_182ab35a0_1._5_1_ = s_cubewall_140275e10[6];
  DAT_182ab35a0_1._6_1_ = s_cubewall_140275e10[7];
  _DAT_182ab3674 = DAT_140278504;
  _DAT_182ab3678 = 0x3f400000;
  _DAT_182ab367c = 0x3e000000;
  FUN_1400e7f80(0x2d,"data/watermelon.itm");
  DAT_182ab5d48 = s_Watermelon_140275e38[8];
  register0x00000001 = s_Watermelon_140275e38[9];
  DAT_182ab5d4a = s_Watermelon_140275e38[10];
  DAT_182ab5d40 = s_Watermelon_140275e38[0];
  DAT_182ab5d40_1._0_1_ = s_Watermelon_140275e38[1];
  DAT_182ab5d40_1._1_1_ = s_Watermelon_140275e38[2];
  DAT_182ab5d40_1._2_1_ = s_Watermelon_140275e38[3];
  DAT_182ab5d40_1._3_1_ = s_Watermelon_140275e38[4];
  DAT_182ab5d40_1._4_1_ = s_Watermelon_140275e38[5];
  DAT_182ab5d40_1._5_1_ = s_Watermelon_140275e38[6];
  DAT_182ab5d40_1._6_1_ = s_Watermelon_140275e38[7];
  _DAT_182aa0c70 = DAT_140275e44;
  DAT_182aa0c74 = DAT_140275e48;
  _DAT_182ab5d1c = 1;
  _DAT_182ab5d14 = 10;
  _DAT_182ab5d18 = 0x40800000;
  _DAT_182ab5e14 = 0x3e000000;
  _DAT_182ab5e18 = 0x3e800000;
  _DAT_182ab5e1c = 0x3e000000;
  _DAT_182aa0c4c = 1;
  _DAT_182aa0c48 = 0x41a00000;
  _DAT_182aa0cc0 = 0x3ee00000;
  _DAT_182aa0cc8 = 0;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14007b2a0(local_f8,local_f8 + 0xc,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182aa0cf0,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  DAT_182aa3410 = s_Burger_140274d18[0];
  DAT_182aa3410_1._0_1_ = s_Burger_140274d18[1];
  DAT_182aa3410_1._1_1_ = s_Burger_140274d18[2];
  DAT_182aa3410_1._2_1_ = s_Burger_140274d18[3];
  DAT_182aa3414 = s_Burger_140274d18[4];
  register0x00000001 = s_Burger_140274d18[5];
  DAT_182aa3416 = s_Burger_140274d18[6];
  _DAT_182aa0cfc = (float)(dVar26 + dVar26);
  _DAT_182aa0d44 = 0x3ee00000;
  _DAT_182aa0d4c = 0x3d800000;
  _DAT_182aa33f0 = 0;
  _DAT_182aa33e8 = 0x3f800000;
  _DAT_182aa0d48 = DAT_140278418;
  _DAT_182aa3404 = 8;
  _DAT_182aa3460 = 0;
  _DAT_182aa3468 = 0x3d800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182aa3490,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  _DAT_182aa47e0 = DAT_140275e4c;
  DAT_182aa47e4 = DAT_140275e50;
  _DAT_182aa349c = (float)(dVar26 + dVar26);
  _DAT_182aa5bb0 = DAT_140275e54;
  DAT_182aa5bb4 = DAT_140275e58;
  DAT_182aa6f88 = s_Pay_Phone_140275e60[8];
  register0x00000001 = s_Pay_Phone_140275e60[9];
  _DAT_182aa34e4 = 0x3e000000;
  DAT_182aa6f80 = s_Pay_Phone_140275e60[0];
  DAT_182aa6f80_1._0_1_ = s_Pay_Phone_140275e60[1];
  DAT_182aa6f80_1._1_1_ = s_Pay_Phone_140275e60[2];
  DAT_182aa6f80_1._2_1_ = s_Pay_Phone_140275e60[3];
  DAT_182aa6f80_1._3_1_ = s_Pay_Phone_140275e60[4];
  DAT_182aa6f80_1._4_1_ = s_Pay_Phone_140275e60[5];
  DAT_182aa6f80_1._5_1_ = s_Pay_Phone_140275e60[6];
  DAT_182aa6f80_1._6_1_ = s_Pay_Phone_140275e60[7];
  _DAT_182aa34e8 = 0x3e000000;
  _DAT_182aa34ec = 0x3e000000;
  _DAT_182aa47c0 = 0;
  _DAT_182aa47b8 = 0x41800000;
  _DAT_182aa48b4 = 0x3f000000;
  _DAT_182aa48b8 = 0x3f000000;
  _DAT_182aa48bc = 0x3f000000;
  _DAT_182aa5b90 = 0;
  _DAT_182aa5b88 = 0x41800000;
  _DAT_182aa5c84 = 0x3f000000;
  _DAT_182aa5c88 = 0x3f000000;
  _DAT_182aa5c8c = 0x3f000000;
  _DAT_182aa6f60 = 0;
  _DAT_182aa6f58 = 0x3f800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_d8 = 0x3f800000;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182aa7000,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  _DAT_182aa8350 = DAT_140275e6c;
  DAT_182aa8354 = DAT_140275e70;
  _DAT_182aa7054 = 0x3da00000;
  _DAT_182aa7058 = 0x3e700000;
  _DAT_182aa700c = (float)(dVar26 + dVar26);
  _DAT_182aa705c = 0x3da00000;
  _DAT_182aa8330 = 0;
  _DAT_182aa8328 = 0x3f000000;
  _DAT_182aa8424 = 0x3e800000;
  _DAT_182aa83a0 = _DAT_1402798c0;
  uRam0000000182aa83a8 = _UNK_1402798c8;
  _DAT_182aa8428 = 0x3e000000;
  _DAT_182aa8900 = _DAT_140278ee0;
  uRam0000000182aa8908 = _UNK_140278ee8;
  _DAT_182aa842c = 0x3e800000;
  _DAT_182aa83b0 = 0;
  _DAT_182aa83b4 = 0x3e400000;
  DAT_182a8e314._0_4_ = 1000;
  _DAT_182a8e320 = 0;
  _DAT_182a8e334 = 1;
  DAT_182a8e314._4_4_ = 0x3f400000;
  _DAT_182a8e340 = 0x6564616e657247;
  local_d8 = 0x3f800000;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182a8e3c0,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  DAT_182aa9720 = s_Soccer_Ball_140275e78[0];
  DAT_182aa9720_1._0_1_ = s_Soccer_Ball_140275e78[1];
  DAT_182aa9720_1._1_1_ = s_Soccer_Ball_140275e78[2];
  DAT_182aa9720_1._2_1_ = s_Soccer_Ball_140275e78[3];
  DAT_182aa9720_1._3_1_ = s_Soccer_Ball_140275e78[4];
  DAT_182aa9720_1._4_1_ = s_Soccer_Ball_140275e78[5];
  DAT_182aa9720_1._5_1_ = s_Soccer_Ball_140275e78[6];
  DAT_182aa9720_1._6_1_ = s_Soccer_Ball_140275e78[7];
  _DAT_182a8e414 = 0x3d800000;
  _DAT_182a8e418 = 0x3d800000;
  _DAT_182a8e3cc = (float)(dVar26 + dVar26);
  _DAT_182a8e41c = 0x3d800000;
  _DAT_182aa96f4 = 100;
  _DAT_182aa9700 = 0;
  _DAT_182aa9714 = 1;
  DAT_182aa9728 = s_Soccer_Ball_140275e78[8];
  DAT_182aa9728_1._0_1_ = s_Soccer_Ball_140275e78[9];
  DAT_182aa9728_1._1_1_ = s_Soccer_Ball_140275e78[10];
  DAT_182aa9728_1._2_1_ = s_Soccer_Ball_140275e78[0xb];
  _DAT_182a8e8f0 = _DAT_140278ee0;
  uRam0000000182a8e8f8 = _UNK_140278ee8;
  local_d8 = 0x3f800000;
  _DAT_182aa96f8 = DAT_140278318;
  local_f8._0_8_ = _DAT_140278d30;
  local_f8._8_8_ = _UNK_140278d38;
  local_e8._0_8_ = _DAT_140278d30;
  local_e8._8_8_ = _UNK_140278d38;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182aa97a0,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  _DAT_182aaaaf0 = DAT_140275e84;
  DAT_182aaaaf4 = DAT_140275e88;
  _DAT_182aa97f4 = 0x3de147ae;
  _DAT_182aa97f8 = 0x3de147ae;
  _DAT_182aa97ac = (float)(dVar26 + dVar26);
  _DAT_182aa97fc = 0x3de147ae;
  _DAT_182aaaac4 = 100;
  _DAT_182aaaad0 = 0;
  _DAT_182aaaae4 = 0;
  _DAT_182aaaac8 = DAT_1402785b8;
  local_f8._8_8_ = _UNK_140278d38;
  local_f8._0_8_ = _DAT_140278d30;
  local_d8 = 0x3f800000;
  local_e8._8_8_ = _UNK_140278d38;
  local_e8._0_8_ = _DAT_140278d30;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182aaab70,&local_108);
  fVar1 = local_fc;
  if (local_fc <= fVar30) {
    fVar1 = fVar30;
  }
  if (fVar3 <= fVar1) {
    fVar1 = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)fVar1);
  local_f8._8_8_ = _UNK_140278d38;
  local_f8._0_8_ = _DAT_140278d30;
  local_d8 = 0x3f800000;
  _DAT_182aaab7c = (float)(dVar26 + dVar26);
  local_e8 = local_f8;
  FUN_14007b2a0(local_f8,local_f8,uVar4);
  FUN_14010e370(&local_108,local_f8);
  FUN_14007a240(&DAT_182aaab80,&local_108);
  if (local_fc <= fVar30) {
    local_fc = fVar30;
  }
  if (fVar3 <= local_fc) {
    local_fc = fVar3;
  }
  dVar26 = (double)FUN_14023e7d4((double)local_fc);
  uVar5 = DAT_140279870;
  fVar2 = DAT_140278644;
  fVar1 = DAT_1402785f0;
  _DAT_182aaabc4 = 0x3d800000;
  _DAT_182aaab8c = (float)(dVar26 + dVar26);
  _DAT_182aaabc8 = 0x3e800000;
  _DAT_182aaabcc = 0x3d800000;
  uVar22 = uVar20;
  uVar23 = uVar20;
  do {
    lVar16 = uVar23 * 0x13d0;
    if ((((float)(&DAT_182a7e284)[uVar23 * 0x4f4] <= 0.0) ||
        (fVar31 = (float)(&DAT_182a7e288)[uVar23 * 0x4f4], fVar31 <= 0.0)) ||
       (fVar30 = (float)(&DAT_182a7e28c)[uVar23 * 0x4f4], fVar30 <= 0.0)) {
      (&DAT_182a7e290)[uVar23 * 0x4f4] = 0x3f800000;
      (&DAT_182a7e294)[uVar23 * 0x4f4] = 0x3f800000;
      fVar31 = fVar3;
    }
    else {
      (&DAT_182a7e290)[uVar23 * 0x4f4] = fVar2 / (fVar30 * fVar30 + fVar31 * fVar31);
      (&DAT_182a7e294)[uVar23 * 0x4f4] =
           fVar2 / ((float)(&DAT_182a7e28c)[uVar23 * 0x4f4] *
                    (float)(&DAT_182a7e28c)[uVar23 * 0x4f4] +
                   (float)(&DAT_182a7e284)[uVar23 * 0x4f4] * (float)(&DAT_182a7e284)[uVar23 * 0x4f4]
                   );
      fVar31 = fVar2 / ((float)(&DAT_182a7e288)[uVar23 * 0x4f4] *
                        (float)(&DAT_182a7e288)[uVar23 * 0x4f4] +
                       (float)(&DAT_182a7e284)[uVar23 * 0x4f4] *
                       (float)(&DAT_182a7e284)[uVar23 * 0x4f4]);
    }
    (&DAT_182a7e298)[uVar23 * 0x4f4] = fVar31;
    iVar21 = (int)uVar22;
    if (iVar21 == 0x23) {
      (&DAT_182a7e290)[uVar23 * 0x4f4] =
           fVar1 / ((float)(&DAT_182a7e284)[uVar23 * 0x4f4] *
                   (float)(&DAT_182a7e284)[uVar23 * 0x4f4]);
      (&DAT_182a7e294)[uVar23 * 0x4f4] =
           fVar1 / ((float)(&DAT_182a7e284)[uVar23 * 0x4f4] *
                   (float)(&DAT_182a7e284)[uVar23 * 0x4f4]);
      (&DAT_182a7e298)[uVar23 * 0x4f4] =
           fVar1 / ((float)(&DAT_182a7e284)[uVar23 * 0x4f4] *
                   (float)(&DAT_182a7e284)[uVar23 * 0x4f4]);
    }
    else {
      if ((iVar21 == 0) || (iVar21 == 9)) {
        (&DAT_182a7e290)[uVar23 * 0x4f4] = fVar3 / *(float *)(&DAT_182a7f304 + lVar16);
        (&DAT_182a7e294)[uVar23 * 0x4f4] = fVar3 / *(float *)(lVar16 + 0x182a7f308);
        (&DAT_182a7e298)[uVar23 * 0x4f4] = fVar3 / *(float *)(lVar16 + 0x182a7f30c);
      }
      if (iVar21 == 0x27) {
        pcVar15 = "data/item/computer.it3";
      }
      else if (iVar21 == 0x28) {
        pcVar15 = "data/item/computer.it3";
      }
      else if (iVar21 == 0x2a) {
        pcVar15 = "data/item/tabletest2.it3";
      }
      else {
        if (iVar21 != 0x2b) goto LAB_14014392b;
        pcVar15 = "data/item/cubewall.it3";
      }
      FUN_1400cb5f0(uVar22,pcVar15);
    }
LAB_14014392b:
    if (((&DAT_182a7e18c)[uVar23 * 0x4f4] != 0) && (iVar21 != 0x2a)) {
      if (iVar21 == 0x2c) {
        FUN_140054750(uVar22);
      }
      else if (iVar21 == 0x2d) {
        FUN_140054750(uVar22);
      }
      else {
        (&DAT_182a7f088)[uVar23 * 0x4f4] = 0;
        uVar8 = _malloc_base(0x60);
        (&DAT_182a7f090)[uVar23 * 0x27a] = uVar8;
        iVar11 = (&DAT_182a7f088)[uVar23 * 0x4f4];
        uVar17 = 2;
        do {
          uVar6 = uVar17 - 2 & 3;
          if ((uVar6 == 0) || (uVar6 == 3)) {
            uVar25 = (&DAT_182a7e284)[uVar23 * 0x4f4] ^ uVar5;
          }
          else {
            uVar25 = (&DAT_182a7e284)[uVar23 * 0x4f4];
          }
          uVar24 = (&DAT_182a7e288)[uVar23 * 0x4f4];
          if ((int)(uVar17 - 2) < 4) {
            uVar24 = uVar24 ^ uVar5;
          }
          uVar27 = (&DAT_182a7e28c)[uVar23 * 0x4f4];
          if (uVar6 < 2) {
            uVar27 = uVar27 ^ uVar5;
          }
          lVar9 = (longlong)(iVar11 * 3);
          lVar10 = (&DAT_182a7f090)[uVar23 * 0x27a];
          *(uint *)(lVar10 + lVar9 * 4) = uVar25;
          *(uint *)(lVar10 + 4 + lVar9 * 4) = uVar24;
          *(uint *)(lVar10 + 8 + lVar9 * 4) = uVar27;
          iVar11 = (&DAT_182a7f088)[uVar23 * 0x4f4];
          (&DAT_182a7f088)[uVar23 * 0x4f4] = iVar11 + 1;
          uVar6 = uVar17 - 1 & 3;
          if ((uVar6 == 0) || (uVar6 == 3)) {
            uVar25 = (&DAT_182a7e284)[uVar23 * 0x4f4] ^ uVar5;
          }
          else {
            uVar25 = (&DAT_182a7e284)[uVar23 * 0x4f4];
          }
          uVar24 = (&DAT_182a7e288)[uVar23 * 0x4f4];
          if ((int)(uVar17 - 1) < 4) {
            uVar24 = uVar24 ^ uVar5;
          }
          uVar27 = (&DAT_182a7e28c)[uVar23 * 0x4f4];
          if (uVar6 < 2) {
            uVar27 = uVar27 ^ uVar5;
          }
          lVar9 = (longlong)((iVar11 + 1) * 3);
          lVar10 = (&DAT_182a7f090)[uVar23 * 0x27a];
          *(uint *)(lVar10 + lVar9 * 4) = uVar25;
          *(uint *)(lVar10 + 4 + lVar9 * 4) = uVar24;
          *(uint *)(lVar10 + 8 + lVar9 * 4) = uVar27;
          iVar11 = (&DAT_182a7f088)[uVar23 * 0x4f4];
          (&DAT_182a7f088)[uVar23 * 0x4f4] = iVar11 + 1;
          if (((uVar17 & 3) == 0) || ((uVar17 & 3) == 3)) {
            uVar6 = (&DAT_182a7e284)[uVar23 * 0x4f4] ^ uVar5;
          }
          else {
            uVar6 = (&DAT_182a7e284)[uVar23 * 0x4f4];
          }
          uVar25 = (&DAT_182a7e288)[uVar23 * 0x4f4];
          if ((int)uVar17 < 4) {
            uVar25 = uVar25 ^ uVar5;
          }
          uVar24 = (&DAT_182a7e28c)[uVar23 * 0x4f4];
          if ((uVar17 & 3) < 2) {
            uVar24 = uVar24 ^ uVar5;
          }
          lVar9 = (longlong)((iVar11 + 1) * 3);
          lVar10 = (&DAT_182a7f090)[uVar23 * 0x27a];
          *(uint *)(lVar10 + lVar9 * 4) = uVar6;
          *(uint *)(lVar10 + 4 + lVar9 * 4) = uVar25;
          *(uint *)(lVar10 + 8 + lVar9 * 4) = uVar24;
          iVar11 = (&DAT_182a7f088)[uVar23 * 0x4f4];
          (&DAT_182a7f088)[uVar23 * 0x4f4] = iVar11 + 1;
          uVar6 = uVar17 + 1 & 3;
          if ((uVar6 == 0) || (uVar6 == 3)) {
            uVar25 = (&DAT_182a7e284)[uVar23 * 0x4f4] ^ uVar5;
          }
          else {
            uVar25 = (&DAT_182a7e284)[uVar23 * 0x4f4];
          }
          uVar24 = (&DAT_182a7e288)[uVar23 * 0x4f4];
          if ((int)(uVar17 + 1) < 4) {
            uVar24 = uVar24 ^ uVar5;
          }
          uVar27 = (&DAT_182a7e28c)[uVar23 * 0x4f4];
          if (uVar6 < 2) {
            uVar27 = uVar27 ^ uVar5;
          }
          lVar9 = (longlong)((iVar11 + 1) * 3);
          lVar10 = (&DAT_182a7f090)[uVar23 * 0x27a];
          *(uint *)(lVar10 + lVar9 * 4) = uVar25;
          *(uint *)(lVar10 + 4 + lVar9 * 4) = uVar24;
          *(uint *)(lVar10 + 8 + lVar9 * 4) = uVar27;
          iVar7 = uVar17 + 2;
          (&DAT_182a7f088)[uVar23 * 0x4f4] = (&DAT_182a7f088)[uVar23 * 0x4f4] + 1;
          iVar11 = (&DAT_182a7f088)[uVar23 * 0x4f4];
          uVar17 = uVar17 + 4;
        } while (iVar7 < 8);
        *(undefined4 *)(&DAT_182a7f098 + lVar16) = 0;
        *(undefined8 *)(&DAT_182a7f0a0 + lVar16) = 0;
        *(undefined4 *)(&DAT_182a7f0a8 + lVar16) = 0;
        *(undefined4 *)
         (&DAT_182a7f0ac + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) = 8;
        uVar8 = _malloc_base(0x20);
        *(undefined8 *)
         (&DAT_182a7f0b0 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) = uVar8;
        **(undefined4 **)
          (&DAT_182a7f0b0 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) = 0;
        *(undefined4 *)
         (*(longlong *)
           (&DAT_182a7f0b0 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) + 4) = 1;
        *(undefined4 *)
         (*(longlong *)
           (&DAT_182a7f0b0 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) + 8) = 2;
        *(undefined4 *)
         (*(longlong *)
           (&DAT_182a7f0b0 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) + 0xc) = 3
        ;
        *(undefined4 *)
         (*(longlong *)
           (&DAT_182a7f0b0 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) + 0x10) =
             4;
        *(undefined4 *)
         (*(longlong *)
           (&DAT_182a7f0b0 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) + 0x14) =
             5;
        *(undefined4 *)
         (*(longlong *)
           (&DAT_182a7f0b0 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) + 0x18) =
             6;
        *(undefined4 *)
         (*(longlong *)
           (&DAT_182a7f0b0 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) + 0x1c) =
             7;
        (&DAT_182a7f0b8)[uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe] = 0;
        uVar8 = _malloc_base(0xd8);
        puVar19 = &DAT_1402b3664;
        (&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] = uVar8;
        do {
          *(undefined4 *)
           ((&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] + 8 +
           (longlong)
           (int)(&DAT_182a7f0b8)[uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe]
           * 0x24) = puVar19[-1];
          *(undefined4 *)
           ((&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] + 0xc
           + (longlong)
             (int)(&DAT_182a7f0b8)
                  [uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe] * 0x24) =
               *puVar19;
          *(undefined4 *)
           ((&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] +
            0x10 + (longlong)
                   (int)(&DAT_182a7f0b8)
                        [uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe] * 0x24)
               = puVar19[1];
          *(undefined4 *)
           ((&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] +
            0x14 + (longlong)
                   (int)(&DAT_182a7f0b8)
                        [uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe] * 0x24)
               = puVar19[2];
          *(undefined4 *)
           ((&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] + 4 +
           (longlong)
           (int)(&DAT_182a7f0b8)[uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe]
           * 0x24) = 4;
          (&DAT_182a7f0b8)[uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe] =
               (&DAT_182a7f0b8)[uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe]
               + 1;
          *(undefined4 *)
           ((&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] + 8 +
           (longlong)
           (int)(&DAT_182a7f0b8)[uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe]
           * 0x24) = puVar19[3];
          *(undefined4 *)
           ((&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] + 0xc
           + (longlong)
             (int)(&DAT_182a7f0b8)
                  [uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe] * 0x24) =
               puVar19[4];
          *(undefined4 *)
           ((&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] +
            0x10 + (longlong)
                   (int)(&DAT_182a7f0b8)
                        [uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe] * 0x24)
               = puVar19[5];
          *(undefined4 *)
           ((&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] +
            0x14 + (longlong)
                   (int)(&DAT_182a7f0b8)
                        [uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe] * 0x24)
               = puVar19[6];
          *(undefined4 *)
           ((&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] + 4 +
           (longlong)
           (int)(&DAT_182a7f0b8)[uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe]
           * 0x24) = 4;
          (&DAT_182a7f0b8)[uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe] =
               (&DAT_182a7f0b8)[uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe]
               + 1;
          *(undefined4 *)
           ((&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] + 8 +
           (longlong)
           (int)(&DAT_182a7f0b8)[uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe]
           * 0x24) = puVar19[7];
          *(undefined4 *)
           ((&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] + 0xc
           + (longlong)
             (int)(&DAT_182a7f0b8)
                  [uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe] * 0x24) =
               puVar19[8];
          *(undefined4 *)
           ((&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] +
            0x10 + (longlong)
                   (int)(&DAT_182a7f0b8)
                        [uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe] * 0x24)
               = puVar19[9];
          *(undefined4 *)
           ((&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] +
            0x14 + (longlong)
                   (int)(&DAT_182a7f0b8)
                        [uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe] * 0x24)
               = puVar19[10];
          puVar19 = puVar19 + 0xc;
          *(undefined4 *)
           ((&DAT_182a7f0c0)[uVar23 * 0x27a + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 7] + 4 +
           (longlong)
           (int)(&DAT_182a7f0b8)[uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe]
           * 0x24) = 4;
          (&DAT_182a7f0b8)[uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe] =
               (&DAT_182a7f0b8)[uVar23 * 0x4f4 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0xe]
               + 1;
        } while ((longlong)puVar19 < 0x1402b36c4);
        *(undefined4 *)
         (&DAT_182a7f0c8 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) = 0;
        uVar8 = _malloc_base(0x90);
        puVar19 = &DAT_1402b3754;
        *(undefined8 *)
         (&DAT_182a7f0d0 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) = uVar8;
        do {
          lVar10 = (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16;
          *(undefined4 *)
           (*(longlong *)(&DAT_182a7f0d0 + lVar10) +
           (longlong)*(int *)(&DAT_182a7f0c8 + lVar10) * 0xc) = puVar19[-1];
          lVar10 = (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16;
          *(undefined4 *)
           (*(longlong *)(&DAT_182a7f0d0 + lVar10) + 4 +
           (longlong)*(int *)(&DAT_182a7f0c8 + lVar10) * 0xc) = *puVar19;
          *(int *)(&DAT_182a7f0c8 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) =
               *(int *)(&DAT_182a7f0c8 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16
                       ) + 1;
          lVar10 = (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16;
          *(undefined4 *)
           (*(longlong *)(&DAT_182a7f0d0 + lVar10) +
           (longlong)*(int *)(&DAT_182a7f0c8 + lVar10) * 0xc) = puVar19[1];
          lVar10 = (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16;
          *(undefined4 *)
           (*(longlong *)(&DAT_182a7f0d0 + lVar10) + 4 +
           (longlong)*(int *)(&DAT_182a7f0c8 + lVar10) * 0xc) = puVar19[2];
          *(int *)(&DAT_182a7f0c8 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) =
               *(int *)(&DAT_182a7f0c8 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16
                       ) + 1;
          lVar10 = (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16;
          *(undefined4 *)
           (*(longlong *)(&DAT_182a7f0d0 + lVar10) +
           (longlong)*(int *)(&DAT_182a7f0c8 + lVar10) * 0xc) = puVar19[3];
          lVar10 = (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16;
          *(undefined4 *)
           (*(longlong *)(&DAT_182a7f0d0 + lVar10) + 4 +
           (longlong)*(int *)(&DAT_182a7f0c8 + lVar10) * 0xc) = puVar19[4];
          *(int *)(&DAT_182a7f0c8 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) =
               *(int *)(&DAT_182a7f0c8 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16
                       ) + 1;
          lVar10 = (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16;
          *(undefined4 *)
           (*(longlong *)(&DAT_182a7f0d0 + lVar10) +
           (longlong)*(int *)(&DAT_182a7f0c8 + lVar10) * 0xc) = puVar19[5];
          lVar10 = (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16;
          *(undefined4 *)
           (*(longlong *)(&DAT_182a7f0d0 + lVar10) + 4 +
           (longlong)*(int *)(&DAT_182a7f0c8 + lVar10) * 0xc) = puVar19[6];
          *(int *)(&DAT_182a7f0c8 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) =
               *(int *)(&DAT_182a7f0c8 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16
                       ) + 1;
          lVar10 = (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16;
          *(undefined4 *)
           (*(longlong *)(&DAT_182a7f0d0 + lVar10) +
           (longlong)*(int *)(&DAT_182a7f0c8 + lVar10) * 0xc) = puVar19[7];
          lVar10 = (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16;
          *(undefined4 *)
           (*(longlong *)(&DAT_182a7f0d0 + lVar10) + 4 +
           (longlong)*(int *)(&DAT_182a7f0c8 + lVar10) * 0xc) = puVar19[8];
          *(int *)(&DAT_182a7f0c8 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) =
               *(int *)(&DAT_182a7f0c8 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16
                       ) + 1;
          lVar10 = (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16;
          *(undefined4 *)
           (*(longlong *)(&DAT_182a7f0d0 + lVar10) +
           (longlong)*(int *)(&DAT_182a7f0c8 + lVar10) * 0xc) = puVar19[9];
          lVar10 = (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16;
          *(undefined4 *)
           (*(longlong *)(&DAT_182a7f0d0 + lVar10) + 4 +
           (longlong)*(int *)(&DAT_182a7f0c8 + lVar10) * 0xc) = puVar19[10];
          puVar19 = puVar19 + 0xc;
          *(int *)(&DAT_182a7f0c8 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16) =
               *(int *)(&DAT_182a7f0c8 + (longlong)*(int *)(&DAT_182a7f098 + lVar16) * 0x38 + lVar16
                       ) + 1;
        } while ((longlong)puVar19 < 0x1402b37b4);
        *(int *)(&DAT_182a7f098 + lVar16) = *(int *)(&DAT_182a7f098 + lVar16) + 1;
      }
      uVar14 = uVar20;
      uVar18 = uVar20;
      if (0 < (int)(&DAT_182a7f0b8)[uVar23 * 0x4f4]) {
        do {
          lVar16 = (&DAT_182a7f090)[uVar23 * 0x27a];
          lVar10 = (&DAT_182a7f0c0)[uVar23 * 0x27a];
          lVar9 = (longlong)(*(int *)(uVar18 + 8 + lVar10) * 3);
          fVar31 = *(float *)(lVar16 + lVar9 * 4);
          fVar30 = *(float *)(lVar16 + 4 + lVar9 * 4);
          fVar28 = *(float *)(lVar16 + 8 + lVar9 * 4);
          lVar9 = (longlong)(*(int *)(uVar18 + 0xc + lVar10) * 3);
          pfVar12 = (float *)(lVar10 + 0x18 + uVar18);
          fVar33 = *(float *)(lVar16 + lVar9 * 4) - fVar31;
          fVar32 = *(float *)(lVar16 + 4 + lVar9 * 4) - fVar30;
          fVar29 = *(float *)(lVar16 + 8 + lVar9 * 4) - fVar28;
          lVar10 = (longlong)(*(int *)(uVar18 + 0x10 + lVar10) * 3);
          fVar30 = *(float *)(lVar16 + 4 + lVar10 * 4) - fVar30;
          fVar28 = *(float *)(lVar16 + 8 + lVar10 * 4) - fVar28;
          fVar31 = *(float *)(lVar16 + lVar10 * 4) - fVar31;
          *pfVar12 = fVar30 * fVar29 - fVar28 * fVar32;
          pfVar12[1] = fVar33 * fVar28 - fVar31 * fVar29;
          pfVar12[2] = fVar31 * fVar32 - fVar33 * fVar30;
          FUN_14007a240(pfVar12,pfVar12);
          uVar17 = (int)uVar14 + 1;
          uVar14 = (ulonglong)uVar17;
          uVar18 = uVar18 + 0x24;
        } while ((int)uVar17 < (int)(&DAT_182a7f0b8)[uVar23 * 0x4f4]);
      }
      lVar16 = (longlong)(int)(&DAT_182a7f088)[uVar23 * 0x4f4];
      DAT_193ac8820 = 0;
      DAT_193aca824 = 0;
      DAT_193acf028 = 0;
      _DAT_193ad082c = 1;
      _DAT_193ad0834 = 0;
      uVar14 = uVar20;
      if (lVar16 < 4) {
        if (0 < lVar16) {
          lVar10 = (&DAT_182a7f090)[uVar23 * 0x27a];
          uVar18 = uVar20;
          goto LAB_1401445b5;
        }
      }
      else {
        lVar10 = (&DAT_182a7f090)[uVar23 * 0x27a];
        lVar9 = (lVar16 - 4U >> 2) + 1;
        puVar19 = (undefined4 *)(lVar10 + 0x14);
        uVar18 = lVar9 * 4;
        do {
          if ((int)uVar14 < 0x200) {
            lVar13 = (longlong)(int)uVar14;
            *(undefined4 *)(&DAT_193ac8824 + lVar13 * 0x10) = puVar19[-5];
            *(undefined4 *)(&DAT_193ac8828 + lVar13 * 0x10) = puVar19[-4];
            *(undefined4 *)(&DAT_193ac882c + lVar13 * 0x10) = puVar19[-3];
            *(undefined4 *)(&DAT_193ac8830 + (longlong)(int)DAT_193ac8820 * 0x10) = 0;
            DAT_193ac8820 = DAT_193ac8820 + 1;
            uVar14 = (ulonglong)DAT_193ac8820;
            if ((int)DAT_193ac8820 < 0x200) {
              lVar13 = (longlong)(int)DAT_193ac8820;
              *(undefined4 *)(&DAT_193ac8824 + lVar13 * 0x10) = puVar19[-2];
              *(undefined4 *)(&DAT_193ac8828 + lVar13 * 0x10) = puVar19[-1];
              *(undefined4 *)(&DAT_193ac882c + lVar13 * 0x10) = *puVar19;
              *(undefined4 *)(&DAT_193ac8830 + (longlong)(int)DAT_193ac8820 * 0x10) = 0;
              DAT_193ac8820 = DAT_193ac8820 + 1;
              uVar14 = (ulonglong)DAT_193ac8820;
              if ((int)DAT_193ac8820 < 0x200) {
                lVar13 = (longlong)(int)DAT_193ac8820;
                *(undefined4 *)(&DAT_193ac8824 + lVar13 * 0x10) = puVar19[1];
                *(undefined4 *)(&DAT_193ac8828 + lVar13 * 0x10) = puVar19[2];
                *(undefined4 *)(&DAT_193ac882c + lVar13 * 0x10) = puVar19[3];
                *(undefined4 *)(&DAT_193ac8830 + (longlong)(int)DAT_193ac8820 * 0x10) = 0;
                DAT_193ac8820 = DAT_193ac8820 + 1;
                uVar14 = (ulonglong)DAT_193ac8820;
                if ((int)DAT_193ac8820 < 0x200) {
                  lVar13 = (longlong)(int)DAT_193ac8820;
                  *(undefined4 *)(&DAT_193ac8824 + lVar13 * 0x10) = puVar19[4];
                  *(undefined4 *)(&DAT_193ac8828 + lVar13 * 0x10) = puVar19[5];
                  *(undefined4 *)(&DAT_193ac882c + lVar13 * 0x10) = puVar19[6];
                  *(undefined4 *)(&DAT_193ac8830 + (longlong)(int)DAT_193ac8820 * 0x10) = 0;
                  DAT_193ac8820 = DAT_193ac8820 + 1;
                  uVar14 = (ulonglong)DAT_193ac8820;
                }
              }
            }
          }
          puVar19 = puVar19 + 0xc;
          lVar9 = lVar9 + -1;
        } while (lVar9 != 0);
        if ((longlong)uVar18 < lVar16) {
LAB_1401445b5:
          lVar16 = lVar16 - uVar18;
          puVar19 = (undefined4 *)(lVar10 + uVar18 * 0xc);
          do {
            if ((int)uVar14 < 0x200) {
              lVar10 = (longlong)(int)uVar14;
              *(undefined4 *)(&DAT_193ac8824 + lVar10 * 0x10) = *puVar19;
              *(undefined4 *)(&DAT_193ac8828 + lVar10 * 0x10) = puVar19[1];
              *(undefined4 *)(&DAT_193ac882c + lVar10 * 0x10) = puVar19[2];
              *(undefined4 *)(&DAT_193ac8830 + (longlong)(int)DAT_193ac8820 * 0x10) = 0;
              DAT_193ac8820 = DAT_193ac8820 + 1;
              uVar14 = (ulonglong)DAT_193ac8820;
            }
            puVar19 = puVar19 + 3;
            lVar16 = lVar16 + -1;
          } while (lVar16 != 0);
        }
      }
      uVar14 = uVar20;
      uVar18 = uVar20;
      if (0 < (int)(&DAT_182a7f0b8)[uVar23 * 0x4f4]) {
        do {
          FUN_140048ba0(*(undefined4 *)(uVar14 + 4 + (&DAT_182a7f0c0)[uVar23 * 0x27a]),
                        (&DAT_182a7f0c0)[uVar23 * 0x27a] + ((longlong)(int)uVar18 * 9 + 2) * 4);
          uVar17 = (int)uVar18 + 1;
          uVar14 = uVar14 + 0x24;
          uVar18 = (ulonglong)uVar17;
        } while ((int)uVar17 < (int)(&DAT_182a7f0b8)[uVar23 * 0x4f4]);
      }
      FUN_14004a670(&DAT_182a7f260 + uVar22 * 0x13d0);
      (&DAT_182a7e180)[uVar23 * 0x4f4] = 1;
    }
    uVar22 = (ulonglong)(iVar21 + 1U);
    uVar23 = uVar23 + 1;
    if (0x2d < (int)(iVar21 + 1U)) {
      return;
    }
  } while( true );
}



===== FUN_1400a4560 @ 1400a4560 root=true =====

int FUN_1400a4560(void)

{
  int *piVar1;
  int iVar2;
  
  iVar2 = 0;
  piVar1 = &DAT_182a7d580;
  do {
    if (*piVar1 == 0) {
      return iVar2;
    }
    iVar2 = iVar2 + 1;
    piVar1 = piVar1 + 3;
  } while ((longlong)piVar1 < 0x182a7e180);
  return -1;
}



===== FUN_1400c6580 @ 1400c6580 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1400c6580(int param_1,uint param_2)

{
  char *pcVar1;
  char cVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined2 uVar6;
  int iVar7;
  int iVar8;
  longlong lVar9;
  undefined1 *puVar10;
  longlong lVar11;
  uint uVar12;
  longlong lVar13;
  float fVar14;
  undefined1 auStack_868 [32];
  float local_848;
  float local_844;
  float local_840;
  undefined1 uStack_839;
  char local_838 [1024];
  char local_438 [1024];
  ulonglong local_38;
  
  local_38 = DAT_1403020a0 ^ (ulonglong)auStack_868;
  iVar7 = 0;
  lVar11 = (longlong)param_1;
  if ((param_2 >> 8 & 1) != 0) {
    param_2 = toupper(param_2 & 0xff);
    if (param_2 == 0x52) {
      *(undefined8 *)(&DAT_182bbcb68 + lVar11 * 0x1b80) = 0xffffffffffffffff;
      *(undefined8 *)(&DAT_182bbcb70 + lVar11 * 0x1b80) = 0xffffffffffffffff;
      *(undefined8 *)(&DAT_182bbcb78 + lVar11 * 0x1b80) = 0xffffffffffffffff;
      *(undefined8 *)(&DAT_182bbcb80 + lVar11 * 0x1b80) = 0xffffffffffffffff;
      *(undefined8 *)(&DAT_182bbcb88 + lVar11 * 0x1b80) = 0xffffffffffffffff;
      *(undefined8 *)(&DAT_182bbcb90 + lVar11 * 0x1b80) = 0xffffffffffffffff;
      *(undefined8 *)(&DAT_182bbcb98 + lVar11 * 0x1b80) = 0xffffffffffffffff;
      *(undefined8 *)(&DAT_182bbcba0 + lVar11 * 0x1b80) = 0xffffffffffffffff;
      *(undefined8 *)(&DAT_182bbcba8 + lVar11 * 0x1b80) = 0xffffffffffffffff;
      *(undefined8 *)(&DAT_182bbcbb0 + lVar11 * 0x1b80) = 0xffffffffffffffff;
      *(undefined8 *)(&DAT_182bbcbb8 + lVar11 * 0x1b80) = 0xffffffffffffffff;
      *(undefined8 *)(&DAT_182bbcbc0 + lVar11 * 0x1b80) = 0xffffffffffffffff;
      *(undefined8 *)(&DAT_182bbcbc8 + lVar11 * 0x1b80) = 0xffffffffffffffff;
      param_2 = 0;
    }
    else {
      if (param_2 == 0x50) {
        iVar7 = *(int *)(&DAT_182bbc7d8 + lVar11 * 0x1b80);
        if (iVar7 == -1) {
          return;
        }
        if (3 < *(int *)(&DAT_16d482330 + (longlong)iVar7 * 0x14)) {
          return;
        }
        local_848 = (float)(&DAT_182bbb224)[lVar11 * 0x6e0] * DAT_140278338 +
                    (float)(&DAT_182bbb1dc)[lVar11 * 0x6e0];
        local_840 = (float)(&DAT_182bbb22c)[lVar11 * 0x6e0] * DAT_140278338 +
                    (float)(&DAT_182bbb1e4)[lVar11 * 0x6e0];
        local_844 = (float)(&DAT_182bbb228)[lVar11 * 0x6e0] * DAT_140278338 +
                    (float)(&DAT_182bbb1e0)[lVar11 * 0x6e0];
        iVar8 = FUN_140054130(0x22,&local_848);
        uVar12 = (&DAT_182bbb4ec)[lVar11 * 0x6e0];
        lVar13 = 0x17;
        local_838[0] = '\0';
        do {
          FUN_140158ab0(local_438,&DAT_140276290,
                        &DAT_182bbb4f4 + ((longlong)(int)uVar12 + lVar11 * 0x6e) * 0x40);
          puVar10 = &uStack_839;
          do {
            pcVar1 = puVar10 + 1;
            puVar10 = puVar10 + 1;
          } while (*pcVar1 != '\0');
          lVar9 = 0;
          do {
            cVar2 = local_438[lVar9];
            puVar10[lVar9] = cVar2;
            lVar9 = lVar9 + 1;
          } while (cVar2 != '\0');
          uVar12 = uVar12 + 1 & 0x1f;
          lVar13 = lVar13 + -1;
        } while (lVar13 != 0);
        FUN_1400584b0(iVar8,local_838);
        *(int *)(&DAT_16d482330 + (longlong)iVar7 * 0x14) =
             *(int *)(&DAT_16d482330 + (longlong)iVar7 * 0x14) + 1;
        (&DAT_182bbb188)[(longlong)iVar8 * 0x6e0] = 1;
        return;
      }
      if (param_2 == 0x58) {
        (&DAT_182bbc7dc)[lVar11 * 0x6e0] = 0;
        puVar10 = &DAT_182bbb4f4 + lVar11 * 0x1b80;
        do {
          *puVar10 = 0;
          FUN_140050f90(param_1,iVar7);
          iVar7 = iVar7 + 1;
          puVar10 = puVar10 + 0x40;
        } while (iVar7 < 0x18);
        return;
      }
    }
  }
  iVar7 = toupper(param_2 & 0xff);
  uVar6 = s_AUTO_DECRYPTING____1402760e8._16_2_;
  uVar5 = s_AUTO_DECRYPTING____1402760e8._12_4_;
  uVar4 = s_AUTO_DECRYPTING____1402760e8._8_4_;
  uVar3 = s_AUTO_DECRYPTING____1402760e8._4_4_;
  if (iVar7 == 10) {
    lVar13 = lVar11 * 0x1b80;
    if ((&DAT_182bbcbec)[lVar11 * 0x6e0] == 0) {
      *(undefined4 *)(&DAT_182bbb534 + lVar13) = s_AUTO_DECRYPTING____1402760e8._0_4_;
      *(undefined4 *)(&DAT_182bbb538 + lVar13) = uVar3;
      *(undefined4 *)(&DAT_182bbb53c + lVar13) = uVar4;
      *(undefined4 *)(&DAT_182bbb540 + lVar13) = uVar5;
      *(undefined2 *)(&DAT_182bbb544 + lVar13) = uVar6;
      (&DAT_182bbb546)[lVar13] = s_AUTO_DECRYPTING____1402760e8[0x12];
      FUN_140050f90(param_1,1);
      fVar14 = (float)FUN_1400c58e0(param_1);
      (&DAT_182bbcbec)[lVar11 * 0x6e0] =
           (int)((DAT_1402783f4 - fVar14) * DAT_1402789a0 + DAT_140278798);
    }
    else {
      (&DAT_182bbb534)[lVar13] = 0;
      FUN_140050f90(param_1,1);
      (&DAT_182bbcbec)[lVar11 * 0x6e0] = 0;
    }
  }
  lVar13 = lVar11 * 0x1b80;
  if ((int)(&DAT_182bbcbec)[lVar11 * 0x6e0] < 1) {
    iVar8 = *(int *)(&DAT_182bbcbe8 + lVar13);
    uVar12 = iVar7 - 0x41;
    if (iVar8 == -1) {
      if (uVar12 < 0x1a) {
        *(uint *)(&DAT_182bbcbe8 + lVar13) = uVar12;
      }
    }
    else {
      if (uVar12 < 0x1a) {
        *(uint *)(&DAT_182bbcb68 + (lVar11 * 0x6e0 + (longlong)iVar8) * 4) = uVar12;
      }
      else if (iVar7 == 0x20) {
        *(undefined4 *)(&DAT_182bbcb68 + (lVar11 * 0x6e0 + (longlong)iVar8) * 4) = 0xffffffff;
      }
      *(undefined4 *)(&DAT_182bbcbe8 + lVar13) = 0xffffffff;
    }
    FUN_1400c5750(param_1);
  }
  return;
}



===== FUN_1400f5820 @ 1400f5820 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400f5820(void)

{
  undefined4 uVar1;
  int iVar2;
  longlong lVar3;
  int iVar4;
  int *piVar5;
  undefined4 *puVar6;
  uint *puVar7;
  
  if (DAT_183ebfccc == 2) {
    FUN_14018a3e0();
    FUN_140008020();
  }
  if ((DAT_183ebfaac == 0) && (DAT_183ebfccc == 1)) {
    if (DAT_183ebfcd4 < 1) {
      DAT_183ebfccc = 2;
      DAT_183ebfcd4 = DAT_183ebfce0;
    }
    else {
      DAT_183ebfcd4 = DAT_183ebfcd4 + -1;
    }
  }
  piVar5 = &DAT_151620c60;
  iVar2 = 0;
  lVar3 = 0x100;
  do {
    if (*piVar5 != 0) {
      FUN_1400f1950(iVar2);
    }
    iVar2 = iVar2 + 1;
    piVar5 = piVar5 + 0xe0d;
  } while (iVar2 < 0x100);
  puVar6 = &DAT_151620dc4;
  iVar4 = 0;
  iVar2 = DAT_183ebfaac;
  do {
    if (puVar6[-0x59] != 0) {
      if (puVar6[-0x32] == -1) {
        if ((iVar2 - 2U < 2) || (iVar2 - 5U < 3)) {
          uVar1 = 0;
          if (DAT_183ebfccc == 1) {
            uVar1 = 2;
          }
          *puVar6 = uVar1;
        }
      }
      else {
        FUN_1400f0640(iVar4);
        iVar2 = DAT_183ebfaac;
      }
    }
    iVar4 = iVar4 + 1;
    puVar6 = puVar6 + 0xe0d;
  } while (iVar4 < 0x100);
  DAT_1a87c6ba4 = DAT_19021f0c0;
  DAT_1a87c6ba8 = DAT_19021f0d8;
  DAT_1a87c6bac = DAT_19021f0f0;
  DAT_1a87c6bb0 = DAT_19021f108;
  DAT_1a87c6bb4 = DAT_19021f120;
  _DAT_1a87c6bb8 = DAT_19021f138;
  DAT_1a85c6ba0 = 6;
  FUN_14007d710();
  DAT_183ebfdb4 = 0;
  DAT_183ec5974._4_4_ = 0;
  DAT_183ecb53c = 0;
  _DAT_19021f080 = (&DAT_1a87c6ba4)[DAT_1a85c6bb8];
  DAT_183ed1100 = 0;
  DAT_183ed6cc4 = 0;
  DAT_183edc888 = 0;
  _DAT_19021f084 = (&DAT_1a87c6ba4)[DAT_1a85c6bb4];
  _DAT_19021f088 = (&DAT_1a87c6ba4)[DAT_1a85c6bb0];
  _DAT_19021f08c = (&DAT_1a87c6ba4)[DAT_1a85c6bac];
  _DAT_19021f090 = (&DAT_1a87c6ba4)[DAT_1a85c6ba8];
  _DAT_19021f094 = (&DAT_1a87c6ba4)[DAT_1a85c6ba4];
  puVar6 = &DAT_151620ce4;
  puVar7 = &DAT_151620ce4;
  do {
    if (puVar7[-0x21] != 0) {
      if ((*puVar7 < 6) && ((puVar7[6] != 0xffffffff || (iVar2 == 3)))) {
        (&DAT_183ebfdb4)[(longlong)(int)*puVar7 * 0x16f1] =
             (&DAT_183ebfdb4)[(longlong)(int)*puVar7 * 0x16f1] + 1;
        iVar2 = DAT_183ebfaac;
      }
      if (0 < (int)puVar7[-0x11]) {
        puVar7[-0x11] = puVar7[-0x11] - 1;
      }
    }
    iVar4 = DAT_1ad04b21c;
    puVar7 = puVar7 + 0xe0d;
    lVar3 = lVar3 + -1;
  } while (lVar3 != 0);
  if (DAT_1ad04b218 != 0) {
    if (((DAT_1ad04b21c - 3U & 0xfffffffd) == 0) && (iVar2 != DAT_1ad04b21c)) {
      do {
        if (puVar6[-0x21] != 0) {
          *puVar6 = 0x11;
        }
        if (puVar6[0xdec] != 0) {
          puVar6[0xe0d] = 0x11;
        }
        puVar6 = puVar6 + 0x1c1a;
      } while ((longlong)puVar6 < 0x1519a40e4);
      DAT_183ebfaac = iVar4;
    }
    FUN_140127910();
    DAT_1ad04b218 = 0;
    iVar2 = DAT_183ebfaac;
  }
  if (iVar2 == 2) {
    FUN_1400f6170();
    iVar2 = DAT_183ebfaac;
  }
  if (iVar2 == 3) {
    FUN_1400f6c50();
    iVar2 = DAT_183ebfaac;
  }
  if (iVar2 == 4) {
    FUN_1400fa3a0();
    iVar2 = DAT_183ebfaac;
  }
  if (iVar2 == 5) {
    FUN_1400f80a0();
    iVar2 = DAT_183ebfaac;
  }
  if (iVar2 == 6) {
    FUN_1400f5b60();
    iVar2 = DAT_183ebfaac;
  }
  if (iVar2 == 7) {
    FUN_1400f99a0();
  }
  return;
}



===== FUN_1400f5b60 @ 1400f5b60 root=false =====

void FUN_1400f5b60(void)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  int *piVar4;
  undefined4 *puVar5;
  int iVar6;
  longlong lVar7;
  
  iVar6 = 0;
  bVar3 = false;
  bVar2 = true;
  if (DAT_183ebfccc == 1) {
    piVar4 = &DAT_151623978;
    lVar7 = 0x100;
    do {
      if ((piVar4[-0xb46] != 0) && (*piVar4 == 0)) {
        if ((uint)piVar4[-0xb25] < 3) {
          iVar6 = iVar6 + 1;
        }
        if (piVar4[-0xb34] == 0) {
          bVar2 = false;
        }
      }
      piVar4 = piVar4 + 0xe0d;
      lVar7 = lVar7 + -1;
    } while (lVar7 != 0);
    DAT_183ebfcd4 = DAT_183ebfcd4 + -1;
    bVar1 = false;
    if (iVar6 != 0) {
      bVar1 = bVar2;
    }
    if (!bVar1) {
      if (0x4af < DAT_183ebfcd4) {
        return;
      }
      DAT_183ebfcd4 = 0x4b0;
      return;
    }
    if (0x3c < DAT_183ebfcd4) {
      DAT_183ebfcd4 = 0x3c;
      return;
    }
    if (0 < DAT_183ebfcd4) {
      return;
    }
    puVar5 = &DAT_151620ce4;
    do {
      if (puVar5[-0x21] != 0) {
        *puVar5 = 0;
      }
      if (puVar5[0xdec] != 0) {
        puVar5[0xe0d] = 0;
      }
      puVar5 = puVar5 + 0x1c1a;
    } while ((longlong)puVar5 < 0x1519a40e4);
    FUN_14005d920();
    DAT_183ebfcd4 = 0x1a5e0;
    DAT_183ebfccc = 2;
  }
  else if (DAT_183ebfccc != 2) {
    return;
  }
  DAT_183ebfcd4 = DAT_183ebfcd4 + -1;
  bVar2 = true;
  if (((DAT_183f7c30c != -1) &&
      (bVar2 = true, (&DAT_151620cfc)[(longlong)DAT_183f7c30c * 0xe0d] != -1)) &&
     (bVar2 = true,
     0 < (int)(&DAT_18329e344)
              [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c30c * 0xe0d] * 0x1bfe])) {
    bVar2 = false;
  }
  if (((DAT_183f7c310 != -1) && ((&DAT_151620cfc)[(longlong)DAT_183f7c310 * 0xe0d] != -1)) &&
     (0 < (int)(&DAT_18329e344)
               [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c310 * 0xe0d] * 0x1bfe])) {
    bVar2 = false;
  }
  if (((DAT_183f7c314 != -1) && ((&DAT_151620cfc)[(longlong)DAT_183f7c314 * 0xe0d] != -1)) &&
     (0 < (int)(&DAT_18329e344)
               [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c314 * 0xe0d] * 0x1bfe])) {
    bVar2 = false;
  }
  if (((DAT_183f7c318 != -1) && ((&DAT_151620cfc)[(longlong)DAT_183f7c318 * 0xe0d] != -1)) &&
     (0 < (int)(&DAT_18329e344)
               [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c318 * 0xe0d] * 0x1bfe])) {
    bVar2 = false;
  }
  if (((DAT_183f7c31c != -1) && ((&DAT_151620cfc)[(longlong)DAT_183f7c31c * 0xe0d] != -1)) &&
     (0 < (int)(&DAT_18329e344)
               [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c31c * 0xe0d] * 0x1bfe])) {
    bVar2 = false;
  }
  if (((DAT_183f7c320 != -1) && ((&DAT_151620cfc)[(longlong)DAT_183f7c320 * 0xe0d] != -1)) &&
     (0 < (int)(&DAT_18329e344)
               [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c320 * 0xe0d] * 0x1bfe])) {
    bVar2 = false;
  }
  if (((DAT_183f7c324 != -1) && ((&DAT_151620cfc)[(longlong)DAT_183f7c324 * 0xe0d] != -1)) &&
     (0 < (int)(&DAT_18329e344)
               [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c324 * 0xe0d] * 0x1bfe])) {
    bVar2 = false;
  }
  if ((((DAT_183f7c328 == -1) || ((&DAT_151620cfc)[(longlong)DAT_183f7c328 * 0xe0d] == -1)) ||
      ((int)(&DAT_18329e344)
            [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c328 * 0xe0d] * 0x1bfe] < 1)) &&
     ((bVar2 && (300 < DAT_183ebfcd4)))) {
    DAT_183f7c34c = 1;
    DAT_183ebfcd4 = 300;
  }
  if (DAT_183f7c32c != -1) {
    if ((&DAT_151620cfc)[(longlong)DAT_183f7c32c * 0xe0d] == -1) {
      bVar3 = true;
    }
    else {
      bVar3 = false;
      if ((int)(&DAT_18329e344)
               [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c32c * 0xe0d] * 0x1bfe] < 1) {
        bVar3 = true;
      }
    }
  }
  if (DAT_183f7c330 != -1) {
    if ((&DAT_151620cfc)[(longlong)DAT_183f7c330 * 0xe0d] == -1) {
      bVar3 = true;
    }
    else if ((int)(&DAT_18329e344)
                  [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c330 * 0xe0d] * 0x1bfe] < 1) {
      bVar3 = true;
    }
  }
  if (DAT_183f7c334 != -1) {
    if ((&DAT_151620cfc)[(longlong)DAT_183f7c334 * 0xe0d] == -1) {
      bVar3 = true;
    }
    else if ((int)(&DAT_18329e344)
                  [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c334 * 0xe0d] * 0x1bfe] < 1) {
      bVar3 = true;
    }
  }
  if (DAT_183f7c338 != -1) {
    if ((&DAT_151620cfc)[(longlong)DAT_183f7c338 * 0xe0d] == -1) {
      bVar3 = true;
    }
    else if ((int)(&DAT_18329e344)
                  [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c338 * 0xe0d] * 0x1bfe] < 1) {
      bVar3 = true;
    }
  }
  if (DAT_183f7c33c != -1) {
    if ((&DAT_151620cfc)[(longlong)DAT_183f7c33c * 0xe0d] == -1) {
      bVar3 = true;
    }
    else if ((int)(&DAT_18329e344)
                  [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c33c * 0xe0d] * 0x1bfe] < 1) {
      bVar3 = true;
    }
  }
  if (DAT_183f7c340 != -1) {
    if ((&DAT_151620cfc)[(longlong)DAT_183f7c340 * 0xe0d] == -1) {
      bVar3 = true;
    }
    else if ((int)(&DAT_18329e344)
                  [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c340 * 0xe0d] * 0x1bfe] < 1) {
      bVar3 = true;
    }
  }
  if (DAT_183f7c344 != -1) {
    if ((&DAT_151620cfc)[(longlong)DAT_183f7c344 * 0xe0d] == -1) {
      bVar3 = true;
    }
    else if ((int)(&DAT_18329e344)
                  [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c344 * 0xe0d] * 0x1bfe] < 1) {
      bVar3 = true;
    }
  }
  if ((((DAT_183f7c348 != -1) &&
       (((&DAT_151620cfc)[(longlong)DAT_183f7c348 * 0xe0d] == -1 ||
        ((int)(&DAT_18329e344)
              [(longlong)(int)(&DAT_151620cfc)[(longlong)DAT_183f7c348 * 0xe0d] * 0x1bfe] < 1)))) ||
      (bVar3)) && (300 < DAT_183ebfcd4)) {
    DAT_183ebfcd4 = 300;
    DAT_183f7c34c = 2;
    return;
  }
  if (DAT_183ebfcd4 < 1) {
    FUN_140127910();
  }
  return;
}



===== FUN_1400f6170 @ 1400f6170 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400f6170(void)

{
  bool bVar1;
  bool bVar2;
  float fVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  int *piVar8;
  uint uVar9;
  longlong lVar10;
  longlong lVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  longlong lVar15;
  float fVar16;
  float fVar17;
  undefined1 auStack_b8 [32];
  undefined4 local_98;
  float local_88;
  undefined4 local_84;
  float local_80;
  undefined4 local_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 local_58;
  ulonglong local_50;
  
  iVar5 = _DAT_183f79f84;
  iVar13 = DAT_183f79e00;
  iVar14 = DAT_183ebfcd4;
  iVar6 = DAT_160361344;
  uVar9 = DAT_140279840;
  fVar17 = DAT_1402788d8;
  fVar3 = DAT_1402785b8;
  local_50 = DAT_1403020a0 ^ (ulonglong)auStack_b8;
  if (DAT_183ebfccc == 1) {
    bVar2 = true;
    iVar13 = 0;
    piVar8 = &DAT_151623978;
    do {
      if (((piVar8[-0xb46] != 0) && (*piVar8 == 0)) && (iVar13 = iVar13 + 1, piVar8[-0xb34] == 0)) {
        bVar2 = false;
      }
      piVar8 = piVar8 + 0xe0d;
    } while ((longlong)piVar8 < 0x1519a6d78);
    bVar1 = false;
    if (iVar13 != 0) {
      bVar1 = bVar2;
    }
    if (DAT_183ebfcd4 == 0x708) {
      iVar5 = 0;
      DAT_1a85c6ba0 = 0;
      iVar12 = 0;
      if (0 < DAT_160361344) {
        piVar8 = &DAT_160361398;
        do {
          if (0 < *piVar8) {
            (&DAT_1a87c6ba4)[iVar5] = *piVar8;
            (&DAT_1a88c6ba4)[DAT_1a85c6ba0] = iVar12;
            iVar5 = DAT_1a85c6ba0 + 1;
            DAT_1a85c6ba0 = iVar5;
          }
          iVar12 = iVar12 + 1;
          piVar8 = piVar8 + 0x1c;
        } while (iVar12 < iVar6);
      }
      FUN_14007d710();
      if (0 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6ba4];
        if (((int)uVar9 < 0) || (iVar6 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2a60 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2a68 = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2aa0 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2a70 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2a78 = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (1 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6ba8];
        if (((int)uVar9 < 0) || (iVar6 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2aa4 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2aac = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2ae4 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2ab4 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2abc = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (2 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bac];
        if (((int)uVar9 < 0) || (iVar6 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2ae8 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2af0 = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2b28 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2af8 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2b00 = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (3 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bb0];
        if (((int)uVar9 < 0) || (iVar6 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2b2c = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2b34 = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2b6c = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2b3c = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2b44 = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (4 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bb4];
        if (((int)uVar9 < 0) || (iVar6 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2b70 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2b78 = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2bb0 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2b80 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2b88 = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (5 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bb8];
        if (((int)uVar9 < 0) || (iVar6 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2bb4 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2bbc = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2bf4 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2bc4 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2bcc = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (6 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bbc];
        if (((int)uVar9 < 0) || (iVar6 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2bf8 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2c00 = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2c38 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2c08 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2c10 = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (7 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bc0];
        if (((int)uVar9 < 0) || (iVar6 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2c3c = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2c44 = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2c7c = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2c4c = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2c54 = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (8 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bc4];
        if (((int)uVar9 < 0) || (iVar6 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2c80 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2c88 = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2cc0 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2c90 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2c98 = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (9 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bc8];
        if (((int)uVar9 < 0) || (iVar6 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2cc4 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2ccc = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2d04 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2cd4 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2cdc = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
    }
    fVar3 = DAT_140278d00;
    uVar4 = DAT_140278c40;
    if (iVar13 == 0) {
      iVar14 = 0x708;
    }
    DAT_183ebfcd4 = iVar14 + -1;
    if ((bVar1) && (0x3c < DAT_183ebfcd4)) {
      DAT_183ebfcd4 = 0x3c;
    }
    else if (DAT_183ebfcd4 < 1) {
      piVar8 = &DAT_151620cfc;
      local_88 = DAT_183f79e04 + DAT_140278774;
      iVar14 = 0;
      fVar17 = DAT_183f79e0c + DAT_140278774;
      local_84 = DAT_183f79e08;
      do {
        if (piVar8[-0x27] != 0) {
          fVar17 = fVar17 + fVar3;
          local_58 = 0x3f800000;
          local_78 = _DAT_140278d30;
          uStack_74 = _UNK_140278d34;
          uStack_70 = _UNK_140278d38;
          uStack_6c = _UNK_140278d3c;
          local_68 = _DAT_140278d30;
          uStack_64 = _UNK_140278d34;
          uStack_60 = _UNK_140278d38;
          uStack_5c = _UNK_140278d3c;
          local_80 = fVar17;
          FUN_14007b2a0(&local_78,&uStack_6c,uVar4);
          iVar6 = FUN_140053840(&local_88,&local_78,iVar14);
          *piVar8 = iVar6;
          local_98 = 1;
          uVar7 = FUN_14005bca0(0,&local_88,0,&local_78);
          piVar8[0x32] = 0;
          (&DAT_18329e330)[(longlong)*piVar8 * 0x1bfe] = uVar7;
        }
        iVar14 = iVar14 + 1;
        piVar8 = piVar8 + 0xe0d;
      } while (iVar14 < 0x10);
      FUN_14012e960(0x100);
      DAT_183ebfccc = 2;
      DAT_183ebfcd4 = 0x6270;
      _DAT_183f79f84 = 0;
    }
  }
  else if (DAT_183ebfccc == 2) {
    if (0 < _DAT_183f79f84) {
      bVar2 = true;
      piVar8 = &DAT_151620cfc;
      lVar10 = 0x100;
      do {
        if ((piVar8[-0x27] != 0) && (lVar11 = (longlong)*piVar8, *piVar8 != -1)) {
          iVar14 = piVar8[-10];
          lVar15 = (longlong)iVar14;
          if (iVar14 < iVar13) {
            piVar8[-7] = iVar5;
            bVar1 = false;
            fVar16 = (float)(&DAT_18329e52c)[lVar11 * 0x1bfe] - (&DAT_183f79e04)[lVar15 * 3];
            bVar2 = bVar1;
            if ((iVar14 == 0) || (iVar14 == iVar13 + -1)) {
              bVar2 = false;
              if (0.0 < fVar16) {
LAB_1400f67ea:
                piVar8[-10] = iVar14 + 1;
                bVar2 = false;
                if (iVar13 <= iVar14 + 1) {
                  iVar14 = piVar8[-0x18];
                  if (900 < DAT_183ebfcd4) {
                    DAT_183ebfcd4 = 900;
                  }
                  if ((iVar14 != -1) &&
                     (((&DAT_160361398)[(longlong)iVar14 * 0x1c] == 0 ||
                      (bVar2 = bVar1, iVar5 < (int)(&DAT_160361398)[(longlong)iVar14 * 0x1c])))) {
                    (&DAT_160361398)[(longlong)iVar14 * 0x1c] = iVar5;
                    bVar2 = bVar1;
                  }
                }
              }
            }
            else if (((float)((uint)((float)(&DAT_18329e530)[lVar11 * 0x1bfe] -
                                    (float)(&DAT_183f79e08)[lVar15 * 3]) & uVar9) < fVar3) &&
                    (((float)(&DAT_18329e534)[lVar11 * 0x1bfe] - (&DAT_183f79e0c)[lVar15 * 3]) *
                     ((float)(&DAT_18329e534)[lVar11 * 0x1bfe] - (&DAT_183f79e0c)[lVar15 * 3]) +
                     fVar16 * fVar16 < fVar17)) goto LAB_1400f67ea;
          }
        }
        piVar8 = piVar8 + 0xe0d;
        lVar10 = lVar10 + -1;
      } while (lVar10 != 0);
      if ((bVar2) && (0x78 < DAT_183ebfcd4)) {
        DAT_183ebfcd4 = 0x78;
      }
    }
    iVar14 = DAT_160361344;
    DAT_183ebfcd4 = DAT_183ebfcd4 + -1;
    if (iVar5 == 0) {
      if (DAT_183ebfcd4 < 0x6018) {
        _DAT_183f79f84 = 1;
      }
    }
    else {
      _DAT_183f79f84 = iVar5 + 1;
    }
    if (DAT_183ebfcd4 < 1) {
      iVar6 = 0;
      DAT_1a85c6ba0 = 0;
      iVar13 = 0;
      DAT_183ebfccc = 3;
      DAT_183ebfcd4 = 900;
      if (0 < DAT_160361344) {
        piVar8 = &DAT_160361398;
        do {
          if (0 < *piVar8) {
            (&DAT_1a87c6ba4)[iVar6] = *piVar8;
            (&DAT_1a88c6ba4)[DAT_1a85c6ba0] = iVar13;
            iVar6 = DAT_1a85c6ba0 + 1;
            DAT_1a85c6ba0 = iVar6;
          }
          iVar13 = iVar13 + 1;
          piVar8 = piVar8 + 0x1c;
        } while (iVar13 < iVar14);
      }
      FUN_14007d710();
      if (0 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6ba4];
        if (((int)uVar9 < 0) || (iVar14 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2a60 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2a68 = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2aa0 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2a70 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2a78 = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (1 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6ba8];
        if (((int)uVar9 < 0) || (iVar14 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2aa4 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2aac = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2ae4 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2ab4 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2abc = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (2 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bac];
        if (((int)uVar9 < 0) || (iVar14 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2ae8 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2af0 = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2b28 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2af8 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2b00 = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (3 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bb0];
        if (((int)uVar9 < 0) || (iVar14 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2b2c = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2b34 = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2b6c = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2b3c = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2b44 = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (4 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bb4];
        if (((int)uVar9 < 0) || (iVar14 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2b70 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2b78 = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2bb0 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2b80 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2b88 = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (5 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bb8];
        if (((int)uVar9 < 0) || (iVar14 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2bb4 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2bbc = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2bf4 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2bc4 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2bcc = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (6 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bbc];
        if (((int)uVar9 < 0) || (iVar14 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2bf8 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2c00 = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2c38 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2c08 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2c10 = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (7 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bc0];
        if (((int)uVar9 < 0) || (iVar14 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2c3c = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2c44 = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2c7c = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2c4c = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2c54 = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (8 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bc4];
        if (((int)uVar9 < 0) || (iVar14 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2c80 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2c88 = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2cc0 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2c90 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2c98 = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
      if (9 < DAT_1a85c6ba0) {
        uVar9 = (&DAT_1a88c6ba4)[DAT_1a85c6bc8];
        if (((int)uVar9 < 0) || (iVar14 <= (int)uVar9)) {
          uVar9 = 0;
        }
        lVar10 = (ulonglong)uVar9 * 0x70;
        _DAT_16b2a2cc4 = *(undefined8 *)(&DAT_160361360 + lVar10);
        uRam000000016b2a2ccc = *(undefined8 *)(&DAT_160361368 + lVar10);
        _DAT_16b2a2d04 = (&DAT_160361398)[(ulonglong)uVar9 * 0x1c];
        _DAT_16b2a2cd4 = *(undefined8 *)(&DAT_160361370 + lVar10);
        uRam000000016b2a2cdc = *(undefined8 *)(&DAT_160361378 + lVar10);
      }
    }
  }
  else if ((DAT_183ebfccc == 3) && (DAT_183ebfcd4 = DAT_183ebfcd4 + -1, DAT_183ebfcd4 < 1)) {
    FUN_140127910();
  }
  return;
}



===== FUN_1400fa3a0 @ 1400fa3a0 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400fa3a0(void)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  longlong lVar5;
  int iVar6;
  longlong lVar7;
  ulonglong uVar8;
  int iVar9;
  uint uVar10;
  undefined4 *puVar11;
  int *piVar12;
  ulonglong uVar13;
  int *piVar14;
  ulonglong uVar15;
  int *piVar16;
  longlong lVar17;
  longlong local_res10;
  float local_98;
  undefined4 local_94;
  float local_90;
  undefined4 local_88;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined4 local_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined4 local_68;
  
  iVar9 = DAT_16b2a2ec0;
  piVar16 = &DAT_151620c60;
  local_res10 = 0x100;
  do {
    if ((*piVar16 != 0) && (piVar16[0xb46] != 0)) {
      iVar6 = piVar16[0x27];
      lVar5 = (longlong)iVar6;
      if (iVar6 == -1) {
        *piVar16 = 0;
      }
      if ((piVar16[0xdb9] != 0) && (piVar16[0xdb9] < iVar9)) {
        if (iVar6 != -1) {
          if (((&DAT_18329e330)[lVar5 * 0x1bfe] != -1) &&
             (*(int *)(&DAT_15f2dc848 + (longlong)(int)(&DAT_18329e330)[lVar5 * 0x1bfe] * 0x5168) !=
              -1)) {
            *(undefined8 *)
             (&DAT_15fd162dc +
             (longlong)
             *(int *)(&DAT_15f2dc848 + (longlong)(int)(&DAT_18329e330)[lVar5 * 0x1bfe] * 0x5168) *
             0x17f) = 1;
          }
          lVar17 = 8;
          piVar14 = &DAT_1832a4ddc + lVar5 * 0x1bfe;
          do {
            if (0 < piVar14[-1]) {
              uVar13 = (ulonglong)(uint)piVar14[-1];
              piVar12 = piVar14;
              do {
                lVar7 = (longlong)*piVar12;
                if (0 < (int)(&DAT_182bbb1b4)[lVar7 * 0x6e0]) {
                  (&DAT_182bbb19c)[(longlong)*(int *)(&DAT_182bbb1b8 + lVar7 * 0x1b80) * 0x6e0] = 0;
                  FUN_1400ca9b0(*(undefined4 *)(&DAT_182bbb1b8 + lVar7 * 0x1b80));
                }
                piVar12 = piVar12 + 1;
                (&DAT_182bbb19c)[lVar7 * 0x6e0] = 0;
                uVar13 = uVar13 - 1;
              } while (uVar13 != 0);
            }
            piVar14 = piVar14 + 10;
            lVar17 = lVar17 + -1;
          } while (lVar17 != 0);
          (&DAT_18329e340)[lVar5 * 0x1bfe] = 0;
          (&DAT_18329e310)[lVar5 * 0x1bfe] = 0xffffffff;
        }
        *piVar16 = 0;
      }
    }
    piVar16 = piVar16 + 0xe0d;
    local_res10 = local_res10 + -1;
  } while (local_res10 != 0);
  if (DAT_183ebfccc == 1) {
    DAT_183ebfcd4 = DAT_183ebfce0;
    DAT_183ebfccc = 2;
    DAT_16b2a2ec0 = 0x1a5e00;
    _DAT_16b2a2ec4 = 10;
    FUN_140061950();
    FUN_14012e960(DAT_183f7a5c0);
    iVar9 = 0;
    if (0 < DAT_1760c55f4) {
      piVar16 = &DAT_1760c5638;
      do {
        if (*piVar16 == 4) {
          FUN_140195480(iVar9,0);
        }
        iVar9 = iVar9 + 1;
        piVar16 = piVar16 + 0x36c3;
      } while (iVar9 < DAT_1760c55f4);
    }
    local_98 = DAT_16b2a2ec8;
    local_90 = DAT_16b2a2ed0;
    _DAT_16d482320 = 0;
    DAT_16d48232c = 0;
    _DAT_16d482334 = 0;
    DAT_16d482340 = 0;
    _DAT_16d482348 = 0;
    _DAT_16d482354 = 0;
    _DAT_16d48235c = 0;
    _DAT_16d482368 = 0;
    _DAT_16d482370 = 0;
    _DAT_16d48237c = 0;
    _DAT_16d482384 = 0;
    _DAT_16d482390 = 0;
    iVar9 = DAT_16b2a2ec0;
  }
  uVar13 = 0;
  if (DAT_183ebfccc == 2) {
    DAT_16b2a2ec0 = iVar9 + _DAT_16b2a2ec4;
    if (DAT_16b2a2ec0 == 0x1a5e3c) {
      FUN_1401fcd30(&DAT_1b4037440,0,0x800);
      iVar9 = FUN_14023b1b0();
      lVar5 = 7;
      DAT_16b2aaf18 = iVar9 % 7;
      do {
        FUN_140194d40();
        lVar5 = lVar5 + -1;
      } while (lVar5 != 0);
      FUN_140195970();
    }
    if ((DAT_16b2a2ec0 == (DAT_16b2a2ec0 / 54000) * 54000) &&
       (uVar8 = uVar13, DAT_16b2a2ec0 < 0x3807c0)) {
      do {
        FUN_1401949c0(uVar8);
        uVar10 = (int)uVar8 + 1;
        uVar8 = (ulonglong)uVar10;
      } while ((int)uVar10 < 6);
      piVar14 = &DAT_16d48232c;
      piVar16 = &DAT_183ebfdb4;
      uVar8 = uVar13;
      do {
        if (0 < *piVar16) {
          if (*piVar14 < 1) {
            FUN_14012eb50(uVar8);
          }
          else {
            *piVar14 = *piVar14 + -1;
          }
        }
        uVar10 = (int)uVar8 + 1;
        uVar8 = (ulonglong)uVar10;
        piVar16 = piVar16 + 0x16f1;
        piVar14 = piVar14 + 5;
      } while ((int)uVar10 < 6);
    }
    iVar9 = DAT_16b2a2ec0;
    uVar8 = uVar13;
    if (DAT_16b2a2ec0 < 0x3e9f40) {
      if (0 < DAT_1760c55f4) {
        piVar16 = &DAT_1760d202c;
        uVar15 = uVar13;
        do {
          if (piVar16[-0x327d] == 9) {
            piVar16[0] = 0;
            piVar16[1] = 0;
            (&DAT_1760d2034)[uVar8 * 3] = 0x14;
            *piVar16 = *piVar16 + 1;
          }
          uVar10 = (int)uVar15 + 1;
          uVar15 = (ulonglong)uVar10;
          uVar8 = uVar8 + 0x1241;
          piVar16 = piVar16 + 0x36c3;
        } while ((int)uVar10 < DAT_1760c55f4);
      }
      fVar1 = DAT_140278730;
      piVar16 = &DAT_183ebff40;
      piVar14 = &DAT_19021f0cc;
      uVar8 = uVar13;
      do {
        *piVar14 = (int)((float)piVar14[-2] * fVar1);
        piVar12 = piVar16;
        uVar15 = uVar13;
        do {
          if ((((piVar12[-0x11] != 0) && (piVar12[-0x10] == 0)) && (iVar9 == *piVar12)) &&
             (FUN_1401300c0(piVar12[-0xf]), piVar12[-0x10] == 0)) {
            FUN_1400f50d0(uVar8,uVar15,0,0);
            iVar9 = DAT_16b2a2ec0;
          }
          uVar10 = (int)uVar15 + 1;
          uVar15 = (ulonglong)uVar10;
          piVar12 = piVar12 + 0x117;
        } while ((int)uVar10 < 0x10);
        uVar10 = (int)uVar8 + 1;
        uVar8 = (ulonglong)uVar10;
        piVar14 = piVar14 + 6;
        piVar16 = piVar16 + 0x16f1;
      } while ((int)uVar10 < 6);
      piVar16 = &DAT_151620c9c;
      lVar5 = 0x100;
      if (iVar9 == (iVar9 / 18000) * 18000) {
        piVar14 = &DAT_18329e328;
        lVar17 = 0x100;
        do {
          if (piVar14[-8] != 0) {
            if (0 < piVar14[-3]) {
              piVar14[-3] = piVar14[-3] + -1;
            }
            iVar9 = *piVar14;
            if ((7 < iVar9) && (*piVar14 = iVar9 + -1, 7 < iVar9 + -1)) {
              *piVar14 = iVar9 + -2;
            }
          }
          piVar14 = piVar14 + 0x1bfe;
          lVar17 = lVar17 + -1;
        } while (lVar17 != 0);
        FUN_14008c030();
        FUN_14008c310();
        FUN_14012c480();
        piVar14 = &DAT_151620c9c;
        lVar17 = 0x100;
        do {
          if ((piVar14[-0xf] != 0) && (*piVar14 != -1)) {
            (&DAT_160361394)[(longlong)*piVar14 * 0x1c] =
                 (&DAT_160361394)[(longlong)*piVar14 * 0x1c] + 5;
          }
          piVar14 = piVar14 + 0xe0d;
          lVar17 = lVar17 + -1;
        } while (lVar17 != 0);
        if (0 < DAT_160361344) {
          piVar14 = &DAT_160361380;
          uVar8 = uVar13;
          iVar9 = DAT_160361344;
          do {
            if (0 < *piVar14) {
              *piVar14 = *piVar14 + -1;
              iVar9 = DAT_160361344;
            }
            uVar10 = (int)uVar8 + 1;
            uVar8 = (ulonglong)uVar10;
            piVar14 = piVar14 + 0x1c;
          } while ((int)uVar10 < iVar9);
        }
        FUN_140132b00();
        FUN_140052090();
        iVar9 = DAT_16b2a2ec0;
      }
      fVar1 = DAT_1402783f4;
      fVar2 = DAT_140278d00;
      fVar3 = DAT_140278d00;
      fVar4 = DAT_1402783f4;
      if (iVar9 == (iVar9 / 54000) * 54000) {
        if (0 < DAT_160361344) {
          piVar14 = &DAT_16036138c;
          iVar9 = DAT_160361344;
          do {
            if (0 < *piVar14) {
              iVar9 = *piVar14 + -0x10;
              if (iVar9 < 0) {
                iVar9 = 0;
              }
              *piVar14 = iVar9;
              iVar9 = DAT_160361344;
            }
            uVar10 = (int)uVar13 + 1;
            uVar13 = (ulonglong)uVar10;
            piVar14 = piVar14 + 0x1c;
          } while ((int)uVar10 < iVar9);
        }
        iVar9 = DAT_183f7a5dc;
        _DAT_16d482330 = 0;
        _DAT_16d482344 = 0;
        _DAT_16d482358 = 0;
        _DAT_16d48236c = 0;
        _DAT_16d482380 = 0;
        _DAT_16d482394 = 0;
        _DAT_16d4823a8 = 0;
        _DAT_16d4823bc = 0;
        _DAT_16d4823d0 = 0;
        _DAT_16d4823e4 = 0;
        _DAT_16d4823f8 = 0;
        _DAT_16d48240c = 0;
        _DAT_16d482420 = 0;
        _DAT_16d482434 = 0;
        _DAT_16d482448 = 0;
        _DAT_16d48245c = 0;
        _DAT_16d482470 = 0;
        _DAT_16d482484 = 0;
        _DAT_16d482498 = 0;
        _DAT_16d4824ac = 0;
        _DAT_16d4824c0 = 0;
        _DAT_16d4824d4 = 0;
        _DAT_16d4824e8 = 0;
        _DAT_16d4824fc = 0;
        _DAT_16d482510 = 0;
        _DAT_16d482524 = 0;
        _DAT_16d482538 = 0;
        _DAT_16d48254c = 0;
        _DAT_16d482560 = 0;
        _DAT_16d482574 = 0;
        _DAT_16d482588 = 0;
        _DAT_16d48259c = 0;
        _DAT_16d4825b0 = 0;
        _DAT_16d4825c4 = 0;
        _DAT_16d4825d8 = 0;
        _DAT_16d4825ec = 0;
        _DAT_16d482600 = 0;
        _DAT_16d482614 = 0;
        _DAT_16d482628 = 0;
        _DAT_16d48263c = 0;
        _DAT_16d482650 = 0;
        _DAT_16d482664 = 0;
        _DAT_16d482678 = 0;
        _DAT_16d48268c = 0;
        _DAT_16d4826a0 = 0;
        _DAT_16d4826b4 = 0;
        _DAT_16d4826c8 = 0;
        _DAT_16d4826dc = 0;
        _DAT_16d4826f0 = 0;
        _DAT_16d482704 = 0;
        _DAT_16d482718 = 0;
        _DAT_16d48272c = 0;
        _DAT_16d482740 = 0;
        _DAT_16d482754 = 0;
        _DAT_16d482768 = 0;
        _DAT_16d48277c = 0;
        _DAT_16d482790 = 0;
        _DAT_16d4827a4 = 0;
        _DAT_16d4827b8 = 0;
        _DAT_16d4827cc = 0;
        _DAT_16d4827e0 = 0;
        _DAT_16d4827f4 = 0;
        _DAT_16d482808 = 0;
        _DAT_16d48281c = 0;
        do {
          iVar6 = piVar16[8];
          if (((0 < iVar6) && (piVar16[0x18] != -1)) && (*piVar16 != -1)) {
            (&DAT_16036138c)[(longlong)*piVar16 * 0x1c] =
                 (&DAT_16036138c)[(longlong)*piVar16 * 0x1c] + 8;
          }
          piVar16[0xb] = 0;
          if (0 < piVar16[0xc]) {
            piVar16[0xc] = piVar16[0xc] + -1;
          }
          piVar16[0xd] = 0;
          if (0 < iVar6) {
            iVar6 = iVar6 + -1;
            piVar16[8] = iVar6;
          }
          if (iVar9 <= iVar6) {
            piVar16[0xb] = 100;
            piVar16[0xc] = 4;
          }
          piVar16 = piVar16 + 0xe0d;
          lVar5 = lVar5 + -1;
          fVar1 = DAT_1402783f4;
          fVar2 = DAT_140278d00;
          fVar3 = DAT_140278d00;
          fVar4 = DAT_1402783f4;
        } while (lVar5 != 0);
      }
      while (DAT_1402783f4 = fVar4, DAT_140278d00 = fVar3, fVar3 = DAT_140278d00,
            fVar4 = DAT_1402783f4, DAT_183f7aee8 < 8) {
        local_90 = DAT_16b2a2ed0 + DAT_1402783f4;
        local_98 = DAT_16b2a2ec8 + DAT_140278d00;
        local_68 = 0x3f800000;
        DAT_1402783f4 = fVar1;
        DAT_140278d00 = fVar2;
        local_94 = DAT_16b2a2ecc;
        local_88 = _DAT_140278d30;
        uStack_84 = _UNK_140278d34;
        uStack_80 = _UNK_140278d38;
        uStack_7c = _UNK_140278d3c;
        local_78 = _DAT_140278d30;
        uStack_74 = _UNK_140278d34;
        uStack_70 = _UNK_140278d38;
        uStack_6c = _UNK_140278d3c;
        iVar9 = FUN_140054130(0x1d,&local_98,0,&local_88);
        fVar1 = DAT_1402783f4;
        fVar2 = DAT_140278d00;
        if (iVar9 != -1) {
          FUN_1400584b0(iVar9,&DAT_183e93124);
          DAT_183f7aee8 = DAT_183f7aee8 + 1;
          fVar1 = DAT_1402783f4;
          fVar2 = DAT_140278d00;
        }
      }
      piVar16 = &DAT_151623978;
      DAT_1402783f4 = fVar1;
      DAT_140278d00 = fVar2;
      do {
        if (((piVar16[-0xb46] != 0) && (*piVar16 == 0)) && (piVar16[-0xb1f] == -1)) {
          piVar16[-0xaed] = 1;
        }
        piVar16 = piVar16 + 0xe0d;
      } while ((longlong)piVar16 < 0x1519a6d78);
      piVar16 = &DAT_183ebff0c;
      do {
        if ((piVar16[-4] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)*piVar16 * 0x6e0])) {
          (&DAT_182bbb19c)[(longlong)*piVar16 * 0x6e0] = 0xffff;
        }
        if ((piVar16[0x113] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)piVar16[0x117] * 0x6e0]))
        {
          (&DAT_182bbb19c)[(longlong)piVar16[0x117] * 0x6e0] = 0xffff;
        }
        if ((piVar16[0x22a] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)piVar16[0x22e] * 0x6e0]))
        {
          (&DAT_182bbb19c)[(longlong)piVar16[0x22e] * 0x6e0] = 0xffff;
        }
        if ((piVar16[0x341] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)piVar16[0x345] * 0x6e0]))
        {
          (&DAT_182bbb19c)[(longlong)piVar16[0x345] * 0x6e0] = 0xffff;
        }
        if ((piVar16[0x458] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)piVar16[0x45c] * 0x6e0]))
        {
          (&DAT_182bbb19c)[(longlong)piVar16[0x45c] * 0x6e0] = 0xffff;
        }
        if ((piVar16[0x56f] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)piVar16[0x573] * 0x6e0]))
        {
          (&DAT_182bbb19c)[(longlong)piVar16[0x573] * 0x6e0] = 0xffff;
        }
        if ((piVar16[0x686] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)piVar16[0x68a] * 0x6e0]))
        {
          (&DAT_182bbb19c)[(longlong)piVar16[0x68a] * 0x6e0] = 0xffff;
        }
        if ((piVar16[0x79d] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)piVar16[0x7a1] * 0x6e0]))
        {
          (&DAT_182bbb19c)[(longlong)piVar16[0x7a1] * 0x6e0] = 0xffff;
        }
        if ((piVar16[0x8b4] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)piVar16[0x8b8] * 0x6e0]))
        {
          (&DAT_182bbb19c)[(longlong)piVar16[0x8b8] * 0x6e0] = 0xffff;
        }
        if ((piVar16[0x9cb] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)piVar16[0x9cf] * 0x6e0]))
        {
          (&DAT_182bbb19c)[(longlong)piVar16[0x9cf] * 0x6e0] = 0xffff;
        }
        if ((piVar16[0xae2] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)piVar16[0xae6] * 0x6e0]))
        {
          (&DAT_182bbb19c)[(longlong)piVar16[0xae6] * 0x6e0] = 0xffff;
        }
        if ((piVar16[0xbf9] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)piVar16[0xbfd] * 0x6e0]))
        {
          (&DAT_182bbb19c)[(longlong)piVar16[0xbfd] * 0x6e0] = 0xffff;
        }
        if ((piVar16[0xd10] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)piVar16[0xd14] * 0x6e0]))
        {
          (&DAT_182bbb19c)[(longlong)piVar16[0xd14] * 0x6e0] = 0xffff;
        }
        if ((piVar16[0xe27] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)piVar16[0xe2b] * 0x6e0]))
        {
          (&DAT_182bbb19c)[(longlong)piVar16[0xe2b] * 0x6e0] = 0xffff;
        }
        if ((piVar16[0xf3e] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)piVar16[0xf42] * 0x6e0]))
        {
          (&DAT_182bbb19c)[(longlong)piVar16[0xf42] * 0x6e0] = 0xffff;
        }
        if ((piVar16[0x1055] != 0) && (0 < (int)(&DAT_182bbb19c)[(longlong)piVar16[0x1059] * 0x6e0])
           ) {
          (&DAT_182bbb19c)[(longlong)piVar16[0x1059] * 0x6e0] = 0xffff;
        }
        piVar16 = piVar16 + 0x16f1;
      } while ((longlong)piVar16 < 0x183ee25a4);
    }
    else {
      do {
        FUN_140194c10(uVar8);
        uVar10 = (int)uVar8 + 1;
        uVar8 = (ulonglong)uVar10;
      } while ((int)uVar10 < 6);
      DAT_16b2a2ee0 = 0;
      puVar11 = &DAT_151624484;
      do {
        if (puVar11[-0xe09] != 0) {
          FUN_140117340(uVar13);
          lVar5 = (longlong)(int)puVar11[-0xde2];
          if (puVar11[-0xde2] == -1) {
            puVar11[-3] = 0;
          }
          else {
            puVar11[-3] = 1;
            puVar11[-2] = (&DAT_18329e52c)[lVar5 * 0x1bfe];
            puVar11[-1] = (&DAT_18329e530)[lVar5 * 0x1bfe];
            *puVar11 = (&DAT_18329e534)[lVar5 * 0x1bfe];
            puVar11[1] = (&DAT_18329e5f4)[lVar5 * 0x1bfe];
            puVar11[2] = (&DAT_18329e330)[lVar5 * 0x1bfe];
            puVar11[3] = (&DAT_18329e334)[lVar5 * 0x1bfe];
          }
        }
        uVar10 = (int)uVar13 + 1;
        uVar13 = (ulonglong)uVar10;
        puVar11 = puVar11 + 0xe0d;
      } while ((int)uVar10 < 0x100);
      FUN_14012c480();
      FUN_140127910();
    }
  }
  return;
}



===== FUN_140095b00 @ 140095b00 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140095b00(void)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  int iVar7;
  int iVar8;
  uint uVar9;
  undefined4 uVar10;
  undefined8 *puVar11;
  ulonglong uVar12;
  undefined8 *puVar13;
  longlong lVar14;
  undefined4 *puVar15;
  char *pcVar16;
  longlong lVar17;
  longlong lVar18;
  
  DAT_183f7c360 = DAT_140278a74;
  DAT_183f7c368 = DAT_140278a80;
  DAT_183f7c364 = DAT_140278814;
  lVar14 = 0;
  DAT_183f7c5c4 = DAT_1402783f4;
  DAT_183f7c5a4 = _DAT_140278d30;
  DAT_183f7c5a8 = _UNK_140278d34;
  DAT_183f7c5ac = _UNK_140278d38;
  DAT_183f7c5b0 = _UNK_140278d3c;
  DAT_183ebfd44 = 1;
  DAT_183f7c5b4 = _DAT_140278d30;
  DAT_183f7c5b8 = _UNK_140278d34;
  DAT_183f7c5bc = _UNK_140278d38;
  DAT_183f7c5c0 = _UNK_140278d3c;
  DAT_183f79de4 = 0xffffffff;
  DAT_183e93544 = 1;
  DAT_192e98e60 = 0;
  FUN_1401fcd30(&DAT_192e8f660,0,0x9800);
  FUN_1401fcd30(&DAT_18399ef70,0,0x4184);
  puVar15 = &DAT_1a4cfc960;
  puVar13 = &DAT_151620e14;
  lVar18 = 0x10;
  puVar11 = &DAT_1a4cff160;
  do {
    *puVar11 = 0xfffffffefffffffe;
    puVar11[1] = 0xfffffffefffffffe;
    puVar11[2] = 0xfffffffefffffffe;
    puVar11[3] = 0xfffffffefffffffe;
    puVar11[4] = 0xfffffffefffffffe;
    puVar11[5] = 0xfffffffefffffffe;
    puVar11[6] = 0xfffffffefffffffe;
    puVar11[7] = 0xfffffffefffffffe;
    lVar18 = lVar18 + -1;
    puVar11 = puVar11 + 8;
  } while (lVar18 != 0);
  do {
    *(undefined4 *)((longlong)puVar13 + -0x1b4) = 0;
    *puVar13 = 0;
    puVar13 = (undefined8 *)((longlong)puVar13 + 0x3834);
    *puVar15 = 0xfffffffe;
    puVar15 = puVar15 + 5;
  } while ((longlong)puVar13 < 0x1519a4214);
  if (DAT_1ad04adc0 != 0) {
    if (DAT_183ebfaac == 3) {
      DAT_183ebfcb0 = (uint)(DAT_183f7a5b4 != 0);
    }
    FUN_140050c80(&DAT_183f7c520,&DAT_183f7c524,DAT_183f7aed4);
    iVar8 = FUN_14005ccf0();
    lVar17 = (longlong)iVar8;
    lVar18 = lVar17 * 0x3834;
    pcVar16 = &DAT_151e4594c;
    do {
      cVar1 = *pcVar16;
      pcVar16[lVar18 + -0x824ce8] = cVar1;
      pcVar16 = pcVar16 + 1;
    } while (cVar1 != '\0');
    (&DAT_15162440c)[lVar17 * 0xe0d] = DAT_151e461e8;
    *(undefined4 *)(&DAT_151624430 + lVar18) = DAT_151e461ec;
    *(undefined4 *)(&DAT_151624410 + lVar18) = DAT_151e461f0;
    *(undefined4 *)(&DAT_151624414 + lVar18) = DAT_151e461f4;
    *(undefined4 *)(&DAT_151624418 + lVar18) = DAT_151e461f8;
    *(undefined4 *)(&DAT_15162441c + lVar18) = DAT_151e461fc;
    FUN_140091e60(iVar8);
    uVar9 = DAT_183ebfaac - 2;
    *(undefined4 *)(&DAT_151620c94 + lVar18) = 1;
    uVar10 = DAT_1603612e4;
    if (uVar9 < 6) {
      DAT_1ad04b230 = DAT_1829f8bc8;
      DAT_1ad04b22c = DAT_1603612f0;
      DAT_1ad04b220 = 1;
      DAT_1ad04b228 = DAT_1603612e4;
      DAT_1ad04b238 = 0x4d2;
      do {
        pcVar16 = &DAT_151e4594c + lVar14;
        (&DAT_1ad04b23c)[lVar14] = *pcVar16;
        lVar14 = lVar14 + 1;
      } while (*pcVar16 != '\0');
      *(undefined4 *)(&DAT_151620c84 + lVar18) = DAT_183f7c520;
      *(undefined4 *)(&DAT_151620c88 + lVar18) = DAT_183f7c524;
      uVar9 = FUN_14004d750(uVar10,0x4d2);
      (&DAT_151620c9c)[lVar17 * 0xe0d] = uVar9;
      if ((int)uVar9 < 0) {
        uVar9 = 0;
        (&DAT_151620c9c)[lVar17 * 0xe0d] = 0;
      }
      iVar7 = DAT_183ebfaac;
      uVar12 = (ulonglong)uVar9;
      lVar14 = uVar12 * 0x70;
      uVar10 = *(undefined4 *)(&DAT_160361360 + lVar14);
      uVar2 = *(undefined4 *)(lVar14 + 0x160361364);
      uVar3 = *(undefined4 *)(&DAT_160361368 + lVar14);
      uVar4 = *(undefined4 *)(lVar14 + 0x16036136c);
      *(undefined4 *)(&DAT_151620c8c + lVar18) = (&DAT_160361350)[uVar12 * 0x1c];
      uVar5 = *(undefined8 *)(&DAT_160361370 + lVar14);
      uVar6 = *(undefined8 *)(&DAT_160361378 + lVar14);
      (&DAT_151620c90)[lVar17 * 0xe0d] = (&DAT_160361354)[uVar12 * 0x1c];
      (&DAT_151620c64)[lVar17 * 0xe0d] = uVar10;
      *(undefined4 *)(&DAT_151620c68 + lVar18) = uVar2;
      *(undefined4 *)(&DAT_151620c6c + lVar18) = uVar3;
      *(undefined4 *)(&DAT_151620c70 + lVar18) = uVar4;
      if (DAT_160361344 < 1) {
        DAT_160361344 = 1;
      }
      *(undefined8 *)(&DAT_151620c74 + lVar18) = uVar5;
      *(undefined8 *)(&DAT_151620c7c + lVar18) = uVar6;
      if ((iVar8 != -1) && (iVar7 - 3U < 2)) {
        (&DAT_151620cac)[lVar17 * 0xe0d] = (&DAT_160361384)[uVar12 * 0x1c];
        iVar8 = *(int *)(&DAT_160361388 + lVar14);
        if (*(int *)(&DAT_160361388 + lVar14) < 0) {
          *(undefined4 *)(&DAT_160361388 + lVar14) = 0;
          iVar8 = 0;
        }
        (&DAT_151620cb8)[lVar17 * 0xe0d] = iVar8;
        (&DAT_151620cbc)[lVar17 * 0xe0d] = (&DAT_16036138c)[uVar12 * 0x1c];
        (&DAT_151620cf8)[lVar17 * 0xe0d] = *(undefined4 *)(&DAT_160361390 + lVar14);
      }
      if ((int)(&DAT_151620cac)[lVar17 * 0xe0d] < 1000) {
        (&DAT_151620cac)[lVar17 * 0xe0d] = 1000;
      }
      uVar10 = DAT_183f7a5fc;
      if ((iVar7 == 7) || ((iVar7 == 3 && (uVar10 = DAT_183f7a5b0, DAT_183ebfcb0 == 1)))) {
        (&DAT_151620cac)[lVar17 * 0xe0d] = uVar10;
      }
      (&DAT_151620ce4)[lVar17 * 0xe0d] = 0x11;
    }
  }
  if (DAT_144cbfaa4 != 0) {
    DAT_144cbfab0 = 0;
    FUN_140127300();
  }
  DAT_144cbfac4 = 1;
  FUN_140127910();
  DAT_183f7c37c = DAT_16b2a2ec8 + DAT_1402787d4;
  DAT_183f7c380 = DAT_16b2a2ecc + DAT_140278774;
  DAT_183ebfcbc = 0;
  DAT_183f7c384 = DAT_16b2a2ed0;
  DAT_183ebfaa8 = 0;
  DAT_18329cc24 = 0;
  DAT_183f7c38c = 0;
  DAT_183f7c388 = DAT_140278c40;
  DAT_18329cc34 = 0xffffffff;
  if (((DAT_183f7c540 != -1) && ((&DAT_151620cfc)[(longlong)DAT_183f7c540 * 0xe0d] == -1)) &&
     ((DAT_183ebfccc == 1 || (DAT_183ebfaac == 4)))) {
    DAT_18329cc24 = 1;
  }
  SDL_SetRelativeMouseMode(1);
  DAT_183ebfd5c = 1;
  DAT_183ebfaa0 = 1;
  return;
}



===== FUN_14007eeb0 @ 14007eeb0 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_14007eeb0(void)

{
  int iVar1;
  BOOL BVar2;
  SOCKET SVar3;
  __time64_t _Var4;
  longlong lVar5;
  undefined4 *puVar6;
  int *piVar7;
  char *pcVar8;
  ulonglong uVar9;
  uint uVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  uint uVar15;
  ulonglong uVar16;
  LARGE_INTEGER local_res8;
  LARGE_INTEGER local_res10;
  
  iVar1 = FUN_1400a3f30();
  pcVar8 = "connection successful\n";
  if (iVar1 == 0) {
    pcVar8 = "connection failed\n";
  }
  FUN_14011bd10(pcVar8);
  if (DAT_151e461b0 < 1) {
    iVar1 = 1;
  }
  else {
    iVar1 = DAT_151e461b0;
    if (0x1e < DAT_151e461b0) {
      iVar1 = 0x1e;
    }
  }
  if (DAT_151e461a8 < 2) {
    DAT_151e461a8 = 2;
  }
  else if (0x80 < DAT_151e461a8) {
    DAT_151e461a8 = 0x80;
  }
  _DAT_1ad04b1f4 = DAT_151e461a8;
  uVar13 = 0;
  uVar9 = uVar13;
  DAT_151e461b0 = iVar1;
  do {
    pcVar8 = &DAT_151e45b4c + uVar9;
    (&DAT_1ad04add4)[uVar9] = *pcVar8;
    uVar9 = uVar9 + 1;
  } while (*pcVar8 != '\0');
  DAT_183ebfce0 = iVar1 * 0xe10;
  DAT_183ebfcdc = 0xe10;
  DAT_183ebfd30 = 0x4ec;
  DAT_151e4614c = 1;
  DAT_18539d3f8 = DAT_151e45940;
  DAT_151e46150 = 1;
  DAT_151e45948 = 1;
  SVar3 = socket(2,2,0x11);
  DAT_18539d3c4 = (int)SVar3;
  _DAT_18539d3e4 = 2;
  DAT_18539d3e8 = 0;
  DAT_18539d3e6 = htons(DAT_18539d3f8);
  DAT_18539d3f4 = 0x10;
  iVar1 = bind((longlong)DAT_18539d3c4,(sockaddr *)&DAT_18539d3e4,0x10);
  if (iVar1 == 0) {
    local_res8.s.LowPart = 1;
    ioctlsocket((longlong)DAT_18539d3c4,-0x7ffb9982,(u_long *)&local_res8.QuadPart);
    DAT_18539d3a4 = 1;
  }
  DAT_1ad04adc0 = 1;
  _DAT_1ad04adc8 = 1;
  FUN_14011bd10("port:%d\n",DAT_18539d3f8);
  FUN_14011bd10("socketenabled:%d\n",DAT_18539d3a4);
  _Var4 = _time64((__time64_t *)0x0);
  DAT_144af96e0 = (undefined4)_Var4;
  DAT_14030186c = 1;
  do {
    lVar5 = (longlong)DAT_14030186c;
    iVar1 = ((uint)(&DAT_144af96e0)[DAT_14030186c + -1] >> 0x1e ^
            (&DAT_144af96e0)[DAT_14030186c + -1]) * 0x6c078965 + DAT_14030186c;
    DAT_14030186c = DAT_14030186c + 1;
    (&DAT_144af96e0)[lVar5] = iVar1;
  } while (DAT_14030186c < 0x270);
  FUN_1400e5f10();
  FUN_14013dcd0();
  puVar6 = &DAT_151620c60;
  DAT_19021f0c4 = 0x42c80000;
  DAT_19021f0dc = 0x42c80000;
  DAT_19021f0f4 = 0x42c80000;
  DAT_19021f10c = 0x42c80000;
  do {
    *puVar6 = 0;
    puVar6 = puVar6 + 0xe0d;
  } while ((longlong)puVar6 < 0x1519a4060);
  DAT_183ebfaac = DAT_151e461ac;
  if ((2 < DAT_151e461ac - 3U) && (DAT_151e461ac != 7)) {
    DAT_183ebfaac = 3;
  }
  FUN_140127910();
  _DAT_193ac8680 = 1;
  BVar2 = QueryPerformanceCounter(&local_res8);
  uVar9 = uVar13;
  uVar14 = uVar13;
  uVar16 = uVar13;
  if (BVar2 != 0) {
    uVar14 = (longlong)
             ((double)CONCAT44(local_res8.s.HighPart,local_res8.s.LowPart) * _DAT_182a7d550);
  }
  do {
    SDL_Delay(1);
    piVar7 = &DAT_151623978;
    uVar12 = uVar13;
    do {
      if ((piVar7[-0xb46] != 0) && (*piVar7 == 0)) {
        uVar12 = (ulonglong)((int)uVar12 + 1);
      }
      if ((piVar7[0x2c7] != 0) && (piVar7[0xe0d] == 0)) {
        uVar12 = (ulonglong)((int)uVar12 + 1);
      }
      if ((piVar7[0x10d4] != 0) && (piVar7[0x1c1a] == 0)) {
        uVar12 = (ulonglong)((int)uVar12 + 1);
      }
      if ((piVar7[0x1ee1] != 0) && (piVar7[0x2a27] == 0)) {
        uVar12 = (ulonglong)((int)uVar12 + 1);
      }
      piVar7 = piVar7 + 0x3834;
    } while ((longlong)piVar7 < 0x1519a6d78);
    uVar11 = uVar13;
    if ((0 < (int)uVar12) && ((int)uVar9 == 0)) {
      DAT_183ebfcc4 = 5;
      FUN_140127910();
    }
    while( true ) {
      BVar2 = QueryPerformanceCounter(&local_res8);
      iVar1 = 0;
      if (BVar2 != 0) {
        iVar1 = (int)(longlong)
                     ((double)CONCAT44(local_res8.s.HighPart,local_res8.s.LowPart) * _DAT_182a7d550)
        ;
      }
      uVar9 = uVar12;
      if (((uint)(iVar1 - (int)uVar14) < 0x10) || (4 < (int)uVar11)) break;
      uVar10 = (int)uVar11 + 1;
      if ((int)uVar10 < 4) {
        uVar14 = (ulonglong)((int)uVar14 + 0x10);
      }
      else {
        BVar2 = QueryPerformanceCounter(&local_res10);
        uVar14 = uVar13;
        if (BVar2 != 0) {
          uVar14 = (longlong)((double)local_res10.QuadPart * _DAT_182a7d550);
        }
      }
      uVar15 = (int)uVar16 - 1;
      uVar16 = (ulonglong)uVar15;
      if (((int)uVar15 < 1) && (uVar16 = 0xe10, 0 < DAT_160361344)) {
        piVar7 = &DAT_1603613b0;
        uVar9 = uVar13;
        iVar1 = DAT_160361344;
        do {
          if (0 < *piVar7) {
            *piVar7 = *piVar7 + -1;
            iVar1 = DAT_160361344;
          }
          uVar15 = (int)uVar9 + 1;
          uVar9 = (ulonglong)uVar15;
          piVar7 = piVar7 + 0x1c;
        } while ((int)uVar15 < iVar1);
      }
      if (DAT_183ebfccc == 2) {
        piVar7 = &DAT_151623978;
        uVar9 = uVar13;
        do {
          if ((piVar7[-0xb46] != 0) && (*piVar7 != 0)) {
            FUN_1401178f0(uVar9);
          }
          uVar15 = (int)uVar9 + 1;
          uVar9 = (ulonglong)uVar15;
          piVar7 = piVar7 + 0xe0d;
        } while ((int)uVar15 < 0x100);
      }
      FUN_140132f90();
      FUN_140133090();
      DAT_16b165f70 = 0;
      DAT_16b1f5f74 = 0;
      FUN_14011b2a0();
      if (DAT_183ebfccc < 3) {
        FUN_140116210();
      }
      FUN_1400f5820();
      FUN_140136450();
      DAT_183ebfd34 = DAT_183ebfd34 + 1;
      if (DAT_183ebfccc < 3) {
        FUN_14002b9c0();
      }
      FUN_14008f1b0();
      uVar11 = (ulonglong)uVar10;
      if ((DAT_183ebfccc < 2) || (DAT_183ebfccc == 2)) {
        FUN_14002ce50();
      }
    }
  } while( true );
}



===== FUN_140136450 @ 140136450 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140136450(void)

{
  undefined2 uVar1;
  int iVar2;
  undefined8 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined8 uVar7;
  double dVar8;
  uint uVar9;
  undefined8 uVar10;
  int iVar11;
  uint uVar12;
  int *piVar13;
  int *piVar14;
  longlong lVar15;
  longlong lVar16;
  int iVar17;
  uint uVar18;
  uint uVar19;
  longlong lVar20;
  uint uVar21;
  longlong lVar22;
  undefined4 *puVar23;
  ulonglong uVar24;
  ulonglong uVar25;
  longlong lVar26;
  undefined4 *puVar27;
  ulonglong uVar28;
  uint uVar29;
  uint uVar30;
  undefined *puVar31;
  longlong lVar32;
  uint *puVar33;
  undefined8 *puVar34;
  undefined4 uVar35;
  uint local_res8;
  longlong local_a8;
  longlong local_90;
  undefined8 local_88;
  undefined4 local_80;
  
  uVar21 = DAT_1ad04ada0;
  lVar32 = (longlong)(int)DAT_1ad04ada0;
  DAT_1ad04b20c = DAT_1ad04b20c + 1;
  FUN_1400299c0();
  FUN_140127630();
  lVar20 = 0x100;
  piVar13 = &DAT_1a8e379e0;
  do {
    if (*piVar13 != 0) {
      piVar14 = piVar13 + 1;
      *piVar14 = *piVar14 + -1;
      if (*piVar14 < 0) {
        *piVar13 = 0;
      }
    }
    piVar13 = piVar13 + 0x14;
    lVar20 = lVar20 + -1;
  } while (lVar20 != 0);
  if (0 < (int)DAT_1ad04ada0) {
    piVar13 = &DAT_1a8e6bbfc;
    uVar24 = (ulonglong)DAT_1ad04ada0;
    do {
      lVar20 = (longlong)piVar13[-0xb871];
      if (piVar13[-0xb871] != -1) {
        lVar26 = lVar20 * 0x3834;
        iVar2 = (&DAT_151620c9c)[lVar20 * 0xe0d];
        if (iVar2 != -1) {
          iVar17 = *piVar13;
          if (iVar17 == -1) {
            iVar17 = 0;
            piVar14 = &DAT_1a8e379e8;
            do {
              if ((piVar14[-2] != 0) && (*piVar14 == iVar2)) {
                *piVar13 = iVar17;
                goto LAB_140136541;
              }
              iVar17 = iVar17 + 1;
              piVar14 = piVar14 + 0x14;
            } while ((longlong)piVar14 < 0x1a8e3c9e8);
            iVar17 = FUN_140132e00();
            *piVar13 = iVar17;
LAB_140136541:
            if (iVar17 == -1) goto LAB_14013658b;
          }
          uVar4 = *(undefined4 *)(&DAT_151620c68 + lVar26);
          uVar5 = *(undefined4 *)(&DAT_151620c6c + lVar26);
          uVar6 = *(undefined4 *)(&DAT_151620c70 + lVar26);
          lVar15 = (longlong)iVar17;
          uVar3 = *(undefined8 *)(&DAT_151620c74 + lVar26);
          uVar7 = *(undefined8 *)(&DAT_151620c7c + lVar26);
          uVar35 = (&DAT_151620c90)[lVar20 * 0xe0d];
          lVar26 = lVar15 * 0x50;
          *(undefined4 *)(&DAT_1a8e379ec + lVar26) = (&DAT_151620c64)[lVar20 * 0xe0d];
          *(undefined4 *)(lVar26 + 0x1a8e379f0) = uVar4;
          *(undefined4 *)(lVar26 + 0x1a8e379f4) = uVar5;
          *(undefined4 *)(lVar26 + 0x1a8e379f8) = uVar6;
          (&DAT_1a8e379e0)[lVar15 * 0x14] = 1;
          *(undefined8 *)(&DAT_1a8e379fc + lVar15 * 0x50) = uVar3;
          *(undefined8 *)(lVar15 * 0x50 + 0x1a8e37a04) = uVar7;
          (&DAT_1a8e379e4)[lVar15 * 0x14] = 0xe10;
          (&DAT_1a8e379e8)[lVar15 * 0x14] = iVar2;
          (&DAT_1a8e37a2c)[lVar15 * 0x14] = uVar35;
        }
      }
LAB_14013658b:
      piVar13 = piVar13 + 0xb878;
      uVar24 = uVar24 - 1;
    } while (uVar24 != 0);
  }
  uVar9 = DAT_140279840;
  dVar8 = DAT_1402786e0;
  local_res8 = 0;
  if (0 < (int)uVar21) {
    local_90 = 0;
    do {
      iVar11 = DAT_183ebfccc;
      iVar17 = DAT_183ebfcc8;
      uVar24 = 0;
      lVar20 = local_90 * 0x2e1e0;
      iVar2 = (&DAT_1a8e3da3c)[local_90 * 0xb878];
      if (iVar2 < 1) {
        if ((&DAT_1a8e3da30)[local_90 * 0xb878] == DAT_183ebfcc8) {
          iVar2 = (&DAT_1a8e3da38)[local_90 * 0xb878];
          uVar24 = (ulonglong)iVar2;
          if (((iVar2 == -1) ||
              (lVar26 = (longlong)(int)(&DAT_151620cfc)[uVar24 * 0xe0d],
              (&DAT_151620cfc)[uVar24 * 0xe0d] == -1)) ||
             ((int)(&DAT_18329e344)[lVar26 * 0x1bfe] < 1)) {
            if (DAT_183ebfccc == 2) {
              *(undefined4 *)(&DAT_1a8e5d7cc + lVar20) = *(undefined4 *)(&DAT_1a8e5d7c0 + lVar20);
              *(undefined4 *)(&DAT_1a8e5d7d0 + lVar20) = *(undefined4 *)(&DAT_1a8e5d7c4 + lVar20);
              uVar35 = *(undefined4 *)(&DAT_1a8e5d7c8 + lVar20);
            }
            else {
              *(undefined8 *)(&DAT_1a8e5d7cc + lVar20) = 0;
              uVar35 = 0;
            }
          }
          else {
            uVar35 = (&DAT_18329e390)[lVar26 * 0x1bfe];
            *(undefined4 *)(&DAT_1a8e5d7cc + lVar20) = (&DAT_18329e388)[lVar26 * 0x1bfe];
            *(undefined4 *)(&DAT_1a8e5d7d0 + lVar20) = (&DAT_18329e38c)[lVar26 * 0x1bfe];
          }
          *(undefined4 *)(&DAT_1a8e5d7d4 + lVar20) = uVar35;
          _DAT_18539d404 = _DAT_1402b2658;
          DAT_18539d40d = DAT_183ebfd34;
          DAT_18539d3fc = 0xd;
          DAT_18539d400 = 0;
          DAT_18539d408 = 5;
          DAT_18539d409 = iVar17;
          FUN_140115d90(&DAT_183ebfccc,4);
          if (iVar11 == 1) {
            puVar23 = &DAT_151620ca8;
            lVar26 = 0x20;
            do {
              FUN_140115d90(puVar23,1);
              puVar23 = puVar23 + 0xe0d;
              lVar26 = lVar26 + -1;
            } while (lVar26 != 0);
LAB_140136a01:
            puVar23 = &DAT_183f7ae14;
            lVar26 = 3;
            puVar27 = &DAT_183ebfdb0;
            do {
              FUN_140115d90(puVar27,0x10);
              FUN_140115d90(puVar23,0x10);
              puVar27 = puVar27 + 0x16f1;
              puVar23 = puVar23 + 1;
              lVar26 = lVar26 + -1;
            } while (lVar26 != 0);
          }
          else if (iVar11 == 3) goto LAB_140136a01;
          lVar26 = 0;
          uVar21 = 0x18;
          iVar17 = 0;
          if ((int)DAT_18539d3fc < 0x10000) {
            uVar12 = DAT_183ebfcd4 & 0xffffff;
            do {
              (&DAT_18539d404)[(int)DAT_18539d3fc] =
                   (&DAT_18539d404)[(int)DAT_18539d3fc] &
                   ~(('\x01' << ((byte)uVar21 & 0x1f)) + -1 << ((byte)DAT_18539d400 & 0x1f));
              (&DAT_18539d404)[(int)DAT_18539d3fc] =
                   (&DAT_18539d404)[(int)DAT_18539d3fc] |
                   (char)uVar12 << ((byte)DAT_18539d400 & 0x1f);
              uVar29 = 8 - DAT_18539d400;
              if (uVar21 < uVar29) {
                DAT_18539d400 = DAT_18539d400 + uVar21;
                break;
              }
              if (uVar21 == uVar29) {
                DAT_18539d3fc = DAT_18539d3fc + 1;
                DAT_18539d400 = iVar17;
                break;
              }
              DAT_18539d3fc = DAT_18539d3fc + 1;
              uVar12 = uVar12 >> ((byte)uVar29 & 0x1f);
              uVar21 = uVar21 - uVar29;
              DAT_18539d400 = iVar17;
            } while (0 < (int)uVar21);
          }
          uVar21 = 0x10;
          if ((int)DAT_18539d3fc < 0x10000) {
            uVar12 = (uint)DAT_183f79f84;
            do {
              (&DAT_18539d404)[(int)DAT_18539d3fc] =
                   (&DAT_18539d404)[(int)DAT_18539d3fc] &
                   ~(('\x01' << ((byte)uVar21 & 0x1f)) + -1 << ((byte)DAT_18539d400 & 0x1f));
              (&DAT_18539d404)[(int)DAT_18539d3fc] =
                   (&DAT_18539d404)[(int)DAT_18539d3fc] |
                   (char)uVar12 << ((byte)DAT_18539d400 & 0x1f);
              uVar29 = 8 - DAT_18539d400;
              if (uVar21 < uVar29) {
                DAT_18539d400 = DAT_18539d400 + uVar21;
                break;
              }
              if (uVar21 == uVar29) {
                DAT_18539d3fc = DAT_18539d3fc + 1;
                DAT_18539d400 = iVar17;
                break;
              }
              DAT_18539d3fc = DAT_18539d3fc + 1;
              uVar12 = uVar12 >> ((byte)uVar29 & 0x1f);
              uVar21 = uVar21 - uVar29;
              DAT_18539d400 = iVar17;
            } while (0 < (int)uVar21);
          }
          uVar21 = 0x1e;
          if ((int)DAT_18539d3fc < 0x10000) {
            uVar12 = DAT_16b2a2ec0 & 0x3fffffff;
            do {
              (&DAT_18539d404)[(int)DAT_18539d3fc] =
                   (&DAT_18539d404)[(int)DAT_18539d3fc] &
                   ~(('\x01' << ((byte)uVar21 & 0x1f)) + -1 << ((byte)DAT_18539d400 & 0x1f));
              (&DAT_18539d404)[(int)DAT_18539d3fc] =
                   (&DAT_18539d404)[(int)DAT_18539d3fc] |
                   (char)uVar12 << ((byte)DAT_18539d400 & 0x1f);
              uVar29 = 8 - DAT_18539d400;
              if (uVar21 < uVar29) {
                DAT_18539d400 = DAT_18539d400 + uVar21;
                break;
              }
              if (uVar21 == uVar29) {
                DAT_18539d3fc = DAT_18539d3fc + 1;
                DAT_18539d400 = iVar17;
                break;
              }
              uVar21 = uVar21 - uVar29;
              DAT_18539d3fc = DAT_18539d3fc + 1;
              uVar12 = uVar12 >> ((byte)uVar29 & 0x1f);
              DAT_18539d400 = iVar17;
            } while (0 < (int)uVar21);
          }
          FUN_140115d90(&DAT_183ebfdb4,6);
          FUN_140115d90(0x183ec5978,6);
          FUN_140115d90(&DAT_183ecb53c,6);
          FUN_140115d90(&DAT_183ed1100,6);
          FUN_140115d90(&DAT_183ed6cc4,6);
          uVar21 = 8;
          if ((int)DAT_18539d3fc < 0x10000) {
            uVar28 = uVar24 & 0xff;
            do {
              (&DAT_18539d404)[(int)DAT_18539d3fc] =
                   (&DAT_18539d404)[(int)DAT_18539d3fc] &
                   ~(('\x01' << ((byte)uVar21 & 0x1f)) + -1 << ((byte)DAT_18539d400 & 0x1f));
              (&DAT_18539d404)[(int)DAT_18539d3fc] =
                   (&DAT_18539d404)[(int)DAT_18539d3fc] |
                   (char)uVar28 << ((byte)DAT_18539d400 & 0x1f);
              uVar12 = 8 - DAT_18539d400;
              if (uVar21 < uVar12) {
                DAT_18539d400 = DAT_18539d400 + uVar21;
                break;
              }
              if (uVar21 == uVar12) {
                DAT_18539d3fc = DAT_18539d3fc + 1;
                DAT_18539d400 = iVar17;
                break;
              }
              uVar21 = uVar21 - uVar12;
              DAT_18539d3fc = DAT_18539d3fc + 1;
              uVar28 = (ulonglong)((uint)uVar28 >> ((byte)uVar12 & 0x1f));
              DAT_18539d400 = iVar17;
            } while (0 < (int)uVar21);
          }
          lVar15 = uVar24 * 0x3834;
          piVar13 = &DAT_151620cfc + uVar24 * 0xe0d;
          FUN_140115d90(piVar13,10);
          local_88 = 0;
          local_80 = 0;
          if ((iVar2 != -1) && (*piVar13 != -1)) {
            *(undefined4 *)(&DAT_151620d88 + lVar15) = (&DAT_18329e3a0)[(longlong)*piVar13 * 0x1bfe]
            ;
            *(undefined4 *)(&DAT_151620d8c + lVar15) = (&DAT_18329e3a4)[(longlong)*piVar13 * 0x1bfe]
            ;
            local_88 = *(undefined8 *)(&DAT_18329e8ec + (longlong)*piVar13 * 0x6ff8);
            local_80 = *(undefined4 *)(&DAT_18329e8f4 + (longlong)*piVar13 * 0x6ff8);
          }
          lVar16 = (longlong)*piVar13;
          if (*piVar13 != -1) {
            lVar22 = lVar16 * 0x6ff8;
            uVar21 = DAT_18539d3fc;
            if ((int)DAT_18539d3fc < 0x10000) {
              if (0 < DAT_18539d400) {
                DAT_18539d3fc = DAT_18539d3fc + 1;
                DAT_18539d400 = 0;
              }
              *(undefined4 *)(&DAT_18539d404 + (int)DAT_18539d3fc) =
                   (&DAT_18329e3a0)[lVar16 * 0x1bfe];
              uVar21 = DAT_18539d3fc + 4;
              if ((int)uVar21 < 0x10000) {
                if (0 < DAT_18539d400) {
                  uVar21 = DAT_18539d3fc + 5;
                  DAT_18539d400 = 0;
                }
                DAT_18539d3fc = uVar21;
                *(undefined4 *)(&DAT_18539d404 + (int)uVar21) = (&DAT_18329e3a4)[lVar16 * 0x1bfe];
                uVar21 = DAT_18539d3fc + 4;
                if ((int)uVar21 < 0x10000) {
                  if (0 < DAT_18539d400) {
                    uVar21 = DAT_18539d3fc + 5;
                    DAT_18539d400 = 0;
                  }
                  DAT_18539d3fc = uVar21;
                  *(undefined4 *)(&DAT_18539d404 + (int)uVar21) = (&DAT_18329e400)[lVar16 * 0x1bfe];
                  uVar21 = DAT_18539d3fc + 4;
                  if ((int)uVar21 < 0x10000) {
                    if (0 < DAT_18539d400) {
                      uVar21 = DAT_18539d3fc + 5;
                      DAT_18539d400 = 0;
                    }
                    DAT_18539d3fc = uVar21;
                    *(undefined4 *)(&DAT_18539d404 + (int)uVar21) =
                         (&DAT_18329e404)[lVar16 * 0x1bfe];
                    uVar21 = DAT_18539d3fc + 4;
                    if ((int)uVar21 < 0x10000) {
                      if (0 < DAT_18539d400) {
                        uVar21 = DAT_18539d3fc + 5;
                        DAT_18539d400 = 0;
                      }
                      DAT_18539d3fc = uVar21;
                      *(undefined4 *)(&DAT_18539d404 + (int)uVar21) =
                           (&DAT_18329e3e0)[lVar16 * 0x1bfe];
                      DAT_18539d3fc = DAT_18539d3fc + 4;
                      uVar21 = DAT_18539d3fc;
                    }
                  }
                }
              }
            }
            DAT_18539d3fc = uVar21;
            FUN_140115d90(&DAT_18329e384 + lVar16 * 0x1bfe,1);
            FUN_140115d90(&DAT_18329e380 + lVar16 * 0x1bfe,8);
            FUN_140115d90(&DAT_1832a50e8 + lVar22,8);
            FUN_140115d90(&DAT_1832a50f0 + lVar22,7);
            FUN_140115d90(&DAT_1832a50f4 + lVar22,4);
            FUN_140115d90(&DAT_1832a50f8 + lVar22,4);
            FUN_140115d90(&DAT_1832a50e4 + lVar16 * 0x1bfe,8);
            FUN_140115d90(&DAT_1832a5058 + lVar16 * 0x1bfe,7);
            FUN_140115d90(&DAT_1832a5064 + lVar22,7);
            FUN_140115d90(&DAT_1832a506c + lVar22,7);
            FUN_140115d90(&DAT_1832a5074 + lVar22,7);
            FUN_140115d90(&DAT_1832a507c + lVar22,7);
            FUN_140115d90(&DAT_1832a5084 + lVar16 * 0x1bfe,7);
            FUN_140115d90(&DAT_1832a508c + lVar16 * 0x1bfe,7);
            FUN_140115d90(&DAT_18329e324 + lVar16 * 0x1bfe,8);
            FUN_140115d90(&DAT_18329e328 + lVar16 * 0x1bfe,8);
          }
          uVar21 = DAT_18539d3fc;
          if ((int)DAT_18539d3fc < 0x10000) {
            if (0 < DAT_18539d400) {
              DAT_18539d3fc = DAT_18539d3fc + 1;
              DAT_18539d400 = 0;
            }
            *(undefined4 *)(&DAT_18539d404 + (int)DAT_18539d3fc) = (undefined4)local_88;
            uVar21 = DAT_18539d3fc + 4;
            if ((int)uVar21 < 0x10000) {
              if (0 < DAT_18539d400) {
                uVar21 = DAT_18539d3fc + 5;
                DAT_18539d400 = 0;
              }
              DAT_18539d3fc = uVar21;
              *(undefined4 *)(&DAT_18539d404 + (int)uVar21) = local_88._4_4_;
              uVar21 = DAT_18539d3fc + 4;
              if ((int)uVar21 < 0x10000) {
                if (0 < DAT_18539d400) {
                  uVar21 = DAT_18539d3fc + 5;
                  DAT_18539d400 = 0;
                }
                DAT_18539d3fc = uVar21;
                *(undefined4 *)(&DAT_18539d404 + (int)uVar21) = local_80;
                DAT_18539d3fc = DAT_18539d3fc + 4;
                uVar21 = DAT_18539d3fc;
              }
            }
          }
          DAT_18539d3fc = uVar21;
          FUN_140115d90(&DAT_151620cf0 + uVar24 * 0xe0d,1);
          FUN_140115d90(&DAT_151620dc4 + uVar24 * 0xe0d,8);
          FUN_140115d90(&DAT_151620dc8 + lVar15,0x10);
          if ((&DAT_151620dc4)[uVar24 * 0xe0d] == 10) {
            iVar17 = *(int *)(&DAT_151620dc8 + lVar15);
            FUN_140115d90(&DAT_1760d202c + (longlong)iVar17 * 0x36c3,8);
            uVar21 = (&DAT_1760d202c)[(longlong)iVar17 * 0x36c3];
            if (0 < (int)uVar21) {
              uVar28 = (ulonglong)uVar21;
              puVar23 = &DAT_1760d2034 + (longlong)*(int *)(&DAT_151620dc8 + lVar15) * 0x36c3;
              do {
                FUN_140115d90(puVar23 + -1,8);
                FUN_140115d90(puVar23,0x18);
                FUN_140115d90(puVar23 + 1,4);
                puVar23 = puVar23 + 3;
                uVar28 = uVar28 - 1;
              } while (uVar28 != 0);
            }
          }
          uVar21 = DAT_18539d3fc;
          if ((int)DAT_18539d3fc < 0x10000) {
            if (0 < DAT_18539d400) {
              DAT_18539d3fc = DAT_18539d3fc + 1;
              DAT_18539d400 = 0;
            }
            *(undefined4 *)(&DAT_18539d404 + (int)DAT_18539d3fc) = (&DAT_151620cac)[uVar24 * 0xe0d];
            uVar21 = DAT_18539d3fc + 4;
            if ((int)uVar21 < 0x10000) {
              if (0 < DAT_18539d400) {
                uVar21 = DAT_18539d3fc + 5;
                DAT_18539d400 = 0;
              }
              DAT_18539d3fc = uVar21;
              *(undefined4 *)(&DAT_18539d404 + (int)uVar21) = (&DAT_151620cb0)[uVar24 * 0xe0d];
              uVar21 = DAT_18539d3fc + 4;
              if ((int)uVar21 < 0x10000) {
                if (0 < DAT_18539d400) {
                  uVar21 = DAT_18539d3fc + 5;
                  DAT_18539d400 = 0;
                }
                DAT_18539d3fc = uVar21;
                *(undefined4 *)(&DAT_18539d404 + (int)uVar21) = (&DAT_151620cb4)[uVar24 * 0xe0d];
                uVar21 = DAT_18539d3fc + 4;
                if ((int)uVar21 < 0x10000) {
                  if (0 < DAT_18539d400) {
                    uVar21 = DAT_18539d3fc + 5;
                    DAT_18539d400 = 0;
                  }
                  DAT_18539d3fc = uVar21;
                  *(undefined4 *)(&DAT_18539d404 + (int)uVar21) = (&DAT_151620cb8)[uVar24 * 0xe0d];
                  uVar21 = DAT_18539d3fc + 4;
                  if ((int)uVar21 < 0x10000) {
                    if (0 < DAT_18539d400) {
                      uVar21 = DAT_18539d3fc + 5;
                      DAT_18539d400 = 0;
                    }
                    DAT_18539d3fc = uVar21;
                    *(undefined4 *)(&DAT_18539d404 + (int)uVar21) = (&DAT_151620cbc)[uVar24 * 0xe0d]
                    ;
                    DAT_18539d3fc = DAT_18539d3fc + 4;
                    uVar21 = DAT_18539d3fc;
                  }
                }
              }
            }
          }
          DAT_18539d3fc = uVar21;
          FUN_140115d90(&DAT_151620cf8 + uVar24 * 0xe0d,0x10);
          FUN_140115d90((longlong)&DAT_151620e14 + lVar15,8);
          FUN_140115d90(&DAT_151622328 + uVar24 * 0xe0d,10);
          FUN_140115d90(&DAT_15162232c + lVar15,6);
          FUN_140115d90(&DAT_151622330 + lVar15,8);
          lVar16 = 7;
          puVar33 = &DAT_151622334 + uVar24 * 0xe0d;
          do {
            FUN_140115d90((longlong)&DAT_151622334 + lVar26 + lVar15,4);
            if (0 < (int)*puVar33) {
              lVar22 = (longlong)&DAT_151622338 + lVar26 + lVar15;
              uVar28 = (ulonglong)*puVar33;
              do {
                FUN_140115d90(lVar22,0x10);
                lVar22 = lVar22 + 4;
                uVar28 = uVar28 - 1;
              } while (uVar28 != 0);
            }
            lVar26 = lVar26 + 0x24;
            puVar33 = puVar33 + 9;
            lVar16 = lVar16 + -1;
          } while (lVar16 != 0);
          FUN_140115d90(&DAT_151622774 + lVar15,8);
          uVar21 = *(uint *)(&DAT_151622774 + lVar15);
          if (0 < (int)uVar21) {
            lVar26 = 0;
            uVar28 = (ulonglong)uVar21;
            iVar17 = DAT_18539d400;
            uVar21 = DAT_18539d3fc;
            do {
              lVar16 = lVar15 + lVar26 * 0x48;
              if ((int)uVar21 < 0x10000) {
                if (0 < iVar17) {
                  uVar21 = uVar21 + 1;
                  DAT_18539d400 = 0;
                  DAT_18539d3fc = uVar21;
                }
                *(undefined4 *)(&DAT_18539d404 + (int)uVar21) =
                     *(undefined4 *)(&DAT_151622778 + lVar16);
                uVar21 = DAT_18539d3fc + 4;
                iVar17 = DAT_18539d400;
                DAT_18539d3fc = uVar21;
              }
              lVar22 = -1;
              do {
                lVar22 = lVar22 + 1;
              } while ((&DAT_15162277c + lVar16)[lVar22] != '\0');
              uVar29 = (uint)lVar22 & 0x3f;
              uVar30 = 6;
              uVar12 = uVar29;
              if ((int)uVar21 < 0x10000) {
                do {
                  (&DAT_18539d404)[(int)uVar21] =
                       (&DAT_18539d404)[(int)uVar21] &
                       ~(('\x01' << ((byte)uVar30 & 0x1f)) + -1 << ((byte)iVar17 & 0x1f));
                  (&DAT_18539d404)[(int)DAT_18539d3fc] =
                       (&DAT_18539d404)[(int)DAT_18539d3fc] |
                       (char)uVar12 << ((byte)DAT_18539d400 & 0x1f);
                  uVar18 = 8 - DAT_18539d400;
                  if (uVar30 < uVar18) {
                    DAT_18539d400 = DAT_18539d400 + uVar30;
                    break;
                  }
                  DAT_18539d400 = 0;
                  if (uVar30 == uVar18) {
                    DAT_18539d400 = 0;
                    DAT_18539d3fc = DAT_18539d3fc + 1;
                    break;
                  }
                  uVar21 = DAT_18539d3fc + 1;
                  uVar30 = uVar30 - uVar18;
                  iVar17 = 0;
                  uVar12 = uVar12 >> ((byte)uVar18 & 0x1f);
                  DAT_18539d3fc = uVar21;
                } while (0 < (int)uVar30);
                iVar17 = DAT_18539d400;
                uVar21 = DAT_18539d3fc;
                if ((int)DAT_18539d3fc < 0x10000) {
                  if (0 < DAT_18539d400) {
                    DAT_18539d3fc = DAT_18539d3fc + 1;
                    DAT_18539d400 = 0;
                  }
                  FUN_1401fc920(&DAT_18539d404 + (int)DAT_18539d3fc,&DAT_15162277c + lVar16,uVar29);
                  uVar21 = DAT_18539d3fc + uVar29;
                  iVar17 = DAT_18539d400;
                  DAT_18539d3fc = uVar21;
                  if ((int)uVar21 < 0x10000) {
                    if (0 < DAT_18539d400) {
                      uVar21 = uVar21 + 1;
                      DAT_18539d400 = 0;
                    }
                    DAT_18539d3fc = uVar21;
                    *(undefined4 *)(&DAT_18539d404 + (int)uVar21) =
                         *(undefined4 *)(&DAT_1516227bc + lVar16);
                    uVar21 = DAT_18539d3fc + 4;
                    iVar17 = DAT_18539d400;
                    DAT_18539d3fc = uVar21;
                  }
                }
              }
              lVar26 = lVar26 + 1;
              uVar28 = uVar28 - 1;
            } while (uVar28 != 0);
          }
          FUN_140115d90(&DAT_151620cd4 + uVar24 * 0xe0d,8);
          uVar24 = (ulonglong)local_res8;
          FUN_140110d00(uVar24,iVar2);
          FUN_14002db60(local_res8,(&DAT_1a8e3da38)[local_90 * 0xb878]);
          lVar26 = uVar24 * 0x2e1e0;
          piVar13 = (int *)(&DAT_1a8e3da80 + lVar20);
          puVar31 = &DAT_1a8e3da80 + lVar26;
          local_a8 = 8;
          do {
            FUN_140115d90(puVar31 + -4,1);
            if (piVar13[-1] != 0) {
              FUN_140115d90(puVar31,8);
              FUN_140115d90(puVar31 + 4,8);
              FUN_140115d90(puVar31 + 8,8);
              iVar2 = *piVar13;
              lVar15 = (longlong)iVar2 * 0x20214;
              uVar12 = *(uint *)(&DAT_187bde86c + lVar15) & 0x3f;
              *(uint *)(&DAT_187bde86c + lVar15) = uVar12;
              uVar21 = uVar12 - 4 & 0x3f;
              if (uVar21 != uVar12) {
                do {
                  uVar25 = (ulonglong)uVar21;
                  uVar29 = 6;
                  uVar28 = uVar25;
                  if ((int)DAT_18539d3fc < 0x10000) {
                    do {
                      (&DAT_18539d404)[(int)DAT_18539d3fc] =
                           (&DAT_18539d404)[(int)DAT_18539d3fc] &
                           ~(('\x01' << ((byte)uVar29 & 0x1f)) + -1 << ((byte)DAT_18539d400 & 0x1f))
                      ;
                      (&DAT_18539d404)[(int)DAT_18539d3fc] =
                           (&DAT_18539d404)[(int)DAT_18539d3fc] |
                           (char)uVar28 << ((byte)DAT_18539d400 & 0x1f);
                      uVar30 = 8 - DAT_18539d400;
                      if (uVar29 < uVar30) {
                        DAT_18539d400 = DAT_18539d400 + uVar29;
                        break;
                      }
                      DAT_18539d400 = 0;
                      if (uVar29 == uVar30) {
                        DAT_18539d3fc = DAT_18539d3fc + 1;
                        DAT_18539d400 = 0;
                        break;
                      }
                      uVar29 = uVar29 - uVar30;
                      DAT_18539d3fc = DAT_18539d3fc + 1;
                      uVar28 = (ulonglong)((uint)uVar28 >> ((byte)uVar30 & 0x1f));
                    } while (0 < (int)uVar29);
                  }
                  lVar16 = (longlong)iVar2 * 0x8085 + uVar25;
                  FUN_140115d90(&DAT_187bde974 + lVar16 * 4,0xb);
                  FUN_140115d90(&DAT_187bde874 + lVar16 * 4,2);
                  iVar17 = *(int *)(&DAT_187bde974 + lVar16 * 4);
                  if ((int)DAT_18539d3fc < 0x10000) {
                    if (0 < DAT_18539d400) {
                      DAT_18539d3fc = DAT_18539d3fc + 1;
                      DAT_18539d400 = 0;
                    }
                    FUN_1401fc920(&DAT_18539d404 + (int)DAT_18539d3fc,
                                  &DAT_187bdea74 + uVar25 * 0x800 + lVar15,(longlong)iVar17);
                    DAT_18539d3fc = DAT_18539d3fc + iVar17;
                  }
                  uVar21 = uVar21 + 1 & 0x3f;
                } while (uVar21 != uVar12);
              }
            }
            uVar21 = DAT_189c1dc64;
            puVar31 = puVar31 + 0x28;
            piVar13 = piVar13 + 10;
            local_a8 = local_a8 + -1;
          } while (local_a8 != 0);
          uVar12 = 0x10;
          if ((int)DAT_18539d3fc < 0x10000) {
            uVar29 = DAT_189c1dc64 & 0xffff;
            do {
              (&DAT_18539d404)[(int)DAT_18539d3fc] =
                   (&DAT_18539d404)[(int)DAT_18539d3fc] &
                   ~(('\x01' << ((byte)uVar12 & 0x1f)) + -1 << ((byte)DAT_18539d400 & 0x1f));
              (&DAT_18539d404)[(int)DAT_18539d3fc] =
                   (&DAT_18539d404)[(int)DAT_18539d3fc] |
                   (char)uVar29 << ((byte)DAT_18539d400 & 0x1f);
              uVar30 = 8 - DAT_18539d400;
              if (uVar12 < uVar30) {
                DAT_18539d400 = DAT_18539d400 + uVar12;
                break;
              }
              DAT_18539d400 = 0;
              if (uVar12 == uVar30) {
                DAT_18539d3fc = DAT_18539d3fc + 1;
                DAT_18539d400 = 0;
                break;
              }
              DAT_18539d3fc = DAT_18539d3fc + 1;
              uVar29 = uVar29 >> ((byte)uVar30 & 0x1f);
              uVar12 = uVar12 - uVar30;
            } while (0 < (int)uVar12);
          }
          iVar2 = DAT_18539d400;
          uVar30 = DAT_18539d3fc;
          uVar12 = (&DAT_1a8e3da6c)[local_90 * 0xb878];
          uVar29 = (uVar21 - uVar12) + 0x10000;
          if ((int)uVar12 <= (int)uVar21) {
            uVar29 = uVar21 - uVar12;
          }
          if (0x3f < (int)uVar29) {
            uVar29 = 0x3f;
          }
          uVar28 = (ulonglong)uVar29;
          uVar21 = 6;
          if (DAT_1ad04ada0 == 0) {
            uVar28 = 0;
          }
          uVar29 = (uint)uVar28;
          if ((int)DAT_18539d3fc < 0x10000) {
            uVar18 = uVar29 & 0x3f;
            do {
              (&DAT_18539d404)[(int)DAT_18539d3fc] =
                   (&DAT_18539d404)[(int)DAT_18539d3fc] &
                   ~(('\x01' << ((byte)uVar21 & 0x1f)) + -1 << ((byte)DAT_18539d400 & 0x1f));
              (&DAT_18539d404)[(int)DAT_18539d3fc] =
                   (&DAT_18539d404)[(int)DAT_18539d3fc] |
                   (char)uVar18 << ((byte)DAT_18539d400 & 0x1f);
              uVar19 = 8 - DAT_18539d400;
              if (uVar21 < uVar19) {
                DAT_18539d400 = DAT_18539d400 + uVar21;
                break;
              }
              DAT_18539d400 = 0;
              if (uVar21 == uVar19) {
                DAT_18539d3fc = DAT_18539d3fc + 1;
                DAT_18539d400 = 0;
                break;
              }
              uVar21 = uVar21 - uVar19;
              DAT_18539d3fc = DAT_18539d3fc + 1;
              uVar18 = uVar18 >> ((byte)uVar19 & 0x1f);
            } while (0 < (int)uVar21);
          }
          FUN_140115d90(&DAT_1a8e3da6c + uVar24 * 0xb878);
          uVar21 = 0;
          if (0 < (int)uVar29) {
            do {
              FUN_14010eff0(uVar12);
              uVar12 = uVar12 + 1 & 0xffff;
              uVar28 = uVar28 - 1;
              uVar21 = uVar29;
            } while (uVar28 != 0);
          }
          iVar17 = DAT_18539d400;
          DAT_1ad04adcc = DAT_18539d3fc;
          uVar29 = 6;
          (&DAT_1a8e3da6c)[local_90 * 0xb878] = uVar12;
          if ((int)uVar30 < 0x10000) {
            uVar21 = uVar21 & 0x3f;
            DAT_18539d400 = iVar2;
            do {
              DAT_18539d3fc = uVar30;
              (&DAT_18539d404)[(int)uVar30] =
                   (&DAT_18539d404)[(int)uVar30] &
                   ~(('\x01' << ((byte)uVar29 & 0x1f)) + -1 << ((byte)DAT_18539d400 & 0x1f));
              (&DAT_18539d404)[(int)DAT_18539d3fc] =
                   (&DAT_18539d404)[(int)DAT_18539d3fc] |
                   (char)uVar21 << ((byte)DAT_18539d400 & 0x1f);
              uVar12 = 8 - DAT_18539d400;
              if ((uVar29 < uVar12) || (uVar29 == uVar12)) break;
              uVar29 = uVar29 - uVar12;
              uVar30 = DAT_18539d3fc + 1;
              uVar21 = uVar21 >> ((byte)uVar12 & 0x1f);
              DAT_18539d400 = 0;
            } while (0 < (int)uVar29);
          }
          _DAT_18539d3fc = CONCAT44(iVar17,DAT_1ad04adcc);
          if ((int)DAT_1ad04adcc < 0x10000) {
            if (0 < iVar17) {
              DAT_1ad04adcc = DAT_1ad04adcc + 1;
              _DAT_18539d3fc = (ulonglong)DAT_1ad04adcc;
            }
            *(undefined4 *)(&DAT_18539d404 + (int)DAT_1ad04adcc) =
                 *(undefined4 *)(&DAT_1a8e6bbf8 + lVar26);
            DAT_1ad04adcc = DAT_18539d3fc + 4;
            _DAT_18539d3fc = CONCAT44(DAT_18539d400,DAT_1ad04adcc);
            iVar17 = DAT_18539d400;
          }
          *(int *)(&DAT_1a8e6bbf8 + lVar20) = *(int *)(&DAT_1a8e6bbf8 + lVar20) + 1;
          if ((int)DAT_1ad04adcc < 0x10000) {
            if (0 < iVar17) {
              DAT_1ad04adcc = DAT_1ad04adcc + 1;
              _DAT_18539d3fc = (ulonglong)DAT_1ad04adcc;
            }
            *(undefined4 *)(&DAT_18539d404 + (int)DAT_1ad04adcc) =
                 *(undefined4 *)(&DAT_1a8e6bbf0 + lVar26);
            iVar2 = DAT_18539d3fc;
            DAT_1ad04adcc = DAT_18539d3fc + 4;
            _DAT_18539d3fc = CONCAT44(DAT_18539d400,DAT_1ad04adcc);
            if ((int)DAT_1ad04adcc < 0x10000) {
              if (0 < DAT_18539d400) {
                DAT_1ad04adcc = iVar2 + 5;
                _DAT_18539d3fc = (ulonglong)DAT_1ad04adcc;
              }
              *(undefined4 *)(&DAT_18539d404 + (int)DAT_1ad04adcc) =
                   *(undefined4 *)(&DAT_1a8e6bbf4 + lVar26);
              DAT_1ad04adcc = DAT_18539d3fc + 4;
              _DAT_18539d3fc = CONCAT44(DAT_18539d400,DAT_1ad04adcc);
            }
          }
          (&DAT_1a8e3da3c)[local_90 * 0xb878] = (&DAT_1a8e3da3c)[local_90 * 0xb878] + DAT_1ad04adcc;
          FUN_140130350((&DAT_1a8e3da20)[local_90 * 0xb878],(&DAT_1a8e3da24)[local_90 * 0x170f0],
                        (&DAT_1a8e3da28)[local_90 * 0x5c3c]);
        }
        else {
          _DAT_18539d404 = _DAT_1402b2658;
          _DAT_18539d3fc = 9;
          DAT_18539d408 = 6;
          DAT_18539d409 = DAT_183ebfcc8;
          FUN_140115d90(&DAT_183ebfaac,4);
          FUN_140115d90(&DAT_183ebfcb0,4);
          FUN_140115d90(&DAT_183ebfcc4,8);
          uVar10 = uRam0000000183ebfac8;
          uVar7 = _DAT_183ebfac0;
          uVar3 = uRam0000000183ebfab8;
          uVar21 = DAT_18539d3fc;
          if ((int)DAT_18539d3fc < 0x10000) {
            if (0 < DAT_18539d400) {
              uVar21 = DAT_18539d3fc + 1;
              _DAT_18539d3fc = (ulonglong)uVar21;
            }
            lVar20 = (longlong)(int)uVar21;
            *(undefined8 *)(&DAT_18539d404 + lVar20) = _DAT_183ebfab0;
            *(undefined8 *)((longlong)&DAT_18539d409 + lVar20 + 3) = uVar3;
            *(undefined8 *)(&DAT_18539d414 + lVar20) = uVar7;
            *(undefined8 *)((longlong)&DAT_18539d41a + lVar20 + 2) = uVar10;
            uVar21 = DAT_18539d3fc + 0x20;
            _DAT_18539d3fc = CONCAT44(DAT_18539d400,uVar21);
          }
          uVar29 = 0x10;
          uVar28 = _DAT_18539d3fc >> 0x20;
          uVar12 = (uint)(longlong)((double)(float)((uint)DAT_183ebfd54 & uVar9) * dVar8) & 0x7fff;
          if ((int)uVar21 < 0x10000) {
            uVar30 = uVar12 | 0x8000;
            if (0.0 <= DAT_183ebfd54) {
              uVar30 = uVar12;
            }
            do {
              (&DAT_18539d404)[(int)uVar21] =
                   (&DAT_18539d404)[(int)uVar21] &
                   ~(('\x01' << ((byte)uVar29 & 0x1f)) + -1 << ((byte)uVar28 & 0x1f));
              (&DAT_18539d404)[(int)DAT_18539d3fc] =
                   (&DAT_18539d404)[(int)DAT_18539d3fc] |
                   (char)uVar30 << ((byte)(_DAT_18539d3fc >> 0x20) & 0x1f);
              uVar12 = 8 - DAT_18539d400;
              if (uVar29 < uVar12) {
                uVar29 = DAT_18539d400 + uVar29;
                _DAT_18539d3fc = CONCAT44(uVar29,DAT_18539d3fc);
                uVar28 = (ulonglong)uVar29;
                uVar21 = DAT_18539d3fc;
                break;
              }
              if (uVar29 == uVar12) {
                uVar21 = DAT_18539d3fc + 1;
                _DAT_18539d3fc = (ulonglong)uVar21;
                uVar28 = 0;
                break;
              }
              uVar21 = DAT_18539d3fc + 1;
              uVar29 = uVar29 - uVar12;
              _DAT_18539d3fc = (ulonglong)uVar21;
              uVar28 = uVar24;
              uVar30 = uVar30 >> ((byte)uVar12 & 0x1f);
            } while (0 < (int)uVar29);
          }
          uVar29 = 0x10;
          uVar12 = (uint)(longlong)((double)(float)((uint)DAT_183ebfd58 & uVar9) * dVar8) & 0x7fff;
          if ((int)uVar21 < 0x10000) {
            uVar30 = uVar12 | 0x8000;
            if (0.0 <= DAT_183ebfd58) {
              uVar30 = uVar12;
            }
            do {
              (&DAT_18539d404)[(int)uVar21] =
                   (&DAT_18539d404)[(int)uVar21] &
                   ~(('\x01' << ((byte)uVar29 & 0x1f)) + -1 << ((byte)uVar28 & 0x1f));
              (&DAT_18539d404)[(int)DAT_18539d3fc] =
                   (&DAT_18539d404)[(int)DAT_18539d3fc] |
                   (char)uVar30 << ((byte)(_DAT_18539d3fc >> 0x20) & 0x1f);
              uVar12 = 8 - DAT_18539d400;
              if (uVar29 < uVar12) {
                _DAT_18539d3fc = CONCAT44(DAT_18539d400 + uVar29,DAT_18539d3fc);
                uVar21 = DAT_18539d3fc;
                break;
              }
              if (uVar29 == uVar12) {
                uVar21 = DAT_18539d3fc + 1;
                _DAT_18539d3fc = (ulonglong)uVar21;
                break;
              }
              uVar21 = DAT_18539d3fc + 1;
              uVar30 = uVar30 >> ((byte)uVar12 & 0x1f);
              uVar29 = uVar29 - uVar12;
              _DAT_18539d3fc = (ulonglong)uVar21;
              uVar28 = uVar24;
            } while (0 < (int)uVar29);
          }
          if (DAT_183ebfaac == 7) {
            FUN_140115d90(&DAT_183f7a604,8);
            uVar21 = DAT_18539d3fc;
          }
          uVar3 = (&DAT_1a8e3da28)[local_90 * 0x5c3c];
          uVar1 = (&DAT_1a8e3da24)[local_90 * 0x170f0];
          DAT_1ad04adcc = uVar21;
          (&DAT_1a8e3da3c)[local_90 * 0xb878] = iVar2 + uVar21;
          FUN_140130350((&DAT_1a8e3da20)[local_90 * 0xb878],uVar1,uVar3);
        }
      }
      local_res8 = local_res8 + 1;
      local_90 = local_90 + 1;
    } while (local_90 < lVar32);
  }
  local_res8 = 0;
  if (0 < (int)DAT_1ad04ada0) {
    puVar34 = &DAT_1a8e3da28;
    do {
      if ((*(int *)((longlong)puVar34 + 0xc) != 0) && (((DAT_183ebfd34 ^ local_res8) & 0x7f) == 0))
      {
        piVar13 = &DAT_1a8e379e0;
        _DAT_18539d404 = _DAT_1402b2658;
        puVar23 = &DAT_1a8e379e8;
        _DAT_18539d3fc = 5;
        lVar20 = 0x100;
        DAT_18539d408 = 9;
        do {
          FUN_140115d90(puVar23 + -2,1);
          if ((*piVar13 != 0) && ((int)DAT_18539d3fc < 0x10000)) {
            uVar21 = DAT_18539d3fc;
            if (0 < DAT_18539d400) {
              uVar21 = DAT_18539d3fc + 1;
              _DAT_18539d3fc = (ulonglong)uVar21;
            }
            *(undefined4 *)(&DAT_18539d404 + (int)uVar21) = *puVar23;
            iVar2 = DAT_18539d3fc;
            uVar21 = DAT_18539d3fc + 4;
            _DAT_18539d3fc = CONCAT44(DAT_18539d400,uVar21);
            if ((int)uVar21 < 0x10000) {
              if (0 < DAT_18539d400) {
                uVar21 = iVar2 + 5;
                _DAT_18539d3fc = (ulonglong)uVar21;
              }
              uVar35 = puVar23[2];
              uVar4 = puVar23[3];
              uVar5 = puVar23[4];
              lVar32 = (longlong)(int)uVar21;
              uVar3 = *(undefined8 *)(puVar23 + 5);
              uVar7 = *(undefined8 *)(puVar23 + 7);
              *(undefined4 *)(&DAT_18539d404 + lVar32) = puVar23[1];
              *(undefined4 *)(&DAT_18539d408 + lVar32) = uVar35;
              *(undefined4 *)((longlong)&DAT_18539d409 + lVar32 + 3) = uVar4;
              *(undefined4 *)((longlong)&DAT_18539d40d + lVar32 + 3) = uVar5;
              *(undefined8 *)(&DAT_18539d414 + lVar32) = uVar3;
              *(undefined8 *)((longlong)&DAT_18539d41a + lVar32 + 2) = uVar7;
              iVar2 = DAT_18539d3fc;
              uVar21 = DAT_18539d3fc + 0x20;
              _DAT_18539d3fc = CONCAT44(DAT_18539d400,uVar21);
              if ((int)uVar21 < 0x10000) {
                if (0 < DAT_18539d400) {
                  uVar21 = iVar2 + 0x21;
                  _DAT_18539d3fc = (ulonglong)uVar21;
                }
                *(undefined4 *)(&DAT_18539d404 + (int)uVar21) = puVar23[0x11];
                DAT_18539d3fc = DAT_18539d3fc + 4;
              }
            }
          }
          puVar23 = puVar23 + 0x14;
          piVar13 = piVar13 + 0x14;
          lVar20 = lVar20 + -1;
        } while (lVar20 != 0);
        FUN_140130350(*(undefined4 *)(puVar34 + -1),*(undefined2 *)((longlong)puVar34 + -4),*puVar34
                     );
      }
      local_res8 = local_res8 + 1;
      puVar34 = puVar34 + 0x5c3c;
    } while ((int)local_res8 < (int)DAT_1ad04ada0);
  }
  return;
}



===== FUN_1400f1950 @ 1400f1950 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400f1950(uint param_1)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  undefined1 auVar6 [16];
  int iVar7;
  undefined4 uVar8;
  int *piVar9;
  ulonglong uVar10;
  longlong lVar11;
  ulonglong uVar12;
  uint *puVar13;
  int iVar14;
  uint uVar15;
  undefined8 uVar16;
  longlong lVar17;
  int iVar18;
  longlong lVar19;
  int iVar20;
  ulonglong uVar21;
  longlong lVar22;
  uint uVar23;
  bool bVar24;
  float fVar25;
  undefined1 auStack_9b8 [32];
  int local_998;
  uint local_988;
  uint local_984;
  longlong local_980;
  int local_978;
  float local_970;
  float local_96c;
  float local_968;
  int local_960;
  int local_95c;
  undefined4 local_958;
  ulonglong local_950;
  undefined1 local_948 [16];
  undefined1 local_938 [16];
  float local_928;
  longlong local_920;
  undefined4 local_918;
  undefined4 local_914;
  undefined4 local_910;
  undefined4 local_908;
  undefined4 local_904;
  undefined4 local_900;
  longlong local_8f8;
  undefined1 local_8f0 [16];
  undefined1 local_8e0 [16];
  undefined4 local_8d0;
  char local_8c8 [2048];
  ulonglong local_c8;
  
  fVar5 = DAT_14027895c;
  fVar4 = DAT_140278728;
  fVar3 = DAT_1402783f4;
  fVar2 = DAT_1402783a0;
  fVar1 = DAT_140278254;
  local_c8 = DAT_1403020a0 ^ (ulonglong)auStack_9b8;
  uVar21 = (ulonglong)(int)param_1;
  lVar22 = uVar21 * 0x3834;
  uVar23 = *(uint *)((longlong)&DAT_151620e14 + lVar22 + 4);
  local_984 = (&DAT_151620cfc)[uVar21 * 0xe0d];
  uVar10 = (ulonglong)local_984;
  local_988 = param_1;
  local_920 = lVar22;
  if (uVar23 != *(uint *)((longlong)&DAT_151620e14 + lVar22)) {
    do {
      if (((int)uVar10 != -1) &&
         (lVar17 = (longlong)(int)uVar23 * 0x54 + lVar22, *(int *)(&DAT_151620e28 + lVar17) == 3)) {
        iVar7 = *(int *)(&DAT_151620e2c + lVar17);
        lVar19 = (longlong)(int)uVar10;
        if (iVar7 - 3U < 5) {
          lVar11 = lVar19 * 0x6ff8;
          *(undefined4 *)
           (&DAT_1832a5104 + (longlong)*(int *)(&DAT_1832a5100 + lVar11) * 0x30 + lVar11) = 2;
          *(undefined4 *)
           (&DAT_1832a512c + (longlong)*(int *)(&DAT_1832a5100 + lVar11) * 0x30 + lVar11) =
               *(undefined4 *)(&DAT_151620e30 + lVar17);
          *(uint *)(&DAT_1832a5130 + (longlong)*(int *)(&DAT_1832a5100 + lVar11) * 0x30 + lVar11) =
               iVar7 - 3U;
          *(undefined4 *)
           (&DAT_1832a5108 + (longlong)*(int *)(&DAT_1832a5100 + lVar11) * 0x30 + lVar11) = 0;
          *(uint *)(&DAT_1832a5100 + lVar11) = *(int *)(&DAT_1832a5100 + lVar11) + 1U & 7;
        }
        if (iVar7 == 1) {
          *(undefined4 *)
           (&DAT_1832a5104 +
           (longlong)*(int *)(&DAT_1832a5100 + lVar19 * 0x6ff8) * 0x30 + lVar19 * 0x6ff8) = 1;
LAB_1400f1b61:
          lVar11 = lVar19 * 0x6ff8;
          *(undefined4 *)
           (&DAT_1832a512c + (longlong)*(int *)(&DAT_1832a5100 + lVar11) * 0x30 + lVar11) =
               *(undefined4 *)(&DAT_151620e30 + lVar17);
          *(undefined4 *)
           (&DAT_1832a5130 + (longlong)*(int *)(&DAT_1832a5100 + lVar11) * 0x30 + lVar11) = 0;
        }
        else {
          if (iVar7 != 2) {
            if (iVar7 != 8) goto LAB_1400f1c9d;
            *(undefined4 *)
             (&DAT_1832a5104 +
             (longlong)*(int *)(&DAT_1832a5100 + lVar19 * 0x6ff8) * 0x30 + lVar19 * 0x6ff8) = 3;
            goto LAB_1400f1b61;
          }
          lVar11 = lVar19 * 0x6ff8;
          fVar25 = *(float *)(&DAT_18329e44c + lVar11);
          *(undefined4 *)
           (&DAT_1832a5104 + (longlong)*(int *)(&DAT_1832a5100 + lVar11) * 0x30 + lVar11) = 0;
          *(undefined4 *)
           (&DAT_1832a512c + (longlong)*(int *)(&DAT_1832a5100 + lVar11) * 0x30 + lVar11) =
               *(undefined4 *)(&DAT_151620e30 + lVar17);
          *(float *)(&DAT_1832a5130 + (longlong)*(int *)(&DAT_1832a5100 + lVar11) * 0x30 + lVar11) =
               fVar25 * fVar4;
        }
        lVar19 = lVar19 * 0x6ff8;
        *(undefined4 *)
         (&DAT_1832a5108 + (longlong)*(int *)(&DAT_1832a5100 + lVar19) * 0x30 + lVar19) = 0;
        *(uint *)(&DAT_1832a5100 + lVar19) = *(int *)(&DAT_1832a5100 + lVar19) + 1U & 7;
      }
LAB_1400f1c9d:
      local_8f8 = (longlong)(int)uVar23 * 0x54;
      local_980 = local_8f8 + lVar22;
      if (*(int *)(&DAT_151620e28 + local_980) == 2) {
        local_984 = *(uint *)((longlong)&DAT_151620cfc + lVar22);
        uVar10 = (ulonglong)local_984;
        if (local_984 != 0xffffffff) {
          lVar17 = (longlong)(int)local_984;
          iVar18 = -1;
          iVar7 = *(int *)(&DAT_151620e2c + local_980);
          lVar19 = (longlong)iVar7;
          if ((0 < (int)(&DAT_1832a4dd8)[lVar17 * 0x1bfe]) &&
             ((&DAT_1832a4ddc)[lVar17 * 0x1bfe] == iVar7)) {
            iVar18 = 0;
          }
          if (((int)(&DAT_1832a4e00)[lVar17 * 0x1bfe] < 1) ||
             ((&DAT_1832a4e04)[lVar17 * 0x1bfe] != iVar7)) {
            if (iVar18 != -1) goto LAB_1400f1d2d;
          }
          else {
            iVar18 = 1;
LAB_1400f1d2d:
            lVar11 = lVar19 * 0x1b80;
            iVar20 = (&DAT_182bbb194)[lVar19 * 0x6e0];
            if (iVar20 == 0x27) {
              FUN_1400c6d90();
              iVar20 = (&DAT_182bbb194)[lVar19 * 0x6e0];
            }
            if (iVar20 == 0x12) {
              iVar20 = *(int *)(&DAT_151620e30 + local_980);
              if (iVar20 == 0) {
                *(int *)(&DAT_182bbb420 + lVar11) = *(int *)(&DAT_182bbb420 + lVar11) + 1;
              }
              else if (iVar20 == 1) {
                *(int *)(&DAT_182bbb420 + lVar11) = *(int *)(&DAT_182bbb420 + lVar11) + -1;
              }
              else if (iVar20 + -2 <= *(int *)(&DAT_182bbb424 + lVar11)) {
                if ((&DAT_1832a4dd8)[((longlong)iVar18 ^ 1U) * 10 + lVar17 * 0x1bfe] == 0) {
                  iVar18 = FUN_140054130(0x12,&DAT_182bbb1dc + lVar19 * 0x6e0,
                                         &DAT_182bbb200 + lVar19 * 0x6e0,
                                         &DAT_182bbb224 + lVar19 * 0x6e0);
                  *(uint *)(&DAT_182bbb428 + (longlong)iVar18 * 0x1b80) =
                       *(uint *)(&DAT_182bbb428 + lVar11) >>
                       ((char)*(undefined4 *)(&DAT_182bbb420 + lVar11) * '\x03' & 0x1fU) & 7;
                  *(undefined4 *)(&DAT_182bbb424 + (longlong)iVar18 * 0x1b80) = 0;
                  FUN_1400e35d0(iVar18,0xffffffff,local_984);
                }
                else if (((&DAT_182bbb194)
                          [(longlong)
                           (int)(&DAT_1832a4ddc)[((longlong)iVar18 ^ 1U) * 10 + lVar17 * 0x1bfe] *
                           0x6e0] != 0x12) ||
                        (iVar18 = FUN_1400c3ab0((&DAT_1832a4ddc)
                                                [((longlong)iVar18 ^ 1U) * 10 + lVar17 * 0x1bfe],0,
                                                *(uint *)(&DAT_182bbb428 + lVar11) >>
                                                ((char)*(undefined4 *)(&DAT_182bbb420 + lVar11) *
                                                 '\x03' & 0x1fU) & 7), iVar18 == 0))
                goto LAB_1400f1eaf;
                FUN_1400ca740();
              }
LAB_1400f1eaf:
              iVar18 = *(int *)(&DAT_182bbb420 + lVar11);
              if (iVar18 < 0) {
                iVar18 = 0;
                *(undefined4 *)(&DAT_182bbb420 + lVar11) = 0;
              }
              if (*(int *)(&DAT_182bbb424 + lVar11) < iVar18) {
                *(int *)(&DAT_182bbb420 + lVar11) = *(int *)(&DAT_182bbb424 + lVar11);
              }
            }
            if (((((&DAT_182bbb194)[lVar19 * 0x6e0] - 0x19 & 0xfffffff7) == 0) &&
                ((&DAT_182bbb3fc)[lVar19 * 0x6e0] == 1)) && ((&DAT_182bbb2bc)[lVar19 * 0x6e0] == 0))
            {
              uVar23 = *(uint *)(&DAT_151620e30 + local_980);
              if (uVar23 < 10) {
                bVar24 = DAT_1ad04adc0 != 0;
                iVar18 = uVar23 + *(int *)(&DAT_182bbb2ec + lVar11) * 10;
                *(int *)(&DAT_182bbb2ec + lVar11) = iVar18;
                uVar8 = DAT_183ebfd34;
                if (bVar24) {
                  lVar17 = (longlong)(int)DAT_189c1dc64;
                  DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
                  (&DAT_1873de460)[lVar17 * 0x20] = 0x13;
                  (&DAT_1873de464)[lVar17 * 0x20] = uVar8;
                  (&DAT_1873de480)[lVar17 * 0x20] = (&DAT_183e9366c)[(int)uVar23];
                  (&DAT_1873de484)[lVar17 * 0x20] = iVar7;
                  *(undefined4 *)(&DAT_1873de490 + lVar17 * 0x80) = 0x3f800000;
                  *(undefined4 *)(&DAT_1873de494 + lVar17 * 0x80) = 0x3f800000;
                }
                *(int *)(&DAT_182bbb2e8 + lVar11) = iVar18;
                FUN_140051940(iVar7);
              }
            }
          }
          uVar10 = (ulonglong)local_984;
        }
      }
      lVar17 = local_980;
      lVar19 = 0;
      if ((*(int *)(&DAT_151620e28 + local_980) == 1) &&
         (iVar7 = FUN_1401307d0(uVar21 & 0xffffffff), iVar7 == 0)) {
        FUN_1401164b0(uVar21 & 0xffffffff);
      }
      if ((*(int *)(&DAT_151620e28 + lVar17) == 0) &&
         (iVar7 = *(int *)(&DAT_151620e2c + lVar17), local_95c = iVar7,
         *(int *)((longlong)&DAT_151620dc4 + lVar22) == iVar7)) {
        iVar18 = *(int *)(&DAT_151620e30 + lVar17);
        uVar12 = (ulonglong)iVar18;
        local_950 = CONCAT44(local_950._4_4_,iVar18);
        if (*(int *)((longlong)&DAT_151620cfc + lVar22) == -1) {
          if (iVar7 == 2) {
            if (DAT_183ebfccc == 1) {
              if (((599 < DAT_183ebfcd4) || (DAT_183ebfaac == 7)) &&
                 (*(int *)((longlong)&DAT_151620ce8 + lVar22) == 0)) {
                iVar20 = -(uint)(iVar18 != 1);
                lVar17 = -(ulonglong)(iVar18 != 1);
                if (iVar18 == 2) {
                  lVar17 = 1;
                  iVar20 = 1;
LAB_1400f20ce:
                  if (0 < (int)(&DAT_183ec561c)[lVar17 * 0x16f1]) {
                    piVar9 = (int *)(&DAT_183ec5620 + lVar17 * 0x5bc4);
                    do {
                      if (*piVar9 == *(int *)((longlong)&DAT_151620c9c + lVar22))
                      goto LAB_1400f2232;
                      lVar19 = lVar19 + 1;
                      piVar9 = piVar9 + 1;
                    } while (lVar19 < (int)(&DAT_183ec561c)[lVar17 * 0x16f1]);
                  }
                  *(int *)((longlong)&DAT_151620ce4 + lVar22) = iVar20;
                  *(undefined4 *)((longlong)&DAT_151620ce8 + lVar22) = 0x3c;
                  *(undefined4 *)((longlong)&DAT_151620ca8 + lVar22) = 0;
                }
                else {
                  if (iVar18 == 3) {
                    iVar20 = 2;
                    lVar17 = 2;
                    goto LAB_1400f20ce;
                  }
                  if (iVar18 == 1) goto LAB_1400f20ce;
                }
                if (iVar18 == 4) {
                  lVar17 = (longlong)(int)*(uint *)((longlong)&DAT_151620ce4 + lVar22);
                  if ((*(uint *)((longlong)&DAT_151620ce4 + lVar22) < 0x11) &&
                     ((&DAT_183ebfdc4)[lVar17 * 0x16f1] == (int)uVar21)) {
                    (&DAT_183ebfdc4)[lVar17 * 0x16f1] = 0xffffffff;
                    (&DAT_183ec561c)[lVar17 * 0x16f1] = 0;
                  }
                  FUN_14011af80(uVar21 & 0xffffffff);
                  *(undefined4 *)((longlong)&DAT_151620ce4 + lVar22) = 0x11;
                  *(undefined4 *)((longlong)&DAT_151620cf0 + lVar22) = 0;
                  FUN_140051f50(uVar21 & 0xffffffff);
                  *(undefined4 *)((longlong)&DAT_151620ce8 + lVar22) = 0x3c;
                  *(undefined4 *)((longlong)&DAT_151620ca8 + lVar22) = 0;
                  FUN_140051dc0(uVar21 & 0xffffffff);
                  goto LAB_1400f2232;
                }
              }
              if (iVar18 == 5) {
                if (*(int *)((longlong)&DAT_151620ca8 + lVar22) == 0) {
                  *(undefined4 *)((longlong)&DAT_151620ca8 + lVar22) = 1;
                  FUN_140051dc0(uVar21 & 0xffffffff);
                  goto LAB_1400f2232;
                }
                if (0xb4 < DAT_183ebfcd4) {
                  *(undefined4 *)((longlong)&DAT_151620ca8 + lVar22) = 0;
                }
              }
              FUN_140051dc0(uVar21 & 0xffffffff);
            }
          }
          else if ((iVar7 == 1) && (*(int *)((longlong)&DAT_151620cf8 + lVar22) == 0)) {
            if (iVar18 == 1) {
              FUN_140138430(uVar21 & 0xffffffff);
            }
            else if (iVar18 != 2) goto LAB_1400f2232;
            FUN_1401166b0(uVar21 & 0xffffffff);
          }
        }
LAB_1400f2232:
        uVar23 = *(uint *)((longlong)&DAT_151620cfc + lVar22);
        if (uVar23 != 0xffffffff) {
          local_984 = uVar23;
          if (DAT_183ebfaac == 4) {
            if (iVar7 - 0x14U < 7) {
              FUN_1400ef0d0(uVar21 & 0xffffffff,iVar7,iVar18);
            }
          }
          else if (iVar7 - 0xeU < 6) {
            FUN_1400ee780(uVar21 & 0xffffffff);
          }
          if (iVar7 == 9) {
            if (iVar18 == 1) {
              *(undefined4 *)((longlong)&DAT_151620dc4 + lVar22) = 10;
            }
            else if (iVar18 == 2) {
              *(undefined4 *)((longlong)&DAT_151620dc4 + lVar22) = 0xb;
            }
          }
          else if (iVar7 == 10) {
            if ((0 < iVar18) &&
               (lVar17 = (longlong)*(int *)(&DAT_151620dc8 + lVar22),
               iVar18 < (&DAT_1760d202c)[lVar17 * 0x36c3] + 1)) {
              if ((&DAT_1760c5638)[lVar17 * 0x36c3] == 5) {
                lVar19 = (longlong)*(int *)((longlong)&DAT_151620cfc + lVar22);
                if (*(int *)((longlong)&DAT_151620cfc + lVar22) != -1) {
                  iVar7 = *(int *)((longlong)&DAT_151620cac + lVar22);
                  iVar20 = *(int *)(&DAT_1760d2028 + (lVar17 * 0x1241 + uVar12) * 0xc);
                  if (iVar20 <= iVar7) {
                    if (iVar18 < 4) {
                      if (iVar18 == 1) {
                        local_960 = 3;
                      }
                      else {
                        local_960 = (iVar18 == 2) + 7;
                      }
                      if (*(int *)((longlong)&DAT_151624420 + lVar22 + 4) != local_960) {
                        (&DAT_18399dae0)[lVar19] = (&DAT_18399dae0)[lVar19] + 1;
                        iVar7 = iVar7 - iVar20;
                        *(int *)((longlong)&DAT_151624420 + lVar22 + 4) = local_960;
                        *(int *)((longlong)&DAT_151620cac + lVar22) = iVar7;
                        (&DAT_1832a52a4)[lVar19 * 0x1bfe] = local_960;
                      }
                    }
                    if (iVar18 - 4U < 2) {
                      if (iVar18 == 4) {
                        local_960 = 1;
                      }
                      else if (iVar18 == 5) {
                        local_960 = 2;
                      }
                      if (*(int *)((longlong)&DAT_151624434 + lVar22) != local_960) {
                        (&DAT_18399dae0)[lVar19] = (&DAT_18399dae0)[lVar19] + 1;
                        *(int *)((longlong)&DAT_151624434 + lVar22) = local_960;
                        *(int *)((longlong)&DAT_151620cac + lVar22) = iVar7 - iVar20;
                        *(int *)(&DAT_1832a52b0 + lVar19 * 0x6ff8) = local_960;
                      }
                    }
                    FUN_140051dc0(uVar21 & 0xffffffff);
                    if (DAT_183ebfaac == 3) {
                      FUN_140051f50(uVar21 & 0xffffffff);
                    }
                  }
                }
                local_978 = 0;
              }
              else if ((&DAT_1760c5638)[lVar17 * 0x36c3] == 3) {
                FUN_1400efd20(uVar21 & 0xffffffff,iVar18);
                local_978 = 1;
              }
              iVar7 = *(int *)(&DAT_151620dc8 + lVar22);
              if ((&DAT_1760c5638)[(longlong)iVar7 * 0x36c3] == 8) {
                if (*(int *)((longlong)&DAT_151620cc8 + lVar22) < 0x14) {
                  lVar17 = (longlong)iVar7 * 0x1241 + uVar12;
                  iVar18 = *(int *)(&DAT_1760d2028 + lVar17 * 0xc);
                  if (iVar18 <= *(int *)((longlong)&DAT_151620cac + lVar22)) {
                    iVar7 = *(int *)((longlong)&DAT_151620cfc + lVar22);
                    lVar19 = (longlong)iVar7;
                    local_8d0 = 0x3f800000;
                    local_918 = (&DAT_18329e388)[lVar19 * 0x1bfe];
                    local_914 = (&DAT_18329e38c)[lVar19 * 0x1bfe];
                    local_910 = (&DAT_18329e390)[lVar19 * 0x1bfe];
                    local_8f0 = _DAT_140278d30;
                    local_8e0 = _DAT_140278d30;
                    uVar8 = FUN_140054130(*(undefined4 *)(&DAT_1760d2024 + lVar17 * 0xc),&local_918,
                                          0,local_8f0);
                    iVar20 = 2;
                    do {
                      iVar14 = FUN_1400e35d0(uVar8,0xffffffff,iVar7);
                      if (iVar14 != 0) break;
                      iVar20 = iVar20 + 1;
                    } while (iVar20 < 7);
                    *(int *)((longlong)&DAT_151620cac + lVar22) =
                         *(int *)((longlong)&DAT_151620cac + lVar22) - iVar18;
                    *(int *)((longlong)&DAT_151620cc8 + lVar22) =
                         *(int *)((longlong)&DAT_151620cc8 + lVar22) + 1;
                    FUN_140051dc0(uVar21 & 0xffffffff);
                    iVar7 = *(int *)(&DAT_151620dc8 + lVar22);
                    uVar12 = local_950 & 0xffffffff;
                  }
                }
                local_978 = 0;
              }
              iVar18 = 0;
              if ((&DAT_1760c5638)[(longlong)iVar7 * 0x36c3] == 9) {
                if (*(int *)((longlong)&DAT_151620cc8 + lVar22) < 10) {
                  iVar20 = *(int *)((longlong)&DAT_151620cfc + lVar22);
                  lVar17 = (longlong)iVar20;
                  if (*(int *)(&DAT_1760d2028 +
                              ((longlong)iVar7 * 0x1241 + (longlong)(int)uVar12) * 0xc) <=
                      *(int *)((longlong)&DAT_151620cac + lVar22)) {
                    *(int *)((longlong)&DAT_151620cac + lVar22) =
                         *(int *)((longlong)&DAT_151620cac + lVar22) -
                         *(int *)(&DAT_1760d2028 +
                                 ((longlong)iVar7 * 0x1241 + (longlong)(int)uVar12) * 0xc);
                    *(int *)((longlong)&DAT_151620cc8 + lVar22) =
                         *(int *)((longlong)&DAT_151620cc8 + lVar22) + 1;
                    if (((int)uVar12 == 1) && (iVar20 != -1)) {
                      local_8d0 = 0x3f800000;
                      local_908 = (&DAT_18329e388)[lVar17 * 0x1bfe];
                      local_904 = (&DAT_18329e38c)[lVar17 * 0x1bfe];
                      local_900 = (&DAT_18329e390)[lVar17 * 0x1bfe];
                      local_8f0 = _DAT_140278d30;
                      local_8e0 = _DAT_140278d30;
                      uVar8 = FUN_140054130(0x1e,&local_908,0,local_8f0);
                      do {
                        iVar7 = FUN_1400e35d0(uVar8,0xffffffff,iVar20);
                        lVar22 = local_920;
                        if (iVar7 != 0) break;
                        iVar18 = iVar18 + 1;
                      } while (iVar18 < 7);
                    }
                  }
                }
                local_978 = 0;
              }
            }
            if ((int)uVar12 == 0x10) {
              *(undefined4 *)((longlong)&DAT_151620dc4 + lVar22) = 9;
            }
            iVar7 = local_95c;
            if (local_978 == 1) {
              *(undefined4 *)((longlong)&DAT_151620dc4 + lVar22) = 9;
            }
          }
          else if (iVar7 == 0xb) {
            if (iVar18 == 1) {
              iVar18 = *(int *)((longlong)&DAT_151620cfc + lVar22);
              if (((iVar18 != -1) && (0 < (int)(&DAT_1832a4dd8)[(longlong)iVar18 * 0x1bfe])) &&
                 (lVar17 = (longlong)(int)(&DAT_1832a4ddc)[(longlong)iVar18 * 0x1bfe],
                 (&DAT_182bbb194)[lVar17 * 0x6e0] == 0x1b)) {
                lVar19 = (longlong)(int)(&DAT_182bbb400)[lVar17 * 0x6e0];
                if ((((uint)(&DAT_182bbb400)[lVar17 * 0x6e0] < 0x200) &&
                    ((&DAT_15f2d9200)[lVar19 * 0x145a] != 0)) &&
                   (0 < (int)(&DAT_15f2d920c)[lVar19 * 0x145a])) {
                  *(int *)((longlong)&DAT_151620cac + lVar22) =
                       (int)((float)(int)(&DAT_192e9a6b4)
                                         [(longlong)(int)(&DAT_15f2d9204)[lVar19 * 0x145a] * 0x6170]
                             * fVar2 + (float)*(int *)((longlong)&DAT_151620cac + lVar22));
                }
                (&DAT_182bbb19c)[lVar17 * 0x6e0] = 0;
                (&DAT_15f2d921c)[lVar19 * 0x145a] = 0;
              }
            }
            else if (iVar18 == 0x10) {
              *(undefined4 *)((longlong)&DAT_151620dc4 + lVar22) = 9;
            }
          }
        }
        lVar17 = (longlong)*(int *)((longlong)&DAT_151620ce4 + lVar22);
        if (*(int *)((longlong)&DAT_151620ce4 + lVar22) != -1) {
          uVar23 = *(uint *)((longlong)&DAT_151620cfc + lVar22);
          uVar10 = (ulonglong)(int)uVar23;
          if (uVar23 != 0xffffffff) {
            iVar18 = (int)uVar12;
            local_984 = uVar23;
            if (iVar7 == 3) {
              if (iVar18 == 1) {
                *(undefined4 *)((longlong)&DAT_151620dc4 + lVar22) = 4;
              }
              else if (iVar18 == 2) {
                *(undefined4 *)((longlong)&DAT_151620dc4 + lVar22) = 5;
              }
              else {
                if (iVar18 != 3) {
                  uVar21 = (ulonglong)local_988;
                  lVar17 = local_980;
                  if (iVar18 == 4) {
                    *(undefined4 *)((longlong)&DAT_151620dc4 + lVar22) = 0xc;
                  }
                  else if (iVar18 == 5) {
                    *(undefined4 *)((longlong)&DAT_151620dc4 + lVar22) = 8;
                  }
                  goto LAB_1400f2804;
                }
                *(undefined4 *)((longlong)&DAT_151620dc4 + lVar22) = 7;
              }
              goto LAB_1400f27f3;
            }
            if (iVar7 == 4) {
              uVar21 = 0xb;
              if (iVar18 != 1) {
                uVar21 = 0xffffffff;
              }
              if (iVar18 == 2) {
                uVar21 = 7;
LAB_1400f2a2b:
                if ((*(int *)((longlong)&DAT_151620cc8 + lVar22) < 10) &&
                   (-1 < *(int *)((longlong)&DAT_151620cac + lVar22))) {
                  lVar19 = (longlong)(int)uVar21 * 0x13d0;
                  if ((*(int *)(&DAT_182a7e184 + lVar19) <=
                       *(int *)((longlong)&DAT_151620cac + lVar22)) ||
                     (*(int *)(&DAT_182a7e184 + lVar19) == 0)) {
                    local_928 = 1.0;
                    local_970 = (float)(&DAT_18329e388)[uVar10 * 0x1bfe];
                    local_96c = (float)(&DAT_18329e38c)[uVar10 * 0x1bfe];
                    local_968 = (float)(&DAT_18329e390)[uVar10 * 0x1bfe];
                    local_948 = _DAT_140278d30;
                    local_938 = _DAT_140278d30;
                    uVar8 = FUN_140054130(uVar21,&local_970,0,local_948);
                    iVar7 = 2;
                    do {
                      iVar18 = FUN_1400e35d0(uVar8);
                      if (iVar18 != 0) break;
                      iVar7 = iVar7 + 1;
                    } while (iVar7 < 7);
                    uVar12 = local_950 & 0xffffffff;
                    *(int *)((longlong)&DAT_151620cac + lVar22) =
                         *(int *)((longlong)&DAT_151620cac + lVar22) -
                         *(int *)(&DAT_182a7e184 + lVar19);
                    if (DAT_183ebfaac == 3) {
                      FUN_140051f50(local_988);
                    }
                    *(int *)((longlong)&DAT_151620cc8 + lVar22) =
                         *(int *)((longlong)&DAT_151620cc8 + lVar22) + 1;
                    iVar7 = local_95c;
                  }
                }
              }
              else {
                if (iVar18 == 3) {
                  uVar21 = 1;
                  goto LAB_1400f2a2b;
                }
                if (iVar18 == 4) {
                  uVar21 = 3;
                  goto LAB_1400f2a2b;
                }
                if (iVar18 == 1) goto LAB_1400f2a2b;
              }
LAB_1400f2b3a:
              if ((int)uVar12 == 0x10) {
                *(undefined4 *)((longlong)&DAT_151620dc4 + lVar22) = 3;
              }
            }
            else if (iVar7 == 5) {
              if (iVar18 == 1) {
                uVar21 = 0xc;
              }
              else if (iVar18 == 2) {
                uVar21 = 8;
              }
              else if (iVar18 == 3) {
                uVar21 = 2;
              }
              else {
                if (iVar18 != 4) goto LAB_1400f2b3a;
                uVar21 = uVar12 & 0xffffffff;
              }
              goto LAB_1400f2a2b;
            }
            uVar23 = local_988;
            iVar18 = (int)uVar12;
            if (iVar7 == 6) {
              iVar20 = iVar18 + -1;
              iVar7 = -1;
              if (iVar20 < DAT_19021f240) {
                lVar19 = (longlong)iVar18;
                if ((0 < (&DAT_19021f240)[lVar19 * 4]) &&
                   ((&DAT_19021f240)[lVar19 * 4] <= *(int *)((longlong)&DAT_151620cac + lVar22))) {
                  local_958 = *(undefined4 *)(&DAT_19021f23c + lVar19 * 0x10);
                  iVar7 = *(int *)(&DAT_19021f238 + lVar19 * 0x10);
                }
              }
              lVar19 = (longlong)(int)local_984;
              if (((((float)(&DAT_183ebfd60)[lVar17 * 0x16f1] <=
                     (float)(&DAT_18329e388)[lVar19 * 0x1bfe]) &&
                   ((float)(&DAT_18329e388)[lVar19 * 0x1bfe] <
                    (float)(&DAT_183ebfd6c)[lVar17 * 0x16f1])) &&
                  ((float)(&DAT_183ebfd68)[lVar17 * 0x16f1] <=
                   (float)(&DAT_18329e390)[lVar19 * 0x1bfe])) &&
                 ((((float)(&DAT_18329e390)[lVar19 * 0x1bfe] <
                    (float)(&DAT_183ebfd74)[lVar17 * 0x16f1] && (iVar7 != -1)) &&
                  (iVar7 = FUN_1400f00d0(iVar7), auVar6 = _DAT_140278d30, iVar7 != -1)))) {
                local_928 = 1.0;
                local_970 = (float)(&DAT_18329e388)[lVar19 * 0x1bfe];
                local_96c = (float)(&DAT_18329e38c)[lVar19 * 0x1bfe];
                local_968 = (float)(&DAT_18329e390)[lVar19 * 0x1bfe];
                *(undefined4 *)((longlong)&DAT_151620dc4 + lVar22) = 3;
                local_948 = auVar6;
                local_938 = auVar6;
                iVar18 = FUN_140054130(0x1b,&local_970,0,local_948);
                iVar14 = 2;
                (&DAT_182bbb400)[(longlong)iVar18 * 0x6e0] = iVar7;
                do {
                  iVar7 = FUN_1400e35d0(iVar18);
                  lVar22 = local_920;
                  if (iVar7 != 0) break;
                  iVar14 = iVar14 + 1;
                } while (iVar14 < 7);
                iVar18 = (int)local_950;
                lVar17 = (longlong)(int)local_950;
                *(int *)((longlong)&DAT_151620cac + local_920) =
                     *(int *)((longlong)&DAT_151620cac + local_920) - (&DAT_19021f240)[lVar17 * 4];
                if (DAT_183ebfaac == 3) {
                  FUN_140051f50(local_988);
                }
                bVar24 = DAT_1ad04adc0 != 0;
                (&DAT_19021f240)[lVar17 * 4] = 0;
                uVar8 = DAT_183ebfd34;
                if (bVar24) {
                  lVar19 = (longlong)(int)DAT_189c1dc64;
                  iVar7 = iVar20 * 0x10 + DAT_19021f240;
                  DAT_189c1dc64._0_2_ = (short)DAT_189c1dc64 + 1;
                  (&DAT_1873de460)[lVar19 * 0x20] = 0xe;
                  (&DAT_1873de464)[lVar19 * 0x20] = uVar8;
                  uVar8 = *(undefined4 *)(&DAT_19021f238 + lVar17 * 0x10);
                  (&DAT_1873de480)[lVar19 * 0x20] = iVar7;
                  (&DAT_1873de484)[lVar19 * 0x20] = uVar8;
                  *(undefined4 *)(&DAT_1873de488 + lVar19 * 0x80) =
                       *(undefined4 *)(&DAT_19021f23c + lVar17 * 0x10);
                  *(undefined4 *)(&DAT_1873de48c + lVar19 * 0x80) = 0;
                  DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
                }
              }
              uVar10 = (ulonglong)local_984;
LAB_1400f2dae:
              uVar21 = (ulonglong)local_988;
            }
            else {
              if (iVar7 != 7) {
                if (iVar7 != 8) {
                  if (iVar7 == 0xd) {
                    if (iVar18 - 1U < 6) {
                      iVar7 = *(int *)((longlong)&DAT_151620cac + lVar22);
                      iVar20 = *(int *)(&DAT_1402b2960 + (longlong)iVar18 * 4);
                      if (iVar20 <= iVar7) {
                        if ((iVar18 < 3) && (0x27 < *(int *)((longlong)&DAT_151620cd0 + lVar22)))
                        goto LAB_1400f27f3;
                        if ((int)(&DAT_1832a4dd8)[uVar10 * 0x1bfe] < 1) {
                          local_970 = (float)(&DAT_18329e388)[uVar10 * 0x1bfe];
                          local_96c = (float)(&DAT_18329e38c)[uVar10 * 0x1bfe];
                          local_968 = (float)(&DAT_18329e390)[uVar10 * 0x1bfe];
                          local_928 = 1.0;
                          local_948 = _DAT_140278d30;
                          local_938 = _DAT_140278d30;
                          iVar7 = FUN_140054130(0x12,&local_970);
                          *(undefined4 *)(&DAT_182bbb424 + (longlong)iVar7 * 0x1b80) = 0;
                          *(int *)(&DAT_182bbb428 + (longlong)iVar7 * 0x1b80) = iVar18;
                          FUN_1400e35d0(iVar7);
                          *(int *)((longlong)&DAT_151620cac + lVar22) =
                               *(int *)((longlong)&DAT_151620cac + lVar22) -
                               *(int *)(&DAT_1402b2960 + (longlong)iVar18 * 4);
                          if (iVar18 < 3) {
                            *(int *)((longlong)&DAT_151620cd0 + lVar22) =
                                 *(int *)((longlong)&DAT_151620cd0 + lVar22) + 1;
                            uVar21 = (ulonglong)local_988;
                            lVar17 = local_980;
                            goto LAB_1400f2804;
                          }
                        }
                        else if ((((&DAT_182bbb194)
                                   [(longlong)(int)(&DAT_1832a4ddc)[uVar10 * 0x1bfe] * 0x6e0] ==
                                   0x12) && (iVar14 = FUN_1400c3ab0(), iVar14 != 0)) &&
                                (*(int *)((longlong)&DAT_151620cac + lVar22) = iVar7 - iVar20,
                                iVar18 < 3)) {
                          *(int *)((longlong)&DAT_151620cd0 + lVar22) =
                               *(int *)((longlong)&DAT_151620cd0 + lVar22) + 1;
                        }
                      }
                    }
                    if (iVar18 != 7) goto LAB_1400f2dae;
                    if ((0 < (int)(&DAT_1832a4dd8)[uVar10 * 0x1bfe]) &&
                       (iVar7 = (&DAT_1832a4ddc)[uVar10 * 0x1bfe],
                       (&DAT_182bbb194)[(longlong)iVar7 * 0x6e0] == 0x12)) {
                      iVar18 = FUN_1400c3d10();
                      uVar21 = (ulonglong)local_988;
                      *(int *)((longlong)&DAT_151620cac + lVar22) =
                           *(int *)((longlong)&DAT_151620cac + lVar22) + iVar18;
                      (&DAT_182bbb19c)[(longlong)iVar7 * 0x6e0] = 0;
                      lVar17 = local_980;
                      goto LAB_1400f2804;
                    }
                  }
                  else if (iVar7 == 0xc) {
                    uVar23 = *(uint *)((longlong)&DAT_151620ce4 + lVar22);
                    lVar17 = (longlong)(int)uVar23;
                    if (5 < uVar23) goto LAB_1400f3728;
                    if (iVar18 - 1U < 6) {
                      iVar7 = (&DAT_19021f0d4)[lVar17 * 6];
                      iVar20 = *(int *)(&DAT_1402b2960 + (longlong)iVar18 * 4);
                      if (iVar20 <= iVar7) {
                        if ((iVar18 < 3) && (0x27 < *(int *)((longlong)&DAT_151620cd0 + lVar22)))
                        goto LAB_1400f3728;
                        lVar19 = (longlong)(int)local_984;
                        if ((int)(&DAT_1832a4dd8)[lVar19 * 0x1bfe] < 1) {
                          local_970 = (float)(&DAT_18329e388)[lVar19 * 0x1bfe];
                          local_96c = (float)(&DAT_18329e38c)[lVar19 * 0x1bfe];
                          local_968 = (float)(&DAT_18329e390)[lVar19 * 0x1bfe];
                          local_928 = 1.0;
                          local_948 = _DAT_140278d30;
                          local_938 = _DAT_140278d30;
                          iVar7 = FUN_140054130(0x12,&local_970);
                          *(undefined4 *)(&DAT_182bbb424 + (longlong)iVar7 * 0x1b80) = 0;
                          *(int *)(&DAT_182bbb428 + (longlong)iVar7 * 0x1b80) = iVar18;
                          FUN_1400e35d0(iVar7);
                          (&DAT_19021f0d4)[lVar17 * 6] =
                               (&DAT_19021f0d4)[lVar17 * 6] -
                               *(int *)(&DAT_1402b2960 + (longlong)iVar18 * 4);
                          if (iVar18 < 3) {
                            *(int *)((longlong)&DAT_151620cd0 + lVar22) =
                                 *(int *)((longlong)&DAT_151620cd0 + lVar22) + 1;
                            uVar21 = (ulonglong)local_988;
                            uVar10 = (ulonglong)local_984;
                            lVar17 = local_980;
                            goto LAB_1400f2804;
                          }
                        }
                        else if ((((&DAT_182bbb194)
                                   [(longlong)(int)(&DAT_1832a4ddc)[lVar19 * 0x1bfe] * 0x6e0] ==
                                   0x12) &&
                                 (iVar14 = FUN_1400c3ab0((longlong)
                                                         (int)(&DAT_1832a4ddc)[lVar19 * 0x1bfe],0,
                                                         uVar12 & 0xffffffff), iVar14 != 0)) &&
                                ((&DAT_19021f0d4)[lVar17 * 6] = iVar7 - iVar20, iVar18 < 3)) {
                          *(int *)((longlong)&DAT_151620cd0 + lVar22) =
                               *(int *)((longlong)&DAT_151620cd0 + lVar22) + 1;
                        }
                      }
                    }
                    uVar10 = 0;
                    if (iVar18 != 7) {
                      uVar21 = (ulonglong)local_988;
                      uVar10 = (ulonglong)local_984;
                      goto LAB_1400f2dba;
                    }
                    if (0 < (int)(&DAT_1832a4dd8)[(longlong)(int)local_984 * 0x1bfe]) {
                      iVar7 = (&DAT_1832a4ddc)[(longlong)(int)local_984 * 0x1bfe];
                      local_950 = (longlong)iVar7 * 0x1b80;
                      uVar21 = uVar10;
                      if ((&DAT_182bbb194)[(longlong)iVar7 * 0x6e0] == 0x12) {
                        iVar18 = FUN_1400c3d10(iVar7);
                        iVar7 = (&DAT_19021f0c0)[lVar17 * 6];
                        if (0 < iVar7) {
                          (&DAT_19021f0c4)[lVar17 * 6] =
                               (float)iVar18 / (float)iVar7 + (float)(&DAT_19021f0c4)[lVar17 * 6];
                        }
                        if (0 < (int)(&DAT_183ebfdb4)[lVar17 * 0x16f1]) {
                          iVar18 = iVar18 / (int)(&DAT_183ebfdb4)[lVar17 * 0x16f1];
                        }
                        puVar13 = &DAT_151620ce4;
                        do {
                          if ((puVar13[-0x21] != 0) && (*puVar13 == uVar23)) {
                            fVar25 = fVar3 - (float)(int)puVar13[2] / (float)iVar7;
                            if (fVar25 <= 0.0) {
                              fVar25 = 0.0;
                            }
                            if (fVar3 <= fVar25) {
                              fVar25 = fVar3;
                            }
                            puVar13[-0xe] = puVar13[-0xe] + (int)(fVar25 * (float)iVar18);
                            FUN_140051f50(uVar10);
                          }
                          uVar15 = (int)uVar10 + 1;
                          uVar10 = (ulonglong)uVar15;
                          puVar13 = puVar13 + 0xe0d;
                        } while ((int)uVar15 < 0x100);
                        if (fVar5 < (float)(&DAT_19021f0c4)[lVar17 * 6]) {
                          piVar9 = &DAT_151620cec;
                          iVar18 = 0;
                          (&DAT_19021f0c4)[lVar17 * 6] = (float)(&DAT_19021f0c4)[lVar17 * 6] * fVar1
                          ;
                          do {
                            if ((piVar9[-0x23] != 0) && (piVar9[-2] == uVar23)) {
                              iVar20 = *piVar9;
                              iVar7 = iVar7 + iVar20 * 4;
                              (&DAT_19021f0c0)[lVar17 * 6] = iVar7;
                              *piVar9 = iVar20 * 5;
                              FUN_140051f50(iVar18);
                            }
                            iVar18 = iVar18 + 1;
                            piVar9 = piVar9 + 0xe0d;
                            lVar22 = local_920;
                          } while (iVar18 < 0x100);
                        }
                        FUN_140052090();
                        uVar10 = (ulonglong)local_984;
                        *(undefined4 *)((longlong)&DAT_182bbb19c + local_950) = 0;
                        goto LAB_1400f27f3;
                      }
                      do {
                        lVar17 = (longlong)*(int *)((longlong)&DAT_151620ce4 + lVar22) * 0x5bc4 +
                                 uVar21;
                        if ((*(int *)((longlong)&DAT_183ebfefc + lVar17) != 0) &&
                           (iVar7 == *(int *)((longlong)&DAT_183ebff0c + lVar17))) {
                          FUN_1400f4d00();
                        }
                        uVar23 = (int)uVar10 + 1;
                        uVar10 = (ulonglong)uVar23;
                        uVar21 = uVar21 + 0x45c;
                      } while ((int)uVar23 < 0x10);
                    }
                    uVar21 = (ulonglong)local_988;
                    uVar10 = (ulonglong)local_984;
                    lVar17 = local_980;
                    goto LAB_1400f2804;
                  }
LAB_1400f27f3:
                  uVar21 = (ulonglong)local_988;
                  lVar17 = local_980;
                  goto LAB_1400f2804;
                }
                if (iVar18 == 1) {
LAB_1400f30bb:
                  FUN_1401189f0(local_988);
                }
                else if (iVar18 == 2) {
                  FUN_14011af80(local_988);
                }
                else {
                  if (iVar18 == 3) goto LAB_1400f30bb;
                  if (iVar18 == 4) {
                    FUN_14011af80(local_988);
                  }
                  else {
                    if (iVar18 == 5) goto LAB_1400f30bb;
                    if (iVar18 == 6) {
                      FUN_14011af80(local_988);
                    }
                    else {
                      if (iVar18 == 7) goto LAB_1400f30bb;
                      uVar21 = (ulonglong)local_988;
                      if (iVar18 != 8) {
                        FUN_140051f50(uVar21);
                        goto LAB_1400f2dba;
                      }
                      FUN_14011af80();
                    }
                  }
                }
                uVar21 = (ulonglong)uVar23;
                FUN_140051f50(uVar21);
                lVar17 = local_980;
                goto LAB_1400f2804;
              }
              uVar16 = 0xe;
              if (iVar18 != 1) {
                uVar16 = 0xffffffff;
              }
              if (((((iVar18 == 2) &&
                    ((float)(&DAT_183ebfd60)[lVar17 * 0x16f1] <=
                     (float)(&DAT_18329e388)[uVar10 * 0x1bfe])) &&
                   ((float)(&DAT_18329e388)[uVar10 * 0x1bfe] <
                    (float)(&DAT_183ebfd6c)[lVar17 * 0x16f1])) &&
                  (((float)(&DAT_183ebfd68)[lVar17 * 0x16f1] <=
                    (float)(&DAT_18329e390)[uVar10 * 0x1bfe] &&
                   ((float)(&DAT_18329e390)[uVar10 * 0x1bfe] <
                    (float)(&DAT_183ebfd74)[lVar17 * 0x16f1])))) &&
                 (999 < *(int *)((longlong)&DAT_151620cac + lVar22))) {
                *(int *)((longlong)&DAT_151620cac + lVar22) =
                     *(int *)((longlong)&DAT_151620cac + lVar22) + -1000;
                *(undefined4 *)((longlong)&DAT_151624420 + lVar22 + 4) = 7;
                FUN_140051dc0(local_988);
              }
              if ((((float)(&DAT_183ebfd60)[lVar17 * 0x16f1] <=
                    (float)(&DAT_18329e388)[uVar10 * 0x1bfe]) &&
                  ((float)(&DAT_18329e388)[uVar10 * 0x1bfe] <
                   (float)(&DAT_183ebfd6c)[lVar17 * 0x16f1])) &&
                 (((float)(&DAT_183ebfd68)[lVar17 * 0x16f1] <=
                   (float)(&DAT_18329e390)[uVar10 * 0x1bfe] &&
                  (((float)(&DAT_18329e390)[uVar10 * 0x1bfe] <
                    (float)(&DAT_183ebfd74)[lVar17 * 0x16f1] && (iVar18 == 1)))))) {
                if ((*(int *)((longlong)&DAT_151620cc8 + lVar22) < 10) &&
                   ((-1 < *(int *)((longlong)&DAT_151620cac + lVar22) &&
                    ((int)DAT_182a8f6e4 <= *(int *)((longlong)&DAT_151620cac + lVar22))))) {
                  local_928 = (float)(&DAT_18329e57c)[uVar10 * 0x1bfe];
                  local_938 = *(undefined1 (*) [16])(&DAT_18329e56c + uVar10 * 0x1bfe);
                  local_970 = ((float)(&DAT_18329e52c)[uVar10 * 0x1bfe] -
                              (float)(&DAT_18329e574)[uVar10 * 0x1bfe] * fVar2) +
                              (float)(&DAT_18329e568)[uVar10 * 0x1bfe] * fVar2;
                  local_96c = ((float)(&DAT_18329e530)[uVar10 * 0x1bfe] -
                              (float)(&DAT_18329e578)[uVar10 * 0x1bfe] * fVar2) +
                              *(float *)*(undefined1 (*) [16])(&DAT_18329e56c + uVar10 * 0x1bfe) *
                              fVar2;
                  local_948._0_8_ = local_948._4_8_ << 0x20;
                  local_948._8_4_ = (&DAT_18329e564)[uVar10 * 0x1bfe];
                  local_948._12_4_ = (&DAT_18329e568)[uVar10 * 0x1bfe];
                  local_968 = ((float)(&DAT_18329e534)[uVar10 * 0x1bfe] - local_928 * fVar2) +
                              (float)(&DAT_18329e570)[uVar10 * 0x1bfe] * fVar2;
                  local_948._0_8_ = *(undefined8 *)(&DAT_18329e55c + uVar10 * 0x1bfe);
                  uVar8 = FUN_140054130(uVar16,&local_970,0,local_948);
                  iVar7 = 2;
                  do {
                    iVar18 = FUN_1400e35d0(uVar8);
                    if (iVar18 != 0) break;
                    iVar7 = iVar7 + 1;
                  } while (iVar7 < 7);
                  *(int *)((longlong)&DAT_151620cac + lVar22) =
                       *(int *)((longlong)&DAT_151620cac + lVar22) - (int)DAT_182a8f6e4;
                  uVar21 = (ulonglong)local_988;
                  if (DAT_183ebfaac == 3) {
                    FUN_140051f50(uVar21);
                  }
                  *(int *)((longlong)&DAT_151620cc8 + lVar22) =
                       *(int *)((longlong)&DAT_151620cc8 + lVar22) + 1;
                  lVar17 = local_980;
                }
                else {
                  uVar21 = (ulonglong)local_988;
                  lVar17 = local_980;
                }
                goto LAB_1400f2804;
              }
              uVar21 = (ulonglong)local_988;
            }
LAB_1400f2dba:
            lVar17 = local_980;
            if (iVar18 == 0x10) {
              *(undefined4 *)((longlong)&DAT_151620dc4 + lVar22) = 3;
            }
            goto LAB_1400f2804;
          }
        }
LAB_1400f3728:
        uVar21 = (ulonglong)local_988;
        uVar10 = (ulonglong)local_984;
        lVar17 = local_980;
      }
LAB_1400f2804:
      lVar19 = -1;
      if (*(int *)(&DAT_151620c94 + lVar22) != 0) {
        if (*(int *)(&DAT_151620e28 + lVar17) == 4) {
          iVar7 = *(int *)(&DAT_151620e2c + lVar17);
          if (((-1 < iVar7) && (iVar7 < DAT_160361344)) &&
             (iVar18 = *(int *)(&DAT_151620e30 + lVar17), -1 < iVar18)) {
            (&DAT_1603613b0)[(longlong)iVar7 * 0x1c] = iVar18;
            local_998 = iVar18;
            FUN_140158ab0(local_8c8);
            uVar23 = DAT_189c1dc64;
            if (DAT_1ad04adc0 != 0) {
              do {
                lVar11 = lVar19 + 1;
                lVar17 = lVar19 + 1;
                lVar19 = lVar11;
              } while (local_8c8[lVar17] != '\0');
              lVar17 = (longlong)(int)DAT_189c1dc64;
              iVar7 = (int)lVar11;
              if (0x3f < iVar7) {
                iVar7 = 0x3f;
              }
              lVar19 = lVar17 * 0x80;
              (&DAT_1873de460)[lVar17 * 0x20] = 2;
              (&DAT_1873de464)[lVar17 * 0x20] = DAT_183ebfd34;
              FUN_1401fc920(&DAT_1873de4a0 + lVar19);
              DAT_189c1dc64._0_2_ = (short)uVar23 + 1;
              (&DAT_1873de4a0)[lVar19 + iVar7] = 0;
              (&DAT_1873de480)[lVar17 * 0x20] = iVar7;
              (&DAT_1873de484)[lVar17 * 0x20] = 4;
              *(undefined4 *)(&DAT_1873de488 + lVar19) = 0xffffffff;
              *(undefined4 *)(&DAT_1873de48c + lVar19) = 0;
              DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
              lVar17 = local_980;
            }
          }
        }
        lVar19 = -1;
        if (*(int *)(&DAT_151620e28 + lVar17) == 5) {
          iVar7 = *(int *)(&DAT_151620e2c + lVar17);
          if (((-1 < iVar7) && (iVar7 < DAT_160361344)) && (-1 < *(int *)(&DAT_151620e30 + lVar17)))
          {
            (&DAT_16036138c)[(longlong)iVar7 * 0x1c] = *(int *)(&DAT_151620e30 + lVar17);
            piVar9 = &DAT_151620c9c;
            do {
              if ((piVar9[-0xf] != 0) && (*piVar9 == iVar7)) {
                piVar9[8] = *(int *)(&DAT_151620e30 + local_8f8 + lVar22);
              }
              piVar9 = piVar9 + 0xe0d;
            } while ((longlong)piVar9 < 0x1519a409c);
            local_998 = *(int *)(&DAT_151620e30 + local_8f8 + lVar22);
            FUN_140158ab0(local_8c8);
            uVar23 = DAT_189c1dc64;
            if (DAT_1ad04adc0 != 0) {
              do {
                lVar11 = lVar19 + 1;
                lVar17 = lVar19 + 1;
                lVar19 = lVar11;
              } while (local_8c8[lVar17] != '\0');
              lVar17 = (longlong)(int)DAT_189c1dc64;
              iVar7 = (int)lVar11;
              if (0x3f < iVar7) {
                iVar7 = 0x3f;
              }
              lVar19 = lVar17 * 0x80;
              (&DAT_1873de460)[lVar17 * 0x20] = 2;
              (&DAT_1873de464)[lVar17 * 0x20] = DAT_183ebfd34;
              FUN_1401fc920(&DAT_1873de4a0 + lVar19);
              DAT_189c1dc64._0_2_ = (short)uVar23 + 1;
              (&DAT_1873de4a0)[lVar19 + iVar7] = 0;
              (&DAT_1873de480)[lVar17 * 0x20] = iVar7;
              (&DAT_1873de484)[lVar17 * 0x20] = 4;
              *(undefined4 *)(&DAT_1873de488 + lVar19) = 0xffffffff;
              DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
              *(undefined4 *)(&DAT_1873de48c + lVar19) = 0;
            }
          }
        }
      }
      uVar23 = *(int *)((longlong)&DAT_151620e14 + lVar22 + 4) + 1U & 0x3f;
      *(uint *)((longlong)&DAT_151620e14 + lVar22 + 4) = uVar23;
    } while (uVar23 != *(uint *)((longlong)&DAT_151620e14 + lVar22));
  }
  return;
}



===== FUN_1400ef0d0 @ 1400ef0d0 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400ef0d0(int param_1,int param_2,uint param_3)

{
  float fVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  longlong lVar8;
  int *piVar9;
  int iVar10;
  ulonglong uVar11;
  uint uVar12;
  ulonglong uVar13;
  int iVar14;
  longlong lVar15;
  longlong lVar16;
  longlong lVar17;
  undefined4 local_78;
  undefined4 local_74;
  undefined4 local_70;
  undefined4 local_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 local_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined4 local_48;
  
  lVar17 = (longlong)param_1;
  iVar7 = (&DAT_151620cfc)[lVar17 * 0xe0d];
  lVar8 = (longlong)iVar7;
  if (iVar7 == -1) {
    return;
  }
  uVar11 = 0;
  iVar6 = 0;
  iVar14 = 1;
  fVar1 = (float)(&DAT_18329e388)[lVar8 * 0x1bfe];
  if ((((fVar1 < DAT_183ebfd60) || (DAT_183ebfd6c <= fVar1)) ||
      ((float)(&DAT_18329e390)[lVar8 * 0x1bfe] < DAT_183ebfd68)) ||
     (iVar2 = iVar14, DAT_183ebfd74 <= (float)(&DAT_18329e390)[lVar8 * 0x1bfe])) {
    iVar2 = 0;
  }
  if (iVar2 == 0) {
    iVar6 = -1;
  }
  iVar2 = 0;
  if (((fVar1 < DAT_183ec5924) || (DAT_183ec5930 <= fVar1)) ||
     (((float)(&DAT_18329e390)[lVar8 * 0x1bfe] < DAT_183ec592c ||
      (iVar10 = iVar14, DAT_183ec5938 <= (float)(&DAT_18329e390)[lVar8 * 0x1bfe])))) {
    iVar10 = iVar2;
  }
  iVar3 = iVar14;
  if (iVar10 == 0) {
    iVar3 = iVar6;
  }
  if (((fVar1 < DAT_183ecb4e8) || (DAT_183ecb4f4 <= fVar1)) ||
     (((float)(&DAT_18329e390)[lVar8 * 0x1bfe] < DAT_183ecb4f0 ||
      (iVar6 = iVar14, DAT_183ecb4fc <= (float)(&DAT_18329e390)[lVar8 * 0x1bfe])))) {
    iVar6 = 0;
  }
  iVar10 = 2;
  if (iVar6 == 0) {
    iVar10 = iVar3;
  }
  if ((((fVar1 < DAT_183ed10ac) || (DAT_183ed10b8 <= fVar1)) ||
      ((float)(&DAT_18329e390)[lVar8 * 0x1bfe] < DAT_183ed10b4)) ||
     (iVar6 = iVar14, DAT_183ed10c0 <= (float)(&DAT_18329e390)[lVar8 * 0x1bfe])) {
    iVar6 = iVar2;
  }
  iVar3 = 3;
  if (iVar6 == 0) {
    iVar3 = iVar10;
  }
  if (((fVar1 < DAT_183ed6c70) || (DAT_183ed6c7c <= fVar1)) ||
     (((float)(&DAT_18329e390)[lVar8 * 0x1bfe] < DAT_183ed6c78 ||
      (DAT_183ed6c84 <= (float)(&DAT_18329e390)[lVar8 * 0x1bfe])))) {
    iVar14 = iVar2;
  }
  iVar6 = 4;
  if (iVar14 == 0) {
    iVar6 = iVar3;
  }
  if (((DAT_183edc834 <= fVar1) && (fVar1 < DAT_183edc840)) &&
     ((DAT_183edc83c <= (float)(&DAT_18329e390)[lVar8 * 0x1bfe] &&
      ((float)(&DAT_18329e390)[lVar8 * 0x1bfe] < DAT_183edc848)))) {
    iVar6 = 5;
  }
  if (iVar6 == -1) {
    return;
  }
  if ((param_2 - 0x15U < 6) && ((param_3 >> 0x18 & 1) != 0)) {
    uVar4 = param_3 & 0xff;
    if ((char)param_3 == '\0') {
      (&DAT_151620dc4)[lVar17 * 0xe0d] = 0x15;
      return;
    }
    if (uVar4 == 1) {
      (&DAT_151620dc4)[lVar17 * 0xe0d] = 0x16;
      return;
    }
    if (uVar4 == 2) {
      (&DAT_151620dc4)[lVar17 * 0xe0d] = 0x17;
      return;
    }
    if (uVar4 == 3) {
      (&DAT_151620dc4)[lVar17 * 0xe0d] = 0x18;
      return;
    }
    if (uVar4 != 4) {
      return;
    }
    (&DAT_151620dc4)[lVar17 * 0xe0d] = 0x19;
    return;
  }
  if (((param_2 == 0x18) && ((&DAT_151620ce4)[lVar17 * 0xe0d] == iVar6)) && (param_3 == 0)) {
    FUN_140138430(param_1,0x11);
    FUN_140051dc0(param_1);
  }
  lVar15 = (longlong)iVar6;
  if (((&DAT_151620ce4)[lVar17 * 0xe0d] == iVar6) && ((&DAT_183ebfdc4)[lVar15 * 0x16f1] == param_1))
  {
    iVar14 = (int)param_3 >> 0x10;
    if (param_2 == 0x16) {
      if ((char)param_3 != '\x03') {
        return;
      }
      FUN_140138430(iVar14,iVar6);
      FUN_140051dc0(iVar14);
      FUN_1400f3b30(iVar14);
      piVar9 = &DAT_183ebfefc + lVar15 * 0x16f1;
      do {
        if (*piVar9 != 0) {
          FUN_140051bd0(iVar6,uVar11);
        }
        uVar4 = (int)uVar11 + 1;
        uVar11 = (ulonglong)uVar4;
        piVar9 = piVar9 + 0x117;
      } while ((int)uVar4 < 0x10);
      return;
    }
    if (param_2 == 0x17) {
      if (iVar14 == param_1) {
        return;
      }
      if ((&DAT_151620ce4)[(longlong)iVar14 * 0xe0d] != iVar6) {
        return;
      }
      FUN_140138430(iVar14,0x11);
      FUN_140051dc0(iVar14);
      return;
    }
  }
  if (param_2 != 0x19) {
    if (param_2 != 0x14) {
      return;
    }
    if (param_3 == 0) {
      if ((&DAT_183ebfdc4)[lVar15 * 0x16f1] != -1) {
        return;
      }
      FUN_1400f3b30(param_1);
      FUN_140138430(param_1,iVar6);
      FUN_1400f45a0(iVar6,param_1);
      (&DAT_151620dc4)[lVar17 * 0xe0d] = 0x19;
      FUN_140051dc0(param_1);
      piVar9 = &DAT_183ebfefc + lVar15 * 0x16f1;
      do {
        if (*piVar9 != 0) {
          FUN_140051bd0(iVar6,uVar11);
        }
        uVar4 = (int)uVar11 + 1;
        uVar11 = (ulonglong)uVar4;
        piVar9 = piVar9 + 0x117;
      } while ((int)uVar4 < 0x10);
      (&DAT_183ec5820)[lVar15 * 0x16f1] = 0;
      return;
    }
    if (param_3 != 1) {
      return;
    }
    if ((&DAT_183ebfdc4)[lVar15 * 0x16f1] == -1) {
      return;
    }
    iVar7 = (&DAT_183ec5820)[lVar15 * 0x16f1];
    if (0 < iVar7) {
      piVar9 = &DAT_183ec5824 + lVar15 * 0x16f1;
      do {
        if (*piVar9 == param_1) {
          return;
        }
        uVar4 = (int)uVar11 + 1;
        uVar11 = (ulonglong)uVar4;
        piVar9 = piVar9 + 1;
      } while ((int)uVar4 < iVar7);
    }
    if (0x1f < iVar7) {
      return;
    }
    (&DAT_183ec5824)[lVar15 * 0x16f1 + (longlong)iVar7] = param_1;
    (&DAT_183ec5820)[lVar15 * 0x16f1] = (&DAT_183ec5820)[lVar15 * 0x16f1] + 1;
    return;
  }
  if ((&DAT_151620ce4)[lVar17 * 0xe0d] != iVar6) {
    return;
  }
  if ((&DAT_183ebfdc4)[lVar15 * 0x16f1] == -1) {
    return;
  }
  if (param_3 == 0) {
    uVar4 = 0x13;
  }
  else if (param_3 == 1) {
LAB_1400ef48c:
    uVar4 = 0xf;
  }
  else {
    if (param_3 != 6) {
      if (5 < param_3 - 7) goto LAB_1400ef66d;
      if (param_3 == 1) goto LAB_1400ef48c;
      if (param_3 != 6) {
        if (param_3 == 7) {
          uVar4 = 0xb;
        }
        else if (param_3 == 8) {
          uVar4 = 0xc;
        }
        else if (param_3 == 9) {
          uVar4 = 7;
        }
        else if (param_3 == 10) {
          uVar4 = 8;
        }
        else if (param_3 == 0xb) {
          uVar4 = 0xe;
        }
        else {
          if (param_3 != 0xc) goto LAB_1400ef66d;
          uVar4 = 0x19;
        }
        goto LAB_1400ef4e4;
      }
    }
    uVar4 = 0x1a;
  }
LAB_1400ef4e4:
  if ((int)(&DAT_151620cc8)[lVar17 * 0xe0d] < 10) {
    if (uVar4 == 0x19) {
      FUN_1400f3d10(iVar6);
    }
    local_78 = (&DAT_18329e388)[lVar8 * 0x1bfe];
    local_74 = (&DAT_18329e38c)[lVar8 * 0x1bfe];
    local_70 = (&DAT_18329e390)[lVar8 * 0x1bfe];
    local_68 = _DAT_140278d30;
    uStack_64 = _UNK_140278d34;
    uStack_60 = _UNK_140278d38;
    uStack_5c = _UNK_140278d3c;
    local_48 = 0x3f800000;
    local_58 = _DAT_140278d30;
    uStack_54 = _UNK_140278d34;
    uStack_50 = _UNK_140278d38;
    uStack_4c = _UNK_140278d3c;
    iVar14 = FUN_140054130(_DAT_140278d30,&local_78,0,&local_68);
    lVar16 = (longlong)iVar14;
    if (iVar14 != -1) {
      uVar13 = uVar11;
      if (uVar4 == 0x13) {
        uVar5 = FUN_140050ef0(0x168);
        *(undefined4 *)(&DAT_182bbb4b4 + lVar16 * 0x1b80) = uVar5;
      }
      else if (uVar4 == 0x1a) {
        (&DAT_182bbb4e8)[lVar16 * 0x6e0] = iVar6;
      }
      else if (uVar4 == 0x19) {
        (&DAT_182bbb3f8)[lVar16 * 0x6e0] = 0;
        (&DAT_182bbb2e0)[lVar16 * 0x6e0] = (iVar6 + 1) * 0x457;
        FUN_140051940(iVar14);
      }
      do {
        iVar6 = FUN_1400e35d0(iVar14,0xffffffff,iVar7,uVar13);
        if (iVar6 != 0) break;
        uVar12 = (int)uVar13 + 1;
        uVar13 = (ulonglong)uVar12;
      } while ((int)uVar12 < 7);
      if (uVar4 == 0x19) {
        iVar14 = *(int *)(&DAT_16d482320 + lVar15 * 0x14) + -100;
      }
      else {
        iVar14 = *(int *)(&DAT_16d482320 + lVar15 * 0x14) -
                 *(int *)(&DAT_182a7e184 + (ulonglong)uVar4 * 0x13d0);
      }
      (&DAT_151620cc8)[lVar17 * 0xe0d] = (&DAT_151620cc8)[lVar17 * 0xe0d] + 1;
      *(int *)(&DAT_16d482320 + lVar15 * 0x14) = iVar14;
    }
  }
LAB_1400ef66d:
  if (((param_3 == 2) && (0 < (int)(&DAT_1832a4dd8)[lVar8 * 0x1bfe])) &&
     (iVar14 = (&DAT_1832a4ddc)[lVar8 * 0x1bfe], (&DAT_182bbb194)[(longlong)iVar14 * 0x6e0] == 0x12)
     ) {
    iVar6 = FUN_1400c3d10();
    *(int *)(&DAT_16d482320 + lVar15 * 0x14) = *(int *)(&DAT_16d482320 + lVar15 * 0x14) + iVar6;
    (&DAT_182bbb19c)[(longlong)iVar14 * 0x6e0] = 0;
  }
  if (((&DAT_183ebfdc4)[lVar15 * 0x16f1] == param_1) && (param_3 - 3 < 3)) {
    if (param_3 == 4) {
      lVar17 = 5;
    }
    else {
      lVar17 = 3;
      if (param_3 == 5) {
        lVar17 = 6;
      }
    }
    iVar14 = *(int *)(&DAT_16d482320 + lVar15 * 0x14);
    iVar6 = *(int *)(&DAT_1402b2960 + lVar17 * 4);
    if (-*(int *)(&DAT_16d482324 + lVar15 * 0x14) <= iVar14 - iVar6) {
      if ((0 < (int)(&DAT_1832a4dd8)[lVar8 * 0x1bfe]) &&
         (uVar11 = 0,
         (&DAT_182bbb194)[(longlong)(int)(&DAT_1832a4ddc)[lVar8 * 0x1bfe] * 0x6e0] != 0x12)) {
        uVar11 = 1;
      }
      if ((int)(&DAT_1832a4dd8)[uVar11 * 10 + lVar8 * 0x1bfe] < 1) {
        local_78 = (&DAT_18329e388)[lVar8 * 0x1bfe];
        local_74 = (&DAT_18329e38c)[lVar8 * 0x1bfe];
        local_70 = (&DAT_18329e390)[lVar8 * 0x1bfe];
        local_68 = _DAT_140278d30;
        uStack_64 = _UNK_140278d34;
        uStack_60 = _UNK_140278d38;
        uStack_5c = _UNK_140278d3c;
        local_48 = 0x3f800000;
        local_58 = _DAT_140278d30;
        uStack_54 = _UNK_140278d34;
        uStack_50 = _UNK_140278d38;
        uStack_4c = _UNK_140278d3c;
        iVar14 = FUN_140054130(_DAT_140278d30,&local_78,0,&local_68);
        *(undefined4 *)(&DAT_182bbb424 + (longlong)iVar14 * 0x1b80) = 0;
        *(int *)(&DAT_182bbb428 + (longlong)iVar14 * 0x1b80) = (int)lVar17;
        FUN_1400e35d0(iVar14,0xffffffff,iVar7,uVar11);
        *(int *)(&DAT_16d482320 + lVar15 * 0x14) =
             *(int *)(&DAT_16d482320 + lVar15 * 0x14) - *(int *)(&DAT_1402b2960 + lVar17 * 4);
      }
      else if (((&DAT_182bbb194)
                [(longlong)(int)(&DAT_1832a4ddc)[uVar11 * 10 + lVar8 * 0x1bfe] * 0x6e0] == 0x12) &&
              (iVar7 = FUN_1400c3ab0((longlong)(int)(&DAT_1832a4ddc)[uVar11 * 10 + lVar8 * 0x1bfe],0
                                     ,lVar17), iVar7 != 0)) {
        *(int *)(&DAT_16d482320 + lVar15 * 0x14) = iVar14 - iVar6;
      }
    }
  }
  return;
}



===== FUN_14005af40 @ 14005af40 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_14005af40(undefined8 param_1,int param_2,int *param_3)

{
  char *pcVar1;
  char cVar2;
  float fVar3;
  float fVar4;
  double dVar5;
  byte bVar6;
  uint uVar7;
  int iVar8;
  ulonglong uVar9;
  longlong lVar10;
  int *piVar11;
  int iVar12;
  undefined1 *puVar13;
  int iVar14;
  ulonglong uVar15;
  longlong lVar16;
  int iVar17;
  longlong lVar18;
  int iVar19;
  longlong lVar20;
  longlong lVar21;
  ulonglong uVar22;
  ulonglong uVar23;
  float fVar24;
  float fVar25;
  float fVar26;
  float fVar27;
  float fVar28;
  undefined1 auStack_588 [32];
  undefined *local_568;
  undefined *local_560;
  int local_558;
  int local_548;
  undefined8 local_540;
  float local_538;
  longlong local_530;
  int local_528;
  int local_524;
  undefined *local_520;
  int *local_518;
  int local_510;
  int local_508 [8];
  float local_4e8;
  float fStack_4e4;
  float fStack_4e0;
  undefined4 uStack_4dc;
  float local_4d8;
  float fStack_4d4;
  float fStack_4d0;
  undefined4 uStack_4cc;
  undefined4 local_4c8;
  int local_4c0 [10];
  char local_498 [1024];
  ulonglong local_98;
  
  if (param_2 < 2) {
    return;
  }
  local_98 = DAT_1403020a0 ^ (ulonglong)auStack_588;
  local_524 = param_2;
  local_518 = param_3;
  uVar7 = FUN_14023b1b0();
  iVar12 = (~uVar7 & 1) + 1;
  if ((3 < param_2) && (uVar9 = FUN_14023b1b0(), (uVar9 & 1) == 0)) {
    iVar12 = (~uVar7 & 1) + 2;
  }
  piVar11 = local_4c0;
  iVar19 = param_2 + -1;
  if (iVar12 <= param_2 + -1) {
    iVar19 = iVar12;
  }
  local_528 = DAT_16b2a2ec0 + 0x7f710;
  if (0x3b0d30 < DAT_16b2a2ec0 + 0x7f710) {
    local_528 = 0x3b0d30;
  }
  iVar14 = 0;
  iVar12 = DAT_1b4657c84 + 0x13;
  iVar17 = DAT_1b4657c84 + 0x14;
  DAT_1b4657c84 = DAT_1b4657c84 + 1;
  local_548 = iVar12;
  if (0x18 < iVar17) {
    DAT_1b4657c84 = 0;
  }
  do {
    if (iVar14 == 0) {
      *piVar11 = 0;
    }
    else {
      iVar17 = 2000;
      *piVar11 = 2000;
      uVar9 = FUN_14023b1b0();
      if ((uVar9 & 1) == 0) {
        iVar17 = 0x9c4;
        *piVar11 = 0x9c4;
      }
      uVar9 = FUN_14023b1b0();
      if ((uVar9 & 3) == 0) {
        iVar17 = iVar17 + 500;
        *piVar11 = iVar17;
      }
      uVar9 = FUN_14023b1b0();
      if ((uVar9 & 3) == 0) {
        iVar17 = iVar17 + 500;
        *piVar11 = iVar17;
      }
      uVar9 = FUN_14023b1b0();
      if ((uVar9 & 3) == 0) {
        iVar17 = iVar17 + 500;
        *piVar11 = iVar17;
      }
      if (iVar12 == 0x17) {
        *piVar11 = iVar17 * 5;
      }
    }
    dVar5 = DAT_1402785a0;
    fVar4 = DAT_140278478;
    fVar3 = DAT_1402783a0;
    uVar9 = 0;
    iVar14 = iVar14 + 1;
    piVar11 = piVar11 + 1;
  } while (iVar14 < param_2);
  local_520 = (undefined *)((longlong)param_3 - (longlong)local_4c0);
  lVar21 = (longlong)iVar19;
  uVar23 = uVar9;
  local_530 = lVar21;
  do {
    local_4e8 = _DAT_140278d30;
    fStack_4e4 = _UNK_140278d34;
    fStack_4e0 = _UNK_140278d38;
    uStack_4dc = _UNK_140278d3c;
    local_4c8 = 0x3f800000;
    lVar10 = (longlong)*(int *)((longlong)(local_4c0 + uVar23) + (longlong)local_520);
    local_4d8 = _DAT_140278d30;
    fStack_4d4 = _UNK_140278d34;
    fStack_4d0 = _UNK_140278d38;
    uStack_4cc = _UNK_140278d3c;
    fVar26 = (float)(&DAT_183ebfd94)[lVar10 * 0x16f1];
    fVar27 = (float)(&DAT_183ebfd98)[lVar10 * 0x16f1];
    fVar28 = (float)(&DAT_183ebfd9c)[lVar10 * 0x16f1];
    FUN_14007b2a0(&local_4e8,&uStack_4dc,
                  (float)((double)(float)(&DAT_183ebfd90)[lVar10 * 0x16f1] - dVar5));
    iVar12 = local_548;
    fVar26 = fVar26 - local_4e8 * fVar4;
    fVar27 = fVar27 - fStack_4e4 * fVar4;
    local_540 = CONCAT44(fVar27,fVar26);
    fVar28 = fVar28 - fStack_4e0 * fVar4;
    iVar19 = (int)uVar9;
    local_538 = fVar28;
    if (iVar19 == 0) {
      DAT_1b4657d8c = FUN_140054130(local_548,&local_540,0,&local_4e8);
      fVar24 = local_4e8 * fVar3;
      fVar25 = fStack_4e4 * fVar3;
      local_508[uVar23] = 0;
      local_540 = CONCAT44(fVar25 + fVar27,fVar24 + fVar26);
      local_538 = fStack_4e0 * fVar3 + fVar28;
    }
    else {
      local_508[uVar23] = 0;
      if ((iVar19 != 0) && ((longlong)uVar23 <= lVar21)) {
        iVar12 = local_4c0[uVar23];
        iVar17 = iVar12 + -500;
        local_508[uVar23] = iVar17;
        if (iVar17 < 5000) {
LAB_14005b223:
          if (2999 < iVar17) goto LAB_14005b22b;
LAB_14005b23f:
          iVar12 = local_548;
          if (999 < iVar17) goto LAB_14005b247;
        }
        else {
          uVar9 = FUN_14023b1b0();
          if ((uVar9 & 1) == 0) {
            iVar17 = iVar12 + -0x9c4;
            local_508[uVar23] = iVar17;
            goto LAB_14005b223;
          }
LAB_14005b22b:
          uVar9 = FUN_14023b1b0();
          if ((uVar9 & 1) == 0) {
            iVar17 = iVar17 + -1000;
            local_508[uVar23] = iVar17;
            goto LAB_14005b23f;
          }
LAB_14005b247:
          uVar9 = FUN_14023b1b0();
          if ((uVar9 & 1) == 0) {
            iVar17 = iVar17 + -500;
            local_508[uVar23] = iVar17;
            iVar12 = local_548;
            if (iVar17 < 1000) goto joined_r0x00014005b27a;
          }
          uVar9 = FUN_14023b1b0();
          iVar12 = local_548;
          if ((uVar9 & 3) == 0) {
            iVar17 = iVar17 + -500;
            local_508[uVar23] = iVar17;
          }
        }
joined_r0x00014005b27a:
        while (local_548 = iVar12, 0 < iVar17) {
          iVar12 = FUN_140054130(0x10,&local_540,0,&local_4e8);
          if (iVar12 != -1) {
            lVar21 = 4;
            do {
              if (0 < iVar17) {
                iVar14 = FUN_140054130(0x12,&local_540);
                *(undefined4 *)(&DAT_182bbb424 + (longlong)iVar14 * 0x1b80) = 0;
                *(undefined4 *)(&DAT_182bbb428 + (longlong)iVar14 * 0x1b80) = 5;
                do {
                  iVar17 = iVar17 + -100;
                  if (iVar17 < 1) break;
                  iVar8 = FUN_1400c3ab0(iVar14,0,5);
                } while (iVar8 != 0);
                FUN_1400e35d0(iVar12,iVar14);
              }
              lVar21 = lVar21 + -1;
            } while (lVar21 != 0);
          }
          fVar26 = fVar26 + local_4e8 * fVar3;
          fVar27 = fVar27 + fStack_4e4 * fVar3;
          fVar28 = fVar28 + fStack_4e0 * fVar3;
          local_540 = CONCAT44(fVar27,fVar26);
          lVar21 = local_530;
          iVar12 = local_548;
          local_538 = fVar28;
        }
      }
    }
    uVar9 = (ulonglong)(iVar19 + 1U);
    uVar23 = uVar23 + 1;
  } while ((int)(iVar19 + 1U) < local_524);
  local_508[0] = local_508[1];
  if (local_508[1] < 5000) {
LAB_14005b3db:
    local_508[0] = local_508[1];
    if (2999 < local_508[1]) goto LAB_14005b3e3;
LAB_14005b3f5:
    iVar19 = local_508[0];
    if (local_508[0] < 1000) goto LAB_14005b42c;
  }
  else {
    uVar9 = FUN_14023b1b0();
    if ((uVar9 & 1) == 0) {
      local_508[1] = local_508[1] + -2000;
      local_508[0] = local_508[1];
      goto LAB_14005b3db;
    }
LAB_14005b3e3:
    uVar9 = FUN_14023b1b0();
    iVar19 = local_508[1];
    if ((uVar9 & 1) == 0) {
      local_508[0] = local_508[1] + -1000;
      goto LAB_14005b3f5;
    }
  }
  bVar6 = FUN_14023b1b0();
  if ((bVar6 & 3) < 3) {
    iVar19 = iVar19 + -500;
    local_508[0] = iVar19;
    if (iVar19 < 1000) goto LAB_14005b42c;
  }
  uVar9 = FUN_14023b1b0();
  if ((uVar9 & 1) == 0) {
    local_508[0] = iVar19 + -500;
  }
LAB_14005b42c:
  fVar4 = DAT_140278b18;
  fVar3 = DAT_140278064;
  uVar23 = 0;
  local_520 = &DAT_182a7e1b0 + (longlong)iVar12 * 0x13d0;
  local_548 = local_528 / 0xe10;
  local_540 = (longlong)local_518 - (longlong)local_4c0;
  uVar9 = uVar23;
  do {
    uVar15 = 0;
    local_510 = *(int *)((longlong)(local_4c0 + uVar9) + local_540);
    lVar21 = (longlong)local_510;
    piVar11 = &DAT_183ec0358 + lVar21 * 0x16f1;
    uVar22 = uVar15;
    do {
      uVar7 = (uint)uVar22;
      if (piVar11[-0x117] == 0) break;
      if (*piVar11 == 0) {
        uVar15 = uVar15 + 1;
        uVar7 = uVar7 + 1;
        break;
      }
      if (piVar11[0x117] == 0) {
        uVar15 = uVar15 + 2;
        uVar7 = uVar7 + 2;
        break;
      }
      if (piVar11[0x22e] == 0) {
        uVar15 = uVar15 + 3;
        uVar7 = uVar7 + 3;
        break;
      }
      uVar15 = uVar15 + 4;
      piVar11 = piVar11 + 0x45c;
      uVar7 = uVar7 + 4;
      uVar22 = (ulonglong)uVar7;
    } while ((longlong)uVar15 < 0x10);
    lVar10 = (longlong)(int)uVar7 * 0x45c + lVar21 * 0x5bc4;
    FUN_1401fcd30(&DAT_183ebfefc + lVar21 * 0x16f1 + (longlong)(int)uVar7 * 0x117,0,0x45c);
    lVar20 = local_530;
    iVar19 = DAT_1b4657c80;
    iVar17 = uVar7 + 1;
    lVar16 = uVar15 * 0x45c + lVar21 * 0x5bc4;
    puVar13 = &DAT_183ebff58 + lVar10;
    iVar12 = local_4c0[uVar9];
    (&DAT_183ebfefc)[lVar21 * 0x16f1 + uVar15 * 0x117] = 1;
    (&DAT_183ebff04)[lVar21 * 0x16f1 + uVar15 * 0x117] = iVar19;
    iVar19 = (int)uVar23;
    if (iVar19 == 0) {
      iVar14 = local_508[uVar9];
      (&DAT_183ebff08)[lVar21 * 0x16f1 + uVar15 * 0x117] = 2;
      local_560 = (undefined *)CONCAT44(local_560._4_4_,iVar12);
      local_568 = local_520;
      FUN_140158ab0(puVar13,
                    "Transaction(%d):\nWe have acquired a disk that has information that can be\ntraded for money with another corporation.\nThe corporation expects at least $%d from this deal.\n\n%s value:               $%d Bonus"
                    ,iVar17,iVar14);
      lVar20 = local_530;
    }
    else if (local_530 < (longlong)uVar9) {
      (&DAT_183ebff08)[lVar21 * 0x16f1 + uVar15 * 0x117] = 4;
      local_560 = (undefined *)CONCAT44(local_560._4_4_,iVar12);
      local_568 = local_520;
      FUN_140158ab0(puVar13,
                    "Transaction(%d):\nWe have received reports that %s has acquired a disk\ncontaining information that will be beneficial to one of our\nsubsidiaries.  Acquire the disk by any means neccessary.\n\n%s value:               $%d Bonus"
                    ,iVar17,(&PTR_s_Goldmen_Inc_1402b2890)[*local_518]);
    }
    else {
      (&DAT_183ebff08)[lVar21 * 0x16f1 + uVar15 * 0x117] = 3;
      local_560 = local_520;
      local_568 = (undefined *)CONCAT44(local_568._4_4_,local_508[uVar9]);
      local_558 = iVar12;
      FUN_140158ab0(puVar13,
                    "Transaction(%d):\nWe have received reports that %s has acquired a disk\ncontaining information that will be beneficial to one of our\nsubsidiaries.  Negotiate the best terms and execute the deal.\nYou have been provided with $%d.\n\n%s value:               $%d Bonus"
                    ,iVar17,(&PTR_s_Goldmen_Inc_1402b2890)[*local_518]);
    }
    iVar17 = (int)((ulonglong)((longlong)(local_548 / 0x3c) * -0x2aaaaaab) >> 0x20);
    iVar17 = local_548 / 0x3c + ((iVar17 >> 1) - (iVar17 >> 0x1f)) * 0xc;
    if (iVar17 == 0) {
      iVar17 = 0xc;
    }
    iVar14 = (local_548 % 0x3c) / 10;
    local_568 = (undefined *)CONCAT44(local_568._4_4_,(local_548 % 0x3c) % 10);
    FUN_140158ab0(local_498,"\nThis mission expires at %d:%d%d\n\n",iVar17,
                  iVar14 + (iVar14 / 6 + (iVar14 >> 0x1f) +
                           (int)(((longlong)iVar14 / 6 + ((longlong)iVar14 >> 0x3f) & 0xffffffffU)
                                >> 0x1f)) * -6);
    lVar10 = lVar10 + 0x183ebff57;
    do {
      pcVar1 = (char *)(lVar10 + 1);
      lVar10 = lVar10 + 1;
    } while (*pcVar1 != '\0');
    lVar18 = 0;
    do {
      cVar2 = local_498[lVar18];
      *(char *)(lVar10 + lVar18) = cVar2;
      lVar18 = lVar18 + 1;
    } while (cVar2 != '\0');
    FUN_140051bd0(local_510,uVar7);
    lVar10 = (longlong)DAT_1b4657d8c;
    (&DAT_183ebff0c)[lVar21 * 0x16f1 + uVar15 * 0x117] = DAT_1b4657d8c;
    *(undefined4 *)(&DAT_183ebff44 + lVar16) = 0xffffffff;
    *(undefined4 *)(&DAT_183ebff38 + lVar16) = (&DAT_182bbb194)[lVar10 * 0x6e0];
    if (iVar19 == 0) {
      (&DAT_183ebff3c)[lVar21 * 0x16f1 + uVar15 * 0x117] = 0;
      fVar26 = 0.0;
      (&DAT_183ebff50)[lVar21 * 0x16f1 + uVar15 * 0x117] = 0;
    }
    else {
      (&DAT_183ebff3c)[lVar21 * 0x16f1 + uVar15 * 0x117] = iVar12;
      fVar26 = (float)iVar12 * fVar4;
      (&DAT_183ebff50)[lVar21 * 0x16f1 + uVar15 * 0x117] = (float)iVar12 * fVar3;
    }
    *(float *)(lVar16 + 0x183ebff54) = fVar26;
    uVar23 = (ulonglong)(iVar19 + 1U);
    (&DAT_183ebff40)[lVar21 * 0x16f1 + uVar15 * 0x117] = local_528;
    *(int *)(&DAT_183ebff18 + lVar16) = *local_518;
    piVar11 = local_508 + uVar9;
    uVar9 = uVar9 + 1;
    (&DAT_183ebff48)[lVar21 * 0x16f1 + uVar15 * 0x117] = *piVar11;
    local_530 = lVar20;
    if (local_524 <= (int)(iVar19 + 1U)) {
      DAT_1b4657c80 = DAT_1b4657c80 + 1;
      return;
    }
  } while( true );
}



===== FUN_140110d00 @ 140110d00 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140110d00(int param_1,int param_2)

{
  float fVar1;
  float fVar2;
  float fVar3;
  undefined4 uVar4;
  bool bVar5;
  float fVar6;
  float fVar7;
  float fVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  longlong lVar14;
  float *pfVar15;
  longlong lVar16;
  uint *puVar17;
  int *piVar18;
  longlong lVar19;
  ulonglong uVar20;
  int iVar21;
  undefined4 *puVar22;
  int iVar23;
  uint uVar24;
  undefined *puVar25;
  uint uVar26;
  int iVar27;
  ulonglong uVar28;
  longlong lVar29;
  ulonglong uVar30;
  longlong lVar31;
  longlong lVar32;
  longlong lVar33;
  undefined1 *puVar34;
  uint uVar35;
  int iVar36;
  ulonglong uVar37;
  longlong lVar38;
  float fVar39;
  float fVar40;
  float fVar41;
  float fVar42;
  float fVar43;
  float fVar44;
  float fVar45;
  float fVar46;
  float fVar47;
  float fVar48;
  uint local_148;
  byte *local_138;
  undefined8 local_130;
  float local_128;
  ulonglong local_120;
  ulonglong local_118;
  longlong local_110;
  int *local_108;
  uint *local_100;
  longlong local_f8;
  longlong local_f0;
  uint *local_e8;
  longlong local_e0;
  
  lVar32 = (longlong)param_1;
  local_120 = CONCAT44(local_120._4_4_,param_1);
  _DAT_16b2a2248 = 0;
  if (DAT_165d84960 == 0) {
    DAT_165d84960 = 4;
  }
  DAT_165d84970 = 1 << ((char)DAT_165d84960 - 1U & 0x1f);
  if (DAT_165d84964 == 0) {
    DAT_165d84964 = 8;
  }
  DAT_165d84974 = 1 << ((char)DAT_165d84964 - 1U & 0x1f);
  FUN_140115d90(&DAT_165d84960,4);
  FUN_140115d90(&DAT_165d84964,4);
  FUN_140115d90(&DAT_16b2a2248,1);
  FUN_140115d90(&DAT_16b2a224c,1);
  uVar9 = DAT_1ad04b20c & 0xff;
  if (DAT_18539d3fc < 0x10000) {
    if (0 < (int)DAT_18539d400) {
      DAT_18539d3fc = DAT_18539d3fc + 1;
      DAT_18539d400 = 0;
    }
    *(uint *)(&DAT_18539d404 + DAT_18539d3fc) = DAT_1ad04b20c;
    DAT_18539d3fc = DAT_18539d3fc + 4;
  }
  iVar21 = DAT_18539d3fc;
  local_148 = 0xffffffff;
  if (param_2 == -1) {
LAB_140110eba:
    lVar16 = lVar32 * 0x2e1e0;
    fVar46 = *(float *)(&DAT_1a8e5d7c0 + lVar16);
    fVar48 = *(float *)(&DAT_1a8e5d7c4 + lVar16);
    local_130 = *(longlong *)(&DAT_1a8e5d7c0 + lVar16);
    local_128 = *(float *)(&DAT_1a8e5d7c8 + lVar16);
    if ((DAT_183ebfaac == 4) &&
       (fVar45 = DAT_16b2a2ec8, fVar47 = DAT_16b2a2ecc, fVar39 = DAT_16b2a2ed0,
       *(int *)(&DAT_151620c94 + (longlong)param_2 * 0x3834) == 0)) goto LAB_140110f44;
  }
  else {
    uVar24 = (&DAT_151620cfc)[(longlong)param_2 * 0xe0d];
    lVar16 = (longlong)(int)uVar24;
    if ((uVar24 == 0xffffffff) || ((int)(&DAT_18329e344)[lVar16 * 0x1bfe] < 1)) goto LAB_140110eba;
    fVar45 = (float)(&DAT_18329e388)[lVar16 * 0x1bfe];
    fVar47 = (float)(&DAT_18329e38c)[lVar16 * 0x1bfe];
    fVar39 = (float)(&DAT_18329e390)[lVar16 * 0x1bfe];
    local_148 = uVar24;
LAB_140110f44:
    local_130 = CONCAT44(fVar47,fVar45);
    fVar46 = fVar45;
    fVar48 = fVar47;
    local_128 = fVar39;
  }
  fVar45 = local_128;
  local_110 = lVar32;
  FUN_140105c20(param_1,&local_130);
  lVar16 = lVar32 * 0x2e1e0;
  uVar26 = 0xb;
  uVar24 = (&DAT_1a8e617e0)[lVar32 * 0xb878];
  uVar35 = *(int *)(&DAT_1a8e617d8 + lVar32 * 0x5c3c) - uVar24;
  if (*(int *)(&DAT_1a8e617d8 + lVar32 * 0x5c3c) < (int)uVar24) {
    uVar35 = uVar35 + 0x800;
  }
  uVar37 = (ulonglong)uVar35;
  if (0x7ff < (int)uVar35) {
    uVar37 = 0x7ff;
  }
  if (iVar21 < 0x10000) {
    uVar35 = (uint)uVar37 & 0x7ff;
    do {
      (&DAT_18539d404)[iVar21] =
           (&DAT_18539d404)[iVar21] &
           ~(('\x01' << ((byte)uVar26 & 0x1f)) + -1 << ((byte)DAT_18539d400 & 0x1f));
      (&DAT_18539d404)[DAT_18539d3fc] =
           (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar35 << ((byte)DAT_18539d400 & 0x1f);
      uVar10 = 8 - DAT_18539d400;
      if (uVar26 < uVar10) {
        DAT_18539d400 = DAT_18539d400 + uVar26;
        break;
      }
      if (uVar26 == uVar10) {
        DAT_18539d3fc = DAT_18539d3fc + 1;
        DAT_18539d400 = 0;
        break;
      }
      iVar21 = DAT_18539d3fc + 1;
      uVar35 = uVar35 >> ((byte)uVar10 & 0x1f);
      uVar26 = uVar26 - uVar10;
      DAT_18539d400 = 0;
      DAT_18539d3fc = iVar21;
    } while (0 < (int)uVar26);
  }
  local_f8 = lVar16;
  FUN_140115d90(&DAT_1a8e617e0 + lVar32 * 0xb878,0xb);
  local_108 = (int *)CONCAT44(local_108._4_4_,0x10);
  if (0 < (int)(uint)uVar37) {
    do {
      lVar19 = lVar16 + (longlong)(int)uVar24 * 0x14;
      FUN_140115d90(&DAT_1a8e617e8 + lVar19,10);
      FUN_140115d90(&DAT_1a8e617e4 + lVar19,2);
      FUN_140115d90(&DAT_1a8e617ec + lVar19,3);
      FUN_140115d90(&DAT_1a8e617f0 + lVar19,10);
      FUN_140115d90(&DAT_1a8e617f4 + lVar19,0x10);
      uVar24 = uVar24 + 1 & 0x7ff;
      uVar37 = uVar37 - 1;
    } while (uVar37 != 0);
  }
  iVar21 = 0x10;
  local_138 = &DAT_160fb67b0;
  FUN_1401fcd30(&DAT_160fb67b0,0,0x1000);
  lVar19 = local_f8;
  fVar47 = DAT_1402788d8;
  lVar29 = 0x80;
  local_e8 = (uint *)(&DAT_1a8e5d7dc + lVar16);
  iVar23 = 1;
  puVar17 = local_e8;
  do {
    if ((puVar17[-1] != 0) && (*puVar17 == 0)) {
      lVar16 = (longlong)(int)puVar17[1];
      fVar39 = SQRT((fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) *
                    (fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) +
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) *
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) +
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]) *
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]));
      if ((&DAT_18329e330)[lVar16 * 0x1bfe] != -1) {
        fVar39 = fVar39 + fVar39;
      }
      iVar27 = (int)(fVar47 - fVar39);
      if ((int)(fVar47 - fVar39) < 0x10) {
        iVar27 = iVar21;
      }
      if (puVar17[1] == local_148) {
        iVar27 = 0x10000;
      }
      if (lVar32 == 0xff) {
        iVar27 = iVar23;
      }
      puVar17[2] = puVar17[2] + iVar27;
    }
    if ((puVar17[3] != 0) && (puVar17[4] == 0)) {
      lVar16 = (longlong)(int)puVar17[5];
      fVar39 = SQRT((fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) *
                    (fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) +
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) *
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) +
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]) *
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]));
      if ((&DAT_18329e330)[lVar16 * 0x1bfe] != -1) {
        fVar39 = fVar39 + fVar39;
      }
      iVar27 = (int)(fVar47 - fVar39);
      if ((int)(fVar47 - fVar39) < 0x10) {
        iVar27 = iVar21;
      }
      if (puVar17[5] == local_148) {
        iVar27 = 0x10000;
      }
      if (lVar32 == 0xff) {
        iVar27 = iVar23;
      }
      puVar17[6] = puVar17[6] + iVar27;
    }
    if ((puVar17[7] != 0) && (puVar17[8] == 0)) {
      lVar16 = (longlong)(int)puVar17[9];
      fVar39 = SQRT((fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) *
                    (fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) +
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) *
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) +
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]) *
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]));
      if ((&DAT_18329e330)[lVar16 * 0x1bfe] != -1) {
        fVar39 = fVar39 + fVar39;
      }
      iVar27 = (int)(fVar47 - fVar39);
      if ((int)(fVar47 - fVar39) < 0x10) {
        iVar27 = iVar21;
      }
      if (puVar17[9] == local_148) {
        iVar27 = 0x10000;
      }
      if (lVar32 == 0xff) {
        iVar27 = iVar23;
      }
      puVar17[10] = puVar17[10] + iVar27;
    }
    if ((puVar17[0xb] != 0) && (puVar17[0xc] == 0)) {
      lVar16 = (longlong)(int)puVar17[0xd];
      fVar39 = SQRT((fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) *
                    (fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) +
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) *
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) +
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]) *
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]));
      if ((&DAT_18329e330)[lVar16 * 0x1bfe] != -1) {
        fVar39 = fVar39 + fVar39;
      }
      iVar27 = (int)(fVar47 - fVar39);
      if ((int)(fVar47 - fVar39) < 0x10) {
        iVar27 = iVar21;
      }
      if (puVar17[0xd] == local_148) {
        iVar27 = 0x10000;
      }
      if (lVar32 == 0xff) {
        iVar27 = iVar23;
      }
      puVar17[0xe] = puVar17[0xe] + iVar27;
    }
    if ((puVar17[0xf] != 0) && (puVar17[0x10] == 0)) {
      lVar16 = (longlong)(int)puVar17[0x11];
      fVar39 = SQRT((fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) *
                    (fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) +
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) *
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) +
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]) *
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]));
      if ((&DAT_18329e330)[lVar16 * 0x1bfe] != -1) {
        fVar39 = fVar39 + fVar39;
      }
      iVar27 = (int)(fVar47 - fVar39);
      if ((int)(fVar47 - fVar39) < 0x10) {
        iVar27 = iVar21;
      }
      if (puVar17[0x11] == local_148) {
        iVar27 = 0x10000;
      }
      if (lVar32 == 0xff) {
        iVar27 = iVar23;
      }
      puVar17[0x12] = puVar17[0x12] + iVar27;
    }
    if ((puVar17[0x13] != 0) && (puVar17[0x14] == 0)) {
      lVar16 = (longlong)(int)puVar17[0x15];
      fVar39 = SQRT((fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) *
                    (fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) +
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) *
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) +
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]) *
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]));
      if ((&DAT_18329e330)[lVar16 * 0x1bfe] != -1) {
        fVar39 = fVar39 + fVar39;
      }
      iVar27 = (int)(fVar47 - fVar39);
      if ((int)(fVar47 - fVar39) < 0x10) {
        iVar27 = iVar21;
      }
      if (puVar17[0x15] == local_148) {
        iVar27 = 0x10000;
      }
      if (lVar32 == 0xff) {
        iVar27 = iVar23;
      }
      puVar17[0x16] = puVar17[0x16] + iVar27;
    }
    if ((puVar17[0x17] != 0) && (puVar17[0x18] == 0)) {
      lVar16 = (longlong)(int)puVar17[0x19];
      fVar39 = SQRT((fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) *
                    (fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) +
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) *
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) +
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]) *
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]));
      if ((&DAT_18329e330)[lVar16 * 0x1bfe] != -1) {
        fVar39 = fVar39 + fVar39;
      }
      iVar27 = (int)(fVar47 - fVar39);
      if ((int)(fVar47 - fVar39) < 0x10) {
        iVar27 = iVar21;
      }
      if (puVar17[0x19] == local_148) {
        iVar27 = 0x10000;
      }
      if (lVar32 == 0xff) {
        iVar27 = iVar23;
      }
      puVar17[0x1a] = puVar17[0x1a] + iVar27;
    }
    if ((puVar17[0x1b] != 0) && (puVar17[0x1c] == 0)) {
      lVar16 = (longlong)(int)puVar17[0x1d];
      fVar39 = SQRT((fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) *
                    (fVar48 - (float)(&DAT_18329e38c)[lVar16 * 0x1bfe]) +
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) *
                    (fVar46 - (float)(&DAT_18329e388)[lVar16 * 0x1bfe]) +
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]) *
                    (fVar45 - (float)(&DAT_18329e390)[lVar16 * 0x1bfe]));
      if ((&DAT_18329e330)[lVar16 * 0x1bfe] != -1) {
        fVar39 = fVar39 + fVar39;
      }
      iVar27 = (int)(fVar47 - fVar39);
      if ((int)(fVar47 - fVar39) < 0x10) {
        iVar27 = iVar21;
      }
      if (puVar17[0x1d] == local_148) {
        iVar27 = 0x10000;
      }
      if (lVar32 == 0xff) {
        iVar27 = iVar23;
      }
      puVar17[0x1e] = puVar17[0x1e] + iVar27;
    }
    puVar17 = puVar17 + 0x20;
    lVar29 = lVar29 + -1;
  } while (lVar29 != 0);
  iVar27 = 0;
  iVar21 = (int)local_120;
  DAT_1a85c6ba0 = 0;
  local_118 = 0x400;
  puVar17 = local_e8;
  iVar23 = iVar27;
  do {
    if ((puVar17[-1] != 0) && (*puVar17 == 0)) {
      (&DAT_1a87c6ba4)[iVar23] = puVar17[2];
      (&DAT_1a88c6ba4)[(int)DAT_1a85c6ba0] = iVar27;
      DAT_1a85c6ba0 = DAT_1a85c6ba0 + 1;
      iVar23 = DAT_1a85c6ba0;
    }
    iVar27 = iVar27 + 1;
    puVar17 = puVar17 + 4;
  } while (iVar27 < 0x400);
  local_100 = local_e8;
  FUN_14007d710();
  iVar23 = 10;
  if (iVar21 == 0xff) {
    iVar23 = DAT_1a85c6ba0;
  }
  iVar27 = DAT_1a85c6ba0 + -1;
  lVar16 = (longlong)iVar27;
  if (-1 < iVar27) {
    do {
      if ((int)(DAT_1a85c6ba0 - iVar23) <= iVar27) {
        iVar36 = (&DAT_1a88c6ba4)[(int)(&DAT_1a85c6ba4)[lVar16]];
        *(undefined4 *)(&DAT_160fb67b0 + (longlong)iVar36 * 4) = 1;
        *(undefined4 *)(&DAT_1a8e5d7e4 + (lVar32 * 0x2e1e + (longlong)iVar36) * 0x10) = 0;
      }
      iVar27 = iVar27 + -1;
      lVar16 = lVar16 + -1;
      lVar19 = local_f8;
    } while (-1 < lVar16);
  }
  fVar39 = DAT_140278688;
  local_f0 = 0x400;
  do {
    if ((local_e8[-1] != 0) && (*local_e8 == 1)) {
      lVar16 = (longlong)(int)local_e8[1];
      local_130 = lVar16 * 0x1b80;
      fVar40 = SQRT((fVar48 - (float)(&DAT_182bbb1e0)[lVar16 * 0x6e0]) *
                    (fVar48 - (float)(&DAT_182bbb1e0)[lVar16 * 0x6e0]) +
                    (fVar46 - (float)(&DAT_182bbb1dc)[lVar16 * 0x6e0]) *
                    (fVar46 - (float)(&DAT_182bbb1dc)[lVar16 * 0x6e0]) +
                    (fVar45 - (float)(&DAT_182bbb1e4)[lVar16 * 0x6e0]) *
                    (fVar45 - (float)(&DAT_182bbb1e4)[lVar16 * 0x6e0]));
      if ((fVar40 < fVar39) || (iVar21 == 0xff)) {
        uVar24 = 1;
        lVar31 = lVar16 * 0x6e0;
        lVar29 = 2;
        lVar33 = 8;
        puVar22 = (undefined4 *)(&DAT_182bbb2fc + lVar16 * 0x1b80);
        do {
          lVar14 = lVar29 + -2 >> 5;
          if ((*(uint *)(&DAT_182bbb2f0 + (lVar31 + lVar14) * 4) & uVar24) != 0) {
            lVar14 = lVar14 + lVar16 * 5 + lVar32 * 0xb878;
            if ((*(uint *)((longlong)&DAT_1a8e3f7cc + lVar14 * 4) & uVar24) == 0) {
              *(undefined4 *)
               (&DAT_1a8e6b7f0 +
               ((longlong)*(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + lVar32 * 0xb878) * 4) =
                   puVar22[-1];
              *(uint *)((longlong)&DAT_1a8e6b7e4 + lVar19) =
                   *(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + 1U & 0xff;
              puVar17 = (uint *)((longlong)&DAT_1a8e3f7cc + lVar14 * 4);
              *puVar17 = *puVar17 | uVar24;
            }
          }
          lVar14 = lVar29 + -1 >> 5;
          uVar35 = uVar24 << 1;
          if ((*(uint *)(&DAT_182bbb2f0 + (lVar31 + lVar14) * 4) & uVar35) != 0) {
            lVar38 = lVar32 * 0xb878;
            if ((*(uint *)((longlong)&DAT_1a8e3f7cc + (lVar16 * 5 + lVar14 + lVar38) * 4) & uVar35)
                == 0) {
              *(undefined4 *)
               (&DAT_1a8e6b7f0 + (*(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + lVar38) * 4) =
                   *puVar22;
              *(uint *)((longlong)&DAT_1a8e6b7e4 + lVar19) =
                   *(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + 1U & 0xff;
              puVar17 = (uint *)((longlong)&DAT_1a8e3f7cc + (lVar16 * 5 + lVar14 + lVar38) * 4);
              *puVar17 = *puVar17 | uVar35;
            }
          }
          lVar14 = lVar29 >> 5;
          uVar35 = uVar24 << 2;
          if ((*(uint *)(&DAT_182bbb2f0 + (lVar31 + lVar14) * 4) & uVar35) != 0) {
            lVar38 = lVar32 * 0xb878;
            if ((*(uint *)((longlong)&DAT_1a8e3f7cc + (lVar16 * 5 + lVar38 + lVar14) * 4) & uVar35)
                == 0) {
              *(undefined4 *)
               (&DAT_1a8e6b7f0 + (*(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + lVar38) * 4) =
                   puVar22[1];
              *(uint *)((longlong)&DAT_1a8e6b7e4 + lVar19) =
                   *(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + 1U & 0xff;
              puVar17 = (uint *)((longlong)&DAT_1a8e3f7cc + (lVar16 * 5 + lVar38 + lVar14) * 4);
              *puVar17 = *puVar17 | uVar35;
            }
          }
          lVar14 = lVar29 + 1 >> 5;
          uVar35 = uVar24 << 3;
          if ((*(uint *)(&DAT_182bbb2f0 + (lVar31 + lVar14) * 4) & uVar35) != 0) {
            lVar38 = lVar32 * 0xb878;
            if ((*(uint *)((longlong)&DAT_1a8e3f7cc + (lVar16 * 5 + lVar14 + lVar38) * 4) & uVar35)
                == 0) {
              *(undefined4 *)
               (&DAT_1a8e6b7f0 + (*(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + lVar38) * 4) =
                   puVar22[2];
              *(uint *)((longlong)&DAT_1a8e6b7e4 + lVar19) =
                   *(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + 1U & 0xff;
              puVar17 = (uint *)((longlong)&DAT_1a8e3f7cc + (lVar16 * 5 + lVar14 + lVar38) * 4);
              *puVar17 = *puVar17 | uVar35;
            }
          }
          lVar14 = lVar29 + 2 >> 5;
          uVar35 = uVar24 << 4;
          if ((*(uint *)(&DAT_182bbb2f0 + (lVar31 + lVar14) * 4) & uVar35) != 0) {
            lVar38 = lVar32 * 0xb878;
            if ((*(uint *)((longlong)&DAT_1a8e3f7cc + (lVar16 * 5 + lVar14 + lVar38) * 4) & uVar35)
                == 0) {
              *(undefined4 *)
               (&DAT_1a8e6b7f0 + (*(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + lVar38) * 4) =
                   puVar22[3];
              *(uint *)((longlong)&DAT_1a8e6b7e4 + lVar19) =
                   *(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + 1U & 0xff;
              puVar17 = (uint *)((longlong)&DAT_1a8e3f7cc + (lVar16 * 5 + lVar14 + lVar38) * 4);
              *puVar17 = *puVar17 | uVar35;
            }
          }
          lVar14 = lVar29 + 3 >> 5;
          uVar35 = uVar24 << 5;
          if ((*(uint *)(&DAT_182bbb2f0 + (lVar31 + lVar14) * 4) & uVar35) != 0) {
            lVar38 = lVar32 * 0xb878;
            if ((*(uint *)((longlong)&DAT_1a8e3f7cc + (lVar16 * 5 + lVar14 + lVar38) * 4) & uVar35)
                == 0) {
              *(undefined4 *)
               (&DAT_1a8e6b7f0 + (*(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + lVar38) * 4) =
                   puVar22[4];
              *(uint *)((longlong)&DAT_1a8e6b7e4 + lVar19) =
                   *(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + 1U & 0xff;
              puVar17 = (uint *)((longlong)&DAT_1a8e3f7cc + (lVar16 * 5 + lVar14 + lVar38) * 4);
              *puVar17 = *puVar17 | uVar35;
            }
          }
          lVar14 = lVar29 + 4 >> 5;
          uVar35 = uVar24 << 6;
          if ((*(uint *)(&DAT_182bbb2f0 + (lVar31 + lVar14) * 4) & uVar35) != 0) {
            lVar38 = lVar32 * 0xb878;
            if ((*(uint *)((longlong)&DAT_1a8e3f7cc + (lVar16 * 5 + lVar14 + lVar38) * 4) & uVar35)
                == 0) {
              *(undefined4 *)
               (&DAT_1a8e6b7f0 + (*(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + lVar38) * 4) =
                   puVar22[5];
              *(uint *)((longlong)&DAT_1a8e6b7e4 + lVar19) =
                   *(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + 1U & 0xff;
              puVar17 = (uint *)((longlong)&DAT_1a8e3f7cc + (lVar16 * 5 + lVar14 + lVar38) * 4);
              *puVar17 = *puVar17 | uVar35;
            }
          }
          lVar14 = lVar29 + 5 >> 5;
          uVar35 = uVar24 << 7;
          if ((*(uint *)(&DAT_182bbb2f0 + (lVar31 + lVar14) * 4) & uVar35) != 0) {
            lVar38 = lVar32 * 0xb878;
            if ((*(uint *)((longlong)&DAT_1a8e3f7cc + (lVar16 * 5 + lVar14 + lVar38) * 4) & uVar35)
                == 0) {
              *(undefined4 *)
               (&DAT_1a8e6b7f0 + (*(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + lVar38) * 4) =
                   puVar22[6];
              *(uint *)((longlong)&DAT_1a8e6b7e4 + lVar19) =
                   *(int *)((longlong)&DAT_1a8e6b7e4 + lVar19) + 1U & 0xff;
              puVar17 = (uint *)((longlong)&DAT_1a8e3f7cc + (lVar16 * 5 + lVar14 + lVar38) * 4);
              *puVar17 = *puVar17 | uVar35;
            }
          }
          lVar29 = lVar29 + 8;
          uVar24 = uVar24 << 8 | uVar24 >> 0x18;
          puVar22 = puVar22 + 8;
          lVar33 = lVar33 + -1;
        } while (lVar33 != 0);
        iVar21 = (int)local_120;
      }
      iVar23 = (int)(fVar47 - fVar40);
      if (iVar23 < 0x10) {
        iVar23 = 0x10;
      }
      if ((&DAT_182bbb188)[lVar16 * 0x6e0] != 0) {
        iVar23 = 0x10;
      }
      if ((&DAT_182bbb1a4)[lVar16 * 0x6e0] != 0xffffffff) {
        if ((&DAT_182bbb1a4)[lVar16 * 0x6e0] == local_148) {
          iVar23 = 0x10000;
        }
        if (2 < (int)(&DAT_182bbb1ac)[lVar16 * 0x6e0]) {
          iVar23 = 0x10;
        }
      }
      iVar27 = iVar23 + 0x100;
      if (*(int *)((longlong)&DAT_1a8e3f7c0 + lVar19 + lVar16 * 0x14) == (&DAT_18329b1e0)[lVar16]) {
        iVar27 = iVar23;
      }
      if (iVar21 == 0xff) {
        iVar27 = 1;
      }
      local_e8[2] = local_e8[2] + iVar27;
    }
    local_e8 = local_e8 + 4;
    local_f0 = local_f0 + -1;
  } while (local_f0 != 0);
  uVar28 = 0;
  uVar24 = 0;
  DAT_1a85c6ba0 = 0;
  uVar37 = uVar28;
  puVar17 = local_100;
  uVar30 = uVar28;
  do {
    if ((puVar17[-1] != 0) && (*puVar17 == 1)) {
      (&DAT_1a87c6ba4)[(int)uVar37] = puVar17[2];
      (&DAT_1a88c6ba4)[(int)DAT_1a85c6ba0] = (int)uVar30;
      DAT_1a85c6ba0 = DAT_1a85c6ba0 + 1;
      uVar37 = (ulonglong)DAT_1a85c6ba0;
    }
    uVar35 = (int)uVar30 + 1;
    uVar30 = (ulonglong)uVar35;
    puVar17 = puVar17 + 4;
  } while ((int)uVar35 < 0x400);
  FUN_14007d710();
  uVar35 = 0x20;
  if (iVar21 == 0xff) {
    uVar35 = DAT_1a85c6ba0;
  }
  iVar23 = DAT_1a85c6ba0 - 1;
  lVar16 = (longlong)iVar23;
  if (-1 < iVar23) {
    do {
      if ((int)(DAT_1a85c6ba0 - uVar35) <= iVar23) {
        iVar27 = (&DAT_1a88c6ba4)[(int)(&DAT_1a85c6ba4)[lVar16]];
        *(undefined4 *)(&DAT_160fb67b0 + (longlong)iVar27 * 4) = 1;
        *(undefined4 *)(&DAT_1a8e5d7e4 + (lVar32 * 0x2e1e + (longlong)iVar27) * 0x10) = 0;
      }
      iVar23 = iVar23 + -1;
      lVar16 = lVar16 + -1;
    } while (-1 < lVar16);
  }
  uVar35 = DAT_140279840;
  fVar8 = DAT_1402788c4;
  fVar42 = DAT_140278878;
  fVar6 = DAT_140278774;
  fVar7 = DAT_1402783f4;
  fVar40 = DAT_14027814c;
  pfVar15 = (float *)&DAT_15f2d9234;
  uVar37 = uVar28;
  do {
    if ((pfVar15[-0xd] != 0.0) && (pfVar15[-0xb] != 4.2039e-45)) {
      fVar44 = (fVar48 - pfVar15[-1]) * (fVar48 - pfVar15[-1]) +
               (fVar46 - pfVar15[-2]) * (fVar46 - pfVar15[-2]) +
               (fVar45 - *pfVar15) * (fVar45 - *pfVar15);
      fVar41 = SQRT(pfVar15[0x16] * pfVar15[0x16] + pfVar15[0x17] * pfVar15[0x17] +
                    pfVar15[0x18] * pfVar15[0x18]);
      if (fVar40 <= fVar41) {
        fVar41 = fVar40;
      }
      iVar23 = (int)(fVar47 - (SQRT(fVar44) /
                              ((float)((uint)pfVar15[0xd74] & uVar35) * fVar39 + fVar7)) /
                              (fVar41 * fVar8 + fVar7));
      if (iVar23 < 0x20) {
        iVar23 = 0x20;
      }
      if (fVar44 < fVar6) {
        iVar23 = 0x400;
      }
      if ((pfVar15[-0xc] == 1.82169e-44) && (fVar44 < fVar42)) {
        iVar23 = 0x400;
      }
      if (lVar32 == 0xff) {
        iVar23 = 1;
      }
      *(int *)(&DAT_1a8e3dbc0 + (lVar32 * 0x5c3c + uVar37) * 8) =
           *(int *)(&DAT_1a8e3dbc0 + (lVar32 * 0x5c3c + uVar37) * 8) + iVar23;
    }
    if ((pfVar15[0x144d] != 0.0) && (pfVar15[0x144f] != 4.2039e-45)) {
      fVar44 = (fVar48 - pfVar15[0x1459]) * (fVar48 - pfVar15[0x1459]) +
               (fVar46 - pfVar15[0x1458]) * (fVar46 - pfVar15[0x1458]) +
               (fVar45 - pfVar15[0x145a]) * (fVar45 - pfVar15[0x145a]);
      fVar41 = SQRT(pfVar15[0x1470] * pfVar15[0x1470] + pfVar15[0x1471] * pfVar15[0x1471] +
                    pfVar15[0x1472] * pfVar15[0x1472]);
      if (fVar40 <= fVar41) {
        fVar41 = fVar40;
      }
      iVar23 = (int)(fVar47 - (SQRT(fVar44) /
                              ((float)((uint)pfVar15[0x21ce] & uVar35) * fVar39 + fVar7)) /
                              (fVar41 * fVar8 + fVar7));
      if (iVar23 < 0x20) {
        iVar23 = 0x20;
      }
      if (fVar44 < fVar6) {
        iVar23 = 0x400;
      }
      if ((pfVar15[0x144e] == 1.82169e-44) && (fVar44 < fVar42)) {
        iVar23 = 0x400;
      }
      if (lVar32 == 0xff) {
        iVar23 = 1;
      }
      *(int *)(&DAT_1a8e3dbc8 + (lVar32 * 0x5c3c + uVar37) * 8) =
           *(int *)(&DAT_1a8e3dbc8 + (lVar32 * 0x5c3c + uVar37) * 8) + iVar23;
    }
    uVar37 = uVar37 + 2;
    pfVar15 = pfVar15 + 0x28b4;
  } while ((longlong)pfVar15 < 0x15f564634);
  piVar18 = &DAT_15f2d9208;
  DAT_1a85c6ba0 = 0;
  uVar37 = uVar28;
  uVar30 = uVar28;
  iVar23 = 2;
  do {
    if ((piVar18[-2] != 0) && (*piVar18 != 3)) {
      (&DAT_1a87c6ba4)[(int)uVar37] =
           *(undefined4 *)(&DAT_1a8e3dbc0 + (lVar32 * 0x5c3c + uVar30) * 8);
      (&DAT_1a88c6ba4)[(int)DAT_1a85c6ba0] = iVar23 + -2;
      DAT_1a85c6ba0 = DAT_1a85c6ba0 + 1;
      uVar37 = (ulonglong)DAT_1a85c6ba0;
    }
    if ((piVar18[0x1458] != 0) && (piVar18[0x145a] != 3)) {
      (&DAT_1a87c6ba4)[(int)uVar37] =
           *(undefined4 *)(&DAT_1a8e3dbc8 + (lVar32 * 0x5c3c + uVar30) * 8);
      (&DAT_1a88c6ba4)[(int)DAT_1a85c6ba0] = iVar23 + -1;
      DAT_1a85c6ba0 = DAT_1a85c6ba0 + 1;
      uVar37 = (ulonglong)DAT_1a85c6ba0;
    }
    if ((piVar18[0x28b2] != 0) && (piVar18[0x28b4] != 3)) {
      (&DAT_1a87c6ba4)[(int)uVar37] =
           *(undefined4 *)(&DAT_1a8e3dbd0 + (lVar32 * 0x5c3c + uVar30) * 8);
      (&DAT_1a88c6ba4)[(int)DAT_1a85c6ba0] = iVar23;
      DAT_1a85c6ba0 = DAT_1a85c6ba0 + 1;
      uVar37 = (ulonglong)DAT_1a85c6ba0;
    }
    if ((piVar18[0x3d0c] != 0) && (piVar18[0x3d0e] != 3)) {
      (&DAT_1a87c6ba4)[(int)uVar37] =
           *(undefined4 *)(&DAT_1a8e3dbd8 + (lVar32 * 0x5c3c + uVar30) * 8);
      (&DAT_1a88c6ba4)[(int)DAT_1a85c6ba0] = iVar23 + 1;
      DAT_1a85c6ba0 = DAT_1a85c6ba0 + 1;
      uVar37 = (ulonglong)DAT_1a85c6ba0;
    }
    if ((piVar18[0x5166] != 0) && (piVar18[0x5168] != 3)) {
      (&DAT_1a87c6ba4)[(int)uVar37] =
           *(undefined4 *)(&DAT_1a8e3dbe0 + (lVar32 * 0x5c3c + uVar30) * 8);
      (&DAT_1a88c6ba4)[(int)DAT_1a85c6ba0] = iVar23 + 2;
      DAT_1a85c6ba0 = DAT_1a85c6ba0 + 1;
      uVar37 = (ulonglong)DAT_1a85c6ba0;
    }
    if ((piVar18[0x65c0] != 0) && (piVar18[0x65c2] != 3)) {
      (&DAT_1a87c6ba4)[(int)uVar37] =
           *(undefined4 *)(&DAT_1a8e3dbe8 + (lVar32 * 0x5c3c + uVar30) * 8);
      (&DAT_1a88c6ba4)[(int)DAT_1a85c6ba0] = iVar23 + 3;
      DAT_1a85c6ba0 = DAT_1a85c6ba0 + 1;
      uVar37 = (ulonglong)DAT_1a85c6ba0;
    }
    if ((piVar18[0x7a1a] != 0) && (piVar18[0x7a1c] != 3)) {
      (&DAT_1a87c6ba4)[(int)uVar37] =
           *(undefined4 *)(&DAT_1a8e3dbf0 + (lVar32 * 0x5c3c + uVar30) * 8);
      (&DAT_1a88c6ba4)[(int)DAT_1a85c6ba0] = iVar23 + 4;
      DAT_1a85c6ba0 = DAT_1a85c6ba0 + 1;
      uVar37 = (ulonglong)DAT_1a85c6ba0;
    }
    if ((piVar18[0x8e74] != 0) && (piVar18[0x8e76] != 3)) {
      (&DAT_1a87c6ba4)[(int)uVar37] =
           *(undefined4 *)(&DAT_1a8e3dbf8 + (lVar32 * 0x5c3c + uVar30) * 8);
      (&DAT_1a88c6ba4)[(int)DAT_1a85c6ba0] = iVar23 + 5;
      DAT_1a85c6ba0 = DAT_1a85c6ba0 + 1;
      uVar37 = (ulonglong)DAT_1a85c6ba0;
    }
    uVar30 = uVar30 + 8;
    piVar18 = piVar18 + 0xa2d0;
    iVar27 = iVar23 + 6;
    iVar23 = iVar23 + 8;
  } while (iVar27 < 0x80);
  FUN_14007d710();
  uVar26 = DAT_1a85c6ba0;
  DAT_160fb5da4 = 0;
  iVar23 = DAT_1a85c6ba0 - 1;
  lVar16 = (longlong)iVar23;
  if (-1 < iVar23) {
    do {
      iVar27 = (&DAT_1a88c6ba4)[(int)(&DAT_1a85c6ba4)[lVar16]];
      lVar19 = (longlong)iVar27;
      iVar36 = (int)uVar28;
      if (lVar32 == 0xff) {
        *(undefined4 *)(&DAT_1abc2d9e0 + lVar19 * 8) = 0;
LAB_14011226d:
        (&DAT_160fb5da8)[(longlong)iVar36 * 2] = iVar27;
        (&DAT_160fb5dac)[(longlong)(int)DAT_160fb5da4 * 2] = 0;
LAB_140112304:
        DAT_160fb5da4 = DAT_160fb5da4 + 1;
        uVar28 = (ulonglong)DAT_160fb5da4;
      }
      else {
        if ((int)(uVar26 - 2) <= iVar23) {
          *(undefined4 *)(&DAT_1a8e3dbc0 + (lVar32 * 0x5c3c + lVar19) * 8) = 0;
          goto LAB_14011226d;
        }
        if ((int)(uVar26 - 8) <= iVar23) {
          (&DAT_160fb5da8)[(longlong)iVar36 * 2] = iVar27;
          lVar29 = (longlong)(int)DAT_160fb5da4;
          *(undefined4 *)(&DAT_1a8e3dbc0 + (lVar32 * 0x5c3c + lVar19) * 8) = 0;
          (&DAT_160fb5dac)[lVar29 * 2] = 1;
          goto LAB_140112304;
        }
        if ((int)(uVar26 - 0x10) <= iVar23) {
          (&DAT_160fb5da8)[(longlong)iVar36 * 2] = iVar27;
          (&DAT_160fb5dac)[(longlong)(int)DAT_160fb5da4 * 2] = 2;
          goto LAB_140112304;
        }
      }
      uVar24 = (uint)uVar28;
      iVar23 = iVar23 + -1;
      lVar16 = lVar16 + -1;
      lVar19 = local_f8;
    } while (-1 < lVar16);
  }
  _DAT_160fb61a8 = 0;
  if (iVar21 != 0xff) {
    iVar23 = (&DAT_1a8e3da6c)[(longlong)iVar21 * 0xb878];
    if (DAT_189c1dc64 < iVar23) {
      if (0x16 < (DAT_189c1dc64 - iVar23) + 0x10000) {
        if (2 < DAT_160fb59a0) {
          DAT_160fb59a0 = 2;
        }
        DAT_160fb5da4 = uVar24;
        if (2 < (int)uVar24) {
          DAT_160fb5da4 = 2;
          uVar24 = DAT_160fb5da4;
        }
      }
    }
    else if (0x16 < DAT_189c1dc64 - iVar23) {
      if (2 < DAT_160fb59a0) {
        DAT_160fb59a0 = 2;
      }
      if (2 < (int)uVar24) {
        DAT_160fb5da4 = 2;
        uVar24 = 2;
      }
    }
  }
  lVar16 = (longlong)iVar21;
  local_e8 = (uint *)(lVar16 * 0x2e1e0);
  uVar26 = (&DAT_1a8e6b7ec)[lVar16 * 0xb878];
  uVar10 = (&DAT_1a8e6b7e4)[lVar16 * 0xb878] - uVar26;
  if ((int)(&DAT_1a8e6b7e4)[lVar16 * 0xb878] < (int)uVar26) {
    uVar10 = uVar10 + 0x100;
  }
  uVar37 = (ulonglong)uVar10;
  if (0xff < (int)uVar10) {
    uVar37 = 0xff;
  }
  uVar10 = 8;
  if (DAT_18539d3fc < 0x10000) {
    uVar30 = uVar37 & 0xff;
    do {
      (&DAT_18539d404)[DAT_18539d3fc] =
           (&DAT_18539d404)[DAT_18539d3fc] &
           ~(('\x01' << ((byte)uVar10 & 0x1f)) + -1 << ((byte)DAT_18539d400 & 0x1f));
      (&DAT_18539d404)[DAT_18539d3fc] =
           (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar30 << ((byte)DAT_18539d400 & 0x1f);
      uVar11 = 8 - DAT_18539d400;
      if (uVar10 < uVar11) {
        DAT_18539d400 = DAT_18539d400 + uVar10;
        break;
      }
      DAT_18539d400 = 0;
      if (uVar10 == uVar11) {
        DAT_18539d3fc = DAT_18539d3fc + 1;
        break;
      }
      uVar10 = uVar10 - uVar11;
      DAT_18539d3fc = DAT_18539d3fc + 1;
      uVar30 = (ulonglong)((uint)uVar30 >> ((byte)uVar11 & 0x1f));
    } while (0 < (int)uVar10);
  }
  FUN_140115d90(&DAT_1a8e6b7ec + lVar16 * 0xb878,8);
  if (0 < (int)uVar37) {
    do {
      uVar10 = 0x10;
      if (DAT_18539d3fc < 0x10000) {
        uVar11 = *(uint *)(&DAT_1a8e6b7f0 + ((longlong)(int)uVar26 + lVar32 * 0xb878) * 4) & 0xffff;
        do {
          (&DAT_18539d404)[DAT_18539d3fc] =
               (&DAT_18539d404)[DAT_18539d3fc] &
               ~(('\x01' << ((byte)uVar10 & 0x1f)) + -1 << ((byte)DAT_18539d400 & 0x1f));
          (&DAT_18539d404)[DAT_18539d3fc] =
               (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar11 << ((byte)DAT_18539d400 & 0x1f);
          uVar12 = 8 - DAT_18539d400;
          if (uVar10 < uVar12) {
            DAT_18539d400 = DAT_18539d400 + uVar10;
            break;
          }
          DAT_18539d400 = 0;
          if (uVar10 == uVar12) {
            DAT_18539d3fc = DAT_18539d3fc + 1;
            break;
          }
          uVar10 = uVar10 - uVar12;
          DAT_18539d3fc = DAT_18539d3fc + 1;
          uVar11 = uVar11 >> ((byte)uVar12 & 0x1f);
        } while (0 < (int)uVar10);
      }
      FUN_14008ed50();
      uVar26 = uVar26 + 1 & 0xff;
      uVar37 = uVar37 - 1;
      lVar19 = local_f8;
    } while (uVar37 != 0);
  }
  iVar21 = DAT_18539d3fc;
  uVar37 = 0x400;
  lVar16 = (ulonglong)uVar9 * 0x58;
  lVar32 = lVar32 * 0xb878;
  puVar34 = &DAT_160fb67b0;
  local_130 = lVar32 + lVar16;
  *(undefined8 *)(&DAT_1a8e477c0 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e477c8 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e477d0 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e477d8 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47820 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47828 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47830 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47838 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47840 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47848 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47850 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47858 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47860 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47868 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47870 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47878 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47880 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47888 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47890 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47898 + local_130 * 4) = 0;
  puVar17 = local_100;
  iVar23 = iVar21;
  local_f0 = lVar32;
  local_e0 = lVar16;
  do {
    if ((puVar17[-1] != 0) &&
       (FUN_140115d90(puVar34,1), uVar37 = local_118, iVar23 = DAT_18539d3fc, (*local_138 & 1) != 0)
       ) {
      uVar26 = *puVar17;
      if (uVar26 == 0) {
        uVar26 = puVar17[1];
        lVar29 = (longlong)(int)uVar26;
        uVar10 = 1;
        iVar23 = (&DAT_18399dae0)[lVar29];
        iVar27 = *(int *)((longlong)&DAT_1a8e3ebc0 + lVar19 + lVar29 * 0xc);
        if (DAT_18539d3fc < 0x10000) {
          uVar11 = (uint)(iVar27 != iVar23);
          do {
            (&DAT_18539d404)[DAT_18539d3fc] =
                 (&DAT_18539d404)[DAT_18539d3fc] &
                 ~(('\x01' << ((byte)uVar10 & 0x1f)) + -1 << ((byte)DAT_18539d400 & 0x1f));
            (&DAT_18539d404)[DAT_18539d3fc] =
                 (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar11 << ((byte)DAT_18539d400 & 0x1f);
            uVar12 = 8 - DAT_18539d400;
            if (uVar10 < uVar12) {
              DAT_18539d400 = DAT_18539d400 + uVar10;
              break;
            }
            if (uVar10 == uVar12) {
              DAT_18539d3fc = DAT_18539d3fc + 1;
              DAT_18539d400 = 0;
              break;
            }
            DAT_18539d3fc = DAT_18539d3fc + 1;
            uVar11 = uVar11 >> ((byte)uVar12 & 0x1f);
            uVar10 = uVar10 - uVar12;
            DAT_18539d400 = 0;
          } while (0 < (int)uVar10);
        }
        if (iVar27 != iVar23) {
          FUN_140115d90(&DAT_18329e310 + lVar29 * 0x1bfe,8);
          FUN_140115d90(&DAT_1832a5288 + lVar29 * 0x1bfe,1);
          FUN_140115d90(&DAT_1832a528c + lVar29 * 0x1bfe,5);
          FUN_140115d90(&DAT_1832a5290 + lVar29 * 0x1bfe,3);
          FUN_140115d90(&DAT_1832a5298 + lVar29 * 0x1bfe,4);
          FUN_140115d90(&DAT_1832a529c + lVar29 * 0x1bfe,3);
          FUN_140115d90(&DAT_1832a5294 + lVar29 * 0x1bfe,4);
          FUN_140115d90(&DAT_1832a52a0 + lVar29 * 0x6ff8,5);
          FUN_140115d90(&DAT_1832a52a4 + lVar29 * 0x1bfe,4);
          FUN_140115d90(&DAT_1832a52a8 + lVar29 * 0x1bfe,4);
          FUN_140115d90(&DAT_1832a52b0 + lVar29 * 0x6ff8,4);
          FUN_140115d90(&DAT_1832a52b4 + lVar29 * 0x1bfe,2);
        }
        FUN_1401107f0(local_120 & 0xffffffff,uVar9,uVar26);
        *(uint *)(&DAT_1a8e477c0 + ((lVar29 >> 5) + lVar32 + lVar16) * 4) =
             *(uint *)(&DAT_1a8e477c0 + ((lVar29 >> 5) + lVar32 + lVar16) * 4) |
             1 << ((byte)uVar26 & 0x1f);
        uVar26 = *puVar17;
      }
      uVar37 = local_118;
      iVar23 = DAT_18539d3fc;
      if (uVar26 == 1) {
        uVar26 = puVar17[1];
        lVar16 = (longlong)(int)uVar26;
        uVar10 = 1;
        iVar23 = (&DAT_18329b1e0)[lVar16];
        iVar27 = *(int *)((longlong)&DAT_1a8e3f7c0 + lVar19 + lVar16 * 0x14);
        if (DAT_18539d3fc < 0x10000) {
          uVar11 = (uint)(iVar27 != iVar23);
          do {
            (&DAT_18539d404)[DAT_18539d3fc] =
                 (&DAT_18539d404)[DAT_18539d3fc] &
                 ~(('\x01' << ((byte)uVar10 & 0x1f)) + -1 << ((byte)DAT_18539d400 & 0x1f));
            (&DAT_18539d404)[DAT_18539d3fc] =
                 (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar11 << ((byte)DAT_18539d400 & 0x1f);
            uVar12 = 8 - DAT_18539d400;
            if (uVar10 < uVar12) {
              DAT_18539d400 = DAT_18539d400 + uVar10;
              break;
            }
            if (uVar10 == uVar12) {
              DAT_18539d3fc = DAT_18539d3fc + 1;
              DAT_18539d400 = 0;
              break;
            }
            DAT_18539d3fc = DAT_18539d3fc + 1;
            uVar11 = uVar11 >> ((byte)uVar12 & 0x1f);
            uVar10 = uVar10 - uVar12;
            DAT_18539d400 = 0;
          } while (0 < (int)uVar10);
        }
        if (iVar27 != iVar23) {
          FUN_140115d90(&DAT_182bbb194 + lVar16 * 0x6e0,8);
          FUN_140115d90(&DAT_182bbb1a8 + lVar16 * 0x6e0,10);
          FUN_140115d90(&DAT_182bbb1a4 + lVar16 * 0x6e0,10);
          FUN_140115d90(&DAT_182bbb1ac + lVar16 * 0x6e0,4);
          if ((&DAT_182bbb194)[lVar16 * 0x6e0] == 0x27) {
            FUN_140115d90(&DAT_182bbb4e8 + lVar16 * 0x6e0,5);
            FUN_140115d90(&DAT_182bbb4ec + lVar16 * 0x6e0,5);
          }
        }
        FUN_14010ec30(local_120 & 0xffffffff,uVar9,uVar26);
        iVar23 = DAT_18539d3fc;
        *(uint *)(&DAT_1a8e47820 + ((lVar16 >> 5) + lVar32 + local_e0) * 4) =
             *(uint *)(&DAT_1a8e47820 + ((lVar16 >> 5) + lVar32 + local_e0) * 4) |
             1 << ((byte)uVar26 & 0x1f);
        lVar16 = local_e0;
        uVar37 = local_118;
      }
    }
    uVar26 = DAT_18539d400;
    local_138 = local_138 + 4;
    puVar34 = puVar34 + 4;
    puVar17 = puVar17 + 4;
    uVar37 = uVar37 + -1;
    local_118 = uVar37;
  } while (uVar37 != 0);
  local_118 = (ulonglong)uVar24;
  _DAT_16b2a223c = _DAT_16b2a223c + (iVar23 - iVar21);
  uVar11 = 8;
  *(undefined8 *)(&DAT_1a8e477e0 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e477e8 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e477f0 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e477f8 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47800 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47808 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47810 + local_130 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47818 + local_130 * 4) = 0;
  iVar21 = iVar23;
  uVar10 = uVar26;
  if (iVar23 < 0x10000) {
    uVar12 = uVar24 & 0xff;
    do {
      (&DAT_18539d404)[iVar21] =
           (&DAT_18539d404)[iVar21] &
           ~(('\x01' << ((byte)uVar11 & 0x1f)) + -1 << ((byte)uVar26 & 0x1f));
      (&DAT_18539d404)[DAT_18539d3fc] =
           (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar12 << ((byte)DAT_18539d400 & 0x1f);
      uVar13 = 8 - DAT_18539d400;
      if (uVar11 < uVar13) {
        DAT_18539d400 = DAT_18539d400 + uVar11;
        iVar21 = DAT_18539d3fc;
        uVar10 = DAT_18539d400;
        break;
      }
      uVar26 = 0;
      DAT_18539d400 = 0;
      uVar10 = DAT_18539d400;
      if (uVar11 == uVar13) {
        iVar21 = DAT_18539d3fc + 1;
        DAT_18539d3fc = DAT_18539d3fc + 1;
        break;
      }
      iVar21 = DAT_18539d3fc + 1;
      uVar12 = uVar12 >> ((byte)uVar13 & 0x1f);
      uVar11 = uVar11 - uVar13;
      DAT_18539d3fc = iVar21;
    } while (0 < (int)uVar11);
  }
  if (0 < (int)uVar24) {
    lVar16 = (longlong)(int)local_120;
    lVar32 = local_110 * 0x5c3c;
    local_100 = &DAT_160fb5dac;
    do {
      uVar24 = local_100[-1];
      lVar19 = (longlong)(int)uVar24;
      uVar12 = 10;
      uVar26 = *local_100;
      uVar11 = uVar10;
      if (iVar21 < 0x10000) {
        uVar13 = uVar24 & 0x3ff;
        do {
          (&DAT_18539d404)[iVar21] =
               (&DAT_18539d404)[iVar21] &
               ~(('\x01' << ((byte)uVar12 & 0x1f)) + -1 << ((byte)uVar10 & 0x1f));
          (&DAT_18539d404)[DAT_18539d3fc] =
               (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar13 << ((byte)DAT_18539d400 & 0x1f);
          uVar10 = 8 - DAT_18539d400;
          if (uVar12 < uVar10) {
            uVar11 = DAT_18539d400 + uVar12;
            iVar21 = DAT_18539d3fc;
            DAT_18539d400 = uVar11;
            break;
          }
          if (uVar12 == uVar10) {
            DAT_18539d400 = 0;
            iVar21 = DAT_18539d3fc + 1;
            uVar11 = 0;
            DAT_18539d3fc = DAT_18539d3fc + 1;
            break;
          }
          uVar13 = uVar13 >> ((byte)uVar10 & 0x1f);
          iVar21 = DAT_18539d3fc + 1;
          DAT_18539d400 = 0;
          uVar12 = uVar12 - uVar10;
          uVar10 = 0;
          uVar11 = 0;
          DAT_18539d3fc = iVar21;
        } while (0 < (int)uVar12);
      }
      uVar10 = 2;
      if (iVar21 < 0x10000) {
        uVar26 = uVar26 & 3;
        do {
          (&DAT_18539d404)[iVar21] =
               (&DAT_18539d404)[iVar21] &
               ~(('\x01' << ((byte)uVar10 & 0x1f)) + -1 << ((byte)uVar11 & 0x1f));
          (&DAT_18539d404)[DAT_18539d3fc] =
               (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar26 << ((byte)DAT_18539d400 & 0x1f);
          uVar12 = 8 - DAT_18539d400;
          if (uVar10 < uVar12) {
            DAT_18539d400 = DAT_18539d400 + uVar10;
            break;
          }
          uVar11 = 0;
          DAT_18539d400 = 0;
          if (uVar10 == uVar12) {
            DAT_18539d3fc = DAT_18539d3fc + 1;
            break;
          }
          uVar10 = uVar10 - uVar12;
          iVar21 = DAT_18539d3fc + 1;
          uVar26 = uVar26 >> ((byte)uVar12 & 0x1f);
          DAT_18539d3fc = iVar21;
        } while (0 < (int)uVar10);
      }
      FUN_140115d90(&DAT_15f2dc848 + lVar19 * 0x5168,10);
      FUN_140115d90(&DAT_1a8e3dbc4 + (lVar16 * 0x5c3c + lVar19) * 2,8);
      iVar21 = DAT_1ad04b20c - (&DAT_1a8e3dbc4)[(lVar19 + lVar32) * 2];
      bVar5 = iVar21 < 0xc0;
      uVar37 = (ulonglong)((&DAT_1a8e3dbc4)[(lVar19 + lVar32) * 2] & 0xff);
      if (0xbf < iVar21) {
        uVar37 = 0;
      }
      lVar29 = (ulonglong)uVar9 * 0x4dc00 + lVar19 * 0xe4;
      lVar31 = uVar37 * 0x4dc00 + lVar19 * 0xe4;
      FUN_14010e6c0(&DAT_160fe2d64 + lVar29,*(undefined4 *)(&DAT_160fe2d64 + lVar31),bVar5,0x1c);
      FUN_14010e6c0(&DAT_160fe2d68 + lVar29,*(undefined4 *)(&DAT_160fe2d68 + lVar31),bVar5,0x1c);
      FUN_14010e6c0(&DAT_160fe2d6c + lVar29,*(undefined4 *)(&DAT_160fe2d6c + lVar31),bVar5,0x1c);
      FUN_140115d90(&DAT_160fe2d70 + lVar29,2);
      FUN_14010e9b0(&DAT_160fe2d74 + lVar29,*(undefined4 *)(&DAT_160fe2d74 + lVar31),bVar5,0xe);
      FUN_14010e9b0(&DAT_160fe2d78 + lVar29,*(undefined4 *)(&DAT_160fe2d78 + lVar31),bVar5,0xe);
      FUN_14010e9b0(&DAT_160fe2d7c + lVar29,*(undefined4 *)(&DAT_160fe2d7c + lVar31),bVar5,0xe);
      FUN_14010e9b0(&DAT_160fe2d80 + lVar29,*(undefined4 *)(&DAT_160fe2d80 + lVar31),bVar5,9);
      puVar22 = (undefined4 *)(&DAT_160fe2d88 + lVar31);
      puVar25 = &DAT_160fe2d88 + lVar29;
      lVar29 = 4;
      do {
        FUN_14010e6c0(puVar25 + -4,puVar22[-1],bVar5,8);
        FUN_14010e9b0(puVar25,*puVar22,bVar5,9);
        FUN_14010e6c0(puVar25 + 4,puVar22[1],bVar5,8);
        puVar25 = puVar25 + 0xc;
        puVar22 = puVar22 + 3;
        lVar29 = lVar29 + -1;
      } while (lVar29 != 0);
      FUN_140115d90(&DAT_15f2dcb30 + lVar19 * 0x145a,0xd);
      uVar10 = DAT_18539d400;
      iVar21 = DAT_18539d3fc;
      *(uint *)(&DAT_1a8e477e0 + ((lVar19 >> 5) + local_f0 + local_e0) * 4) =
           *(uint *)(&DAT_1a8e477e0 + ((lVar19 >> 5) + local_f0 + local_e0) * 4) |
           1 << ((byte)uVar24 & 0x1f);
      local_100 = local_100 + 2;
      local_118 = local_118 - 1;
      lVar19 = local_f8;
    } while (local_118 != 0);
  }
  lVar32 = local_130;
  local_118 = 0;
  uVar30 = 0;
  uVar24 = 8;
  _DAT_16b2a2240 = _DAT_16b2a2240 + (iVar21 - iVar23);
  uVar26 = 0;
  uVar37 = uVar30;
  iVar23 = iVar21;
  if (iVar21 < 0x10000) {
    do {
      (&DAT_18539d404)[iVar23] =
           (&DAT_18539d404)[iVar23] &
           ~(('\x01' << ((byte)uVar24 & 0x1f)) + -1 << ((byte)uVar10 & 0x1f));
      (&DAT_18539d404)[DAT_18539d3fc] =
           (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar37 << ((byte)DAT_18539d400 & 0x1f);
      uVar10 = 8 - DAT_18539d400;
      if (uVar24 < uVar10) {
        DAT_18539d400 = DAT_18539d400 + uVar24;
        iVar23 = DAT_18539d3fc;
        uVar10 = DAT_18539d400;
        break;
      }
      DAT_18539d400 = 0;
      if (uVar24 == uVar10) {
        iVar23 = DAT_18539d3fc + 1;
        uVar10 = uVar26;
        DAT_18539d3fc = DAT_18539d3fc + 1;
        break;
      }
      iVar23 = DAT_18539d3fc + 1;
      uVar24 = uVar24 - uVar10;
      uVar37 = (ulonglong)((uint)uVar37 >> ((byte)uVar10 & 0x1f));
      uVar10 = uVar26;
      DAT_18539d3fc = iVar23;
    } while (0 < (int)uVar24);
  }
  uVar24 = DAT_15fe95260;
  fVar6 = DAT_140278338;
  uVar37 = (ulonglong)DAT_15fe95260;
  _DAT_16b2a2244 = _DAT_16b2a2244 + (iVar23 - iVar21);
  iVar21 = 1;
  if ((int)DAT_15fe95260 < 4) {
    uVar28 = uVar30;
    uVar11 = uVar26;
    if ((int)DAT_15fe95260 < 1) goto LAB_140113644;
  }
  else {
    pfVar15 = (float *)&DAT_15fd16278;
    piVar18 = (int *)((longlong)&DAT_1a8e447d0 + lVar19);
    uVar12 = (DAT_15fe95260 - 4 >> 2) + 1;
    uVar28 = (ulonglong)uVar12;
    do {
      fVar42 = SQRT(pfVar15[1] * pfVar15[1] + pfVar15[2] * pfVar15[2] + pfVar15[3] * pfVar15[3]);
      if (fVar40 <= fVar42) {
        fVar42 = fVar40;
      }
      fVar41 = pfVar15[0x17e];
      fVar44 = pfVar15[0x17d];
      fVar43 = pfVar15[0x181];
      iVar27 = (int)(fVar47 - ((SQRT((fVar48 - pfVar15[-1]) * (fVar48 - pfVar15[-1]) +
                                     (fVar46 - pfVar15[-2]) * (fVar46 - pfVar15[-2]) +
                                     (fVar45 - *pfVar15) * (fVar45 - *pfVar15)) /
                               ((float)((uint)pfVar15[0xe] & uVar35) * fVar39 + fVar7)) /
                              (fVar42 * fVar8 + fVar7)) * fVar6);
      fVar42 = pfVar15[0x17f];
      if (iVar27 < 0x10) {
        iVar27 = (int)local_108;
      }
      if (local_110 == 0xff) {
        iVar27 = iVar21;
      }
      piVar18[-3] = piVar18[-3] + iVar27;
      fVar43 = SQRT(pfVar15[0x180] * pfVar15[0x180] + fVar43 * fVar43 +
                    pfVar15[0x182] * pfVar15[0x182]);
      if (fVar40 <= fVar43) {
        fVar43 = fVar40;
      }
      fVar1 = pfVar15[0x2fd];
      fVar2 = pfVar15[0x2fc];
      fVar3 = pfVar15[0x300];
      iVar27 = (int)(fVar47 - ((SQRT((fVar48 - fVar41) * (fVar48 - fVar41) +
                                     (fVar46 - fVar44) * (fVar46 - fVar44) +
                                     (fVar45 - fVar42) * (fVar45 - fVar42)) /
                               ((float)((uint)pfVar15[0x18d] & uVar35) * fVar39 + fVar7)) /
                              (fVar43 * fVar8 + fVar7)) * fVar6);
      fVar42 = pfVar15[0x2fe];
      if (iVar27 < 0x10) {
        iVar27 = (int)local_108;
      }
      if (local_110 == 0xff) {
        iVar27 = iVar21;
      }
      *piVar18 = *piVar18 + iVar27;
      fVar41 = SQRT(pfVar15[0x2ff] * pfVar15[0x2ff] + fVar3 * fVar3 +
                    pfVar15[0x301] * pfVar15[0x301]);
      if (fVar40 <= fVar41) {
        fVar41 = fVar40;
      }
      fVar44 = pfVar15[0x47c];
      fVar43 = pfVar15[0x47b];
      fVar3 = pfVar15[0x47f];
      iVar27 = (int)(fVar47 - ((SQRT((fVar48 - fVar1) * (fVar48 - fVar1) +
                                     (fVar46 - fVar2) * (fVar46 - fVar2) +
                                     (fVar45 - fVar42) * (fVar45 - fVar42)) /
                               ((float)((uint)pfVar15[0x30c] & uVar35) * fVar39 + fVar7)) /
                              (fVar41 * fVar8 + fVar7)) * fVar6);
      fVar42 = pfVar15[0x47d];
      if (iVar27 < 0x10) {
        iVar27 = (int)local_108;
      }
      if (local_110 == 0xff) {
        iVar27 = iVar21;
      }
      piVar18[3] = piVar18[3] + iVar27;
      fVar41 = SQRT(pfVar15[0x47e] * pfVar15[0x47e] + fVar3 * fVar3 +
                    pfVar15[0x480] * pfVar15[0x480]);
      if (fVar40 <= fVar41) {
        fVar41 = fVar40;
      }
      iVar27 = (int)(fVar47 - ((SQRT((fVar48 - fVar44) * (fVar48 - fVar44) +
                                     (fVar46 - fVar43) * (fVar46 - fVar43) +
                                     (fVar45 - fVar42) * (fVar45 - fVar42)) /
                               ((float)((uint)pfVar15[0x48b] & uVar35) * fVar39 + fVar7)) /
                              (fVar41 * fVar8 + fVar7)) * fVar6);
      if (iVar27 < 0x10) {
        iVar27 = (int)local_108;
      }
      if (local_110 == 0xff) {
        iVar27 = iVar21;
      }
      pfVar15 = pfVar15 + 0x5fc;
      piVar18[6] = piVar18[6] + iVar27;
      piVar18 = piVar18 + 0xc;
      uVar28 = uVar28 - 1;
    } while (uVar28 != 0);
    uVar28 = (ulonglong)uVar12 * 4;
    uVar11 = uVar12 * 4;
    if ((int)uVar24 <= (int)(uVar12 * 4)) goto LAB_140113644;
  }
  piVar18 = (int *)((longlong)&DAT_1a8e447c4 + lVar19 + uVar28 * 0xc);
  pfVar15 = (float *)(&DAT_15fd16278 + uVar28 * 0x17f);
  uVar28 = (ulonglong)(uVar24 - uVar11);
  do {
    fVar42 = SQRT(pfVar15[1] * pfVar15[1] + pfVar15[2] * pfVar15[2] + pfVar15[3] * pfVar15[3]);
    if (fVar40 <= fVar42) {
      fVar42 = fVar40;
    }
    iVar27 = (int)(fVar47 - ((SQRT((fVar48 - pfVar15[-1]) * (fVar48 - pfVar15[-1]) +
                                   (fVar46 - pfVar15[-2]) * (fVar46 - pfVar15[-2]) +
                                   (fVar45 - *pfVar15) * (fVar45 - *pfVar15)) /
                             ((float)((uint)pfVar15[0xe] & uVar35) * fVar39 + fVar7)) /
                            (fVar42 * fVar8 + fVar7)) * fVar6);
    if (iVar27 < 0x10) {
      iVar27 = 0x10;
    }
    if (local_110 == 0xff) {
      iVar27 = iVar21;
    }
    pfVar15 = pfVar15 + 0x17f;
    *piVar18 = *piVar18 + iVar27;
    piVar18 = piVar18 + 3;
    uVar28 = uVar28 - 1;
  } while (uVar28 != 0);
LAB_140113644:
  DAT_1a85c6ba0 = 0;
  if (0 < (int)uVar24) {
    puVar22 = (undefined4 *)((longlong)&DAT_1a8e447c4 + lVar19);
    uVar28 = uVar30;
    uVar20 = uVar30;
    do {
      uVar4 = *puVar22;
      puVar22 = puVar22 + 3;
      (&DAT_1a87c6ba4)[(int)uVar28] = uVar4;
      (&DAT_1a88c6ba4)[(int)DAT_1a85c6ba0] = (int)uVar20;
      uVar35 = (int)uVar20 + 1;
      uVar20 = (ulonglong)uVar35;
      DAT_1a85c6ba0 = DAT_1a85c6ba0 + 1;
      uVar28 = (ulonglong)DAT_1a85c6ba0;
    } while ((int)uVar35 < (int)uVar24);
  }
  FUN_14007d710();
  DAT_160fc37b4 = 0;
  iVar21 = DAT_1a85c6ba0 - 1;
  iVar27 = 0x20;
  if ((int)local_120 != 0xff) {
    iVar27 = 0x10;
  }
  lVar16 = (longlong)iVar21;
  uVar35 = uVar26;
  if (-1 < iVar21) {
    iVar27 = DAT_1a85c6ba0 - iVar27;
    uVar28 = uVar30;
    do {
      iVar36 = (&DAT_1a88c6ba4)[(int)(&DAT_1a85c6ba4)[lVar16]];
      if (iVar27 <= iVar21) {
        *(undefined4 *)((longlong)&DAT_1a8e447c4 + lVar19 + (longlong)iVar36 * 0xc) = 0;
        (&DAT_160fc37b8)[(int)uVar28] = iVar36;
        DAT_160fc37b4 = DAT_160fc37b4 + 1;
        uVar28 = (ulonglong)DAT_160fc37b4;
      }
      uVar35 = (uint)uVar28;
      iVar21 = iVar21 + -1;
      lVar16 = lVar16 + -1;
    } while (-1 < lVar16);
  }
  uVar11 = 10;
  *(undefined8 *)(&DAT_1a8e478a0 + lVar32 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e478a8 + lVar32 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e478b0 + lVar32 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e478b8 + lVar32 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e478c0 + lVar32 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e478c8 + lVar32 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e478d0 + lVar32 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e478d8 + lVar32 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e478e0 + lVar32 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e478e8 + lVar32 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e478f0 + lVar32 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e478f8 + lVar32 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47900 + lVar32 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47908 + lVar32 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47910 + lVar32 * 4) = 0;
  *(undefined8 *)(&DAT_1a8e47918 + lVar32 * 4) = 0;
  uVar12 = 1;
  iVar21 = iVar23;
  if (iVar23 < 0x10000) {
    uVar24 = uVar24 & 0x3ff;
    do {
      (&DAT_18539d404)[iVar21] =
           (&DAT_18539d404)[iVar21] &
           ~(('\x01' << ((byte)uVar11 & 0x1f)) + -1 << ((byte)uVar10 & 0x1f));
      (&DAT_18539d404)[DAT_18539d3fc] =
           (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar24 << ((byte)DAT_18539d400 & 0x1f);
      uVar10 = 8 - DAT_18539d400;
      if (uVar11 < uVar10) {
        DAT_18539d400 = DAT_18539d400 + uVar11;
        iVar21 = DAT_18539d3fc;
        uVar10 = DAT_18539d400;
        break;
      }
      DAT_18539d400 = 0;
      if (uVar11 == uVar10) {
        iVar21 = DAT_18539d3fc + 1;
        uVar10 = uVar26;
        DAT_18539d3fc = DAT_18539d3fc + 1;
        break;
      }
      iVar21 = DAT_18539d3fc + 1;
      uVar24 = uVar24 >> ((byte)uVar10 & 0x1f);
      uVar11 = uVar11 - uVar10;
      uVar10 = uVar26;
      DAT_18539d3fc = iVar21;
    } while (0 < (int)uVar11);
  }
  uVar24 = 8;
  if (iVar21 < 0x10000) {
    uVar11 = uVar35 & 0xff;
    do {
      (&DAT_18539d404)[iVar21] =
           (&DAT_18539d404)[iVar21] &
           ~(('\x01' << ((byte)uVar24 & 0x1f)) + -1 << ((byte)uVar10 & 0x1f));
      (&DAT_18539d404)[DAT_18539d3fc] =
           (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar11 << ((byte)DAT_18539d400 & 0x1f);
      uVar10 = 8 - DAT_18539d400;
      if (uVar24 < uVar10) {
        DAT_18539d400 = DAT_18539d400 + uVar24;
        iVar21 = DAT_18539d3fc;
        uVar10 = DAT_18539d400;
        break;
      }
      DAT_18539d400 = 0;
      if (uVar24 == uVar10) {
        iVar21 = DAT_18539d3fc + 1;
        uVar10 = uVar26;
        DAT_18539d3fc = DAT_18539d3fc + 1;
        break;
      }
      iVar21 = DAT_18539d3fc + 1;
      uVar11 = uVar11 >> ((byte)uVar10 & 0x1f);
      uVar24 = uVar24 - uVar10;
      uVar10 = uVar26;
      DAT_18539d3fc = iVar21;
    } while (0 < (int)uVar24);
  }
  _DAT_160fc4840 = 0;
  _DAT_160fc4848 = 0;
  _DAT_160fc4850 = 0;
  _DAT_160fc4858 = 0;
  _DAT_160fc4860 = 0;
  uRam0000000160fc4868 = 0;
  _DAT_160fc4870 = 0;
  uRam0000000160fc4878 = 0;
  _DAT_160fc4880 = 0;
  uRam0000000160fc4888 = 0;
  _DAT_160fc4890 = 0;
  uRam0000000160fc4898 = 0;
  _DAT_160fc48a0 = 0;
  uRam0000000160fc48a8 = 0;
  _DAT_160fc48b0 = 0;
  uRam0000000160fc48b8 = 0;
  if (0 < (int)uVar35) {
    piVar18 = &DAT_160fc37b8;
    uVar28 = (ulonglong)uVar35;
    do {
      iVar27 = *piVar18;
      piVar18 = piVar18 + 1;
      (&DAT_160fc4840)[(longlong)iVar27 >> 5] =
           (&DAT_160fc4840)[(longlong)iVar27 >> 5] | 1 << ((byte)iVar27 & 0x1f);
      uVar28 = uVar28 - 1;
    } while (uVar28 != 0);
  }
  if ((DAT_183f7c960 != '\0') && ((int)local_120 == 0xff)) {
    FUN_140158ab0(&DAT_16b2a1dc8,"%08x %08x %08x %08x %08x %08x %08x %08x\n",
                  _DAT_160fc4840 & 0xffffffff,DAT_160fc4844,DAT_160fc4848,DAT_160fc484c,
                  DAT_160fc4850,DAT_160fc4854,DAT_160fc4858,DAT_160fc485c);
    uVar37 = (ulonglong)DAT_15fe95260;
    iVar21 = DAT_18539d3fc;
    uVar10 = DAT_18539d400;
  }
  if (0 < (int)uVar37) {
    local_120 = 0;
    local_118 = 0;
    local_100 = (uint *)0x0;
    local_110 = 0;
    local_130 = 0;
    local_108 = &DAT_15fe95280;
    local_138 = (byte *)&DAT_15fd16268;
    puVar22 = &DAT_15fd16838;
    do {
      lVar32 = local_f8;
      lVar16 = local_130 >> 5;
      uVar24 = (uint)uVar30;
      if (((&DAT_160fc4840)[lVar16] & uVar12) == 0) {
        uVar30 = (ulonglong)(uVar24 + 1);
      }
      else {
        if (0 < (int)uVar24) {
          uVar26 = 0;
          uVar35 = 1;
          uVar11 = 0;
          if (iVar21 < 0x10000) {
            do {
              (&DAT_18539d404)[iVar21] =
                   (&DAT_18539d404)[iVar21] &
                   ~(('\x01' << ((byte)uVar35 & 0x1f)) + -1 << ((byte)uVar10 & 0x1f));
              (&DAT_18539d404)[DAT_18539d3fc] =
                   (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar26 << ((byte)DAT_18539d400 & 0x1f);
              uVar10 = 8 - DAT_18539d400;
              if (uVar35 < uVar10) {
                uVar10 = DAT_18539d400 + uVar35;
                iVar21 = DAT_18539d3fc;
                DAT_18539d400 = uVar10;
                break;
              }
              DAT_18539d400 = 0;
              if (uVar35 == uVar10) {
                DAT_18539d3fc = DAT_18539d3fc + 1;
                iVar21 = DAT_18539d3fc;
                uVar10 = uVar11;
                break;
              }
              iVar21 = DAT_18539d3fc + 1;
              uVar26 = uVar26 >> ((byte)uVar10 & 0x1f);
              uVar35 = uVar35 - uVar10;
              uVar10 = uVar11;
              DAT_18539d3fc = iVar21;
            } while (0 < (int)uVar35);
          }
          uVar35 = 10;
          if (iVar21 < 0x10000) {
            uVar24 = uVar24 & 0x3ff;
            do {
              (&DAT_18539d404)[iVar21] =
                   (&DAT_18539d404)[iVar21] &
                   ~(('\x01' << ((byte)uVar35 & 0x1f)) + -1 << ((byte)uVar10 & 0x1f));
              (&DAT_18539d404)[DAT_18539d3fc] =
                   (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar24 << ((byte)DAT_18539d400 & 0x1f);
              uVar26 = 8 - DAT_18539d400;
              if (uVar35 < uVar26) {
                uVar10 = DAT_18539d400 + uVar35;
                iVar21 = DAT_18539d3fc;
                DAT_18539d400 = uVar10;
                break;
              }
              DAT_18539d400 = 0;
              if (uVar35 == uVar26) {
                DAT_18539d3fc = DAT_18539d3fc + 1;
                iVar21 = DAT_18539d3fc;
                uVar10 = uVar11;
                break;
              }
              iVar21 = DAT_18539d3fc + 1;
              uVar24 = uVar24 >> ((byte)uVar26 & 0x1f);
              uVar35 = uVar35 - uVar26;
              uVar10 = uVar11;
              DAT_18539d3fc = iVar21;
            } while (0 < (int)uVar35);
          }
        }
        uVar30 = 0;
        uVar24 = 1;
        if (iVar21 < 0x10000) {
          uVar35 = 1;
          do {
            (&DAT_18539d404)[iVar21] =
                 (&DAT_18539d404)[iVar21] &
                 ~(('\x01' << ((byte)uVar24 & 0x1f)) + -1 << ((byte)uVar10 & 0x1f));
            (&DAT_18539d404)[DAT_18539d3fc] =
                 (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar35 << ((byte)DAT_18539d400 & 0x1f);
            uVar26 = 8 - DAT_18539d400;
            if (uVar24 < uVar26) {
              DAT_18539d400 = DAT_18539d400 + uVar24;
              break;
            }
            DAT_18539d400 = 0;
            if (uVar24 == uVar26) {
              DAT_18539d3fc = DAT_18539d3fc + 1;
              break;
            }
            uVar24 = uVar24 - uVar26;
            iVar21 = DAT_18539d3fc + 1;
            uVar35 = uVar35 >> ((byte)uVar26 & 0x1f);
            uVar10 = 0;
            DAT_18539d3fc = iVar21;
          } while (0 < (int)uVar24);
        }
        FUN_140115d90((longlong)local_100 + (longlong)local_e8 + 0x1a8e447c8,8);
        uVar35 = 1;
        uVar24 = *(uint *)((longlong)&DAT_1a8e447c4 + local_110 + lVar32 + 4);
        iVar21 = DAT_1ad04b20c - uVar24;
        bVar5 = iVar21 < 0xc0;
        uVar28 = (ulonglong)(uVar24 & 0xff);
        if (0xbf < iVar21) {
          uVar28 = uVar30;
        }
        if (DAT_18539d3fc < 0x10000) {
          uVar24 = (uint)(*(int *)local_138 != -1);
          do {
            (&DAT_18539d404)[DAT_18539d3fc] =
                 (&DAT_18539d404)[DAT_18539d3fc] &
                 ~(('\x01' << ((byte)uVar35 & 0x1f)) + -1 << ((byte)DAT_18539d400 & 0x1f));
            (&DAT_18539d404)[DAT_18539d3fc] =
                 (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar24 << ((byte)DAT_18539d400 & 0x1f);
            uVar26 = 8 - DAT_18539d400;
            if (uVar35 < uVar26) {
              DAT_18539d400 = DAT_18539d400 + uVar35;
              break;
            }
            if (uVar35 == uVar26) {
              DAT_18539d3fc = DAT_18539d3fc + 1;
              DAT_18539d400 = 0;
              break;
            }
            uVar24 = uVar24 >> ((byte)uVar26 & 0x1f);
            DAT_18539d3fc = DAT_18539d3fc + 1;
            DAT_18539d400 = 0;
            uVar35 = uVar35 - uVar26;
          } while (0 < (int)uVar35);
        }
        uVar24 = 1;
        iVar21 = *(int *)((longlong)&DAT_1a8e447c0 + local_110 + lVar32);
        iVar27 = *local_108;
        if (DAT_18539d3fc < 0x10000) {
          uVar35 = (uint)(iVar21 != iVar27);
          do {
            (&DAT_18539d404)[DAT_18539d3fc] =
                 (&DAT_18539d404)[DAT_18539d3fc] &
                 ~(('\x01' << ((byte)uVar24 & 0x1f)) + -1 << ((byte)DAT_18539d400 & 0x1f));
            (&DAT_18539d404)[DAT_18539d3fc] =
                 (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar35 << ((byte)DAT_18539d400 & 0x1f);
            uVar26 = 8 - DAT_18539d400;
            if (uVar24 < uVar26) {
              DAT_18539d400 = DAT_18539d400 + uVar24;
              break;
            }
            if (uVar24 == uVar26) {
              DAT_18539d3fc = DAT_18539d3fc + 1;
              DAT_18539d400 = 0;
              break;
            }
            DAT_18539d3fc = DAT_18539d3fc + 1;
            uVar35 = uVar35 >> ((byte)uVar26 & 0x1f);
            uVar24 = uVar24 - uVar26;
            DAT_18539d400 = 0;
          } while (0 < (int)uVar24);
        }
        if (iVar21 != iVar27) {
          FUN_140115d90(puVar22 + -0x176,6);
          FUN_140115d90(puVar22,4);
        }
        lVar19 = uVar28 * 0x4dc00 + local_120;
        lVar32 = (ulonglong)uVar9 * 0x4dc00 + local_118;
        FUN_14010e6c0(&DAT_161008568 + lVar32,*(undefined4 *)(&DAT_161008568 + lVar19),bVar5,0x1c);
        FUN_14010e6c0(&DAT_16100856c + lVar32,*(undefined4 *)(&DAT_16100856c + lVar19),bVar5,0x1c);
        FUN_14010e6c0(&DAT_161008570 + lVar32,*(undefined4 *)(&DAT_161008570 + lVar19),bVar5,0x1c);
        FUN_14010e9b0(&DAT_161008584 + lVar32,*(undefined4 *)(&DAT_161008584 + lVar19),bVar5,9);
        uVar10 = DAT_18539d400;
        iVar21 = DAT_18539d3fc;
        *(uint *)(&DAT_1a8e478a0 + (local_e0 + lVar16 + local_f0) * 4) =
             *(uint *)(&DAT_1a8e478a0 + (local_e0 + lVar16 + local_f0) * 4) | uVar12;
      }
      local_130 = local_130 + 1;
      uVar12 = uVar12 << 1 | (uint)((int)uVar12 < 0);
      local_100 = local_100 + 3;
      local_118 = local_118 + 0x28;
      local_138 = (byte *)((longlong)local_138 + 0x5fc);
      local_110 = local_110 + 0xc;
      local_108 = local_108 + 1;
      local_120 = local_120 + 0x28;
      puVar22 = puVar22 + 0x17f;
      uVar37 = uVar37 - 1;
    } while (uVar37 != 0);
    uVar9 = 0;
    if (0 < (int)(uint)uVar30) {
      uVar24 = 1;
      uVar35 = 0;
      if (iVar21 < 0x10000) {
        do {
          (&DAT_18539d404)[iVar21] =
               (&DAT_18539d404)[iVar21] &
               ~(('\x01' << ((byte)uVar24 & 0x1f)) + -1 << ((byte)uVar10 & 0x1f));
          (&DAT_18539d404)[DAT_18539d3fc] =
               (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar9 << ((byte)DAT_18539d400 & 0x1f);
          uVar26 = 8 - DAT_18539d400;
          if (uVar24 < uVar26) {
            DAT_18539d400 = DAT_18539d400 + uVar24;
            iVar21 = DAT_18539d3fc;
            uVar10 = DAT_18539d400;
            break;
          }
          DAT_18539d400 = 0;
          if (uVar24 == uVar26) {
            iVar21 = DAT_18539d3fc + 1;
            uVar10 = uVar35;
            DAT_18539d3fc = DAT_18539d3fc + 1;
            break;
          }
          iVar21 = DAT_18539d3fc + 1;
          uVar9 = uVar9 >> ((byte)uVar26 & 0x1f);
          uVar24 = uVar24 - uVar26;
          uVar10 = uVar35;
          DAT_18539d3fc = iVar21;
        } while (0 < (int)uVar24);
      }
      uVar9 = 10;
      if (iVar21 < 0x10000) {
        uVar24 = (uint)uVar30 & 0x3ff;
        do {
          (&DAT_18539d404)[iVar21] =
               (&DAT_18539d404)[iVar21] &
               ~(('\x01' << ((byte)uVar9 & 0x1f)) + -1 << ((byte)uVar10 & 0x1f));
          (&DAT_18539d404)[DAT_18539d3fc] =
               (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar24 << ((byte)DAT_18539d400 & 0x1f);
          uVar26 = 8 - DAT_18539d400;
          if (uVar9 < uVar26) {
            DAT_18539d400 = DAT_18539d400 + uVar9;
            iVar21 = DAT_18539d3fc;
            uVar10 = DAT_18539d400;
            break;
          }
          DAT_18539d400 = 0;
          if (uVar9 == uVar26) {
            iVar21 = DAT_18539d3fc + 1;
            uVar10 = uVar35;
            DAT_18539d3fc = DAT_18539d3fc + 1;
            break;
          }
          iVar21 = DAT_18539d3fc + 1;
          uVar24 = uVar24 >> ((byte)uVar26 & 0x1f);
          uVar9 = uVar9 - uVar26;
          uVar10 = uVar35;
          DAT_18539d3fc = iVar21;
        } while (0 < (int)uVar9);
      }
    }
  }
  puVar17 = local_e8;
  uVar9 = 0;
  uVar24 = 10;
  _DAT_16b2a2238 = _DAT_16b2a2238 + (iVar21 - iVar23);
  if (0 < DAT_175fd145c) {
    uVar9 = *(int *)((longlong)&DAT_1a8e3da74 + (longlong)local_e8) % DAT_175fd145c;
  }
  if (iVar21 < 0x10000) {
    uVar35 = uVar9 & 0x3ff;
    do {
      (&DAT_18539d404)[iVar21] =
           (&DAT_18539d404)[iVar21] &
           ~(('\x01' << ((byte)uVar24 & 0x1f)) + -1 << ((byte)uVar10 & 0x1f));
      (&DAT_18539d404)[DAT_18539d3fc] =
           (&DAT_18539d404)[DAT_18539d3fc] | (char)uVar35 << ((byte)DAT_18539d400 & 0x1f);
      uVar26 = 8 - DAT_18539d400;
      if (uVar24 < uVar26) {
        DAT_18539d400 = DAT_18539d400 + uVar24;
        break;
      }
      DAT_18539d400 = 0;
      if (uVar24 == uVar26) {
        DAT_18539d3fc = DAT_18539d3fc + 1;
        break;
      }
      uVar24 = uVar24 - uVar26;
      iVar21 = DAT_18539d3fc + 1;
      uVar35 = uVar35 >> ((byte)uVar26 & 0x1f);
      uVar10 = 0;
      DAT_18539d3fc = iVar21;
    } while (0 < (int)uVar24);
  }
  lVar32 = (longlong)(int)uVar9;
  FUN_140115d90(&DAT_175fd14b4 + lVar32 * 0x22,2);
  FUN_140115d90(&DAT_175fd14b8 + lVar32 * 0x22,2);
  FUN_140115d90(&DAT_175fd14bc + lVar32 * 0x22,2);
  FUN_140115d90(&DAT_175fd14c0 + lVar32 * 0x22,2);
  *(int *)((longlong)&DAT_1a8e3da74 + (longlong)puVar17) =
       *(int *)((longlong)&DAT_1a8e3da74 + (longlong)puVar17) + 1;
  return;
}



===== FUN_1400f45a0 @ 1400f45a0 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400f45a0(uint param_1,int param_2)

{
  undefined *puVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  undefined1 auStack_498 [32];
  undefined4 local_478;
  undefined4 local_474;
  undefined4 local_470;
  undefined4 local_468;
  undefined4 uStack_464;
  undefined4 uStack_460;
  undefined4 uStack_45c;
  undefined4 local_458;
  undefined4 uStack_454;
  undefined4 uStack_450;
  undefined4 uStack_44c;
  undefined4 local_448;
  char local_438 [1024];
  ulonglong local_38;
  
  local_38 = DAT_1403020a0 ^ (ulonglong)auStack_498;
  lVar8 = (longlong)(int)param_1;
  lVar6 = (longlong)param_2;
  if ((param_1 < 6) && ((&DAT_183ebfdc4)[lVar8 * 0x16f1] == -1)) {
    if (DAT_183ebfaac == 4) {
      iVar5 = (&DAT_151620cb8)[lVar6 * 0xe0d];
      if (iVar5 < 1) {
        iVar5 = 0;
      }
      *(int *)(&DAT_16d482324 + lVar8 * 0x14) = iVar5;
      if ((DAT_16b2aaf28 == 0) && (0 < *(int *)(&DAT_16b2aaf34 + lVar8 * 0x86c))) {
        iVar5 = ((&DAT_151620cb8)[lVar6 * 0xe0d] + -1000) / 100;
        iVar4 = 0;
        if (-1 < iVar5) {
          iVar4 = iVar5;
        }
        if (1000 < iVar4) {
          iVar4 = 1000;
        }
        *(int *)(&DAT_16b2aaf34 + lVar8 * 0x86c) = (DAT_16b2aaf2c * iVar4) / 100 + DAT_16b2aaf2c;
      }
      if ((DAT_16b2ccc9c == 0) && (0 < *(int *)(&DAT_16b2ccca8 + lVar8 * 0x86c))) {
        iVar5 = ((&DAT_151620cb8)[lVar6 * 0xe0d] + -1000) / 100;
        iVar4 = 0;
        if (-1 < iVar5) {
          iVar4 = iVar5;
        }
        if (1000 < iVar4) {
          iVar4 = 1000;
        }
        *(int *)(&DAT_16b2ccca8 + lVar8 * 0x86c) = (DAT_16b2ccca0 * iVar4) / 100 + DAT_16b2ccca0;
      }
      if ((DAT_16b2eea10 == 0) && (0 < *(int *)(&DAT_16b2eea1c + lVar8 * 0x86c))) {
        iVar5 = ((&DAT_151620cb8)[lVar6 * 0xe0d] + -1000) / 100;
        iVar4 = 0;
        if (-1 < iVar5) {
          iVar4 = iVar5;
        }
        if (1000 < iVar4) {
          iVar4 = 1000;
        }
        *(int *)(&DAT_16b2eea1c + lVar8 * 0x86c) = (DAT_16b2eea14 * iVar4) / 100 + DAT_16b2eea14;
      }
      if ((DAT_16b310784 == 0) && (0 < *(int *)(&DAT_16b310790 + lVar8 * 0x86c))) {
        iVar5 = ((&DAT_151620cb8)[lVar6 * 0xe0d] + -1000) / 100;
        iVar4 = 0;
        if (-1 < iVar5) {
          iVar4 = iVar5;
        }
        if (1000 < iVar4) {
          iVar4 = 1000;
        }
        *(int *)(&DAT_16b310790 + lVar8 * 0x86c) = (DAT_16b310788 * iVar4) / 100 + DAT_16b310788;
      }
      if ((DAT_16b3324f8 == 0) && (0 < *(int *)(&DAT_16b332504 + lVar8 * 0x86c))) {
        iVar5 = ((&DAT_151620cb8)[lVar6 * 0xe0d] + -1000) / 100;
        iVar4 = 0;
        if (-1 < iVar5) {
          iVar4 = iVar5;
        }
        if (1000 < iVar4) {
          iVar4 = 1000;
        }
        *(int *)(&DAT_16b332504 + lVar8 * 0x86c) = (DAT_16b3324fc * iVar4) / 100 + DAT_16b3324fc;
      }
      if ((DAT_16b35426c == 0) && (0 < *(int *)(&DAT_16b354278 + lVar8 * 0x86c))) {
        iVar5 = ((&DAT_151620cb8)[lVar6 * 0xe0d] + -1000) / 100;
        iVar4 = 0;
        if (-1 < iVar5) {
          iVar4 = iVar5;
        }
        if (1000 < iVar4) {
          iVar4 = 1000;
        }
        *(int *)(&DAT_16b354278 + lVar8 * 0x86c) = (DAT_16b354270 * iVar4) / 100 + DAT_16b354270;
      }
      if ((DAT_16b375fe0 == 0) && (0 < *(int *)(&DAT_16b375fec + lVar8 * 0x86c))) {
        iVar5 = ((&DAT_151620cb8)[lVar6 * 0xe0d] + -1000) / 100;
        iVar4 = 0;
        if (-1 < iVar5) {
          iVar4 = iVar5;
        }
        if (1000 < iVar4) {
          iVar4 = 1000;
        }
        *(int *)(&DAT_16b375fec + lVar8 * 0x86c) = (DAT_16b375fe4 * iVar4) / 100 + DAT_16b375fe4;
      }
    }
    FUN_1400f3d10(param_1);
    local_478 = (&DAT_183ebfd94)[lVar8 * 0x16f1];
    local_474 = (&DAT_183ebfd98)[lVar8 * 0x16f1];
    local_470 = (&DAT_183ebfd9c)[lVar8 * 0x16f1];
    local_448 = DAT_1402783f4;
    local_468 = _DAT_140278d30;
    uStack_464 = _UNK_140278d34;
    uStack_460 = _UNK_140278d38;
    uStack_45c = _UNK_140278d3c;
    local_458 = _DAT_140278d30;
    uStack_454 = _UNK_140278d34;
    uStack_450 = _UNK_140278d38;
    uStack_44c = _UNK_140278d3c;
    FUN_14007b2a0(&local_468,&uStack_45c,
                  (float)((double)(float)(&DAT_183ebfd90)[lVar8 * 0x16f1] - DAT_1402785a0));
    iVar5 = FUN_140054130(0x19,&local_478,0,&local_468);
    if (iVar5 != -1) {
      (&DAT_182bbb3f8)[(longlong)iVar5 * 0x6e0] = 0;
      (&DAT_182bbb2e0)[(longlong)iVar5 * 0x6e0] = (param_1 + 1) * 0x457;
      FUN_140051940(iVar5);
    }
    puVar1 = (&PTR_s_Goldmen_Inc_1402b2890)[lVar8];
    (&DAT_183ebfdc4)[lVar8 * 0x16f1] = param_2;
    FUN_140158ab0(local_438,"%s is now manager of %s",&DAT_151620c64 + lVar6 * 0xe0d,puVar1);
    uVar3 = DAT_189c1dc64;
    uVar2 = DAT_183ebfd34;
    if (DAT_1ad04adc0 != 0) {
      lVar6 = -1;
      do {
        lVar7 = lVar6 + 1;
        lVar8 = lVar6 + 1;
        lVar6 = lVar7;
      } while (local_438[lVar8] != '\0');
      lVar6 = (longlong)(int)DAT_189c1dc64;
      iVar5 = (int)lVar7;
      if (0x3f < iVar5) {
        iVar5 = 0x3f;
      }
      lVar8 = lVar6 * 0x80;
      (&DAT_1873de460)[lVar6 * 0x20] = 2;
      (&DAT_1873de464)[lVar6 * 0x20] = uVar2;
      FUN_1401fc920(&DAT_1873de4a0 + lVar8,local_438,(longlong)iVar5);
      DAT_189c1dc64._0_2_ = (short)uVar3 + 1;
      (&DAT_1873de4a0)[lVar8 + iVar5] = 0;
      (&DAT_1873de480)[lVar6 * 0x20] = iVar5;
      (&DAT_1873de484)[lVar6 * 0x20] = 0;
      *(undefined4 *)(&DAT_1873de488 + lVar8) = 0xffffffff;
      *(undefined4 *)(&DAT_1873de48c + lVar8) = 0;
      DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
    }
  }
  return;
}



===== FUN_140127300 @ 140127300 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140127300(void)

{
  int *piVar1;
  int iVar2;
  short sVar3;
  char cVar4;
  int iVar5;
  longlong lVar6;
  ulonglong uVar7;
  int *piVar8;
  uint local_res8 [2];
  
  iVar5 = DAT_144cbfab0;
  if (DAT_144cbfab0 < DAT_144cbfab4) {
    if (DAT_144cbfab0 + 0x10000U < DAT_144cbfaa0) {
      FUN_1401fc920(&DAT_1853ad424,DAT_144cbfab0 + DAT_144cbfab8,0x10000);
      DAT_1853ad418 = 0x10000;
    }
    cVar4 = DAT_1853ad424;
    if (DAT_1853ad418 < 1) {
      cVar4 = (char)local_res8[0];
    }
    DAT_1853ad420 = 0;
    DAT_1853ad41c = (uint)(DAT_1853ad418 >= 1);
    if (cVar4 == '\x06') {
      FUN_140115ae0(&DAT_183ebfaac,4);
      if (((int)DAT_1853ad41c < 0x10000) && ((int)(DAT_1853ad41c + 0x20) <= DAT_1853ad418)) {
        if (0 < DAT_1853ad420) {
          DAT_1853ad41c = DAT_1853ad41c + 1;
          DAT_1853ad420 = 0;
        }
        lVar6 = (longlong)(int)DAT_1853ad41c;
        DAT_1853ad41c = DAT_1853ad41c + 0x20;
        _DAT_183ebfab0 = *(undefined8 *)(&DAT_1853ad424 + lVar6);
        uRam0000000183ebfab8 = *(undefined8 *)(&DAT_1853ad42c + lVar6);
        _DAT_183ebfac0 = *(undefined8 *)(&DAT_1853ad434 + lVar6);
        uRam0000000183ebfac8 = *(undefined8 *)(lVar6 + 0x1853ad43c);
      }
      DAT_144cbfab0 = iVar5 + DAT_1853ad41c + 1;
      _DAT_1853ad41c = CONCAT44(DAT_1853ad420,DAT_1853ad41c + 1);
      return;
    }
    DAT_183ebfd34 = DAT_183ebfd34 + 1;
    FUN_140115ae0(&DAT_183ebfccc,4);
    FUN_140115ae0(&DAT_183ebfcd4,0x18);
    FUN_140115ae0(&DAT_16b2a2ec0,0x1e);
    FUN_14018f1b0();
    FUN_140115ae0(local_res8,0x10);
    FUN_140115ae0(&DAT_189c1dc64,0x10);
    if (0 < (int)local_res8[0]) {
      uVar7 = (ulonglong)local_res8[0];
      do {
        FUN_14018dbf0(DAT_189c1dc64);
        sVar3 = (short)DAT_189c1dc64;
        DAT_189c1dc64 = (uint)(ushort)(sVar3 + 1);
        uVar7 = uVar7 - 1;
      } while (uVar7 != 0);
    }
    piVar8 = &DAT_1a4d2dd24;
    DAT_144cbfab0 = DAT_144cbfab0 + DAT_1853ad41c + 1;
    _DAT_1853ad41c = CONCAT44(DAT_1853ad420,DAT_1853ad41c + 1);
    DAT_144cbfac8 = 0;
    do {
      iVar5 = DAT_144cbfac8 + 1;
      if (piVar8[-4] == 0) {
        iVar5 = DAT_144cbfac8;
      }
      iVar2 = iVar5 + 1;
      if (*piVar8 == 0) {
        iVar2 = iVar5;
      }
      piVar1 = piVar8 + 8;
      iVar5 = iVar2 + 1;
      if (piVar8[4] == 0) {
        iVar5 = iVar2;
      }
      piVar8 = piVar8 + 0x10;
      DAT_144cbfac8 = iVar5 + 1;
      if (*piVar1 == 0) {
        DAT_144cbfac8 = iVar5;
      }
    } while ((longlong)piVar8 < 0x1a4d31d24);
  }
  return;
}



===== FUN_1400c4280 @ 1400c4280 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400c4280(int param_1)

{
  longlong lVar1;
  char cVar2;
  char cVar3;
  undefined4 uVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  undefined2 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  int iVar12;
  int iVar13;
  char *pcVar14;
  uint uVar15;
  ulonglong uVar16;
  ulonglong uVar17;
  undefined2 *puVar18;
  ulonglong uVar19;
  ulonglong uVar20;
  uint uVar21;
  int iVar22;
  longlong lVar23;
  char *pcVar24;
  undefined4 *puVar25;
  longlong lVar26;
  char *pcVar27;
  uint uVar28;
  int *piVar29;
  longlong lVar30;
  ulonglong uVar31;
  longlong lVar32;
  longlong lVar33;
  bool bVar34;
  undefined1 auStack_4a8 [32];
  uint *local_488;
  int local_478;
  uint local_474;
  undefined8 local_470;
  undefined8 local_468;
  undefined4 *local_460;
  longlong local_458;
  undefined4 uStack_44c;
  undefined4 local_448;
  int local_444 [126];
  undefined2 uStack_249;
  char cStack_247;
  ulonglong local_48;
  
  uVar7 = s_DRIVE_NOT_READY_140275f48._8_8_;
  local_48 = DAT_1403020a0 ^ (ulonglong)auStack_4a8;
  lVar30 = (longlong)param_1;
  lVar23 = lVar30 * 0x1b80;
  uVar31 = 0xffffffff;
  iVar12 = -1;
  local_478 = *(int *)(&DAT_182bbc574 + lVar23);
  lVar26 = (longlong)local_478;
  if (local_478 == 2) {
    iVar12 = *(int *)(&DAT_182bbb4b4 + lVar23);
  }
  else if ((local_478 == 0) && (0 < (int)(&DAT_182bbb1b4)[lVar30 * 0x6e0])) {
    iVar12 = *(int *)(&DAT_182bbb4b4 + (longlong)*(int *)(&DAT_182bbb1b8 + lVar23) * 0x1b80);
  }
  uVar20 = 0;
  uVar21 = 0;
  local_468 = lVar26 * 9;
  lVar33 = lVar30 * 0x6e0;
  lVar1 = lVar23 + lVar26 * 0x48;
  local_470 = lVar26 * 0x12;
  uVar28 = 0;
  local_474 = 0;
  local_448 = local_448 & 0xffffff00;
  pcVar24 = &DAT_182bbc534 + lVar23;
  uVar4 = *(undefined4 *)
           (&DAT_182bbc580 + ((longlong)*(int *)(&DAT_182bbc57c + lVar1) + local_470 + lVar33) * 4);
  local_460 = (undefined4 *)CONCAT44(local_460._4_4_,uVar4);
  uVar19 = uVar20;
  do {
    uVar16 = uVar19;
    cVar2 = pcVar24[(int)uVar16];
    if (((((byte)(cVar2 + 0x9fU) < 0x1a) || ((byte)(cVar2 + 0xbfU) < 0x1a)) ||
        ((byte)(cVar2 - 0x30U) < 10)) || (cVar2 == '\0')) break;
    local_474 = (int)uVar16 + 1;
    uVar16 = (ulonglong)local_474;
    uVar19 = (ulonglong)local_474;
  } while ((int)local_474 < 0x3e);
  if ((int)uVar16 < 0x3e) {
    pcVar27 = (char *)&local_448;
    uVar19 = uVar20;
    do {
      uVar28 = (uint)uVar19;
      cVar2 = pcVar24[(int)uVar16];
      if ((((0x19 < (byte)(cVar2 + 0x9fU)) && (0x19 < (byte)(cVar2 + 0xbfU))) &&
          (9 < (byte)(cVar2 - 0x30U))) || (cVar2 == '\0')) break;
      local_474 = (int)uVar16 + 1;
      *pcVar27 = cVar2;
      pcVar27 = pcVar27 + 1;
      uVar28 = uVar28 + 1;
      uVar19 = (ulonglong)uVar28;
      uVar16 = (ulonglong)local_474;
    } while ((int)local_474 < 0x3e);
  }
  *(undefined1 *)((longlong)local_444 + (longlong)(int)uVar28 + -4) = 0;
  local_458 = lVar23;
  if (local_448._1_1_ == '\0') {
    uVar28 = (uint)uVar16;
    while ((uVar15 = (uint)uVar16, (int)uVar28 < 0x3e && (pcVar24[(int)uVar15] == ' '))) {
      uVar28 = uVar15 + 1;
      uVar16 = (ulonglong)uVar28;
    }
    cVar2 = pcVar24[(int)uVar15];
    if ((byte)(cVar2 + 0x9fU) < 0x1a) {
      return;
    }
    if ((byte)(cVar2 + 0xbfU) < 0x1a) {
      return;
    }
    if ((byte)(cVar2 - 0x30U) < 10) {
      return;
    }
    uVar31 = uVar20;
    if (cVar2 != '\0') {
      for (; ((int)uVar15 < 0x3e && (uVar21 = (uint)uVar31, (longlong)uVar20 < 2));
          uVar20 = uVar20 + 1) {
        if (pcVar24[(int)uVar16] == '\0') break;
        uVar21 = uVar21 + 1;
        *(char *)((longlong)&uStack_249 + uVar20 + 1) = pcVar24[(int)uVar16];
        uVar15 = (int)uVar16 + 1;
        uVar16 = (ulonglong)uVar15;
        uVar31 = (ulonglong)uVar21;
      }
    }
    *(undefined1 *)((longlong)&uStack_249 + (longlong)(int)uVar21 + 1) = 0;
    if ((int)uVar21 < 1) {
      return;
    }
    if (uStack_249._1_1_ != ':') {
      return;
    }
    if (cStack_247 != '\0') {
      return;
    }
    if ((byte)((char)local_448 + 0xbfU) < 3) {
      iVar22 = (local_448 & 0xff) - 0x41;
      iVar12 = FUN_14004c960(param_1,iVar22);
      if (iVar12 != -1) {
        *(int *)(&DAT_182bbc574 + lVar23) = iVar22;
        return;
      }
    }
    uVar7 = s_DRIVE_NOT_READY_140275f48._8_8_;
    lVar23 = ((longlong)(int)(&DAT_182bbb4e8)[lVar30 * 0x6e0] + lVar30 * 0x6e) * 0x40;
    *(undefined8 *)(&DAT_182bbb4f4 + lVar23) = s_DRIVE_NOT_READY_140275f48._0_8_;
    *(undefined8 *)(&DAT_182bbb4fc + lVar23) = uVar7;
    goto LAB_1400c5327;
  }
  if (iVar12 == -1) {
    lVar23 = ((longlong)(int)(&DAT_182bbb4e8)[lVar30 * 0x6e0] + lVar30 * 0x6e) * 0x40;
    *(undefined8 *)(&DAT_182bbb4f4 + lVar23) = s_DRIVE_NOT_READY_140275f48._0_8_;
    *(undefined8 *)(&DAT_182bbb4fc + lVar23) = uVar7;
    goto LAB_1400c5327;
  }
  uVar19 = uVar20;
  if ((((char)local_448 == 'C') && (local_448._1_1_ == 'D')) && (local_448._2_1_ == '\0')) {
    local_488 = &local_474;
    iVar12 = FUN_14004c9c0(param_1,&local_478,&local_470,pcVar24);
    uVar8 = s_INVALID_DIRECTORY_140275f58._16_2_;
    uVar7 = s_INVALID_DIRECTORY_140275f58._8_8_;
    if (iVar12 == 1) {
      lVar26 = (longlong)local_478;
      if (local_478 == 2) {
        iVar12 = *(int *)(&DAT_182bbb4b4 + lVar23);
      }
      else {
        if (local_478 != 0) {
          return;
        }
        if ((int)(&DAT_182bbb1b4)[lVar30 * 0x6e0] < 1) {
          return;
        }
        iVar12 = *(int *)(&DAT_182bbb4b4 + (longlong)*(int *)(&DAT_182bbb1b8 + lVar23) * 0x1b80);
      }
      if (iVar12 == -1) {
        return;
      }
      if ((int)local_470 == 0) {
        *(undefined8 *)(&DAT_182bbc57c + lVar23 + lVar26 * 0x48) = 0;
        return;
      }
      iVar22 = 1;
      lVar30 = 1;
      local_448 = (int)local_470;
      do {
        local_470._0_4_ =
             *(int *)(&DAT_181feebd8 + (longlong)(int)local_470 * 0x10 + (longlong)iVar12 * 0x2828);
        if ((int)local_470 == 0) break;
        local_444[lVar30 + -1] = (int)local_470;
        iVar22 = iVar22 + 1;
        lVar30 = lVar30 + 1;
      } while (lVar30 < 8);
      lVar30 = (longlong)iVar22;
      lVar23 = lVar23 + lVar26 * 0x48;
      *(undefined8 *)(&DAT_182bbc57c + lVar23) = 0;
      if (lVar30 < 1) {
        return;
      }
      puVar25 = &uStack_44c + lVar30;
      do {
        iVar12 = *(int *)(&DAT_182bbc57c + lVar23);
        *(int *)(&DAT_182bbc57c + lVar23) = iVar12 + 1;
        *(undefined4 *)(&DAT_182bbc584 + (lVar26 * 0x12 + (longlong)iVar12 + lVar33) * 4) = *puVar25
        ;
        lVar30 = lVar30 + -1;
        puVar25 = puVar25 + -1;
      } while (lVar30 != 0);
      return;
    }
    lVar23 = ((longlong)(int)(&DAT_182bbb4e8)[lVar30 * 0x6e0] + lVar30 * 0x6e) * 0x40;
    *(undefined8 *)(&DAT_182bbb4f4 + lVar23) = s_INVALID_DIRECTORY_140275f58._0_8_;
    *(undefined8 *)(&DAT_182bbb4fc + lVar23) = uVar7;
    *(undefined2 *)(&DAT_182bbb504 + lVar23) = uVar8;
    goto LAB_1400c5327;
  }
  do {
    uVar17 = uVar19 + 1;
    uVar16 = uVar20;
    if (*(char *)((longlong)local_444 + (uVar19 - 4)) != (&DAT_140275f6c)[uVar19])
    goto LAB_1400c4930;
    uVar19 = uVar17;
  } while (uVar17 != 4);
  lVar26 = 1;
  *(undefined4 *)(&DAT_182bbc698 + lVar23) = 1;
  *(undefined4 *)(&DAT_182bbc69c + lVar23) = 4;
  *(undefined4 *)(&DAT_182bbc6d4 + lVar23) = 0;
  *(undefined8 *)(&DAT_182bbc6a8 + lVar23) = 1;
  *(int *)(&DAT_182bbc6a0 + lVar23) = local_478;
  lVar32 = lVar30 * 0x6e;
  *(undefined4 *)(&DAT_182bbc6a4 + lVar23) =
       *(undefined4 *)
        (&DAT_182bbc580 + ((longlong)*(int *)(&DAT_182bbc57c + lVar1) + local_470 + lVar33) * 4);
  (&DAT_182bbb4f4)[((int)(&DAT_182bbb4e8)[lVar30 * 0x6e0] + lVar32) * 0x40] = 0;
  FUN_1400c3e00(param_1);
  if (local_478 == 2) {
    iVar12 = *(int *)(&DAT_182bbb4b4 + lVar23);
LAB_1400c47de:
    if (iVar12 != -1) {
      FUN_140158ab0((longlong)&uStack_249 + 1,&DAT_140275ee0,local_478 + 0x41);
      if (0 < (int)*(uint *)(&DAT_182bbc57c + lVar1)) {
        uVar31 = (ulonglong)*(uint *)(&DAT_182bbc57c + lVar1);
        iVar22 = *(int *)(&DAT_182bbc57c + lVar23 + local_468 * 8);
        piVar29 = (int *)(&DAT_182bbc584 + lVar1);
        do {
          iVar13 = *piVar29;
          puVar18 = &uStack_249;
          do {
            pcVar24 = (char *)((longlong)puVar18 + 1);
            puVar18 = (undefined2 *)((longlong)puVar18 + 1);
          } while (*pcVar24 != '\0');
          lVar23 = 0;
          do {
            cVar2 = (&DAT_181feebcc)[lVar23 + (longlong)iVar13 * 0x10 + (longlong)iVar12 * 0x2828];
            *(char *)((longlong)puVar18 + lVar23) = cVar2;
            lVar23 = lVar23 + 1;
          } while (cVar2 != '\0');
          if (lVar26 < iVar22) {
            puVar18 = &uStack_249;
            do {
              pcVar24 = (char *)((longlong)puVar18 + 1);
              puVar18 = (undefined2 *)((longlong)puVar18 + 1);
            } while (*pcVar24 != '\0');
            *puVar18 = DAT_140275ee8;
          }
          lVar26 = lVar26 + 1;
          piVar29 = piVar29 + 1;
          uVar31 = uVar31 - 1;
        } while (uVar31 != 0);
      }
      goto LAB_1400c48ca;
    }
  }
  else if ((local_478 == 0) && (0 < (int)(&DAT_182bbb1b4)[lVar30 * 0x6e0])) {
    iVar12 = *(int *)(&DAT_182bbb4b4 + (longlong)*(int *)(&DAT_182bbb1b8 + lVar23) * 0x1b80);
    goto LAB_1400c47de;
  }
  uStack_249._1_1_ = '\0';
LAB_1400c48ca:
  FUN_140158ab0(&DAT_182bbb4f4 + ((int)(&DAT_182bbb4e8)[lVar30 * 0x6e0] + lVar32) * 0x40,
                "Directory of %s",(longlong)&uStack_249 + 1);
  FUN_1400c3e00(param_1);
  (&DAT_182bbb4f4)[((int)(&DAT_182bbb4e8)[lVar30 * 0x6e0] + lVar32) * 0x40] = 0;
  return;
  while (uVar16 = uVar17, uVar17 != 5) {
LAB_1400c4930:
    uVar17 = uVar16 + 1;
    uVar19 = uVar20;
    if (*(char *)((longlong)local_444 + (uVar16 - 4)) != (&DAT_140275f80)[uVar16])
    goto LAB_1400c4dc0;
  }
  local_470._4_4_ = (undefined4)(local_470 >> 0x20);
  local_470 = CONCAT44(local_470._4_4_,uVar4);
  local_488 = &local_474;
  local_468._4_4_ = (undefined4)(local_468 >> 0x20);
  local_468 = CONCAT44(local_468._4_4_,local_478);
  iVar12 = FUN_14004c9c0(param_1,&local_468,&local_470,pcVar24);
  uVar8 = s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._40_2_;
  uVar11 = s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._28_4_;
  uVar10 = s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._24_4_;
  uVar9 = s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._20_4_;
  uVar4 = s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._16_4_;
  uVar7 = s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._8_8_;
  if (iVar12 == 0) {
    iVar12 = FUN_14004c960(param_1,local_468 & 0xffffffff);
    if (iVar12 != -1) {
      if (0x3d < (int)local_474) goto LAB_1400c4a89;
      do {
        cVar2 = pcVar24[(int)local_474];
        if ((((byte)(cVar2 + 0x9fU) < 0x1a) || ((byte)(cVar2 + 0xbfU) < 0x1a)) ||
           (((byte)(cVar2 - 0x30U) < 10 || (cVar2 == '\0')))) {
          if (0x3d < (int)local_474) goto LAB_1400c4a89;
          pcVar27 = (char *)&local_448;
          goto LAB_1400c4a50;
        }
        local_474 = local_474 + 1;
      } while ((int)local_474 < 0x3e);
    }
  }
  else {
    lVar23 = ((longlong)(int)(&DAT_182bbb4e8)[lVar30 * 0x6e0] + lVar30 * 0x6e) * 0x40;
    *(undefined8 *)(&DAT_182bbb4f4 + lVar23) = s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._0_8_;
    *(undefined8 *)(&DAT_182bbb4fc + lVar23) = uVar7;
    uVar7 = s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._32_8_;
    *(undefined4 *)(&DAT_182bbb504 + lVar23) = uVar4;
    *(undefined4 *)(&DAT_182bbb508 + lVar23) = uVar9;
    *(undefined4 *)(&DAT_182bbb50c + lVar23) = uVar10;
    *(undefined4 *)(&DAT_182bbb510 + lVar23) = uVar11;
    *(undefined8 *)(&DAT_182bbb514 + lVar23) = uVar7;
    *(undefined2 *)(&DAT_182bbb51c + lVar23) = uVar8;
    FUN_1400c3e00(param_1);
  }
  goto LAB_1400c49e6;
  while (uVar19 = uVar31, uVar31 != 8) {
LAB_1400c4dc0:
    uVar31 = uVar19 + 1;
    if (*(char *)((longlong)local_444 + (uVar19 - 4)) != "MISSION"[uVar19]) {
      iVar12 = strcmp((char *)&local_448,"MISSION.EXE");
      uVar31 = uVar20;
      if (iVar12 != 0) goto LAB_1400c4fa0;
      break;
    }
  }
  cVar2 = s_BAD_COMMAND_OR_FILE_NAME_140276030[0x18];
  uVar5 = s_BAD_COMMAND_OR_FILE_NAME_140276030._16_8_;
  uVar7 = s_BAD_COMMAND_OR_FILE_NAME_140276030._8_8_;
  if (*(int *)(&DAT_182bbc7d8 + lVar23) != -1) {
    local_460 = (undefined4 *)(&DAT_182bbc7e0 + lVar23);
    (&DAT_182bbc7dc)[lVar30 * 0x6e0] = 2;
    *(undefined4 *)(&DAT_182bbb4f0 + lVar23) = 0xffffffff;
    *(undefined8 *)(&DAT_182bbb4e8 + lVar30 * 0x6e0) = 0;
    FUN_1401fcd30(local_460,0,0x420);
    uVar7 = s_CONNECTING____140276100._0_8_;
    *(undefined4 *)(&DAT_182bbc7ec + lVar23) = 0xffffffff;
    uVar8 = s_CONNECTING____140276100._12_2_;
    uVar4 = s_CONNECTING____140276100._8_4_;
    pcVar24 = &DAT_182bbb4f4 + lVar30 * 0x1b80;
    do {
      *pcVar24 = '\0';
      if ((int)uVar20 == 0) {
        *(undefined8 *)pcVar24 = uVar7;
        *(undefined4 *)(pcVar24 + 8) = uVar4;
        *(undefined2 *)(pcVar24 + 0xc) = uVar8;
      }
      uVar6 = _UNK_140279208;
      uVar5 = _DAT_140279200;
      lVar23 = (uVar20 + lVar30 * 0x6e) * 0x40;
      *(undefined8 *)(&DAT_182bbbcf4 + lVar23) = _DAT_140279200;
      *(undefined8 *)(&DAT_182bbbcfc + lVar23) = uVar6;
      *(undefined8 *)(&DAT_182bbbd04 + lVar23) = uVar5;
      *(undefined8 *)(&DAT_182bbbd0c + lVar23) = uVar6;
      *(undefined8 *)(&DAT_182bbbd14 + lVar23) = uVar5;
      *(undefined8 *)(lVar23 + 0x182bbbd1c) = uVar6;
      *(undefined8 *)(&DAT_182bbbd24 + lVar23) = uVar5;
      *(int *)(&DAT_182bbbd2c + lVar23) = (int)uVar5;
      *(short *)(&DAT_182bbbd30 + lVar23) = (short)uVar5;
      (&DAT_182bbbd32)[lVar23] = (char)uVar5;
      FUN_140050f90(param_1,uVar20);
      uVar21 = (int)uVar20 + 1;
      uVar20 = (ulonglong)uVar21;
      pcVar24 = pcVar24 + 0x40;
    } while ((int)uVar21 < 0x18);
    bVar34 = DAT_1ad04adc0 == 0;
    *local_460 = 0;
    *(undefined4 *)(&DAT_182bbc7e4 + local_458) = 0x100;
    uVar4 = DAT_183ebfd34;
    if (bVar34) {
      return;
    }
    lVar23 = (longlong)(int)DAT_189c1dc64;
    DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
    (&DAT_1873de460)[lVar23 * 0x20] = 0x13;
    (&DAT_1873de464)[lVar23 * 0x20] = uVar4;
    (&DAT_1873de480)[lVar23 * 0x20] = DAT_183e936f0;
    (&DAT_1873de484)[lVar23 * 0x20] = param_1;
    *(undefined4 *)(&DAT_1873de490 + lVar23 * 0x80) = 0x3f800000;
    *(undefined4 *)(&DAT_1873de494 + lVar23 * 0x80) = 0x3f800000;
    return;
  }
  lVar23 = ((longlong)(int)(&DAT_182bbb4e8)[lVar30 * 0x6e0] + lVar30 * 0x6e) * 0x40;
  *(undefined8 *)(&DAT_182bbb4f4 + lVar23) = s_BAD_COMMAND_OR_FILE_NAME_140276030._0_8_;
  *(undefined8 *)(&DAT_182bbb4fc + lVar23) = uVar7;
  *(undefined8 *)(&DAT_182bbb504 + lVar23) = uVar5;
  (&DAT_182bbb50c)[lVar23] = cVar2;
  goto LAB_1400c5327;
  while (uVar31 = uVar19, uVar19 != 8) {
LAB_1400c4fa0:
    uVar19 = uVar31 + 1;
    if (*(char *)((longlong)local_444 + (uVar31 - 4)) != "DECRYPT"[uVar31]) {
      iVar12 = strcmp((char *)&local_448,"DECRYPT.EXE");
      if (iVar12 != 0) goto LAB_1400c50d0;
      break;
    }
  }
  local_470 = CONCAT44(local_470._4_4_,local_460._0_4_);
  local_488 = &local_474;
  local_468 = CONCAT44(local_468._4_4_,local_478);
  uVar31 = 0xffffffff;
  iVar12 = FUN_14004c9c0(param_1,&local_468,&local_470,pcVar24);
  if (iVar12 == 0) {
    iVar12 = FUN_14004c960(param_1,local_468 & 0xffffffff);
    uVar4 = s_INCORRECT_FILE_TYPE_140276068._16_4_;
    uVar7 = s_INCORRECT_FILE_TYPE_140276068._8_8_;
    if (iVar12 != -1) {
      uVar28 = local_474;
      if (0x3d < (int)local_474) goto LAB_1400c51d5;
      do {
        cVar2 = pcVar24[(int)uVar28];
        if (((((byte)(cVar2 + 0x9fU) < 0x1a) || ((byte)(cVar2 + 0xbfU) < 0x1a)) ||
            ((byte)(cVar2 - 0x30U) < 10)) || (cVar2 == '\0')) {
          if (0x3d < (int)uVar28) goto LAB_1400c51d5;
          pcVar27 = (char *)&local_448;
          uVar19 = uVar20;
          goto LAB_1400c51a0;
        }
        uVar28 = uVar28 + 1;
      } while ((int)uVar28 < 0x3e);
    }
  }
  goto LAB_1400c504e;
  while( true ) {
    *pcVar27 = cVar2;
    uVar21 = uVar21 + 1;
    uVar19 = (ulonglong)uVar21;
    pcVar27 = pcVar27 + 1;
    uVar28 = uVar28 + 1;
    if (0x3d < (int)uVar28) break;
LAB_1400c51a0:
    uVar21 = (uint)uVar19;
    cVar2 = pcVar24[(int)uVar28];
    if (((0x19 < (byte)(cVar2 + 0x9fU)) && (0x19 < (byte)(cVar2 + 0xbfU))) &&
       (((9 < (byte)(cVar2 - 0x30U) && (cVar2 != '.')) || (cVar2 == '\0')))) break;
  }
LAB_1400c51d5:
  *(undefined1 *)((longlong)local_444 + (longlong)(int)uVar21 + -4) = 0;
  if (0 < (int)uVar21) {
    lVar26 = (longlong)iVar12 * 0x2828;
    if (0 < (int)(&DAT_181fefbcc)[(longlong)iVar12 * 0xa0a]) {
      piVar29 = (int *)(&DAT_181fefbe4 + lVar26);
      pcVar24 = &DAT_181fefbd4 + lVar26;
      do {
        if (*piVar29 == (int)local_470) {
          pcVar27 = pcVar24;
          do {
            cVar2 = *pcVar27;
            cVar3 = pcVar27[(longlong)local_444 + (-4 - (longlong)pcVar24)];
            if (cVar2 != cVar3) break;
            pcVar27 = pcVar27 + 1;
          } while (cVar3 != '\0');
          if (cVar2 == cVar3) {
            uVar31 = uVar20;
          }
        }
        uVar21 = (int)uVar20 + 1;
        uVar20 = (ulonglong)uVar21;
        pcVar24 = pcVar24 + 0x18;
        piVar29 = piVar29 + 6;
      } while ((int)uVar21 < (int)(&DAT_181fefbcc)[(longlong)iVar12 * 0xa0a]);
      if ((int)uVar31 != -1) {
        iVar12 = *(int *)(&DAT_181fefbd0 + lVar26 + (longlong)(int)uVar31 * 0x18);
        if (*(int *)(&DAT_1816def84 + (longlong)iVar12 * 0x488) != 0) {
          *(undefined4 *)(&DAT_182bbb4f0 + lVar23) = 0xffffffff;
          (&DAT_182bbc7dc)[lVar30 * 0x6e0] = 1;
          *(int *)(&DAT_182bbc9e4 + lVar23) = iVar12;
          FUN_1400c5c00(param_1);
          return;
        }
        lVar23 = ((longlong)(int)(&DAT_182bbb4e8)[lVar30 * 0x6e0] + lVar30 * 0x6e) * 0x40;
        *(undefined8 *)(&DAT_182bbb4f4 + lVar23) = s_INCORRECT_FILE_TYPE_140276068._0_8_;
        *(undefined8 *)(&DAT_182bbb4fc + lVar23) = uVar7;
        *(undefined4 *)(&DAT_182bbb504 + lVar23) = uVar4;
        goto LAB_1400c5327;
      }
    }
  }
LAB_1400c504e:
  uVar8 = s_USAGE__DECRYPT__filename__140276080._24_2_;
  uVar5 = s_USAGE__DECRYPT__filename__140276080._16_8_;
  uVar7 = s_USAGE__DECRYPT__filename__140276080._8_8_;
  lVar23 = ((longlong)(int)(&DAT_182bbb4e8)[lVar30 * 0x6e0] + lVar30 * 0x6e) * 0x40;
  *(undefined8 *)(&DAT_182bbb4f4 + lVar23) = s_USAGE__DECRYPT__filename__140276080._0_8_;
  *(undefined8 *)(&DAT_182bbb4fc + lVar23) = uVar7;
  *(undefined8 *)(&DAT_182bbb504 + lVar23) = uVar5;
  *(undefined2 *)(&DAT_182bbb50c + lVar23) = uVar8;
  goto LAB_1400c5327;
  while (uVar20 = uVar31, uVar31 != 6) {
LAB_1400c50d0:
    uVar31 = uVar20 + 1;
    if (*(char *)((longlong)local_444 + (uVar20 - 4)) != "SNAKE"[uVar20]) {
      iVar12 = strcmp((char *)&local_448,"SNAKE.EXE");
      cVar2 = s_BAD_COMMAND_OR_FILE_NAME_140276030[0x18];
      uVar5 = s_BAD_COMMAND_OR_FILE_NAME_140276030._16_8_;
      uVar7 = s_BAD_COMMAND_OR_FILE_NAME_140276030._8_8_;
      if (iVar12 != 0) {
        if (*pcVar24 == '\0') {
          return;
        }
        lVar23 = ((longlong)(int)(&DAT_182bbb4e8)[lVar30 * 0x6e0] + lVar30 * 0x6e) * 0x40;
        *(undefined8 *)(&DAT_182bbb4f4 + lVar23) = s_BAD_COMMAND_OR_FILE_NAME_140276030._0_8_;
        *(undefined8 *)(&DAT_182bbb4fc + lVar23) = uVar7;
        *(undefined8 *)(&DAT_182bbb504 + lVar23) = uVar5;
        (&DAT_182bbb50c)[lVar23] = cVar2;
        goto LAB_1400c5327;
      }
      break;
    }
  }
  (&DAT_182bbc7dc)[lVar30 * 0x6e0] = 3;
  *(undefined4 *)(&DAT_182bbb4f0 + lVar23) = 0xffffffff;
  *(undefined8 *)(&DAT_182bbb4e8 + lVar30 * 0x6e0) = 0;
  FUN_1401fcd30(&DAT_182bbc7e0 + lVar23,0,0x520);
  FUN_1400c92b0(param_1);
  return;
  while( true ) {
    *pcVar27 = cVar2;
    uVar21 = uVar21 + 1;
    uVar19 = (ulonglong)uVar21;
    pcVar27 = pcVar27 + 1;
    local_474 = local_474 + 1;
    if (0x3d < (int)local_474) break;
LAB_1400c4a50:
    uVar21 = (uint)uVar19;
    cVar2 = pcVar24[(int)local_474];
    if (((0x19 < (byte)(cVar2 + 0x9fU)) && (0x19 < (byte)(cVar2 + 0xbfU))) &&
       (((9 < (byte)(cVar2 - 0x30U) && (cVar2 != '.')) || (cVar2 == '\0')))) break;
  }
LAB_1400c4a89:
  *(undefined1 *)((longlong)local_444 + (longlong)(int)uVar21 + -4) = 0;
  if (0 < (int)uVar21) {
    local_468 = (longlong)iVar12 * 0x2828;
    if (0 < (int)(&DAT_181fefbcc)[(longlong)iVar12 * 0xa0a]) {
      piVar29 = (int *)(&DAT_181fefbe4 + local_468);
      pcVar27 = &DAT_181fefbd4 + local_468;
      do {
        if (*piVar29 == (int)local_470) {
          pcVar14 = pcVar27;
          do {
            cVar2 = *pcVar14;
            cVar3 = pcVar14[(longlong)local_444 + (-4 - (longlong)pcVar27)];
            if (cVar2 != cVar3) break;
            pcVar14 = pcVar14 + 1;
          } while (cVar3 != '\0');
          if (cVar2 == cVar3) {
            uVar31 = uVar20;
          }
        }
        uVar21 = (int)uVar20 + 1;
        uVar20 = (ulonglong)uVar21;
        pcVar27 = pcVar27 + 0x18;
        piVar29 = piVar29 + 6;
      } while ((int)uVar21 < (int)(&DAT_181fefbcc)[(longlong)iVar12 * 0xa0a]);
      if ((int)uVar31 != -1) {
        local_470 = CONCAT44(local_470._4_4_,local_460._0_4_);
        local_488 = &local_474;
        iVar22 = FUN_14004c9c0(param_1,&local_478,&local_470,pcVar24);
        iVar12 = local_478;
        uVar8 = s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._40_2_;
        uVar7 = s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._8_8_;
        if (iVar22 == 1) {
          iVar22 = FUN_14004c960(param_1,local_478);
          if (iVar22 == -1) {
            return;
          }
          uVar9 = (int)local_470;
          iVar13 = FUN_140080820(iVar22,local_470 & 0xffffffff,&local_448);
          uVar4 = s_FILE_ALREADY_EXISTS_140275fa0._16_4_;
          uVar6 = s_FILE_ALREADY_EXISTS_140275fa0._8_8_;
          uVar5 = s_INSUFFICIENT_DISK_SPACE_140275f88._16_8_;
          uVar7 = s_INSUFFICIENT_DISK_SPACE_140275f88._8_8_;
          if (iVar13 == -1) {
            if ((399 < (int)(&DAT_181feebc4)[(longlong)iVar22 * 0xa0a]) ||
               ((int)(&DAT_181fefbcc)[(longlong)iVar22 * 0xa0a] < 3)) {
              *(undefined4 *)(&DAT_182bbc698 + lVar23) = 0;
              *(undefined4 *)(&DAT_182bbc69c + lVar23) = 0x100;
              *(undefined4 *)(&DAT_182bbc6d4 + lVar23) = 0;
              *(int *)(&DAT_182bbc6a0 + lVar23) = iVar12;
              *(undefined4 *)(&DAT_182bbc6a4 + lVar23) = uVar9;
              uVar4 = DAT_1402783f4;
              pcVar24 = (char *)&local_448;
              do {
                cVar2 = *pcVar24;
                pcVar24[(longlong)(&DAT_182bbc6b0 + (lVar23 - (longlong)&local_448))] = cVar2;
                pcVar24 = pcVar24 + 1;
              } while (cVar2 != '\0');
              iVar12 = (&DAT_182bbb4e8)[lVar30 * 0x6e0];
              *(undefined4 *)(&DAT_182bbc6d0 + lVar23) =
                   *(undefined4 *)(&DAT_181fefbd0 + local_468 + (longlong)(int)uVar31 * 0x18);
              (&DAT_182bbb4f4)[((longlong)iVar12 + lVar30 * 0x6e) * 0x40] = 0;
              FUN_140051650(DAT_183e936f4,param_1,&IMAGE_DOS_HEADER_140000000,uVar4);
              return;
            }
            lVar23 = ((longlong)(int)(&DAT_182bbb4e8)[lVar30 * 0x6e0] + lVar30 * 0x6e) * 0x40;
            *(undefined8 *)(&DAT_182bbb4f4 + lVar23) = s_INSUFFICIENT_DISK_SPACE_140275f88._0_8_;
            *(undefined8 *)(&DAT_182bbb4fc + lVar23) = uVar7;
            *(undefined8 *)(&DAT_182bbb504 + lVar23) = uVar5;
          }
          else {
            lVar23 = ((longlong)(int)(&DAT_182bbb4e8)[lVar30 * 0x6e0] + lVar30 * 0x6e) * 0x40;
            *(undefined8 *)(&DAT_182bbb4f4 + lVar23) = s_FILE_ALREADY_EXISTS_140275fa0._0_8_;
            *(undefined8 *)(&DAT_182bbb4fc + lVar23) = uVar6;
            *(undefined4 *)(&DAT_182bbb504 + lVar23) = uVar4;
          }
        }
        else {
          uVar5 = CONCAT44(s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._20_4_,
                           s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._16_4_);
          uVar6 = CONCAT44(s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._28_4_,
                           s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._24_4_);
          lVar23 = ((longlong)(int)(&DAT_182bbb4e8)[lVar30 * 0x6e0] + lVar30 * 0x6e) * 0x40;
          *(undefined8 *)(&DAT_182bbb4f4 + lVar23) =
               s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._0_8_;
          *(undefined8 *)(&DAT_182bbb4fc + lVar23) = uVar7;
          uVar7 = s_THE_SYSTEM_CANNOT_FIND_THE_PATH_S_140275fb8._32_8_;
          *(undefined8 *)(&DAT_182bbb504 + lVar23) = uVar5;
          *(undefined8 *)(&DAT_182bbb50c + lVar23) = uVar6;
          *(undefined8 *)(&DAT_182bbb514 + lVar23) = uVar7;
          *(undefined2 *)(&DAT_182bbb51c + lVar23) = uVar8;
        }
        goto LAB_1400c5327;
      }
    }
  }
LAB_1400c49e6:
  uVar8 = s_THE_SYSTEM_CANNOT_FIND_THE_FILE_S_140275fe8._40_2_;
  uVar6 = s_THE_SYSTEM_CANNOT_FIND_THE_FILE_S_140275fe8._24_8_;
  uVar5 = s_THE_SYSTEM_CANNOT_FIND_THE_FILE_S_140275fe8._16_8_;
  uVar7 = s_THE_SYSTEM_CANNOT_FIND_THE_FILE_S_140275fe8._8_8_;
  lVar23 = ((longlong)(int)(&DAT_182bbb4e8)[lVar30 * 0x6e0] + lVar30 * 0x6e) * 0x40;
  *(undefined8 *)(&DAT_182bbb4f4 + lVar23) = s_THE_SYSTEM_CANNOT_FIND_THE_FILE_S_140275fe8._0_8_;
  *(undefined8 *)(&DAT_182bbb4fc + lVar23) = uVar7;
  uVar7 = s_THE_SYSTEM_CANNOT_FIND_THE_FILE_S_140275fe8._32_8_;
  *(undefined8 *)(&DAT_182bbb504 + lVar23) = uVar5;
  *(undefined8 *)(&DAT_182bbb50c + lVar23) = uVar6;
  *(undefined8 *)(&DAT_182bbb514 + lVar23) = uVar7;
  *(undefined2 *)(&DAT_182bbb51c + lVar23) = uVar8;
LAB_1400c5327:
  FUN_1400c3e00(param_1);
  return;
}



===== FUN_14011fd00 @ 14011fd00 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_14011fd00(void)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float fVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  longlong lVar10;
  undefined4 uVar11;
  undefined *puVar12;
  undefined8 uVar13;
  longlong lVar14;
  float *pfVar15;
  undefined4 *puVar16;
  int iVar17;
  int *piVar18;
  int iVar19;
  float fVar20;
  int *piVar21;
  float *pfVar22;
  ulonglong uVar23;
  float *pfVar24;
  longlong lVar25;
  uint uVar26;
  longlong lVar27;
  undefined *puVar28;
  undefined4 *puVar29;
  undefined8 uVar30;
  undefined4 uVar31;
  float fVar32;
  undefined4 uVar33;
  undefined1 auStack_3c8 [32];
  undefined8 local_3a8;
  undefined8 *local_3a0;
  undefined4 local_398;
  undefined4 local_390;
  undefined4 local_388;
  float local_378;
  float local_374;
  float local_370;
  undefined4 local_368;
  undefined4 local_364;
  undefined8 local_358;
  undefined8 uStack_350;
  undefined8 local_348;
  undefined8 uStack_340;
  undefined8 local_338;
  undefined8 uStack_330;
  undefined8 local_328;
  undefined8 uStack_320;
  undefined8 local_318;
  undefined8 uStack_310;
  undefined8 local_308;
  ulonglong uStack_300;
  undefined8 local_2f8;
  ulonglong uStack_2f0;
  undefined8 local_2e8;
  undefined8 uStack_2e0;
  undefined8 local_2d8;
  undefined8 uStack_2d0;
  undefined1 local_2c8 [512];
  ulonglong local_c8;
  
  local_c8 = DAT_1403020a0 ^ (ulonglong)auStack_3c8;
  if ((DAT_14040488c != 0) && (DAT_140404a60 != (code *)0x0)) {
    uVar13 = 0x935f;
    if (DAT_151e46194 == 0) {
      uVar13 = 0x935e;
    }
    (*DAT_140404a60)(0x8ca1,uVar13);
  }
  uVar9 = DAT_1402783f4;
  uVar8 = DAT_140278338;
  _DAT_184178d08 = (float)DAT_182a7d55c;
  DAT_151e461b8 = 0;
  _DAT_184178d00 = 0;
  DAT_18417de78 = 0.0;
  DAT_18417de7c = 1.0;
  _DAT_184178d0c = (float)DAT_182a7d560;
  DAT_18417de80 = 0.5;
  DAT_184178d6c = DAT_1402781bc;
  DAT_184178d74 = DAT_183f7c574;
  DAT_184178d70 = DAT_140278ac8;
  _DAT_184178e38 = DAT_183f7c550 * DAT_140278390 + DAT_183f7c568 * DAT_140278390;
  _DAT_184178e44 = DAT_183f7c568 * DAT_140278390 - DAT_183f7c550 * DAT_140278390;
  _DAT_184178e3c = DAT_183f7c554 * DAT_140278390 + DAT_183f7c56c * DAT_140278390;
  _DAT_184178e48 = DAT_183f7c56c * DAT_140278390 - DAT_183f7c554 * DAT_140278390;
  _DAT_184178e40 = DAT_183f7c558 * DAT_140278390 + DAT_183f7c570 * DAT_140278390;
  _DAT_184178e4c = DAT_183f7c570 * DAT_140278390 - DAT_183f7c558 * DAT_140278390;
  _DAT_1841fa1cc = DAT_183f7c548 * DAT_1402f61bc + _DAT_1402f61c4;
  _DAT_1841fa1c8 = DAT_183f7c544 * DAT_1402f61bc;
  _DAT_1841fa1d0 = DAT_183f7c54c * DAT_1402f61bc;
  FUN_14007a240(&DAT_18417de78,&DAT_18417de78);
  local_374 = (float)DAT_140278310;
  local_370 = (float)DAT_140278bfc;
  local_378 = 0.0;
  FUN_14007b4d0(&DAT_18417de78,&local_378,DAT_183ebfd54);
  _DAT_18417de84 = 0;
  FUN_1400212e0();
  FUN_1400d26a0(&DAT_183f7c544);
  (*DAT_144980d68)(0xb71);
  (*DAT_140302f58)(0x203);
  if (DAT_151e46194 != 0) {
    (*DAT_140302f58)(0x206);
  }
  (*DAT_144980d58)(1);
  FUN_140094a90();
  FUN_140093e60();
  FUN_14011cc30(0);
  (*DAT_144980d68)(0xb44);
  (*DAT_144980cc0)(0x900);
  (*DAT_1404046f0)(0x8d40,*(undefined4 *)(&DAT_183e990c0 + (longlong)DAT_183e97744 * 8));
  local_398 = DAT_184178d74;
  local_3a0 = (undefined8 *)CONCAT44(local_3a0._4_4_,DAT_184178d70);
  local_3a8 = (undefined4 *)CONCAT44(local_3a8._4_4_,DAT_184178d6c);
  FUN_14007a8c0(0,0,0x400,0x240);
  FUN_14007be20(&DAT_183f7c544,&DAT_183f7c550);
  if (DAT_16b165f60 == 0) {
    FUN_140123190();
  }
  local_398 = DAT_184178d74;
  local_3a0 = (undefined8 *)CONCAT44(local_3a0._4_4_,DAT_184178d70);
  local_3a8._0_4_ = DAT_184178d6c;
  FUN_14007a8c0(0,0,0x400,0x240);
  FUN_14007be20(&DAT_183f7c544,&DAT_183f7c550);
  local_3a8 = (undefined4 *)((ulonglong)local_3a8._4_4_ << 0x20);
  iVar17 = DAT_183ebe404;
  if (DAT_16b165f60 != 0) {
    iVar17 = DAT_183ebe430;
  }
  (*DAT_140404718)(0x8d40,0x8ce0,0xde1,(&DAT_183f7cc2c)[(longlong)iVar17 * 0x2c]);
  if (DAT_16b165f60 != 0) {
    (*DAT_144980d30)();
    (*DAT_144980d48)(0xffffffff);
    (*DAT_144980d38)(0);
    (*DAT_144980d28)(0x4500);
    (*DAT_144980d48)(0);
  }
  (*DAT_144980d30)();
  (*DAT_144980d28)(0x4000);
  FUN_1400a5d30();
  FUN_1400a5890(&DAT_184178d60);
  (*DAT_144980d60)(0xbe2);
  if (DAT_16b165f60 != 0) {
    (*DAT_144980ce0)(0x408,0x1b01);
    (*DAT_144980d60)(0xb71);
  }
  (*DAT_144980d68)(0xb44);
  (*DAT_144980cc0)(0x900);
  lVar27 = 0x100;
  if ((DAT_16b165f60 == 0) && ((*DAT_144980d58)(0), DAT_16b165f60 == 0)) {
    FUN_14011e210(0);
  }
  else if ((DAT_18b7d2fbc == 0) && (DAT_18c434fdc == 0)) {
    (*DAT_140404170)(0x8892,*(undefined4 *)(&DAT_183e9b0c0 + (longlong)DAT_183e98c08 * 8));
    (*DAT_140404170)(0x8893,*(undefined4 *)(&DAT_183e9b0c0 + (longlong)DAT_183e98c0c * 8));
    (*DAT_140404238)(0);
    (*DAT_140404238)(1);
    local_3a0 = (undefined8 *)0x0;
    local_3a8._0_4_ = 0x40;
    (*DAT_1404044a8)(0,3,0x1406);
    local_3a0 = (undefined8 *)0x24;
    local_3a8._0_4_ = 0x40;
    (*DAT_1404044a8)(1,3,0x1406);
    local_3a8 = (undefined4 *)CONCAT44(local_3a8._4_4_,uVar9);
    (*DAT_140404468)(2);
    piVar18 = &DAT_183ebc404;
    piVar21 = &DAT_149f54c20;
    lVar10 = 0x100;
    puVar12 = &DAT_149f55020;
    puVar28 = &DAT_14df55020;
    do {
      if (0 < *piVar21) {
        (*DAT_1404042e0)(DAT_1abd4ac00);
        (*DAT_140404378)(DAT_1abd4ac14,1,0,&DAT_1a724e6c0);
        (*DAT_140404098)(0x84c0);
        (*DAT_140404050)(0xde1,(&DAT_183f7cc2c)[(longlong)*piVar18 * 0x2c]);
        local_3a0 = (undefined8 *)(puVar12 + 0x6000000);
        local_3a8 = (undefined4 *)CONCAT44(local_3a8._4_4_,*piVar21);
        (*DAT_140404808)(4,puVar12,0x1405,puVar28);
      }
      puVar12 = puVar12 + 0x10000;
      puVar28 = puVar28 + 0x20000;
      piVar18 = piVar18 + 4;
      piVar21 = piVar21 + 1;
      lVar10 = lVar10 + -1;
    } while (lVar10 != 0);
    (*DAT_140404170)(0x8893,0);
    (*DAT_140404170)(0x8892,0);
    (*DAT_140404230)(1);
    (*DAT_140404230)(0);
  }
  iVar17 = 0;
  FUN_1400d22e0(0);
  (*DAT_1404042e0)(DAT_1515acfc0);
  (*DAT_140404238)(0);
  (*DAT_140404238)(1);
  (*DAT_140404238)(2);
  (*DAT_140404098)(0x84c1);
  (*DAT_140404050)(0xde1,(&DAT_183f7cc2c)[(longlong)DAT_183ebe408 * 0x2c]);
  (*DAT_140404098)(0x84c0);
  (*DAT_140404170)(0x8892,*(undefined4 *)(&DAT_183e9b0c0 + (longlong)DAT_183e98c04 * 8));
  (*DAT_140404170)(0x8893,*(undefined4 *)(&DAT_183e9b0c0 + (longlong)DAT_183e98c10 * 8));
  puVar29 = &DAT_150f55024;
  if (0 < DAT_150f55020) {
    puVar16 = &DAT_150f55024;
    iVar19 = iVar17;
    do {
      FUN_14011ddb0(*puVar16,0);
      iVar19 = iVar19 + 1;
      puVar16 = puVar16 + 1;
    } while (iVar19 < DAT_150f55020);
  }
  (*DAT_140404170)(0x8893,0);
  (*DAT_140404170)(0x8892,0);
  (*DAT_144980d60)(0x8037);
  (*DAT_140404098)(0x84c0);
  (*DAT_140404230)(2);
  (*DAT_140404230)(1);
  (*DAT_140404230)(0);
  (*DAT_1404042e0)(0);
  (*DAT_1404042e0)(DAT_1515ad290);
  FUN_140124af0(0,0);
  local_2d8 = 0;
  uStack_2d0 = 0;
  local_368 = DAT_183ebc414;
  local_364 = DAT_183ebc414;
  if (0 < DAT_1a724e700) {
    piVar21 = &DAT_1a70ae580;
    uVar11 = DAT_183ebc414;
    do {
      if (piVar21[2] != 0) {
        iVar19 = *piVar21;
        lVar10 = (longlong)iVar17;
        if (iVar19 == 0) {
          local_368 = DAT_183ebf118;
          local_364 = DAT_183ebf118;
          local_3a0 = &local_2d8;
          local_3a8 = &local_368;
          FUN_140124840(DAT_183ebc044,&DAT_1a70ae58c + lVar10 * 0x1a,&DAT_1a70ae5a4 + lVar10 * 0x1a,
                        0);
          iVar19 = *piVar21;
          uVar11 = DAT_183ebc414;
        }
        if (iVar19 == 1) {
          local_3a0 = &local_2d8;
          local_3a8 = &local_368;
          local_368 = uVar11;
          local_364 = uVar11;
          FUN_140124840(DAT_183ebc350,&DAT_1a70ae58c + lVar10 * 0x1a,&DAT_1a70ae5a4 + lVar10 * 0x1a,
                        0);
          uVar11 = DAT_183ebc414;
        }
      }
      iVar17 = iVar17 + 1;
      piVar21 = piVar21 + 0x1a;
    } while (iVar17 < DAT_1a724e700);
  }
  _DAT_1a724e600 = _DAT_140278d30;
  _DAT_1a724e608 = _UNK_140278d38;
  pfVar15 = (float *)&local_318;
  pfVar22 = (float *)&DAT_1a724e604;
  _DAT_1a724e610 = _DAT_140278d80;
  _DAT_1a724e618 = _UNK_140278d88;
  lVar10 = (longlong)&DAT_1a724e5d0 - (longlong)&local_318;
  lVar25 = 4;
  _DAT_1a724e620 = _DAT_140278e20;
  _DAT_1a724e628 = _UNK_140278e28;
  _DAT_1a724e630 = _DAT_140279490;
  _DAT_1a724e638 = _UNK_140279498;
  do {
    fVar1 = pfVar22[-1];
    lVar14 = 4;
    fVar32 = *pfVar22;
    fVar20 = pfVar22[1];
    fVar2 = pfVar22[2];
    do {
      *pfVar15 = fVar1 * *(float *)((longlong)pfVar15 + lVar10 + -0x10) +
                 fVar32 * *(float *)((longlong)pfVar15 + lVar10) +
                 fVar20 * *(float *)((longlong)pfVar15 + lVar10 + 0x10) +
                 fVar2 * *(float *)((longlong)pfVar15 + lVar10 + 0x20);
      pfVar15 = pfVar15 + 1;
      lVar14 = lVar14 + -1;
    } while (lVar14 != 0);
    pfVar22 = pfVar22 + 4;
    lVar10 = lVar10 + -0x10;
    lVar25 = lVar25 + -1;
  } while (lVar25 != 0);
  _DAT_1a724e640 = local_318;
  _DAT_1a724e648 = uStack_310;
  pfVar15 = (float *)&local_318;
  _DAT_1a724e650 = local_308;
  _DAT_1a724e658 = uStack_300;
  pfVar22 = (float *)&DAT_1a724e644;
  lVar10 = (longlong)&DAT_1a724e590 - (longlong)&local_318;
  lVar25 = 4;
  _DAT_1a724e660 = local_2f8;
  uRam00000001a724e668 = uStack_2f0;
  _DAT_1a724e670 = local_2e8;
  uRam00000001a724e678 = uStack_2e0;
  do {
    fVar1 = pfVar22[-1];
    lVar14 = 4;
    fVar32 = *pfVar22;
    fVar20 = pfVar22[1];
    fVar2 = pfVar22[2];
    do {
      *pfVar15 = fVar1 * *(float *)(lVar10 + -0x10 + (longlong)pfVar15) +
                 fVar32 * *(float *)(lVar10 + (longlong)pfVar15) +
                 fVar20 * *(float *)(lVar10 + 0x10 + (longlong)pfVar15) +
                 fVar2 * *(float *)(lVar10 + 0x20 + (longlong)pfVar15);
      pfVar15 = pfVar15 + 1;
      lVar14 = lVar14 + -1;
    } while (lVar14 != 0);
    pfVar22 = pfVar22 + 4;
    lVar10 = lVar10 + -0x10;
    lVar25 = lVar25 + -1;
  } while (lVar25 != 0);
  _DAT_1a724e6c0 = local_318;
  _DAT_1a724e6c8 = uStack_310;
  _DAT_1a724e6d0 = local_308;
  _DAT_1a724e6d8 = uStack_300;
  _DAT_1a724e6e0 = local_2f8;
  DAT_1a724e6e0_8 = uStack_2f0;
  _DAT_1a724e6f0 = local_2e8;
  DAT_1a724e6f0_8 = uStack_2e0;
  (*DAT_140404378)(DAT_1515ad2b4,1,0,&DAT_1a724e6c0);
  FUN_1401259b0(0);
  (*DAT_1404042e0)(0);
  FUN_140189e80(0);
  (*DAT_1404042e0)(0);
  if (DAT_16b165f60 == 0) {
    FUN_140122690();
    local_398 = DAT_184178d74;
    local_3a0 = (undefined8 *)CONCAT44(local_3a0._4_4_,DAT_184178d70);
    local_3a8 = (undefined4 *)CONCAT44(local_3a8._4_4_,DAT_184178d6c);
    FUN_14007a8c0(0,0,0x400,0x240);
    pfVar22 = (float *)&local_358;
    pfVar15 = (float *)((longlong)&local_318 + 4);
    lVar10 = (longlong)&DAT_1a724e5d0 - (longlong)&local_358;
    lVar25 = 4;
    local_308 = _DAT_140278d80;
    uStack_300 = _UNK_140278d88;
    local_318 = _DAT_140278d30;
    uStack_310 = _UNK_140278d38;
    local_2f8 = _DAT_140278e20;
    uStack_2f0 = _UNK_140278e28;
    local_2e8 = CONCAT44((uint)DAT_183f7c548 ^ DAT_140279870,(uint)DAT_183f7c544 ^ DAT_140279870);
    uStack_2e0 = CONCAT44(0x3f800000,(uint)DAT_183f7c54c ^ DAT_140279870);
    do {
      fVar1 = pfVar15[-1];
      lVar14 = 4;
      fVar32 = *pfVar15;
      fVar20 = pfVar15[1];
      fVar2 = pfVar15[2];
      do {
        *pfVar22 = fVar1 * *(float *)((longlong)pfVar22 + lVar10 + -0x10) +
                   fVar32 * *(float *)((longlong)pfVar22 + lVar10) +
                   fVar20 * *(float *)((longlong)pfVar22 + lVar10 + 0x10) +
                   fVar2 * *(float *)((longlong)pfVar22 + lVar10 + 0x20);
        pfVar22 = pfVar22 + 1;
        lVar14 = lVar14 + -1;
      } while (lVar14 != 0);
      pfVar15 = pfVar15 + 4;
      lVar10 = lVar10 + -0x10;
      lVar25 = lVar25 + -1;
    } while (lVar25 != 0);
    pfVar15 = (float *)&local_358;
    _DAT_1a724e5c0 = local_358;
    _DAT_1a724e5c8 = uStack_350;
    pfVar22 = (float *)&DAT_1a724e604;
    lVar10 = (longlong)&DAT_1a724e5d0 - (longlong)&local_358;
    _DAT_1a724e5d0 = local_348;
    _DAT_1a724e5d8 = uStack_340;
    lVar25 = 4;
    _DAT_1a724e5e0 = local_338;
    _DAT_1a724e5e8 = uStack_330;
    _DAT_1a724e5f0 = local_328;
    _DAT_1a724e5f8 = uStack_320;
    _DAT_1a724e600 = _DAT_140278d30;
    _DAT_1a724e608 = _UNK_140278d38;
    _DAT_1a724e610 = _DAT_140278d80;
    _DAT_1a724e618 = _UNK_140278d88;
    _DAT_1a724e620 = _DAT_140278e20;
    _DAT_1a724e628 = _UNK_140278e28;
    _DAT_1a724e630 = _DAT_140279490;
    _DAT_1a724e638 = _UNK_140279498;
    do {
      fVar1 = pfVar22[-1];
      lVar14 = 4;
      fVar32 = *pfVar22;
      fVar20 = pfVar22[1];
      fVar2 = pfVar22[2];
      do {
        *pfVar15 = fVar1 * *(float *)(lVar10 + -0x10 + (longlong)pfVar15) +
                   fVar32 * *(float *)(lVar10 + (longlong)pfVar15) +
                   fVar20 * *(float *)(lVar10 + 0x10 + (longlong)pfVar15) +
                   fVar2 * *(float *)(lVar10 + 0x20 + (longlong)pfVar15);
        pfVar15 = pfVar15 + 1;
        lVar14 = lVar14 + -1;
      } while (lVar14 != 0);
      pfVar22 = pfVar22 + 4;
      lVar10 = lVar10 + -0x10;
      lVar25 = lVar25 + -1;
    } while (lVar25 != 0);
    pfVar15 = (float *)&local_358;
    _DAT_1a724e640 = local_358;
    _DAT_1a724e648 = uStack_350;
    pfVar22 = (float *)&DAT_1a724e5c4;
    lVar10 = (longlong)&DAT_1a724e590 - (longlong)&local_358;
    _DAT_1a724e650 = local_348;
    _DAT_1a724e658 = uStack_340;
    lVar25 = 4;
    _DAT_1a724e660 = local_338;
    uRam00000001a724e668 = uStack_330;
    _DAT_1a724e670 = local_328;
    uRam00000001a724e678 = uStack_320;
    do {
      fVar1 = pfVar22[-1];
      lVar14 = 4;
      fVar32 = *pfVar22;
      fVar20 = pfVar22[1];
      fVar2 = pfVar22[2];
      do {
        *pfVar15 = fVar1 * *(float *)((longlong)pfVar15 + lVar10 + -0x10) +
                   fVar32 * *(float *)((longlong)pfVar15 + lVar10) +
                   fVar20 * *(float *)((longlong)pfVar15 + lVar10 + 0x10) +
                   fVar2 * *(float *)((longlong)pfVar15 + lVar10 + 0x20);
        pfVar15 = pfVar15 + 1;
        lVar14 = lVar14 + -1;
      } while (lVar14 != 0);
      pfVar22 = pfVar22 + 4;
      lVar10 = lVar10 + -0x10;
      lVar25 = lVar25 + -1;
    } while (lVar25 != 0);
    pfVar15 = (float *)&local_358;
    _DAT_1a724e680 = local_358;
    uRam00000001a724e688 = uStack_350;
    pfVar22 = (float *)&DAT_1a724e644;
    lVar10 = (longlong)&DAT_1a724e590 - (longlong)&local_358;
    _DAT_1a724e690 = local_348;
    uRam00000001a724e698 = uStack_340;
    lVar25 = 4;
    _DAT_1a724e6a0 = local_338;
    uRam00000001a724e6a8 = uStack_330;
    _DAT_1a724e6b0 = local_328;
    uRam00000001a724e6b8 = uStack_320;
    do {
      fVar1 = pfVar22[-1];
      lVar14 = 4;
      fVar32 = *pfVar22;
      fVar20 = pfVar22[1];
      fVar2 = pfVar22[2];
      do {
        *pfVar15 = fVar1 * *(float *)(lVar10 + -0x10 + (longlong)pfVar15) +
                   fVar32 * *(float *)(lVar10 + (longlong)pfVar15) +
                   fVar20 * *(float *)(lVar10 + 0x10 + (longlong)pfVar15) +
                   fVar2 * *(float *)(lVar10 + 0x20 + (longlong)pfVar15);
        pfVar15 = pfVar15 + 1;
        lVar14 = lVar14 + -1;
      } while (lVar14 != 0);
      pfVar22 = pfVar22 + 4;
      lVar10 = lVar10 + -0x10;
      lVar25 = lVar25 + -1;
    } while (lVar25 != 0);
    _DAT_1a724e6c0 = local_358;
    _DAT_1a724e6c8 = uStack_350;
    _DAT_1a724e6d0 = local_348;
    _DAT_1a724e6d8 = uStack_340;
    _DAT_1a724e6e0 = local_338;
    DAT_1a724e6e0_8 = uStack_330;
    _DAT_1a724e6f0 = local_328;
    DAT_1a724e6f0_8 = uStack_320;
    (*DAT_144980d68)(0xbe2);
    (*DAT_144980d80)(1);
    (*DAT_144980d60)(0xde1);
    local_378 = DAT_18417de78 * DAT_140278ac4 + DAT_183f7c544;
    local_370 = DAT_18417de80 * DAT_140278ac4 + DAT_183f7c54c;
    local_374 = DAT_18417de7c * DAT_140278ac4 + DAT_183f7c548;
    (*DAT_144980d68)(0xde1);
    (*DAT_144980d80)(0x302);
    (*DAT_144980d58)(0);
    (*DAT_144980d68)(0xbe2);
    (*DAT_144980d80)(1,0x303);
    FUN_1401945f0();
    (*DAT_1404042e0)(DAT_1515ad1a0);
    (*DAT_140404338)(DAT_1515ad1b8,1,&DAT_183f7c544);
    (*DAT_140404338)(DAT_1515ad1c8,1,&DAT_18417de78);
    (*DAT_140404378)(DAT_1515ad1d8,1,0,&DAT_1a724e6c0);
    (*DAT_140404338)(DAT_1515ad1dc,1,&DAT_184178d40);
    (*DAT_140404338)(DAT_1515ad1e0,1,&DAT_184178d50);
    (*DAT_144980d60)(0xb44);
    (*DAT_140404098)(0x84c1);
    (*DAT_140404050)(0x8513,(&DAT_183f7cc2c)[(longlong)DAT_183ebe42c * 0x2c]);
    (*DAT_140404098)(0x84c0);
    iVar17 = 0;
    if (0 < DAT_150f55020) {
      do {
        FUN_14011da50(*puVar29,0);
        iVar17 = iVar17 + 1;
        puVar29 = puVar29 + 1;
      } while (iVar17 < DAT_150f55020);
    }
    DAT_1a85c6ba0 = DAT_1841fa224;
    fVar32 = DAT_140278b0c;
    fVar1 = DAT_1402788d8;
    if (0 < (int)DAT_1841fa224) {
      puVar29 = &DAT_1a87c6ba4;
      pfVar15 = (float *)&DAT_1841fa264;
      uVar23 = (ulonglong)DAT_1841fa224;
      do {
        fVar20 = *pfVar15;
        pfVar15 = pfVar15 + 0x11;
        *puVar29 = (int)(longlong)(fVar32 - fVar20 * fVar1);
        puVar29 = puVar29 + 1;
        uVar23 = uVar23 - 1;
      } while (uVar23 != 0);
    }
    FUN_14007d710();
    (*DAT_140404050)(0xde1,(&DAT_183f7cc2c)
                           [(longlong)(int)(&DAT_183ebc404)[(longlong)DAT_1a4cff820 * 4] * 0x2c]);
    iVar17 = 0;
    DAT_1ad059448 = 0;
    DAT_1ad05944c = 6;
    if (0 < (int)DAT_1841fa224) {
      piVar21 = &DAT_1a85c6ba4;
      uVar23 = (ulonglong)DAT_1841fa224;
      do {
        lVar10 = (longlong)*piVar21;
        piVar21 = piVar21 + 1;
        lVar25 = lVar10 * 0x44;
        iVar19 = DAT_1ad05944c * DAT_1ad059448;
        uVar11 = (&DAT_1841fa258)[lVar10 * 0x11];
        uVar31 = (&DAT_1841fa25c)[lVar10 * 0x11];
        uVar33 = (&DAT_1841fa260)[lVar10 * 0x11];
        (&DAT_1ad059450)[iVar19] = (&DAT_1841fa228)[lVar10 * 0x11];
        (&DAT_1ad059454)[iVar19] = (&DAT_1841fa22c)[lVar10 * 0x11];
        (&DAT_1ad059458)[iVar19] = (&DAT_1841fa230)[lVar10 * 0x11];
        iVar19 = DAT_1ad05944c * DAT_1ad059448;
        (&DAT_1ad05945c)[iVar19] = uVar11;
        (&DAT_1ad059460)[iVar19] = uVar31;
        (&DAT_1ad059464)[iVar19] = uVar33;
        DAT_1ad059448 = DAT_1ad059448 + 1;
        iVar19 = DAT_1ad05944c * DAT_1ad059448;
        (&DAT_1ad059450)[iVar19] = (&DAT_1841fa234)[lVar10 * 0x11];
        (&DAT_1ad059454)[iVar19] = (&DAT_1841fa238)[lVar10 * 0x11];
        (&DAT_1ad059458)[iVar19] = (&DAT_1841fa23c)[lVar10 * 0x11];
        iVar19 = DAT_1ad05944c * DAT_1ad059448;
        (&DAT_1ad05945c)[iVar19] = uVar11;
        (&DAT_1ad059460)[iVar19] = uVar31;
        (&DAT_1ad059464)[iVar19] = uVar33;
        DAT_1ad059448 = DAT_1ad059448 + 1;
        iVar19 = DAT_1ad05944c * DAT_1ad059448;
        (&DAT_1ad059450)[iVar19] = (&DAT_1841fa240)[lVar10 * 0x11];
        (&DAT_1ad059454)[iVar19] = (&DAT_1841fa244)[lVar10 * 0x11];
        (&DAT_1ad059458)[iVar19] = (&DAT_1841fa248)[lVar10 * 0x11];
        iVar19 = DAT_1ad05944c * DAT_1ad059448;
        (&DAT_1ad05945c)[iVar19] = uVar11;
        (&DAT_1ad059460)[iVar19] = uVar31;
        (&DAT_1ad059464)[iVar19] = uVar33;
        DAT_1ad059448 = DAT_1ad059448 + 1;
        iVar19 = DAT_1ad05944c * DAT_1ad059448;
        (&DAT_1ad059450)[iVar19] = *(undefined4 *)(&DAT_1841fa24c + lVar25);
        (&DAT_1ad059454)[iVar19] = *(undefined4 *)(&DAT_1841fa250 + lVar25);
        (&DAT_1ad059458)[iVar19] = *(undefined4 *)(&DAT_1841fa254 + lVar25);
        iVar19 = DAT_1ad05944c * DAT_1ad059448;
        (&DAT_1ad05945c)[iVar19] = uVar11;
        (&DAT_1ad059460)[iVar19] = uVar31;
        (&DAT_1ad059464)[iVar19] = uVar33;
        DAT_1ad059448 = DAT_1ad059448 + 1;
        uVar23 = uVar23 - 1;
      } while (uVar23 != 0);
    }
    (*DAT_140404170)(0x8892,*(undefined4 *)(&DAT_183e9b0c0 + (longlong)DAT_183e98c48 * 8));
    (*DAT_140404198)(0x8892,0,(longlong)(DAT_1ad05944c * DAT_1ad059448 * 4),&DAT_1ad059450);
    (*DAT_1404043c8)(1);
    (*DAT_140404238)(0);
    (*DAT_140404238)(2);
    local_3a0 = (undefined8 *)0x0;
    local_3a8._0_4_ = DAT_1ad05944c * 4;
    (*DAT_1404044a8)(0,3,0x1406);
    local_3a0 = (undefined8 *)0xc;
    local_3a8._0_4_ = DAT_1ad05944c * 4;
    (*DAT_1404044a8)(2,3,0x1406);
    (*DAT_140404170)(0x8893,DAT_1ad29946c);
    (*DAT_140404010)(4,((int)(DAT_1ad059448 + (DAT_1ad059448 >> 0x1f & 3U)) >> 2) * 6,0x1403);
    (*DAT_140404170)(0x8893,0);
    (*DAT_140404230)(0);
    (*DAT_140404230)(2);
    (*DAT_140404098)(0x84c1);
    (*DAT_140404050)(0x8513,0);
    (*DAT_140404098)(0x84c0);
    (*DAT_144980d68)(0xb44);
    (*DAT_1404042e0)(0);
    (*DAT_144980d80)(0x302);
    FUN_140125db0(0);
    (*DAT_144980d60)(0xb44);
    (*DAT_144980d58)(0);
    (*DAT_144980d68)(0xbe2);
    (*DAT_144980d80)(0x302);
    (*DAT_140404050)(0xde1,DAT_1abd4ac94);
    (*DAT_144980d80)(1,0x303);
    (*DAT_144980d80)(0x302);
    (*DAT_144980d68)(0xb44);
    (*DAT_144980d68)(0xde1);
    (*DAT_1404042e0)(DAT_1abd4ac00);
    FUN_1401253c0();
    if (((DAT_183f7aee0 == 0) && (DAT_18399eb60 != -1)) &&
       ((&DAT_182bbb194)[(longlong)DAT_18399eb60 * 0x6e0] != 0x2a)) {
      local_3a8._0_4_ = uVar8;
      (*DAT_140404468)(2);
      lVar10 = (longlong)DAT_18399eb60;
      iVar19 = (&DAT_183ebb6c4)[(int)(&DAT_182bbb194)[lVar10 * 0x6e0]];
      FUN_14007b990(&DAT_184386d30 + lVar10 * 0xd,&DAT_184386d3c + lVar10 * 0x34);
      FUN_14007b6f0();
      (*DAT_140404378)(DAT_1abd4ac14,1,0,&DAT_1a724e6c0);
      (*DAT_140404170)(0x8892,*(undefined4 *)
                               (&DAT_183e9b0c0 + (longlong)(int)(&DAT_183e977c4)[iVar19] * 8));
      (*DAT_140404238)(0);
      local_3a0 = (undefined8 *)0x0;
      lVar10 = (longlong)iVar19 * 0xe30;
      local_3a8._0_4_ = *(int *)(&DAT_16ad0be04 + lVar10) << 2;
      (*DAT_1404044a8)(0,3,0x1406);
      (*DAT_140302ff8)(4,0,*(int *)(&DAT_16ad0be10 + lVar10) * 3);
      (*DAT_140404230)(0);
      (*DAT_140404170)(0x8892,0);
      _DAT_1a724e600 = _DAT_140278d30;
      _DAT_1a724e608 = _UNK_140278d38;
      pfVar15 = (float *)&local_358;
      lVar10 = (longlong)&DAT_1a724e5d0 - (longlong)&local_358;
      pfVar22 = (float *)&DAT_1a724e604;
      _DAT_1a724e610 = _DAT_140278d80;
      _DAT_1a724e618 = _UNK_140278d88;
      lVar25 = 4;
      _DAT_1a724e620 = _DAT_140278e20;
      _DAT_1a724e628 = _UNK_140278e28;
      _DAT_1a724e630 = _DAT_140279490;
      _DAT_1a724e638 = _UNK_140279498;
      do {
        fVar32 = pfVar22[-1];
        lVar14 = 4;
        fVar20 = *pfVar22;
        fVar2 = pfVar22[1];
        fVar3 = pfVar22[2];
        do {
          *pfVar15 = fVar32 * *(float *)(lVar10 + -0x10 + (longlong)pfVar15) +
                     fVar20 * *(float *)(lVar10 + (longlong)pfVar15) +
                     fVar2 * *(float *)(lVar10 + 0x10 + (longlong)pfVar15) +
                     fVar3 * *(float *)(lVar10 + 0x20 + (longlong)pfVar15);
          pfVar15 = pfVar15 + 1;
          lVar14 = lVar14 + -1;
        } while (lVar14 != 0);
        pfVar22 = pfVar22 + 4;
        lVar10 = lVar10 + -0x10;
        lVar25 = lVar25 + -1;
      } while (lVar25 != 0);
      pfVar15 = (float *)&local_358;
      _DAT_1a724e640 = local_358;
      _DAT_1a724e648 = uStack_350;
      pfVar22 = (float *)&DAT_1a724e644;
      lVar10 = (longlong)&DAT_1a724e590 - (longlong)&local_358;
      _DAT_1a724e650 = local_348;
      _DAT_1a724e658 = uStack_340;
      lVar25 = 4;
      _DAT_1a724e660 = local_338;
      uRam00000001a724e668 = uStack_330;
      _DAT_1a724e670 = local_328;
      uRam00000001a724e678 = uStack_320;
      do {
        fVar32 = pfVar22[-1];
        lVar14 = 4;
        fVar20 = *pfVar22;
        fVar2 = pfVar22[1];
        fVar3 = pfVar22[2];
        do {
          *pfVar15 = fVar32 * *(float *)((longlong)pfVar15 + lVar10 + -0x10) +
                     fVar20 * *(float *)((longlong)pfVar15 + lVar10) +
                     fVar2 * *(float *)((longlong)pfVar15 + lVar10 + 0x10) +
                     fVar3 * *(float *)((longlong)pfVar15 + lVar10 + 0x20);
          pfVar15 = pfVar15 + 1;
          lVar14 = lVar14 + -1;
        } while (lVar14 != 0);
        pfVar22 = pfVar22 + 4;
        lVar10 = lVar10 + -0x10;
        lVar25 = lVar25 + -1;
      } while (lVar25 != 0);
      _DAT_1a724e6c0 = local_358;
      _DAT_1a724e6c8 = uStack_350;
      _DAT_1a724e6d0 = local_348;
      _DAT_1a724e6d8 = uStack_340;
      _DAT_1a724e6e0 = local_338;
      DAT_1a724e6e0_8 = uStack_330;
      _DAT_1a724e6f0 = local_328;
      DAT_1a724e6f0_8 = uStack_320;
      (*DAT_144980ce0)(0x408,0x1b02);
      lVar10 = (longlong)DAT_18399eb60;
      local_378 = (float)(&DAT_182bbb1dc)[lVar10 * 0x6e0];
      local_374 = (float)(&DAT_182bbb1e0)[lVar10 * 0x6e0];
      local_370 = (float)(&DAT_182bbb1e4)[lVar10 * 0x6e0];
    }
    (*DAT_144980d58)(0);
    (*DAT_144980d58)(1);
    (*DAT_1404042e0)(DAT_1abd4ac00);
    (*DAT_140404050)(0xde1,DAT_1abd4ac94);
    if (DAT_16b165f68 != 0) {
      FUN_14011e9b0();
    }
    (*DAT_144980ce0)(0x408,0x1b02);
    (*DAT_144980ce0)(0x408,0x1b02);
    (*DAT_144980d60)(0xb44);
    (*DAT_144980ce0)(0x408,0x1b02);
    (*DAT_144980d68)(0xbe2);
    (*DAT_144980cd0)();
    (*DAT_144980cd0)();
    (*DAT_144980d68)(0xde1);
    if (DAT_189f0eea0 != 0) {
      FUN_14008d800();
    }
    (*DAT_144980d58)(0);
    fVar32 = DAT_140278a1c;
    uVar11 = DAT_1402782b0;
    uVar8 = DAT_140278280;
    uVar23 = (ulonglong)(int)DAT_183f7c540;
    DAT_1a8bf79c0 = 2;
    iVar19 = -1;
    if (DAT_183f7c540 != 0xffffffff) {
      if ((&DAT_151620cfc)[uVar23 * 0xe0d] != -1) {
        iVar19 = -1;
        if ((&DAT_18329e330)[(longlong)(int)(&DAT_151620cfc)[uVar23 * 0xe0d] * 0x1bfe] != -1) {
          iVar19 = (&DAT_18329e330)[(longlong)(int)(&DAT_151620cfc)[uVar23 * 0xe0d] * 0x1bfe];
        }
      }
    }
    piVar21 = &DAT_18329e310;
    pfVar15 = (float *)&DAT_18430a554;
    do {
      if (((piVar21[-2] != 0) && (*piVar21 != -1)) &&
         ((pfVar15[-1] - DAT_183f7c548) * (pfVar15[-1] - DAT_183f7c548) +
          (pfVar15[-2] - DAT_183f7c544) * (pfVar15[-2] - DAT_183f7c544) +
          (*pfVar15 - DAT_183f7c54c) * (*pfVar15 - DAT_183f7c54c) < fVar32)) {
        pfVar24 = (float *)&local_358;
        pfVar22 = (float *)((longlong)&local_318 + 4);
        lVar10 = (longlong)&DAT_1a724e610 - (longlong)&local_358;
        lVar25 = 4;
        local_318 = CONCAT44(DAT_183f7c554,DAT_183f7c550);
        uStack_310 = (ulonglong)(uint)DAT_183f7c558;
        local_308 = CONCAT44(DAT_183f7c560,DAT_183f7c55c);
        uStack_300 = (ulonglong)DAT_183f7c564;
        local_2f8 = CONCAT44(DAT_183f7c56c,DAT_183f7c568);
        uStack_2f0 = (ulonglong)(uint)DAT_183f7c570;
        local_2e8 = _DAT_140279490;
        uStack_2e0 = _UNK_140279498;
        do {
          fVar20 = pfVar22[-1];
          lVar14 = 4;
          fVar2 = *pfVar22;
          fVar3 = pfVar22[1];
          fVar4 = pfVar22[2];
          do {
            *pfVar24 = fVar20 * *(float *)((longlong)pfVar24 + lVar10 + -0x10) +
                       fVar2 * *(float *)((longlong)pfVar24 + lVar10) +
                       fVar4 * *(float *)((longlong)pfVar24 + lVar10 + 0x20) +
                       fVar3 * *(float *)((longlong)pfVar24 + lVar10 + 0x10);
            pfVar24 = pfVar24 + 1;
            lVar14 = lVar14 + -1;
          } while (lVar14 != 0);
          pfVar22 = pfVar22 + 4;
          lVar10 = lVar10 + -0x10;
          lVar25 = lVar25 + -1;
        } while (lVar25 != 0);
        _DAT_1a724e600 = local_358;
        _DAT_1a724e608 = uStack_350;
        pfVar22 = (float *)&local_358;
        lVar10 = (longlong)&DAT_1a724e5d0 - (longlong)&local_358;
        pfVar24 = (float *)&DAT_1a724e604;
        _DAT_1a724e610 = local_348;
        _DAT_1a724e618 = uStack_340;
        lVar25 = 4;
        _DAT_1a724e620 = local_338;
        _DAT_1a724e628 = uStack_330;
        _DAT_1a724e630 = local_328;
        _DAT_1a724e638 = uStack_320;
        do {
          fVar20 = pfVar24[-1];
          lVar14 = 4;
          fVar2 = *pfVar24;
          fVar3 = pfVar24[1];
          fVar4 = pfVar24[2];
          do {
            *pfVar22 = fVar20 * *(float *)(lVar10 + -0x10 + (longlong)pfVar22) +
                       fVar2 * *(float *)(lVar10 + (longlong)pfVar22) +
                       fVar4 * *(float *)(lVar10 + 0x20 + (longlong)pfVar22) +
                       fVar3 * *(float *)(lVar10 + 0x10 + (longlong)pfVar22);
            pfVar22 = pfVar22 + 1;
            lVar14 = lVar14 + -1;
          } while (lVar14 != 0);
          pfVar24 = pfVar24 + 4;
          lVar10 = lVar10 + -0x10;
          lVar25 = lVar25 + -1;
        } while (lVar25 != 0);
        _DAT_1a724e640 = local_358;
        _DAT_1a724e648 = uStack_350;
        pfVar22 = (float *)&local_358;
        lVar10 = (longlong)&DAT_1a724e590 - (longlong)&local_358;
        pfVar24 = (float *)&DAT_1a724e644;
        _DAT_1a724e650 = local_348;
        _DAT_1a724e658 = uStack_340;
        lVar25 = 4;
        _DAT_1a724e660 = local_338;
        uRam00000001a724e668 = uStack_330;
        _DAT_1a724e670 = local_328;
        uRam00000001a724e678 = uStack_320;
        do {
          fVar20 = pfVar24[-1];
          lVar14 = 4;
          fVar2 = *pfVar24;
          fVar3 = pfVar24[1];
          fVar4 = pfVar24[2];
          do {
            *pfVar22 = fVar2 * *(float *)(lVar10 + (longlong)pfVar22) +
                       fVar20 * *(float *)(lVar10 + -0x10 + (longlong)pfVar22) +
                       fVar4 * *(float *)(lVar10 + 0x20 + (longlong)pfVar22) +
                       fVar3 * *(float *)(lVar10 + 0x10 + (longlong)pfVar22);
            pfVar22 = pfVar22 + 1;
            lVar14 = lVar14 + -1;
          } while (lVar14 != 0);
          pfVar24 = pfVar24 + 4;
          lVar10 = lVar10 + -0x10;
          lVar25 = lVar25 + -1;
        } while (lVar25 != 0);
        _DAT_1a724e6c0 = local_358;
        _DAT_1a724e6c8 = uStack_350;
        _DAT_1a724e6d0 = local_348;
        _DAT_1a724e6d8 = uStack_340;
        DAT_1a724e6e0_8 = uStack_330;
        _DAT_1a724e6e0 = local_338;
        DAT_1a724e6f0_8 = uStack_320;
        _DAT_1a724e6f0 = local_328;
        if ((iVar19 != -1) && (piVar21[8] == iVar19)) {
          (*DAT_144980d60)(0xb71);
          uVar23 = (ulonglong)DAT_183f7c540;
        }
        iVar7 = piVar21[0x1be9];
        uVar31 = uVar9;
        if (iVar7 == 1) {
LAB_140121b14:
          uVar33 = 0;
        }
        else {
          uVar33 = uVar9;
          if (iVar7 == 2) {
            uVar31 = 0;
            goto LAB_140121b14;
          }
        }
        if (((((int)uVar23 == -1) || ((&DAT_151620cfc)[(longlong)(int)uVar23 * 0xe0d] == -1)) ||
            ((&DAT_151620cfc)[(longlong)(int)uVar23 * 0xe0d] != iVar17)) &&
           ((0 < iVar7 || (DAT_18329cc44 != 0)))) {
          local_388 = uVar9;
          local_3a0._0_4_ = uVar9;
          local_3a8._0_4_ = 0xc1;
          local_398 = uVar31;
          local_390 = uVar33;
          FUN_14006d930(&DAT_151620c64 + (longlong)*piVar21 * 0xe0d,0,uVar8,uVar11);
          uVar23 = (ulonglong)(uint)(&DAT_151620c90)[(longlong)*piVar21 * 0xe0d] / 10000;
          FUN_140158ab0(local_2c8,"%03d-%04d",uVar23,
                        (&DAT_151620c90)[(longlong)*piVar21 * 0xe0d] + (int)uVar23 * -10000);
          local_388 = uVar9;
          local_3a0 = (undefined8 *)CONCAT44(local_3a0._4_4_,uVar9);
          local_3a8._0_4_ = 0xc1;
          local_398 = uVar31;
          local_390 = uVar33;
          FUN_14006d930(local_2c8,0,0,uVar8);
          uVar23 = (ulonglong)DAT_183f7c540;
        }
        if ((iVar19 != -1) && (piVar21[8] == iVar19)) {
          (*DAT_144980d68)(0xb71);
          uVar23 = (ulonglong)DAT_183f7c540;
        }
        _DAT_1a724e600 = _DAT_140278d30;
        _DAT_1a724e608 = _UNK_140278d38;
        pfVar22 = (float *)&local_358;
        lVar10 = (longlong)&DAT_1a724e5d0 - (longlong)&local_358;
        pfVar24 = (float *)&DAT_1a724e604;
        _DAT_1a724e610 = _DAT_140278d80;
        _DAT_1a724e618 = _UNK_140278d88;
        lVar25 = 4;
        _DAT_1a724e620 = _DAT_140278e20;
        _DAT_1a724e628 = _UNK_140278e28;
        _DAT_1a724e630 = _DAT_140279490;
        _DAT_1a724e638 = _UNK_140279498;
        do {
          fVar20 = pfVar24[-1];
          lVar14 = 4;
          fVar2 = *pfVar24;
          fVar3 = pfVar24[1];
          fVar4 = pfVar24[2];
          do {
            *pfVar22 = fVar4 * *(float *)((longlong)pfVar22 + lVar10 + 0x20) +
                       fVar3 * *(float *)((longlong)pfVar22 + lVar10 + 0x10) +
                       fVar2 * *(float *)((longlong)pfVar22 + lVar10) +
                       fVar20 * *(float *)((longlong)pfVar22 + lVar10 + -0x10);
            pfVar22 = pfVar22 + 1;
            lVar14 = lVar14 + -1;
          } while (lVar14 != 0);
          pfVar24 = pfVar24 + 4;
          lVar10 = lVar10 + -0x10;
          lVar25 = lVar25 + -1;
        } while (lVar25 != 0);
        _DAT_1a724e640 = local_358;
        _DAT_1a724e648 = uStack_350;
        pfVar22 = (float *)&local_358;
        puVar12 = &DAT_1a724e590 + -(longlong)&local_358;
        pfVar24 = (float *)&DAT_1a724e644;
        _DAT_1a724e650 = local_348;
        _DAT_1a724e658 = uStack_340;
        lVar10 = 4;
        _DAT_1a724e660 = local_338;
        uRam00000001a724e668 = uStack_330;
        _DAT_1a724e670 = local_328;
        uRam00000001a724e678 = uStack_320;
        do {
          fVar20 = pfVar24[-1];
          lVar25 = 4;
          fVar2 = *pfVar24;
          fVar3 = pfVar24[1];
          fVar4 = pfVar24[2];
          do {
            *pfVar22 = fVar20 * *(float *)((longlong)(pfVar22 + -4) + (longlong)puVar12) +
                       fVar2 * *(float *)((longlong)pfVar22 + (longlong)puVar12) +
                       fVar4 * *(float *)((longlong)(pfVar22 + 8) + (longlong)puVar12) +
                       fVar3 * *(float *)((longlong)(pfVar22 + 4) + (longlong)puVar12);
            pfVar22 = pfVar22 + 1;
            lVar25 = lVar25 + -1;
          } while (lVar25 != 0);
          pfVar24 = pfVar24 + 4;
          puVar12 = puVar12 + -0x10;
          lVar10 = lVar10 + -1;
        } while (lVar10 != 0);
        _DAT_1a724e6c0 = local_358;
        _DAT_1a724e6c8 = uStack_350;
        _DAT_1a724e6e0 = local_338;
        DAT_1a724e6e0_8 = uStack_330;
        _DAT_1a724e6d0 = local_348;
        _DAT_1a724e6d8 = uStack_340;
        _DAT_1a724e6f0 = local_328;
        DAT_1a724e6f0_8 = uStack_320;
      }
      uVar26 = (uint)uVar23;
      iVar17 = iVar17 + 1;
      pfVar15 = pfVar15 + 0x158;
      piVar21 = piVar21 + 0x1bfe;
    } while (iVar17 < 0x100);
    if ((((DAT_18329cc44 == 0) && (DAT_183ebfaac == 5)) && (uVar26 != 0xffffffff)) &&
       ((&DAT_151620ce4)[(longlong)(int)uVar26 * 0xe0d] == 2)) {
      pfVar15 = (float *)&DAT_18329e390;
      fVar20 = DAT_183f7a564;
      do {
        if ((((pfVar15[-0x22] != 0.0) && (fVar2 = pfVar15[-0x20], fVar2 != -NAN)) &&
            ((fVar2 == fVar20 || (fVar2 == DAT_183f7a568)))) &&
           ((pfVar15[-1] - DAT_183f7c548) * (pfVar15[-1] - DAT_183f7c548) +
            (pfVar15[-2] - DAT_183f7c544) * (pfVar15[-2] - DAT_183f7c544) +
            (*pfVar15 - DAT_183f7c54c) * (*pfVar15 - DAT_183f7c54c) < fVar32)) {
          pfVar24 = (float *)&local_358;
          pfVar22 = (float *)((longlong)&local_318 + 4);
          lVar10 = (longlong)&DAT_1a724e610 - (longlong)&local_358;
          lVar25 = 4;
          local_318 = CONCAT44(DAT_183f7c554,DAT_183f7c550);
          uStack_310 = (ulonglong)(uint)DAT_183f7c558;
          local_308 = CONCAT44(DAT_183f7c560,DAT_183f7c55c);
          uStack_300 = (ulonglong)DAT_183f7c564;
          local_2f8 = CONCAT44(DAT_183f7c56c,DAT_183f7c568);
          uStack_2f0 = (ulonglong)(uint)DAT_183f7c570;
          local_2e8 = _DAT_140279490;
          uStack_2e0 = _UNK_140279498;
          do {
            fVar3 = pfVar22[-1];
            lVar14 = 4;
            fVar4 = *pfVar22;
            fVar5 = pfVar22[1];
            fVar6 = pfVar22[2];
            do {
              *pfVar24 = fVar3 * *(float *)((longlong)pfVar24 + lVar10 + -0x10) +
                         fVar4 * *(float *)((longlong)pfVar24 + lVar10) +
                         fVar6 * *(float *)((longlong)pfVar24 + lVar10 + 0x20) +
                         fVar5 * *(float *)((longlong)pfVar24 + lVar10 + 0x10);
              pfVar24 = pfVar24 + 1;
              lVar14 = lVar14 + -1;
            } while (lVar14 != 0);
            pfVar22 = pfVar22 + 4;
            lVar10 = lVar10 + -0x10;
            lVar25 = lVar25 + -1;
          } while (lVar25 != 0);
          _DAT_1a724e600 = local_358;
          _DAT_1a724e608 = uStack_350;
          pfVar22 = (float *)&local_358;
          _DAT_1a724e610 = local_348;
          _DAT_1a724e618 = uStack_340;
          pfVar24 = (float *)&DAT_1a724e604;
          lVar10 = (longlong)&DAT_1a724e5d0 - (longlong)&local_358;
          lVar25 = 4;
          _DAT_1a724e620 = local_338;
          _DAT_1a724e628 = uStack_330;
          _DAT_1a724e630 = local_328;
          _DAT_1a724e638 = uStack_320;
          do {
            fVar3 = pfVar24[-1];
            lVar14 = 4;
            fVar4 = *pfVar24;
            fVar5 = pfVar24[1];
            fVar6 = pfVar24[2];
            do {
              *pfVar22 = fVar6 * *(float *)(lVar10 + 0x20 + (longlong)pfVar22) +
                         fVar5 * *(float *)(lVar10 + 0x10 + (longlong)pfVar22) +
                         fVar4 * *(float *)(lVar10 + (longlong)pfVar22) +
                         fVar3 * *(float *)(lVar10 + -0x10 + (longlong)pfVar22);
              pfVar22 = pfVar22 + 1;
              lVar14 = lVar14 + -1;
            } while (lVar14 != 0);
            pfVar24 = pfVar24 + 4;
            lVar10 = lVar10 + -0x10;
            lVar25 = lVar25 + -1;
          } while (lVar25 != 0);
          _DAT_1a724e640 = local_358;
          _DAT_1a724e648 = uStack_350;
          pfVar22 = (float *)&local_358;
          _DAT_1a724e650 = local_348;
          _DAT_1a724e658 = uStack_340;
          pfVar24 = (float *)&DAT_1a724e644;
          lVar10 = (longlong)&DAT_1a724e590 - (longlong)&local_358;
          lVar25 = 4;
          _DAT_1a724e660 = local_338;
          uRam00000001a724e668 = uStack_330;
          _DAT_1a724e670 = local_328;
          uRam00000001a724e678 = uStack_320;
          do {
            fVar3 = pfVar24[-1];
            lVar14 = 4;
            fVar4 = *pfVar24;
            fVar5 = pfVar24[1];
            fVar6 = pfVar24[2];
            do {
              *pfVar22 = fVar3 * *(float *)(lVar10 + -0x10 + (longlong)pfVar22) +
                         fVar4 * *(float *)(lVar10 + (longlong)pfVar22) +
                         fVar6 * *(float *)(lVar10 + 0x20 + (longlong)pfVar22) +
                         fVar5 * *(float *)(lVar10 + 0x10 + (longlong)pfVar22);
              pfVar22 = pfVar22 + 1;
              lVar14 = lVar14 + -1;
            } while (lVar14 != 0);
            pfVar24 = pfVar24 + 4;
            lVar10 = lVar10 + -0x10;
            lVar25 = lVar25 + -1;
          } while (lVar25 != 0);
          _DAT_1a724e6c0 = local_358;
          _DAT_1a724e6c8 = uStack_350;
          _DAT_1a724e6d0 = local_348;
          _DAT_1a724e6d8 = uStack_340;
          DAT_1a724e6e0_8 = uStack_330;
          _DAT_1a724e6e0 = local_338;
          DAT_1a724e6f0_8 = uStack_320;
          _DAT_1a724e6f0 = local_328;
          if (fVar2 == fVar20) {
            local_388 = uVar9;
            local_390 = 0;
            local_398 = uVar9;
            local_3a0 = (undefined8 *)((ulonglong)local_3a0 & 0xffffffff00000000);
            local_3a8._0_4_ = 0xc1;
            FUN_14006d930("The Savior",0,0,uVar8);
            fVar20 = DAT_183f7a564;
          }
          pfVar22 = (float *)&local_358;
          _DAT_1a724e600 = _DAT_140278d30;
          _DAT_1a724e608 = _UNK_140278d38;
          pfVar24 = (float *)&DAT_1a724e604;
          lVar10 = (longlong)&DAT_1a724e5d0 - (longlong)&local_358;
          _DAT_1a724e610 = _DAT_140278d80;
          _DAT_1a724e618 = _UNK_140278d88;
          lVar25 = 4;
          _DAT_1a724e620 = _DAT_140278e20;
          _DAT_1a724e628 = _UNK_140278e28;
          _DAT_1a724e630 = _DAT_140279490;
          _DAT_1a724e638 = _UNK_140279498;
          do {
            fVar2 = pfVar24[-1];
            lVar14 = 4;
            fVar3 = *pfVar24;
            fVar4 = pfVar24[1];
            fVar5 = pfVar24[2];
            do {
              *pfVar22 = fVar5 * *(float *)(lVar10 + 0x20 + (longlong)pfVar22) +
                         fVar4 * *(float *)(lVar10 + 0x10 + (longlong)pfVar22) +
                         fVar2 * *(float *)(lVar10 + -0x10 + (longlong)pfVar22) +
                         fVar3 * *(float *)(lVar10 + (longlong)pfVar22);
              pfVar22 = pfVar22 + 1;
              lVar14 = lVar14 + -1;
            } while (lVar14 != 0);
            pfVar24 = pfVar24 + 4;
            lVar10 = lVar10 + -0x10;
            lVar25 = lVar25 + -1;
          } while (lVar25 != 0);
          pfVar22 = (float *)&local_358;
          _DAT_1a724e640 = local_358;
          _DAT_1a724e648 = uStack_350;
          pfVar24 = (float *)&DAT_1a724e644;
          puVar12 = &DAT_1a724e590 + -(longlong)&local_358;
          _DAT_1a724e650 = local_348;
          _DAT_1a724e658 = uStack_340;
          lVar10 = 4;
          _DAT_1a724e660 = local_338;
          uRam00000001a724e668 = uStack_330;
          _DAT_1a724e670 = local_328;
          uRam00000001a724e678 = uStack_320;
          do {
            fVar2 = pfVar24[-1];
            lVar25 = 4;
            fVar3 = *pfVar24;
            fVar4 = pfVar24[1];
            fVar5 = pfVar24[2];
            do {
              *pfVar22 = fVar2 * *(float *)((longlong)(pfVar22 + -4) + (longlong)puVar12) +
                         fVar3 * *(float *)((longlong)pfVar22 + (longlong)puVar12) +
                         fVar5 * *(float *)((longlong)(pfVar22 + 8) + (longlong)puVar12) +
                         fVar4 * *(float *)((longlong)(pfVar22 + 4) + (longlong)puVar12);
              pfVar22 = pfVar22 + 1;
              lVar25 = lVar25 + -1;
            } while (lVar25 != 0);
            pfVar24 = pfVar24 + 4;
            puVar12 = puVar12 + -0x10;
            lVar10 = lVar10 + -1;
          } while (lVar10 != 0);
          _DAT_1a724e6c0 = local_358;
          _DAT_1a724e6c8 = uStack_350;
          _DAT_1a724e6e0 = local_338;
          DAT_1a724e6e0_8 = uStack_330;
          _DAT_1a724e6d0 = local_348;
          _DAT_1a724e6d8 = uStack_340;
          _DAT_1a724e6f0 = local_328;
          DAT_1a724e6f0_8 = uStack_320;
        }
        pfVar15 = pfVar15 + 0x1bfe;
        lVar27 = lVar27 + -1;
        uVar26 = DAT_183f7c540;
      } while (lVar27 != 0);
    }
    if (DAT_183f7aee0 == 0) {
      FUN_140092d70();
      uVar26 = DAT_183f7c540;
    }
    if ((DAT_183ebfaac == 5) && (uVar26 != 0xffffffff)) {
      iVar17 = (&DAT_151620ce4)[(longlong)(int)uVar26 * 0xe0d];
      if ((iVar17 - 1U < 2) && (DAT_183f7a570 != 0.0)) {
        local_378 = DAT_183f7a570;
        local_370 = DAT_183f7a578;
        DAT_1ad059440 = 2;
        DAT_1ad059448 = 0;
        DAT_1ad05944c = 9;
        uVar13 = _DAT_1402794a0;
        uVar30 = _UNK_1402794a8;
        if ((iVar17 == 1) || (uVar13 = _DAT_140279530, uVar30 = _UNK_140279538, iVar17 == 2)) {
          _DAT_1ad299450 = uVar13;
          _DAT_1ad299458 = uVar30;
        }
        fVar32 = DAT_183f7a574 + DAT_1402785b8;
        local_374 = fVar32;
        FUN_14007d520(&local_378);
        local_374 = fVar32 + fVar1;
        FUN_14007d520(&local_378);
        FUN_14006e0d0();
      }
    }
    (*DAT_144980d58)(1);
    (*DAT_144980d60)(0xb71);
    (*DAT_144980d58)(0);
    (*DAT_144980d60)(0xb44);
    (*DAT_144980d60)(0xbe2);
    (*DAT_1404046f0)(0x8d40,*(undefined4 *)(&DAT_183e990c0 + (longlong)DAT_183e97744 * 8));
    local_3a8 = (undefined4 *)((ulonglong)local_3a8._4_4_ << 0x20);
    (*DAT_140404718)(0x8d40,0x8ce0,0xde1,(&DAT_1a8572bc4)[(longlong)DAT_183ebe430 * 0x2a]);
    (*DAT_1404042e0)(DAT_1515ada10);
    (*DAT_140404050)(0xde1,(&DAT_1a8572bc4)[(longlong)DAT_183ebe404 * 0x2a]);
    (*DAT_140404098)(0x84c1);
    (*DAT_140404050)(0xde1,(&DAT_1a8572bc4)[(longlong)DAT_183ebe404 * 0x2a]);
    (*DAT_140404098)(0x84c0);
    (*DAT_140302ff8)(4,0,3);
  }
  else {
    (*DAT_144980ce0)(0x408,0x1b02);
  }
  return;
}



===== FUN_1400c5c00 @ 1400c5c00 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1400c5c00(int param_1)

{
  int iVar1;
  uint uVar2;
  longlong lVar3;
  longlong lVar4;
  char *pcVar5;
  char *pcVar6;
  char cVar7;
  int iVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  byte *pbVar11;
  byte *pbVar12;
  longlong lVar13;
  ulonglong uVar14;
  int iVar15;
  ulonglong uVar16;
  ulonglong uVar17;
  int iVar18;
  longlong lVar19;
  ulonglong uVar20;
  longlong lVar21;
  undefined1 auStack_298 [32];
  uint local_278;
  uint local_274;
  int local_270;
  longlong local_268;
  longlong local_260;
  longlong local_258;
  longlong local_250;
  longlong local_248;
  char local_238 [512];
  ulonglong local_38;
  
  local_38 = DAT_1403020a0 ^ (ulonglong)auStack_298;
  local_260 = (longlong)param_1;
  lVar19 = local_260 * 0x1b80;
  local_258 = (longlong)*(int *)(&DAT_182bbc9e4 + lVar19);
  pcVar5 = &DAT_1816deb84 + local_258 * 0x488;
  lVar3 = -(longlong)pcVar5;
  do {
    cVar7 = *pcVar5;
    pcVar5[(longlong)(local_238 + lVar3)] = cVar7;
    pcVar5 = pcVar5 + 1;
  } while (cVar7 != '\0');
  local_268 = local_260 * 0x6e;
  local_248 = local_260 * 0x1b80;
  uVar14 = 0;
  local_274 = 0;
  local_278 = 0;
  (&DAT_182bbc7e0)[local_248] = 0;
  (&DAT_182bbc820)[local_248] = 0;
  (&DAT_182bbc860)[local_248] = 0;
  (&DAT_182bbc8a0)[local_248] = 0;
  (&DAT_182bbc8e0)[local_248] = 0;
  (&DAT_182bbc920)[local_248] = 0;
  (&DAT_182bbc960)[local_248] = 0;
  (&DAT_182bbc9a0)[local_248] = 0;
  (&DAT_182bbcbec)[local_260 * 0x6e0] = 0;
  lVar3 = -1;
  do {
    lVar4 = lVar3;
    lVar3 = lVar4 + 1;
  } while (local_238[lVar4 + 1] != '\0');
  iVar18 = (int)(lVar4 + 1);
  iVar8 = 0x3b;
  if (iVar18 < 0x3b) {
    iVar8 = iVar18;
  }
  for (lVar3 = (longlong)iVar8; (0x1e < lVar3 && (local_238[lVar3] != ' ')); lVar3 = lVar3 + -1) {
    iVar8 = iVar8 + -1;
  }
  lVar3 = (longlong)iVar18;
  iVar18 = (int)lVar4;
  uVar17 = uVar14;
  uVar10 = uVar14;
  uVar16 = uVar14;
  uVar20 = uVar14;
  local_270 = param_1;
  local_250 = lVar19;
  do {
    lVar3 = lVar3 + -1;
    iVar15 = (int)uVar16;
    iVar1 = (int)uVar17;
    if (local_238[uVar20] == '\0') break;
    iVar1 = toupper((int)local_238[uVar20]);
    uVar16 = (ulonglong)local_274;
    local_278 = local_278 + 1;
    uVar9 = uVar10 + 1;
    (&DAT_182bbc7e0)[uVar10 + lVar19] = (char)iVar1;
    uVar17 = (ulonglong)local_278;
    uVar10 = uVar9;
    if (iVar8 < (int)local_278) {
      local_274 = local_274 + 1;
      uVar16 = (ulonglong)local_274;
      lVar4 = uVar9 + lVar19;
      iVar8 = 0x3b;
      lVar19 = lVar19 + 0x40;
      local_278 = 0;
      (&DAT_182bbc7e0)[lVar4] = 0;
      lVar4 = 0x3b;
      lVar13 = lVar3;
      iVar1 = iVar18;
      if (0x3a < iVar18) goto LAB_1400c5dd3;
      while( true ) {
        iVar8 = iVar1;
        lVar4 = lVar13;
        uVar17 = 0;
        uVar10 = 0;
        if (lVar4 < 0x1f) break;
LAB_1400c5dd3:
        uVar17 = 0;
        uVar10 = uVar14;
        if (local_238[lVar4 + uVar20 + 1] == ' ') break;
        lVar13 = lVar4 + -1;
        iVar1 = iVar8 + -1;
      }
    }
    iVar15 = (int)uVar16;
    iVar1 = (int)uVar17;
    iVar18 = iVar18 + -1;
    uVar20 = uVar20 + 1;
  } while ((longlong)uVar20 < 0x100);
  lVar19 = local_250;
  lVar3 = local_268;
  lVar13 = local_260 * 0x6e0;
  (&DAT_182bbc7e0)[(iVar15 + local_268) * 0x40 + (longlong)iVar1] = 0;
  lVar4 = local_258 * 0x488;
  *(undefined4 *)(&DAT_182bbc9e8 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816def88 + lVar4);
  *(undefined4 *)(&DAT_182bbc9ec + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816def8c + lVar4);
  *(undefined4 *)(&DAT_182bbc9f0 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816def90 + lVar4);
  *(undefined4 *)(&DAT_182bbc9f4 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816def94 + lVar4);
  *(undefined4 *)(&DAT_182bbc9f8 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816def98 + lVar4);
  *(undefined4 *)(&DAT_182bbc9fc + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816def9c + lVar4);
  *(undefined4 *)(&DAT_182bbca00 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defa0 + lVar4);
  *(undefined4 *)(&DAT_182bbca04 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defa4 + lVar4);
  *(undefined4 *)(&DAT_182bbca08 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defa8 + lVar4);
  *(undefined4 *)(&DAT_182bbca0c + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defac + lVar4);
  *(undefined4 *)(&DAT_182bbca10 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defb0 + lVar4);
  *(undefined4 *)(&DAT_182bbca14 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defb4 + lVar4);
  *(undefined4 *)(&DAT_182bbca18 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defb8 + lVar4);
  *(undefined4 *)(&DAT_182bbca1c + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defbc + lVar4);
  *(undefined4 *)(&DAT_182bbca20 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defc0 + lVar4);
  *(undefined4 *)(&DAT_182bbca24 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defc4 + lVar4);
  *(undefined4 *)(&DAT_182bbca28 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defc8 + lVar4);
  *(undefined4 *)(&DAT_182bbca2c + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defcc + lVar4);
  *(undefined4 *)(&DAT_182bbca30 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defd0 + lVar4);
  *(undefined4 *)(&DAT_182bbca34 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defd4 + lVar4);
  *(undefined4 *)(&DAT_182bbca38 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defd8 + lVar4);
  *(undefined4 *)(&DAT_182bbca3c + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defdc + lVar4);
  *(undefined4 *)(&DAT_182bbca40 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defe0 + lVar4);
  *(undefined4 *)(&DAT_182bbca44 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defe4 + lVar4);
  *(undefined4 *)(&DAT_182bbca48 + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defe8 + lVar4);
  *(undefined4 *)(&DAT_182bbca4c + local_260 * 0x1b80) = *(undefined4 *)(&DAT_1816defec + lVar4);
  *(undefined4 *)(&DAT_182bbcbe8 + local_250) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbc9e8 + local_260 * 0x1b80) + lVar13) * 4) = 0
  ;
  *(undefined4 *)(&DAT_182bbcae8 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcb68 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbc9ec + local_260 * 0x1b80) + lVar13) * 4) = 1
  ;
  *(undefined4 *)(&DAT_182bbcaec + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcb6c + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbc9f0 + local_260 * 0x1b80) + lVar13) * 4) = 2
  ;
  *(undefined4 *)(&DAT_182bbcaf0 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcb70 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbc9f4 + local_260 * 0x1b80) + lVar13) * 4) = 3
  ;
  lVar4 = 8;
  *(undefined4 *)(&DAT_182bbcaf4 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcb74 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbc9f8 + local_260 * 0x1b80) + lVar13) * 4) = 4
  ;
  *(undefined4 *)(&DAT_182bbcaf8 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcb78 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbc9fc + local_260 * 0x1b80) + lVar13) * 4) = 5
  ;
  *(undefined4 *)(&DAT_182bbcafc + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcb7c + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca00 + local_260 * 0x1b80) + lVar13) * 4) = 6
  ;
  *(undefined4 *)(&DAT_182bbcb00 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcb80 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca04 + local_260 * 0x1b80) + lVar13) * 4) = 7
  ;
  *(undefined4 *)(&DAT_182bbcb04 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcb84 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca08 + local_260 * 0x1b80) + lVar13) * 4) = 8
  ;
  *(undefined4 *)(&DAT_182bbcb08 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcb88 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca0c + local_260 * 0x1b80) + lVar13) * 4) = 9
  ;
  *(undefined4 *)(&DAT_182bbcb0c + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcb8c + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca10 + local_260 * 0x1b80) + lVar13) * 4) =
       10;
  *(undefined4 *)(&DAT_182bbcb10 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcb90 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca14 + local_260 * 0x1b80) + lVar13) * 4) =
       0xb;
  *(undefined4 *)(&DAT_182bbcb14 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcb94 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca18 + local_260 * 0x1b80) + lVar13) * 4) =
       0xc;
  *(undefined4 *)(&DAT_182bbcb18 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcb98 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca1c + local_260 * 0x1b80) + lVar13) * 4) =
       0xd;
  *(undefined4 *)(&DAT_182bbcb1c + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcb9c + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca20 + local_260 * 0x1b80) + lVar13) * 4) =
       0xe;
  *(undefined4 *)(&DAT_182bbcb20 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcba0 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca24 + local_260 * 0x1b80) + lVar13) * 4) =
       0xf;
  *(undefined4 *)(&DAT_182bbcb24 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcba4 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca28 + local_260 * 0x1b80) + lVar13) * 4) =
       0x10;
  *(undefined4 *)(&DAT_182bbcb28 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcba8 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca2c + local_260 * 0x1b80) + lVar13) * 4) =
       0x11;
  *(undefined4 *)(&DAT_182bbcb2c + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcbac + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca30 + local_260 * 0x1b80) + lVar13) * 4) =
       0x12;
  *(undefined4 *)(&DAT_182bbcb30 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcbb0 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca34 + local_260 * 0x1b80) + lVar13) * 4) =
       0x13;
  *(undefined4 *)(&DAT_182bbcb34 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcbb4 + local_260 * 0x1b80) = 0xffffffff;
  pbVar11 = &DAT_182bbc7e0 + local_250;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca38 + local_260 * 0x1b80) + lVar13) * 4) =
       0x14;
  *(undefined4 *)(&DAT_182bbcb38 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcbb8 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca3c + local_260 * 0x1b80) + lVar13) * 4) =
       0x15;
  *(undefined4 *)(&DAT_182bbcb3c + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcbbc + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca40 + local_260 * 0x1b80) + lVar13) * 4) =
       0x16;
  *(undefined4 *)(&DAT_182bbcb40 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcbc0 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca44 + local_260 * 0x1b80) + lVar13) * 4) =
       0x17;
  *(undefined4 *)(&DAT_182bbcb44 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcbc4 + local_260 * 0x1b80) = 0xffffffff;
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca48 + local_260 * 0x1b80) + lVar13) * 4) =
       0x18;
  *(undefined4 *)(&DAT_182bbcb48 + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcbc8 + local_260 * 0x1b80) = 0xffffffff;
  lVar21 = -(longlong)(&DAT_182bbc7e0 + local_250);
  *(undefined4 *)(&DAT_182bbca68 + (*(int *)(&DAT_182bbca4c + local_260 * 0x1b80) + lVar13) * 4) =
       0x19;
  *(undefined4 *)(&DAT_182bbcb4c + local_260 * 0x1b80) = 0;
  *(undefined4 *)(&DAT_182bbcbcc + local_260 * 0x1b80) = 0xffffffff;
  pbVar12 = pbVar11;
LAB_1400c6453:
  do {
    if (*pbVar11 != 0) {
      uVar2 = toupper((uint)*pbVar11);
      *pbVar11 = (byte)uVar2;
      if ((byte)((byte)uVar2 + 0xbf) < 0x1a) {
        *(int *)(&DAT_182bbcae8 +
                (*(int *)(&DAT_182bbc8e4 + ((ulonglong)(uVar2 & 0xff) + lVar13) * 4) + lVar13) * 4)
             = *(int *)(&DAT_182bbcae8 +
                       (*(int *)(&DAT_182bbc8e4 + ((ulonglong)(uVar2 & 0xff) + lVar13) * 4) + lVar13
                       ) * 4) + 1;
      }
      pbVar11 = pbVar11 + 1;
      if ((longlong)(pbVar11 + lVar21) < 0x3e) goto LAB_1400c6453;
    }
    iVar8 = local_270;
    lVar21 = lVar21 + -0x40;
    pbVar11 = pbVar12 + 0x40;
    lVar4 = lVar4 + -1;
    pbVar12 = pbVar11;
    if (lVar4 == 0) {
      *(undefined8 *)((longlong)&DAT_182bbb4e8 + lVar19) = 0;
      uVar17 = uVar14;
      do {
        if (uVar17 == 0) {
          pcVar5 = &DAT_182bbb4f4 + lVar19;
          pcVar6 = "DECRYPTER     Ctrl-R RESET   Ctrl-P PRINT    Ctrl-X EXIT";
          lVar4 = 0x1f;
          do {
            cVar7 = *pcVar6;
            if (cVar7 == '\0') {
              cVar7 = ' ';
            }
            else {
              pcVar6 = pcVar6 + 1;
            }
            *pcVar5 = cVar7;
            cVar7 = *pcVar6;
            pcVar5[0x800] = '\x1f';
            if (cVar7 == '\0') {
              cVar7 = ' ';
            }
            else {
              pcVar6 = pcVar6 + 1;
            }
            pcVar5[1] = cVar7;
            pcVar5[0x801] = '\x1f';
            pcVar5 = pcVar5 + 2;
            lVar4 = lVar4 + -1;
          } while (lVar4 != 0);
          (&DAT_182bbb532)[local_248] = 0;
        }
        else {
          (&DAT_182bbb4f4)[(uVar17 + lVar3) * 0x40] = 0;
        }
        uVar17 = uVar17 + 1;
      } while ((longlong)uVar17 < 0x18);
      FUN_1400c5750(local_270);
      do {
        FUN_140050f90(iVar8,uVar14);
        uVar2 = (int)uVar14 + 1;
        uVar14 = (ulonglong)uVar2;
      } while ((int)uVar2 < 0x18);
      return;
    }
  } while( true );
}



===== FUN_1400c3ed0 @ 1400c3ed0 root=false =====

void FUN_1400c3ed0(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 *puVar4;
  char *pcVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  undefined4 *puVar9;
  longlong lVar10;
  int *piVar11;
  
  lVar7 = (longlong)param_1;
  lVar8 = lVar7 * 0x1b80;
  if ((0 < *(int *)(&DAT_182bbc69c + lVar8)) &&
     (iVar3 = *(int *)(&DAT_182bbc69c + lVar8) + -1, *(int *)(&DAT_182bbc69c + lVar8) = iVar3,
     iVar3 == 0)) {
    if (*(int *)(&DAT_182bbc698 + lVar8) == 0) {
      iVar3 = FUN_14004c960(param_1,*(undefined4 *)(&DAT_182bbc6a0 + lVar8));
      if (iVar3 == -1) {
        pcVar5 = "DISK ERROR";
      }
      else {
        FUN_140080690(iVar3,*(undefined4 *)(&DAT_182bbc6a4 + lVar8),&DAT_182bbc6b0 + lVar8,
                      *(undefined4 *)(&DAT_182bbc6d0 + lVar8));
        pcVar5 = "  1 FILE(S) COPIED.";
      }
      FUN_140158ab0(&DAT_182bbb4f4 +
                    ((longlong)(int)(&DAT_182bbb4e8)[lVar7 * 0x6e0] + lVar7 * 0x6e) * 0x40,pcVar5);
      FUN_1400c3e00(param_1);
      if (*(int *)(&DAT_182bbc6d4 + lVar8) == 0) {
        FUN_1400c6d90(param_1,8);
      }
      else {
        iVar3 = 0;
        if (0 < *(int *)(&DAT_182bbc6d4 + lVar8)) {
          puVar9 = (undefined4 *)(&DAT_182bbc6d8 + lVar8);
          do {
            FUN_1400c6d90(param_1,*puVar9);
            iVar3 = iVar3 + 1;
            puVar9 = puVar9 + 1;
          } while (iVar3 < *(int *)(&DAT_182bbc6d4 + lVar8));
        }
        *(undefined4 *)(&DAT_182bbc6d4 + lVar8) = 0;
      }
    }
    if (*(int *)(&DAT_182bbc698 + lVar8) == 1) {
      iVar3 = FUN_14004c960(param_1,*(undefined4 *)(&DAT_182bbc6a0 + lVar8));
      if (iVar3 != -1) {
        lVar10 = (longlong)iVar3 * 0x2828;
        iVar1 = *(int *)(&DAT_181feebc8 + lVar10);
LAB_1400c4030:
        while( true ) {
          iVar2 = *(int *)(&DAT_182bbc6a8 + lVar8);
          if (iVar1 <= iVar2) break;
          lVar6 = (longlong)iVar2 * 0x10 + lVar10;
          if (*(int *)(&DAT_181feebd8 + lVar6) == *(int *)(&DAT_182bbc6a4 + lVar8)) {
            lVar10 = lVar7 * 0x6e;
            FUN_140158ab0(&DAT_182bbb4f4 + ((int)(&DAT_182bbb4e8)[lVar7 * 0x6e0] + lVar10) * 0x40,
                          "%s            ",&DAT_181feebcc + lVar6);
            (&DAT_182bbb4ff)[((int)(&DAT_182bbb4e8)[lVar7 * 0x6e0] + lVar10) * 0x40] = 0;
            puVar9 = (undefined4 *)
                     (((int)(&DAT_182bbb4e8)[lVar7 * 0x6e0] + lVar10) * 0x40 + 0x182bbb4f3);
            do {
              puVar4 = puVar9;
              puVar9 = (undefined4 *)((longlong)puVar4 + 1);
            } while (*(char *)((longlong)puVar4 + 1) != '\0');
            *(undefined4 *)((longlong)puVar4 + 1) = DAT_140275f40;
            *(undefined2 *)((longlong)puVar4 + 5) = DAT_140275f44;
            FUN_1400c3e00(param_1);
            (&DAT_182bbb4f4)[((int)(&DAT_182bbb4e8)[lVar7 * 0x6e0] + lVar10) * 0x40] = 0;
            *(int *)(&DAT_182bbc6a8 + lVar8) = *(int *)(&DAT_182bbc6a8 + lVar8) + 1;
            *(undefined4 *)(&DAT_182bbc69c + lVar8) = 4;
            goto LAB_1400c41df;
          }
          *(int *)(&DAT_182bbc6a8 + lVar8) = iVar2 + 1;
        }
        iVar2 = *(int *)(&DAT_182bbc6ac + lVar8);
        if (iVar2 < (int)(&DAT_181fefbcc)[(longlong)iVar3 * 0xa0a]) {
          lVar6 = lVar10 + (longlong)iVar2 * 0x18;
          if (*(int *)(&DAT_181fefbe4 + lVar6) != *(int *)(&DAT_182bbc6a4 + lVar8))
          goto code_r0x0001400c409a;
          FUN_140158ab0(&DAT_182bbb4f4 +
                        ((longlong)(int)(&DAT_182bbb4e8)[lVar7 * 0x6e0] + lVar7 * 0x6e) * 0x40,
                        &DAT_14027352c,&DAT_181fefbd4 + lVar6);
          FUN_1400c3e00(param_1);
          (&DAT_182bbb4f4)[((longlong)(int)(&DAT_182bbb4e8)[lVar7 * 0x6e0] + lVar7 * 0x6e) * 0x40] =
               0;
          *(int *)(&DAT_182bbc6ac + lVar8) = *(int *)(&DAT_182bbc6ac + lVar8) + 1;
          *(undefined4 *)(&DAT_182bbc69c + lVar8) = 4;
        }
        goto LAB_1400c41df;
      }
      FUN_140158ab0(&DAT_182bbb4f4 +
                    ((longlong)(int)(&DAT_182bbb4e8)[lVar7 * 0x6e0] + lVar7 * 0x6e) * 0x40,
                    "DISK ERROR");
      FUN_1400c3e00(param_1);
LAB_1400c41df:
      if (*(int *)(&DAT_182bbc69c + lVar8) == 0) {
        FUN_1400c3e00(param_1);
        piVar11 = (int *)(&DAT_182bbc6d4 + lVar8);
        (&DAT_182bbb4f4)[((longlong)(int)(&DAT_182bbb4e8)[lVar7 * 0x6e0] + lVar7 * 0x6e) * 0x40] = 0
        ;
        (&DAT_182bbc534)[lVar8] = 0;
        if (*piVar11 == 0) {
          FUN_1400c6d90(param_1,8);
        }
        else {
          iVar3 = 0;
          if (0 < *piVar11) {
            puVar9 = (undefined4 *)(&DAT_182bbc6d8 + lVar8);
            do {
              FUN_1400c6d90(param_1,*puVar9);
              iVar3 = iVar3 + 1;
              puVar9 = puVar9 + 1;
            } while (iVar3 < *piVar11);
          }
          *piVar11 = 0;
        }
      }
    }
  }
  return;
code_r0x0001400c409a:
  *(int *)(&DAT_182bbc6ac + lVar8) = iVar2 + 1;
  goto LAB_1400c4030;
}



===== FUN_1400c3e00 @ 1400c3e00 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400c3e00(int param_1)

{
  undefined8 uVar1;
  undefined8 uVar2;
  uint uVar3;
  longlong lVar4;
  longlong lVar5;
  
  uVar2 = _UNK_140279208;
  uVar1 = _DAT_140279200;
  lVar5 = (longlong)param_1;
  lVar4 = (lVar5 * 0x6e + (longlong)(int)(&DAT_182bbb4e8)[lVar5 * 0x6e0]) * 0x40;
  *(undefined8 *)(&DAT_182bbbcf4 + lVar4) = _DAT_140279200;
  *(undefined8 *)(&DAT_182bbbcfc + lVar4) = uVar2;
  *(undefined8 *)(&DAT_182bbbd04 + lVar4) = uVar1;
  *(undefined8 *)(&DAT_182bbbd0c + lVar4) = uVar2;
  *(undefined8 *)(&DAT_182bbbd14 + lVar4) = uVar1;
  *(undefined8 *)(lVar4 + 0x182bbbd1c) = uVar2;
  *(undefined8 *)(&DAT_182bbbd24 + lVar4) = uVar1;
  *(int *)(&DAT_182bbbd2c + lVar4) = (int)uVar1;
  *(short *)(&DAT_182bbbd30 + lVar4) = (short)uVar1;
  (&DAT_182bbbd32)[lVar4] = (char)uVar1;
  FUN_140050f90(uVar1,(&DAT_182bbb4e8)[lVar5 * 0x6e0]);
  if (((&DAT_182bbb4e8)[lVar5 * 0x6e0] + 10 & 0x1f) == (&DAT_182bbb4ec)[lVar5 * 0x6e0]) {
    (&DAT_182bbb4ec)[lVar5 * 0x6e0] = (&DAT_182bbb4ec)[lVar5 * 0x6e0] + 1 & 0x1f;
  }
  uVar3 = (&DAT_182bbb4e8)[lVar5 * 0x6e0] + 1 & 0x1f;
  (&DAT_182bbb4e8)[lVar5 * 0x6e0] = uVar3;
  (&DAT_18329b1e0)[lVar5] = (&DAT_18329b1e0)[lVar5] + 1;
  *(uint *)(&DAT_182bbb4f0 + lVar5 * 0x1b80) = uVar3 << 6;
  return;
}



===== FUN_1400c7450 @ 1400c7450 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400c7450(int param_1,uint param_2)

{
  uint uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  int iVar4;
  int iVar5;
  longlong lVar6;
  undefined1 *puVar7;
  int *piVar8;
  longlong lVar9;
  undefined8 *puVar10;
  longlong lVar11;
  int iVar12;
  bool bVar13;
  
  lVar6 = (longlong)param_1;
  lVar9 = lVar6 * 0x1b80;
  if (0 < *(int *)(&DAT_182bbc7e4 + lVar9)) {
    return;
  }
  iVar4 = *(int *)(&DAT_182bbc7d8 + lVar9);
  if ((iVar4 == -1) || (*(int *)(&DAT_182bbb4b4 + lVar9) == -1)) {
    iVar4 = 0;
    (&DAT_182bbc7dc)[lVar6 * 0x6e0] = 0;
    puVar7 = &DAT_182bbb4f4 + lVar9;
    puVar10 = (undefined8 *)(&DAT_182bbbcf4 + lVar9);
    do {
      uVar3 = _UNK_140279208;
      uVar2 = _DAT_140279200;
      *puVar7 = 0;
      *puVar10 = uVar2;
      puVar10[1] = uVar3;
      puVar10[2] = uVar2;
      puVar10[3] = uVar3;
      puVar10[4] = uVar2;
      puVar10[5] = uVar3;
      puVar10[6] = uVar2;
      *(int *)(puVar10 + 7) = (int)uVar2;
      *(short *)((longlong)puVar10 + 0x3c) = (short)uVar2;
      *(char *)((longlong)puVar10 + 0x3e) = (char)uVar2;
      FUN_140050f90(param_1,iVar4);
      iVar4 = iVar4 + 1;
      puVar10 = puVar10 + 8;
      puVar7 = puVar7 + 0x40;
    } while (iVar4 < 0x18);
    return;
  }
  if ((param_2 >> 8 & 1) != 0) {
    iVar4 = toupper(param_2 & 0xff);
    if (iVar4 != 0x58) {
      return;
    }
    iVar4 = 0;
    (&DAT_182bbc7dc)[lVar6 * 0x6e0] = 0;
    puVar7 = &DAT_182bbb4f4 + lVar9;
    puVar10 = (undefined8 *)(&DAT_182bbbcf4 + lVar9);
    do {
      uVar3 = _UNK_140279208;
      uVar2 = _DAT_140279200;
      *puVar7 = 0;
      *puVar10 = uVar2;
      puVar10[1] = uVar3;
      puVar10[2] = uVar2;
      puVar10[3] = uVar3;
      puVar10[4] = uVar2;
      puVar10[5] = uVar3;
      puVar10[6] = uVar2;
      *(int *)(puVar10 + 7) = (int)uVar2;
      *(short *)((longlong)puVar10 + 0x3c) = (short)uVar2;
      *(char *)((longlong)puVar10 + 0x3e) = (char)uVar2;
      FUN_140050f90(param_1,iVar4);
      iVar4 = iVar4 + 1;
      puVar10 = puVar10 + 8;
      puVar7 = puVar7 + 0x40;
    } while (iVar4 < 0x18);
    return;
  }
  piVar8 = (int *)(&DAT_182bbc7e8 + lVar9);
  iVar12 = *piVar8;
  if (iVar12 == 0) {
    if (param_2 == 0x10) {
      if (-2 < *(int *)(&DAT_182bbc7ec + lVar9)) {
        *(int *)(&DAT_182bbc7ec + lVar9) = *(int *)(&DAT_182bbc7ec + lVar9) + -1;
      }
    }
    else if (param_2 == 0x11) {
      if (*(int *)(&DAT_182bbc7ec + lVar9) < 7) {
        *(int *)(&DAT_182bbc7ec + lVar9) = *(int *)(&DAT_182bbc7ec + lVar9) + 1;
      }
    }
    else if (param_2 == 10) {
      uVar1 = *(uint *)(&DAT_182bbc7ec + lVar9);
      if (uVar1 < 7) {
        *piVar8 = 1;
        *(undefined4 *)(&DAT_182bbc7f0 + lVar9) = 0;
      }
      else if (uVar1 == 0xffffffff) {
        iVar12 = 0;
        *(undefined4 *)(&DAT_182bbc7fc + lVar9) = 0;
        iVar4 = 0;
        if (0 < (int)(&DAT_181fefbcc)[(longlong)*(int *)(&DAT_182bbb4b4 + lVar9) * 0xa0a]) {
          iVar5 = *(int *)(&DAT_182bbb4b4 + lVar9);
          lVar11 = 0;
          do {
            if (*(int *)(&DAT_181fefbe4 + (longlong)iVar5 * 0x2828 + lVar11) ==
                *(int *)(&DAT_182bbc7f8 + lVar9)) {
              *(int *)(&DAT_182bbc800 + (lVar6 * 0x6e0 + (longlong)iVar12) * 4) = iVar4;
              iVar12 = *(int *)(&DAT_182bbc7fc + lVar9) + 1;
              *(int *)(&DAT_182bbc7fc + lVar9) = iVar12;
              iVar5 = *(int *)(&DAT_182bbb4b4 + lVar9);
            }
            iVar4 = iVar4 + 1;
            lVar11 = lVar11 + 0x18;
          } while (iVar4 < (int)(&DAT_181fefbcc)[(longlong)iVar5 * 0xa0a]);
        }
        *piVar8 = 2;
        *(undefined4 *)(&DAT_182bbc7f0 + lVar9) = 0;
      }
      else {
        if (uVar1 != 0xfffffffe) {
          iVar4 = 0;
          (&DAT_182bbc7dc)[lVar6 * 0x6e0] = 0;
          puVar7 = &DAT_182bbb4f4 + lVar9;
          puVar10 = (undefined8 *)(&DAT_182bbbcf4 + lVar9);
          do {
            uVar3 = _UNK_140279208;
            uVar2 = _DAT_140279200;
            *puVar7 = 0;
            *puVar10 = uVar2;
            puVar10[1] = uVar3;
            puVar10[2] = uVar2;
            puVar10[3] = uVar3;
            puVar10[4] = uVar2;
            puVar10[5] = uVar3;
            puVar10[6] = uVar2;
            *(int *)(puVar10 + 7) = (int)uVar2;
            *(short *)((longlong)puVar10 + 0x3c) = (short)uVar2;
            *(char *)((longlong)puVar10 + 0x3e) = (char)uVar2;
            FUN_140050f90(param_1,iVar4);
            iVar4 = iVar4 + 1;
            puVar10 = puVar10 + 8;
            puVar7 = puVar7 + 0x40;
          } while (iVar4 < 0x18);
          return;
        }
        if ((int)(&DAT_16d48232c)[(longlong)iVar4 * 5] < 9) {
          (&DAT_16d48232c)[(longlong)iVar4 * 5] = 0;
        }
      }
    }
    goto LAB_1400c77e6;
  }
  if (iVar12 == 1) {
    if (param_2 == 0x10) {
      if (0 < *(int *)(&DAT_182bbc7f0 + lVar9)) {
        *(int *)(&DAT_182bbc7f0 + lVar9) = *(int *)(&DAT_182bbc7f0 + lVar9) + -1;
      }
      goto LAB_1400c77e6;
    }
    if (param_2 == 0x11) {
      if (*(int *)(&DAT_182bbc7f0 + lVar9) < 0) {
        *(int *)(&DAT_182bbc7f0 + lVar9) = *(int *)(&DAT_182bbc7f0 + lVar9) + 1;
      }
      goto LAB_1400c77e6;
    }
    if (param_2 != 10) goto LAB_1400c77e6;
    bVar13 = *(int *)(&DAT_182bbc7f0 + lVar9) == 0;
LAB_1400c77e0:
    if (!bVar13) goto LAB_1400c77e6;
  }
  else {
    if (iVar12 != 2) goto LAB_1400c77e6;
    if (param_2 == 0x10) {
      if (0 < *(int *)(&DAT_182bbc7f4 + lVar9)) {
        *(int *)(&DAT_182bbc7f4 + lVar9) = *(int *)(&DAT_182bbc7f4 + lVar9) + -1;
      }
      goto LAB_1400c77e6;
    }
    if (param_2 == 0x11) {
      if (*(int *)(&DAT_182bbc7f4 + lVar9) < *(int *)(&DAT_182bbc7fc + lVar9)) {
        *(int *)(&DAT_182bbc7f4 + lVar9) = *(int *)(&DAT_182bbc7f4 + lVar9) + 1;
      }
      goto LAB_1400c77e6;
    }
    if (param_2 != 10) {
      bVar13 = param_2 == 8;
      goto LAB_1400c77e0;
    }
    if (*(int *)(&DAT_182bbc7f4 + lVar9) < *(int *)(&DAT_182bbc7fc + lVar9)) {
      *(undefined4 *)(&DAT_182bbc7e0 + lVar9) = 1;
      *(undefined4 *)(&DAT_182bbc7e4 + lVar9) = 0xff;
      goto LAB_1400c77e6;
    }
  }
  *piVar8 = 0;
LAB_1400c77e6:
  iVar4 = *piVar8;
  if (iVar4 == 0) {
    FUN_1400c7890(param_1);
    iVar4 = *piVar8;
  }
  if (iVar4 == 1) {
    FUN_1400c7fc0(param_1);
    iVar4 = *piVar8;
  }
  if (iVar4 == 2) {
    FUN_1400c86d0(param_1);
  }
  return;
}



===== FUN_1400c7890 @ 1400c7890 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1400c7890(int param_1)

{
  int iVar1;
  int iVar2;
  longlong lVar3;
  longlong lVar4;
  undefined *puVar5;
  char *pcVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  char cVar9;
  longlong lVar10;
  uint uVar11;
  ulonglong uVar12;
  int iVar13;
  undefined1 auStack_268 [40];
  undefined8 local_240;
  char local_238 [24];
  undefined1 local_220;
  ulonglong local_38;
  
  local_38 = DAT_1403020a0 ^ (ulonglong)auStack_268;
  lVar3 = (longlong)param_1;
  local_240 = lVar3 * 0x1b80;
  uVar12 = 0;
  iVar1 = *(int *)(&DAT_182bbc7d8 + local_240);
  uVar8 = uVar12;
  uVar7 = uVar12;
  if (iVar1 == -1) {
    *(undefined4 *)(&DAT_182bbc7e8 + local_240) = 0;
  }
  else {
    do {
      iVar13 = (int)uVar7;
      if (uVar8 == 1) {
        lVar4 = lVar3 * 0x1b80;
        *(undefined4 *)(&DAT_182bbb534 + lVar4) = 0x5353494d;
        *(undefined4 *)(&DAT_182bbbd34 + lVar4) = 0xf0f0f0f;
        *(undefined4 *)(&DAT_182bbb538 + lVar4) = 0x204e4f49;
        *(undefined4 *)(&DAT_182bbbd38 + lVar4) = 0xf0f0f0f;
        *(undefined4 *)(&DAT_182bbb53c + lVar4) = 0x454c4553;
        *(undefined4 *)(&DAT_182bbbd3c + lVar4) = 0xf0f0f0f;
        *(undefined4 *)(&DAT_182bbb540 + lVar4) = 0x20205443;
        *(undefined4 *)(&DAT_182bbbd40 + lVar4) = 0xf0f0f0f;
        (&DAT_182bbb544)[lVar4] = 0;
      }
      else if (uVar8 - 3 < 10) {
        uVar11 = iVar13 - 5;
        if (uVar11 == 0xfffffffe) {
          iVar2 = (&DAT_16d48232c)[(longlong)iVar1 * 5];
          if (iVar2 < 1) {
            pcVar6 = "INTEL REQUESTED";
            if (iVar2 != 0) {
LAB_1400c79f4:
              pcVar6 = "NO INTEL AVAILABLE";
            }
          }
          else if (iVar2 < 9) {
            pcVar6 = "REQUEST INTEL";
          }
          else {
            if (iVar2 != 0xb) goto LAB_1400c79f4;
            pcVar6 = "INTEL FAXED";
          }
LAB_1400c7ab9:
          FUN_140158ab0(local_238,pcVar6);
        }
        else {
          if (uVar11 == 0xffffffff) {
            pcVar6 = "UPLOAD FILE";
            goto LAB_1400c7ab9;
          }
          if (6 < uVar11) {
            pcVar6 = "EXIT";
            goto LAB_1400c7ab9;
          }
          if ((&DAT_16b2aaf28)[(uVar8 - 5) * 0x875d] == 0) {
            FUN_140158ab0(local_238,"%d. UNKNOWN                   ",iVar13 + -4);
          }
          else {
            FUN_140158ab0(local_238,"%d. PROJECT %s                ",iVar13 + -4,
                          uVar7 * 0x21d74 + 0x16b22390c);
          }
          local_220 = 0;
          lVar4 = (longlong)&local_240 + 7;
          do {
            pcVar6 = (char *)(lVar4 + 1);
            lVar4 = lVar4 + 1;
          } while (*pcVar6 != '\0');
          lVar10 = 0;
          do {
            cVar9 = *(char *)((longlong)iVar1 * 0x86c + uVar7 * 0x21d74 + 0x16b202418 + lVar10);
            *(char *)(lVar4 + lVar10) = cVar9;
            lVar10 = lVar10 + 1;
          } while (cVar9 != '\0');
        }
        lVar4 = 2;
        lVar10 = (lVar3 * 0x6e + uVar8) * 0x40;
        puVar5 = &DAT_182bbbcf4 + lVar10;
        uVar7 = uVar12;
        if (*(uint *)(&DAT_182bbc7ec + local_240) == uVar11) {
          do {
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x800] = cVar9;
            *puVar5 = 0xe8;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7ff] = cVar9;
            puVar5[1] = 0xe8;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7fe] = cVar9;
            puVar5[2] = 0xe8;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7fd] = cVar9;
            puVar5[3] = 0xe8;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7fc] = cVar9;
            puVar5[4] = 0xe8;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7fb] = cVar9;
            puVar5[5] = 0xe8;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7fa] = cVar9;
            puVar5[6] = 0xe8;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f9] = cVar9;
            puVar5[7] = 0xe8;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f8] = cVar9;
            puVar5[8] = 0xe8;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f7] = cVar9;
            puVar5[9] = 0xe8;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f6] = cVar9;
            puVar5[10] = 0xe8;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f5] = cVar9;
            puVar5[0xb] = 0xe8;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f4] = cVar9;
            puVar5[0xc] = 0xe8;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f3] = cVar9;
            puVar5[0xd] = 0xe8;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f2] = cVar9;
            puVar5[0xe] = 0xe8;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f1] = cVar9;
            puVar5[0xf] = 0xe8;
            puVar5 = puVar5 + 0x10;
            lVar4 = lVar4 + -1;
          } while (lVar4 != 0);
          (&DAT_182bbb514)[lVar10] = 0;
        }
        else {
          do {
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x800] = cVar9;
            *puVar5 = 0xf;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7ff] = cVar9;
            puVar5[1] = 0xf;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7fe] = cVar9;
            puVar5[2] = 0xf;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7fd] = cVar9;
            puVar5[3] = 0xf;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7fc] = cVar9;
            puVar5[4] = 0xf;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7fb] = cVar9;
            puVar5[5] = 0xf;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7fa] = cVar9;
            puVar5[6] = 0xf;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f9] = cVar9;
            puVar5[7] = 0xf;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f8] = cVar9;
            puVar5[8] = 0xf;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f7] = cVar9;
            puVar5[9] = 0xf;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f6] = cVar9;
            puVar5[10] = 0xf;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f5] = cVar9;
            puVar5[0xb] = 0xf;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f4] = cVar9;
            puVar5[0xc] = 0xf;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f3] = cVar9;
            puVar5[0xd] = 0xf;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f2] = cVar9;
            puVar5[0xe] = 0xf;
            cVar9 = local_238[(int)uVar7];
            if (cVar9 == '\0') {
              cVar9 = ' ';
            }
            else {
              uVar7 = (ulonglong)((int)uVar7 + 1);
            }
            puVar5[-0x7f1] = cVar9;
            puVar5[0xf] = 0xf;
            puVar5 = puVar5 + 0x10;
            lVar4 = lVar4 + -1;
          } while (lVar4 != 0);
          (&DAT_182bbb514)[lVar10] = 0;
        }
      }
      else {
        (&DAT_182bbb4f4)[(lVar3 * 0x6e + uVar8) * 0x40] = 0;
      }
      uVar8 = uVar8 + 1;
      uVar7 = (ulonglong)(iVar13 + 1);
    } while ((longlong)uVar8 < 0x18);
    do {
      FUN_140050f90(param_1,uVar12);
      uVar11 = (int)uVar12 + 1;
      uVar12 = (ulonglong)uVar11;
    } while ((int)uVar11 < 0x18);
  }
  return;
}



===== FUN_1400c7fc0 @ 1400c7fc0 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1400c7fc0(int param_1)

{
  int iVar1;
  int iVar2;
  undefined *puVar3;
  int iVar4;
  longlong lVar5;
  longlong lVar6;
  uint uVar7;
  char cVar8;
  undefined4 uVar9;
  longlong lVar10;
  longlong lVar11;
  longlong lVar12;
  longlong *plVar13;
  longlong alStack_2a8 [5];
  undefined8 uStack_280;
  undefined1 auStack_278 [32];
  undefined4 local_258;
  undefined *local_248;
  char *local_240;
  char local_238 [512];
  ulonglong local_38;
  
  local_38 = DAT_1403020a0 ^ (ulonglong)auStack_278;
  lVar5 = (longlong)param_1;
  lVar12 = lVar5 * 0x1b80;
  local_248 = &DAT_140276110;
  local_240 = "UPLOAD";
  iVar1 = *(int *)(&DAT_182bbc7d8 + lVar12);
  if ((iVar1 == -1) || (*(int *)(&DAT_182bbc7ec + lVar12) < 0)) {
    *(undefined4 *)(&DAT_182bbc7e8 + lVar12) = 0;
  }
  else {
    iVar4 = 0;
    lVar6 = 0;
    uVar7 = 0;
    plVar13 = alStack_2a8;
    do {
      if (uVar7 == 0) {
        if ((&DAT_16b2aaf28)[(longlong)*(int *)(&DAT_182bbc7ec + lVar12) * 0x875d] == 0) {
          uStack_280 = 0x1400c8094;
          FUN_140158ab0(local_238,"UNKNOWN                     ");
        }
        else {
          uStack_280 = 0x1400c80b1;
          FUN_140158ab0(local_238,"PROJECT %s",
                        &DAT_16b2ccc50 + (longlong)*(int *)(&DAT_182bbc7ec + lVar12) * 0x21d74);
        }
        iVar2 = 0;
        lVar11 = (lVar5 * 0x6e + lVar6) * 0x40;
        lVar10 = 2;
        puVar3 = &DAT_182bbbcf4 + lVar11;
        do {
          cVar8 = local_238[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x800] = cVar8;
          *puVar3 = 0xf;
          cVar8 = local_238[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7ff] = cVar8;
          puVar3[1] = 0xf;
          cVar8 = local_238[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7fe] = cVar8;
          puVar3[2] = 0xf;
          cVar8 = local_238[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7fd] = cVar8;
          puVar3[3] = 0xf;
          cVar8 = local_238[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7fc] = cVar8;
          puVar3[4] = 0xf;
          cVar8 = local_238[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7fb] = cVar8;
          puVar3[5] = 0xf;
          cVar8 = local_238[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7fa] = cVar8;
          puVar3[6] = 0xf;
          cVar8 = local_238[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7f9] = cVar8;
          puVar3[7] = 0xf;
          cVar8 = local_238[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7f8] = cVar8;
          puVar3[8] = 0xf;
          cVar8 = local_238[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7f7] = cVar8;
          puVar3[9] = 0xf;
          puVar3 = puVar3 + 10;
          lVar10 = lVar10 + -1;
        } while (lVar10 != 0);
        (&DAT_182bbb508)[lVar11] = 0;
      }
      else if (uVar7 == 3) {
        iVar2 = 0;
        lVar10 = 2;
        lVar11 = (lVar5 * 0x6e + lVar6) * 0x40;
        puVar3 = &DAT_182bbbcf4 + lVar11;
        do {
          cVar8 = "STATUS"[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x800] = cVar8;
          *puVar3 = 0xf;
          cVar8 = "STATUS"[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7ff] = cVar8;
          puVar3[1] = 0xf;
          cVar8 = "STATUS"[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7fe] = cVar8;
          puVar3[2] = 0xf;
          cVar8 = "STATUS"[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7fd] = cVar8;
          puVar3[3] = 0xf;
          cVar8 = "STATUS"[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7fc] = cVar8;
          puVar3[4] = 0xf;
          cVar8 = "STATUS"[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7fb] = cVar8;
          puVar3[5] = 0xf;
          cVar8 = "STATUS"[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7fa] = cVar8;
          puVar3[6] = 0xf;
          cVar8 = "STATUS"[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7f9] = cVar8;
          puVar3[7] = 0xf;
          cVar8 = "STATUS"[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7f8] = cVar8;
          puVar3[8] = 0xf;
          cVar8 = "STATUS"[iVar2];
          if (cVar8 == '\0') {
            cVar8 = ' ';
          }
          else {
            iVar2 = iVar2 + 1;
          }
          puVar3[-0x7f7] = cVar8;
          puVar3[9] = 0xf;
          puVar3 = puVar3 + 10;
          lVar10 = lVar10 + -1;
        } while (lVar10 != 0);
        (&DAT_182bbb508)[lVar11] = 0;
      }
      else {
        if (uVar7 - 4 < 4) {
          lVar10 = (longlong)*(int *)(&DAT_182bbc7ec + lVar12) * 0x21d74 + (longlong)iVar1 * 0x86c;
          if (*(int *)(&DAT_16b2aaf58 + lVar10) <= (int)(uVar7 - 4)) {
LAB_1400c8474:
            (&DAT_182bbb4f4)[(lVar5 * 0x6e + lVar6) * 0x40] = 0;
            goto LAB_1400c8487;
          }
          local_258 = 0x3c;
          puVar3 = &DAT_16b2aab5c + (ulonglong)uVar7 * 0x100 + lVar10;
          uVar9 = 0xf;
        }
        else {
          if (uVar7 != 0xc) goto LAB_1400c8474;
          puVar3 = (undefined *)*plVar13;
          uVar9 = 0xb8;
          if (*(int *)(&DAT_182bbc7f0 + lVar12) != 0) {
            uVar9 = 0xf;
          }
          local_258 = 0x10;
        }
        uStack_280 = 0x1400c8465;
        FUN_1400c6ab0(param_1,uVar7,puVar3,uVar9);
      }
LAB_1400c8487:
      uVar7 = uVar7 + 1;
      lVar6 = lVar6 + 1;
      plVar13 = plVar13 + 1;
    } while ((int)uVar7 < 0x18);
    do {
      uStack_280 = 0x1400c84c9;
      FUN_140050f90(param_1,iVar4);
      iVar4 = iVar4 + 1;
    } while (iVar4 < 0x18);
  }
  return;
}



===== FUN_1400c72b0 @ 1400c72b0 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400c72b0(int param_1)

{
  undefined4 uVar1;
  undefined2 uVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  longlong lVar5;
  char *pcVar6;
  ulonglong uVar7;
  uint uVar8;
  longlong lVar9;
  longlong lVar10;
  bool bVar11;
  
  lVar10 = (longlong)param_1;
  lVar9 = lVar10 * 0x1b80;
  uVar7 = 0;
  *(undefined8 *)(&DAT_182bbb4e8 + lVar10 * 0x6e0) = 0;
  FUN_1401fcd30(&DAT_182bbc7e0 + lVar9,0,0x420);
  uVar1 = s_CONNECTING____140276100._8_4_;
  *(undefined4 *)(&DAT_182bbc7ec + lVar9) = 0xffffffff;
  uVar2 = s_CONNECTING____140276100._12_2_;
  pcVar6 = &DAT_182bbb4f4 + lVar10 * 0x1b80;
  do {
    *pcVar6 = '\0';
    if ((int)uVar7 == 0) {
      *(undefined8 *)pcVar6 = s_CONNECTING____140276100._0_8_;
      *(undefined4 *)(pcVar6 + 8) = uVar1;
      *(undefined2 *)(pcVar6 + 0xc) = uVar2;
    }
    uVar4 = _UNK_140279208;
    uVar3 = _DAT_140279200;
    lVar5 = (uVar7 + lVar10 * 0x6e) * 0x40;
    *(undefined8 *)(&DAT_182bbbcf4 + lVar5) = _DAT_140279200;
    *(undefined8 *)(&DAT_182bbbcfc + lVar5) = uVar4;
    *(undefined8 *)(&DAT_182bbbd04 + lVar5) = uVar3;
    *(undefined8 *)(&DAT_182bbbd0c + lVar5) = uVar4;
    *(undefined8 *)(&DAT_182bbbd14 + lVar5) = uVar3;
    *(undefined8 *)(lVar5 + 0x182bbbd1c) = uVar4;
    *(undefined8 *)(&DAT_182bbbd24 + lVar5) = uVar3;
    *(int *)(&DAT_182bbbd2c + lVar5) = (int)uVar3;
    *(short *)(&DAT_182bbbd30 + lVar5) = (short)uVar3;
    (&DAT_182bbbd32)[lVar5] = (char)uVar3;
    FUN_140050f90(param_1,uVar7);
    uVar8 = (int)uVar7 + 1;
    uVar7 = (ulonglong)uVar8;
    pcVar6 = pcVar6 + 0x40;
  } while ((int)uVar8 < 0x18);
  *(undefined4 *)(&DAT_182bbc7e4 + lVar9) = 0x100;
  bVar11 = DAT_1ad04adc0 != 0;
  *(undefined4 *)(&DAT_182bbc7e0 + lVar9) = 0;
  uVar1 = DAT_183ebfd34;
  if (bVar11) {
    lVar9 = (longlong)(int)DAT_189c1dc64;
    DAT_189c1dc64 = DAT_189c1dc64 + 1 & 0xffff;
    (&DAT_1873de460)[lVar9 * 0x20] = 0x13;
    (&DAT_1873de464)[lVar9 * 0x20] = uVar1;
    (&DAT_1873de480)[lVar9 * 0x20] = DAT_183e936f0;
    (&DAT_1873de484)[lVar9 * 0x20] = param_1;
    *(undefined4 *)(&DAT_1873de490 + lVar9 * 0x80) = 0x3f800000;
    *(undefined4 *)(&DAT_1873de494 + lVar9 * 0x80) = 0x3f800000;
  }
  return;
}



===== FUN_1400cdbd0 @ 1400cdbd0 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

ulonglong FUN_1400cdbd0(uint param_1,int param_2,int param_3,float param_4,float param_5,
                       float param_6)

{
  float fVar1;
  float fVar2;
  float fVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  ulonglong uVar7;
  float *pfVar8;
  float *pfVar9;
  longlong lVar10;
  longlong lVar11;
  uint uVar12;
  float fVar13;
  float fVar14;
  float fVar15;
  float fVar16;
  undefined1 auStack_118 [32];
  uint local_f8;
  undefined4 local_f0;
  uint local_e8;
  uint local_e4;
  int local_e0;
  float local_d8;
  float local_d4;
  float local_d0;
  undefined8 local_c8;
  undefined8 uStack_c0;
  undefined8 local_b8;
  undefined8 uStack_b0;
  float local_a8;
  ulonglong local_a0;
  
  local_a0 = DAT_1403020a0 ^ (ulonglong)auStack_118;
  uVar12 = 1 << ((byte)param_2 & 0x1f);
  local_e8 = param_1;
  local_e0 = param_2;
  uVar5 = FUN_1400169b0(param_3,param_4,param_5,param_6);
  if ((uVar12 & uVar5) == 0) {
    local_c8 = _DAT_140278d30;
    uStack_c0 = _UNK_140278d38;
    local_b8 = _DAT_140278d30;
    uStack_b0 = _UNK_140278d38;
    uVar5 = local_e8 >> 0x18 & 3;
    fVar15 = *(float *)(&DAT_15ada9280 + (longlong)param_3 * 0x100d70);
    local_a8 = DAT_1402783f4;
    fVar13 = (float)((double)uVar5 * DAT_1402785a0);
    local_e8 = local_e8 & 0x3ff;
    FUN_14007b2a0(&local_c8,&DAT_1402f6188,fVar13);
    lVar10 = (longlong)param_2 * 0x74 + (ulonglong)local_e8 * 0xed0;
    fVar1 = *(float *)(&DAT_1812c2114 + lVar10);
    fVar2 = *(float *)(&DAT_1812c2118 + lVar10);
    fVar3 = *(float *)(&DAT_1812c211c + lVar10);
    fVar14 = ((float)(int)param_4 + DAT_140278338) * fVar15 + (float)local_c8 * fVar1 +
             uStack_c0._4_4_ * fVar2 + (float)uStack_b0 * fVar3;
    fVar16 = (float)(int)param_5 * fVar15 + local_c8._4_4_ * fVar1 + (float)local_b8 * fVar2 +
             uStack_b0._4_4_ * fVar3;
    fVar15 = ((float)(int)param_6 + DAT_140278338) * fVar15 + (float)uStack_c0 * fVar1 +
             local_b8._4_4_ * fVar2 + local_a8 * fVar3;
    local_c8 = *(undefined8 *)(&DAT_1812c2120 + lVar10);
    uStack_c0 = *(undefined8 *)(&DAT_1812c2128 + lVar10);
    local_b8 = *(undefined8 *)(&DAT_1812c2130 + lVar10);
    uStack_b0 = *(undefined8 *)(&DAT_1812c2138 + lVar10);
    local_a8 = *(float *)(&DAT_1812c2140 + lVar10);
    local_d8 = fVar14;
    local_d4 = fVar16;
    local_d0 = fVar15;
    FUN_14007b2a0(&local_c8,&DAT_1402f6188,fVar13);
    uVar7 = FUN_140054130(*(undefined4 *)(&DAT_1812c2110 + lVar10),&local_d8,0,&local_c8);
    local_e4 = (uint)uVar7;
    if (local_e4 != 0xffffffff) {
      uVar6 = FUN_1400169b0(param_3,param_4,param_5,param_6);
      uVar6 = uVar6 | uVar12;
      local_f8 = uVar6;
      FUN_140017110(param_3,param_4,param_5,param_6);
      local_f0 = 1;
      local_f8 = uVar6;
      FUN_1400516b0(param_3,param_4,param_5,param_6);
      lVar10 = (longlong)(int)local_e4 * 0x1b80;
      iVar4 = (&DAT_182bbb194)[(longlong)(int)local_e4 * 0x6e0];
      *(undefined4 *)(&DAT_182bbb498 + lVar10) = 1;
      *(int *)(&DAT_182bbb49c + lVar10) = param_3;
      *(float *)(&DAT_182bbb4a0 + lVar10) = param_4;
      *(float *)(&DAT_182bbb4a4 + lVar10) = param_5;
      *(float *)(&DAT_182bbb4a8 + lVar10) = param_6;
      *(uint *)(&DAT_182bbb4ac + lVar10) = uVar5 * 0x1000000 + local_e8;
      *(int *)(&DAT_182bbb4b0 + lVar10) = local_e0;
      if ((iVar4 == 0x27) && (0 < (int)DAT_1760c55f4)) {
        pfVar9 = (float *)&DAT_1760c5684;
        uVar7 = (ulonglong)DAT_1760c55f4;
        do {
          if (((((pfVar9[-3] <= fVar14) && (fVar14 < *pfVar9)) && (pfVar9[-2] <= fVar16)) &&
              ((fVar16 < pfVar9[1] && (pfVar9[-1] <= fVar15)))) &&
             ((fVar15 < pfVar9[2] && (lVar11 = (longlong)(int)pfVar9[0x329f], 0 < lVar11)))) {
            pfVar8 = pfVar9 + 0x32a2;
            do {
              if (((param_5 == pfVar8[-1]) && (param_6 == *pfVar8)) &&
                 ((param_4 == pfVar8[-2] &&
                  (fVar1 = pfVar9[-0x13], *(float *)(&DAT_182bbb4b4 + lVar10) = pfVar8[1],
                  fVar1 == 1.4013e-45)))) {
                *(float *)(&DAT_182bbc7d8 + lVar10) = pfVar9[0x67];
              }
              pfVar8 = pfVar8 + 4;
              lVar11 = lVar11 + -1;
            } while (lVar11 != 0);
          }
          pfVar9 = pfVar9 + 0x36c3;
          uVar7 = uVar7 - 1;
        } while (uVar7 != 0);
      }
      uVar7 = (ulonglong)local_e4;
    }
  }
  else {
    uVar7 = 0xffffffff;
  }
  return uVar7;
}



===== FUN_1400ee780 @ 1400ee780 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400ee780(int param_1,uint param_2)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  longlong lVar4;
  uint uVar5;
  uint *puVar6;
  int iVar7;
  longlong lVar8;
  int iVar9;
  ulonglong uVar10;
  int iVar11;
  uint uVar12;
  longlong lVar13;
  undefined1 auStack_2b8 [32];
  int local_298;
  undefined4 local_290;
  undefined4 local_28c;
  undefined4 local_288;
  longlong local_280;
  undefined4 local_278;
  undefined4 uStack_274;
  undefined4 uStack_270;
  undefined4 uStack_26c;
  undefined4 local_268;
  undefined4 uStack_264;
  undefined4 uStack_260;
  undefined4 uStack_25c;
  undefined4 local_258;
  char local_248 [512];
  ulonglong local_48;
  
  local_48 = DAT_1403020a0 ^ (ulonglong)auStack_2b8;
  lVar8 = (longlong)param_1;
  uVar5 = param_2 & 0xff;
  uVar10 = (ulonglong)uVar5;
  local_298 = (int)param_2 >> 0x10;
  iVar7 = (&DAT_151620cfc)[lVar8 * 0xe0d];
  lVar13 = (longlong)iVar7;
  if (iVar7 == -1) {
    return;
  }
  uVar12 = (&DAT_151620ce4)[lVar8 * 0xe0d];
  local_280 = CONCAT44(local_280._4_4_,uVar12);
  if (uVar5 == 0x80) {
    (&DAT_151620dc4)[lVar8 * 0xe0d] = 0xe;
    return;
  }
  if (uVar5 == 0x81) {
    (&DAT_151620dc4)[lVar8 * 0xe0d] = 0xf;
    return;
  }
  if (uVar5 == 0x82) {
    (&DAT_151620dc4)[lVar8 * 0xe0d] = 0x10;
    return;
  }
  if (uVar5 == 0x83) {
    (&DAT_151620dc4)[lVar8 * 0xe0d] = 0x11;
    return;
  }
  if (uVar5 == 0x84) {
    (&DAT_151620dc4)[lVar8 * 0xe0d] = 0x12;
    return;
  }
  if (uVar5 == 0x85) {
    (&DAT_151620dc4)[lVar8 * 0xe0d] = 0x13;
    return;
  }
  iVar9 = (&DAT_151620dc4)[lVar8 * 0xe0d];
  iVar3 = 0;
  iVar11 = 2;
  if (iVar9 == 0xe) {
    iVar11 = 0xb;
    if (uVar5 != 0) {
      iVar11 = -1;
    }
    if (uVar5 == 1) {
      iVar11 = 7;
    }
    else if (uVar5 == 2) {
      iVar11 = 1;
    }
    else if (uVar5 == 3) {
      iVar11 = 3;
    }
    else if (uVar5 == 4) {
      iVar11 = 9;
    }
    else if (iVar11 == -1) goto LAB_1400eebcf;
LAB_1400eeaa7:
    if ((int)(&DAT_151620cc8)[lVar8 * 0xe0d] < 10) {
      if ((*(int *)(&DAT_182a7e184 + (longlong)iVar11 * 0x13d0) <=
           (int)(&DAT_151620cac)[lVar8 * 0xe0d]) ||
         (*(int *)(&DAT_182a7e184 + (longlong)iVar11 * 0x13d0) == 0)) {
        local_258 = 0x3f800000;
        local_290 = (&DAT_18329e388)[lVar13 * 0x1bfe];
        local_28c = (&DAT_18329e38c)[lVar13 * 0x1bfe];
        local_288 = (&DAT_18329e390)[lVar13 * 0x1bfe];
        local_278 = _DAT_140278d30;
        uStack_274 = _UNK_140278d34;
        uStack_270 = _UNK_140278d38;
        uStack_26c = _UNK_140278d3c;
        local_268 = _DAT_140278d30;
        uStack_264 = _UNK_140278d34;
        uStack_260 = _UNK_140278d38;
        uStack_25c = _UNK_140278d3c;
        uVar2 = FUN_140054130(_DAT_140278d30,&local_290,0,&local_278);
        if (iVar11 == 0xf) {
          iVar9 = 0;
          do {
            iVar3 = FUN_1400e35d0(uVar2,0xffffffff,iVar7,iVar9);
            if (iVar3 != 0) break;
            iVar9 = iVar9 + 1;
          } while (iVar9 < 2);
        }
        else {
          iVar9 = 2;
          do {
            iVar3 = FUN_1400e35d0(uVar2,0xffffffff,iVar7,iVar9);
            if (iVar3 != 0) break;
            iVar9 = iVar9 + 1;
          } while (iVar9 < 7);
        }
        (&DAT_151620cac)[lVar8 * 0xe0d] =
             (&DAT_151620cac)[lVar8 * 0xe0d] - *(int *)(&DAT_182a7e184 + (longlong)iVar11 * 0x13d0);
        if (DAT_183ebfaac == 3) {
          FUN_140051f50(param_1);
        }
        (&DAT_151620cc8)[lVar8 * 0xe0d] = (&DAT_151620cc8)[lVar8 * 0xe0d] + 1;
      }
    }
  }
  else {
    if (iVar9 == 0xf) {
      if (uVar5 == 0) {
        iVar11 = 0xc;
      }
      else if (uVar5 == 1) {
        iVar11 = 8;
      }
      else if (uVar5 != 2) {
        if (uVar5 == 3) {
          iVar11 = 4;
        }
        else {
          if (uVar5 != 4) goto LAB_1400eebcf;
          iVar11 = 10;
        }
      }
      goto LAB_1400eeaa7;
    }
    if (iVar9 == 0x10) {
      local_298 = 0;
      if (uVar5 == 0) {
        iVar11 = 0xe;
      }
      else if (uVar5 == 6) {
        iVar11 = 0xd;
      }
      else {
        if (uVar5 != 7) {
          if (uVar5 - 1 < 3) {
            iVar11 = 5000;
            if (uVar5 != 1) {
              iVar11 = 1000;
            }
            if (uVar5 == 2) {
              iVar11 = 20000;
            }
            else if (uVar5 == 3) {
              iVar11 = 100000;
            }
            iVar9 = (&DAT_151620cac)[lVar8 * 0xe0d];
            if (iVar11 <= iVar9) {
              iVar1 = 3;
              if (uVar5 != 1) {
                iVar1 = iVar3;
              }
              iVar3 = iVar1;
              if (uVar5 == 2) {
                iVar3 = 8;
              }
              else if (uVar5 == 3) {
                iVar3 = 7;
              }
              (&DAT_18399dae0)[lVar13] = (&DAT_18399dae0)[lVar13] + 1;
              *(int *)((longlong)&DAT_151624420 + lVar8 * 0x3834 + 4) = iVar3;
              (&DAT_151620cac)[lVar8 * 0xe0d] = iVar9 - iVar11;
              (&DAT_1832a52a4)[lVar13 * 0x1bfe] = iVar3;
              local_298 = iVar3;
              FUN_140051dc0(param_1);
            }
          }
          if (uVar5 - 4 < 2) {
            iVar11 = 10000;
            if (uVar5 != 4) {
              iVar11 = 1000;
            }
            iVar9 = (&DAT_151620cac)[lVar8 * 0xe0d];
            if (uVar5 == 5) {
              iVar11 = 1000000;
            }
            if (iVar11 <= iVar9) {
              if (uVar5 == 4) {
                local_298 = 1;
              }
              else {
                local_298 = iVar3;
                if (uVar5 == 5) {
                  local_298 = 2;
                }
              }
              (&DAT_18399dae0)[lVar13] = (&DAT_18399dae0)[lVar13] + 1;
              (&DAT_151624434)[lVar8 * 0xe0d] = local_298;
              (&DAT_151620cac)[lVar8 * 0xe0d] = iVar9 - iVar11;
              *(int *)(&DAT_1832a52b0 + lVar13 * 0x6ff8) = local_298;
              FUN_140051dc0(param_1);
            }
          }
          goto LAB_1400eebcf;
        }
        iVar11 = 0xf;
      }
      goto LAB_1400eeaa7;
    }
  }
LAB_1400eebcf:
  if (((((&DAT_151620dc4)[lVar8 * 0xe0d] == 0x11) && (uVar5 < 8)) &&
      ((&DAT_19021f244)[uVar10 * 4] != 0)) &&
     (((int)(&DAT_19021f250)[uVar10 * 4] <= (int)(&DAT_151620cac)[lVar8 * 0xe0d] && (uVar12 < 6))))
  {
    iVar11 = FUN_14011b8f0(&DAT_18329e388 + lVar13 * 0x1bfe,uVar12,0);
    if ((iVar11 != 0) && ((&DAT_19021f248)[uVar10 * 4] != -1)) {
      iVar11 = FUN_1400f00d0((&DAT_19021f248)[uVar10 * 4],uVar12,(&DAT_19021f24c)[uVar10 * 4]);
      if (iVar11 != -1) {
        local_290 = (&DAT_18329e388)[lVar13 * 0x1bfe];
        local_28c = (&DAT_18329e38c)[lVar13 * 0x1bfe];
        local_288 = (&DAT_18329e390)[lVar13 * 0x1bfe];
        local_258 = 0x3f800000;
        local_278 = _DAT_140278d30;
        uStack_274 = _UNK_140278d34;
        uStack_270 = _UNK_140278d38;
        uStack_26c = _UNK_140278d3c;
        local_268 = _DAT_140278d30;
        uStack_264 = _UNK_140278d34;
        uStack_260 = _UNK_140278d38;
        uStack_25c = _UNK_140278d3c;
        iVar9 = FUN_140054130(_DAT_140278d30,&local_290,0,&local_278);
        iVar3 = 2;
        (&DAT_182bbb400)[(longlong)iVar9 * 0x6e0] = iVar11;
        do {
          iVar11 = FUN_1400e35d0(iVar9,0xffffffff,iVar7,iVar3);
          if (iVar11 != 0) break;
          iVar3 = iVar3 + 1;
        } while (iVar3 < 7);
        (&DAT_151620cac)[lVar8 * 0xe0d] =
             (&DAT_151620cac)[lVar8 * 0xe0d] - (&DAT_19021f250)[uVar10 * 4];
        FUN_140051f50(param_1);
        (&DAT_19021f244)[uVar10 * 4] = 0;
      }
      uVar12 = (uint)local_280;
    }
  }
  iVar7 = (&DAT_151620dc4)[lVar8 * 0xe0d];
  if (iVar7 != 0x12) goto LAB_1400eedc1;
  if (uVar5 == 0) {
    FUN_1401189f0(param_1,1);
  }
  else if (uVar5 == 1) {
    FUN_1401189f0(param_1,10);
  }
  else if (uVar5 == 2) {
    FUN_1401189f0(param_1,100);
  }
  else if (uVar5 == 3) {
    FUN_1401189f0(param_1,1000);
  }
  else {
    if (uVar5 == 4) {
      uVar2 = 1;
    }
    else if (uVar5 == 5) {
      uVar2 = 10;
    }
    else if (uVar5 == 6) {
      uVar2 = 100;
    }
    else {
      if (uVar5 != 7) goto LAB_1400eedb2;
      uVar2 = 1000;
    }
    FUN_14011af80(param_1,uVar2);
  }
LAB_1400eedb2:
  FUN_140051f50(param_1);
  iVar7 = (&DAT_151620dc4)[lVar8 * 0xe0d];
LAB_1400eedc1:
  if ((((iVar7 == 0x13) && (uVar12 < 6)) &&
      ((lVar8 = (longlong)(int)uVar12, (&DAT_183ebfdc4)[lVar8 * 0x16f1] == param_1 &&
       (((local_280 = lVar8, iVar11 = FUN_14011b8f0(&DAT_18329e388 + lVar13 * 0x1bfe,uVar12,0),
         iVar7 = local_298, iVar11 != 0 && (uVar5 == 6)) &&
        ((int)(&DAT_183ec561c)[lVar8 * 0x16f1] < 0x80)))))) &&
     ((lVar13 = (longlong)local_298, local_298 != param_1 &&
      ((&DAT_151620ce4)[lVar13 * 0xe0d] == uVar12)))) {
    iVar11 = (&DAT_151620cfc)[lVar13 * 0xe0d];
    *(undefined4 *)
     (&DAT_183ec5620 + (lVar8 * 0x16f1 + (longlong)(int)(&DAT_183ec561c)[lVar8 * 0x16f1]) * 4) =
         (&DAT_151620c9c)[lVar13 * 0xe0d];
    (&DAT_183ec561c)[lVar8 * 0x16f1] = (&DAT_183ec561c)[lVar8 * 0x16f1] + 1;
    if (iVar11 != -1) {
      lVar8 = 0;
      do {
        uVar5 = *(uint *)((longlong)&DAT_1832a4dd8 + lVar8 + (longlong)iVar11 * 0x6ff8);
        if (0 < (int)uVar5) {
          uVar10 = (ulonglong)uVar5;
          puVar6 = (uint *)((longlong)&DAT_1832a4ddc +
                           (longlong)(int)(&DAT_151620cfc)[lVar13 * 0xe0d] * 0x6ff8 + lVar8);
          do {
            lVar4 = (longlong)(int)*puVar6;
            if (*puVar6 < 0x400) {
              iVar9 = (&DAT_182bbb194)[lVar4 * 0x6e0];
              if ((((*(int *)(&DAT_182a7e190 + (longlong)iVar9 * 0x13d0) != 0) ||
                   (0 < *(int *)(&DAT_182a7e1a4 + (longlong)iVar9 * 0x13d0))) ||
                  ((iVar9 - 0xdU < 2 || (iVar9 == 0x1b)))) &&
                 ((&DAT_182bbb19c)[lVar4 * 0x6e0] = 0, 0 < (int)(&DAT_182bbb1b4)[lVar4 * 0x6e0])) {
                (&DAT_182bbb19c)[(longlong)*(int *)(&DAT_182bbb1b8 + lVar4 * 0x1b80) * 0x6e0] = 0;
                FUN_1400ca9b0(*(undefined4 *)(&DAT_182bbb1b8 + lVar4 * 0x1b80));
              }
            }
            puVar6 = puVar6 + 1;
            uVar10 = uVar10 - 1;
          } while (uVar10 != 0);
        }
        lVar8 = lVar8 + 0x28;
      } while (lVar8 < 0x140);
      FUN_14007f590((&DAT_151620cfc)[lVar13 * 0xe0d]);
      lVar8 = local_280;
    }
    FUN_14011af80(iVar7,(&DAT_151620cec)[lVar13 * 0xe0d]);
    (&DAT_151620ce4)[lVar13 * 0xe0d] = 0x11;
    (&DAT_151620cf0)[lVar13 * 0xe0d] = 0;
    FUN_140051dc0(iVar7);
    FUN_140051f50(iVar7);
    FUN_140158ab0(local_248,"%s has been fired from %s",&DAT_151620c64 + lVar13 * 0xe0d,
                  (&PTR_s_Goldmen_Inc_1402b2890)[lVar8]);
    uVar5 = DAT_189c1dc64;
    uVar2 = DAT_183ebfd34;
    if (DAT_1ad04adc0 != 0) {
      lVar8 = -1;
      do {
        lVar4 = lVar8 + 1;
        lVar13 = lVar8 + 1;
        lVar8 = lVar4;
      } while (local_248[lVar13] != '\0');
      lVar8 = (longlong)(int)DAT_189c1dc64;
      iVar7 = (int)lVar4;
      if (0x3f < iVar7) {
        iVar7 = 0x3f;
      }
      lVar13 = lVar8 * 0x80;
      (&DAT_1873de460)[lVar8 * 0x20] = 2;
      (&DAT_1873de464)[lVar8 * 0x20] = uVar2;
      FUN_1401fc920(&DAT_1873de4a0 + lVar13,local_248,(longlong)iVar7);
      DAT_189c1dc64._0_2_ = (short)uVar5 + 1;
      (&DAT_1873de4a0)[iVar7 + lVar13] = 0;
      (&DAT_1873de480)[lVar8 * 0x20] = iVar7;
      (&DAT_1873de484)[lVar8 * 0x20] = 0;
      *(undefined4 *)(&DAT_1873de488 + lVar13) = 0xffffffff;
      *(undefined4 *)(&DAT_1873de48c + lVar13) = 0;
      DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
    }
  }
  return;
}



===== FUN_1400efd20 @ 1400efd20 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1400efd20(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  longlong lVar5;
  longlong lVar6;
  longlong lVar7;
  longlong lVar8;
  float fVar9;
  undefined1 auStack_98 [32];
  undefined4 local_78;
  float local_68;
  float local_64;
  float local_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined8 local_48;
  undefined8 uStack_40;
  undefined4 local_38;
  ulonglong local_30;
  
  local_30 = DAT_1403020a0 ^ (ulonglong)auStack_98;
  lVar7 = (longlong)param_1;
  lVar6 = lVar7 * 0x3834;
  iVar1 = (&DAT_151620cfc)[lVar7 * 0xe0d];
  if ((iVar1 != -1) && ((int)(&DAT_151620ccc)[lVar7 * 0xe0d] < 3)) {
    lVar8 = (longlong)param_2;
    if (*(int *)(&DAT_1760d2028 +
                ((longlong)*(int *)(&DAT_151620dc8 + lVar6) * 0x1241 + lVar8) * 0xc) <=
        (int)(&DAT_151620cac)[lVar7 * 0xe0d]) {
      lVar5 = (longlong)*(int *)(&DAT_151620dc8 + lVar6) * 0xdb0c;
      fVar9 = (float)-*(int *)(&DAT_1760d20f0 + lVar5) * DAT_140278688;
      local_68 = fVar9 * *(float *)(&DAT_1760c566c + lVar5) + *(float *)(&DAT_1760d20f4 + lVar5);
      local_60 = fVar9 * *(float *)(&DAT_1760c5674 + lVar5) + *(float *)(&DAT_1760d20fc + lVar5);
      local_64 = fVar9 * *(float *)(&DAT_1760c5670 + lVar5) + *(float *)(&DAT_1760d20f8 + lVar5);
      *(uint *)(&DAT_1760d20f0 + lVar5) = *(int *)(&DAT_1760d20f0 + lVar5) + 1U & 7;
      local_58 = *(undefined8 *)(&DAT_1760c5654 + lVar5);
      uStack_50 = *(undefined8 *)(&DAT_1760c565c + lVar5);
      local_48 = *(undefined8 *)(&DAT_1760c5664 + lVar5);
      uStack_40 = *(undefined8 *)(&DAT_1760c566c + lVar5);
      local_38 = *(undefined4 *)(&DAT_1760c5674 + lVar5);
      FUN_14007b2a0(&local_58,&DAT_1402f6188);
      lVar5 = (longlong)*(int *)(&DAT_151620dc8 + lVar6) * 0x1241 + lVar8;
      local_78 = (&DAT_1760d202c)[lVar5 * 3];
      iVar2 = FUN_14005bca0(*(undefined4 *)(&DAT_1760d2024 + lVar5 * 0xc),&local_68,0,&local_58);
      if (iVar2 != -1) {
        *(int *)(&DAT_15f2d9224 + (longlong)iVar2 * 0x5168) = param_1;
      }
      (&DAT_151620cac)[lVar7 * 0xe0d] =
           (&DAT_151620cac)[lVar7 * 0xe0d] -
           *(int *)(&DAT_1760d2028 +
                   ((longlong)*(int *)(&DAT_151620dc8 + lVar6) * 0x1241 + lVar8) * 0xc);
      iVar3 = FUN_140054130(0x1b,&local_68,0,&local_58);
      (&DAT_182bbb400)[(longlong)iVar3 * 0x6e0] = iVar2;
      iVar2 = 2;
      do {
        iVar4 = FUN_1400e35d0(iVar3,0xffffffff,iVar1,iVar2);
        if (iVar4 != 0) break;
        iVar2 = iVar2 + 1;
      } while (iVar2 < 7);
      (&DAT_151620ccc)[lVar7 * 0xe0d] = (&DAT_151620ccc)[lVar7 * 0xe0d] + 1;
      FUN_140051dc0(param_1);
      if (DAT_183ebfaac == 3) {
        FUN_140051f50(param_1);
      }
      lVar6 = (longlong)*(int *)(&DAT_151620dc8 + lVar6);
      iVar1 = (&DAT_1760d202c)[lVar6 * 0x36c3];
      if (0 < iVar1) {
        (&DAT_1760d202c)[lVar6 * 0x36c3] = iVar1 + -1;
        lVar7 = lVar6 * 0x1241 + (longlong)iVar1;
        lVar8 = lVar6 * 0x1241 + lVar8;
        *(undefined8 *)(&DAT_1760d2024 + lVar8 * 0xc) =
             *(undefined8 *)(&DAT_1760d2024 + lVar7 * 0xc);
        (&DAT_1760d202c)[lVar8 * 3] = (&DAT_1760d202c)[lVar7 * 3];
      }
    }
  }
  return;
}



===== FUN_14005d920 @ 14005d920 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_14005d920(void)

{
  float fVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  longlong lVar8;
  int *piVar9;
  float *pfVar10;
  int *piVar11;
  longlong lVar12;
  float *pfVar13;
  int iVar14;
  int iVar15;
  longlong lVar16;
  undefined4 *puVar17;
  ulonglong uVar18;
  ulonglong uVar19;
  undefined4 *puVar20;
  float fVar21;
  float fVar22;
  float fVar23;
  int *local_res10;
  float local_138;
  float local_134;
  float local_130;
  undefined4 local_128;
  undefined4 local_124;
  undefined4 local_120;
  float local_118;
  float local_114;
  float local_110;
  float local_10c;
  float local_108;
  float local_104;
  float local_100;
  float local_fc;
  float local_f8;
  
  _DAT_183f7c30c = _DAT_1402799b0;
  _DAT_183f7c314 = _UNK_1402799b8;
  DAT_183f7c34c = 0;
  _DAT_183f7c31c = _DAT_1402799b0;
  _DAT_183f7c324 = _UNK_1402799b8;
  _DAT_183f7c32c = _DAT_1402799b0;
  _DAT_183f7c334 = _UNK_1402799b8;
  _DAT_183f7c33c = _DAT_1402799b0;
  _DAT_183f7c344 = _UNK_1402799b8;
  iVar2 = FUN_14012ceb0(DAT_183f7c308,0,0x43,0,1,DAT_1402781bc);
  uVar6 = DAT_140279870;
  fVar1 = DAT_140278478;
  lVar8 = (longlong)iVar2;
  lVar16 = lVar8 * 0x5fc;
  local_100 = *(float *)((longlong)&DAT_15fd162a4 + lVar16);
  local_fc = *(float *)((longlong)&DAT_15fd162a4 + lVar16 + 4);
  local_118 = *(float *)((longlong)&DAT_15fd1628c + lVar16);
  local_10c = *(float *)((longlong)&DAT_15fd16294 + lVar16 + 4);
  local_114 = *(float *)((longlong)&DAT_15fd1628c + lVar16 + 4);
  local_108 = *(float *)((longlong)&DAT_15fd1629c + lVar16);
  local_f8 = (float)(&DAT_15fd162ac)[lVar8 * 0x17f];
  local_110 = *(float *)((longlong)&DAT_15fd16294 + lVar16);
  local_104 = *(float *)((longlong)&DAT_15fd1629c + lVar16 + 4);
  lVar16 = (longlong)(int)(&DAT_15fd16260)[lVar8 * 0x17f] * 0x185c0;
  fVar23 = (float)(*(uint *)(&DAT_192e9aec8 + lVar16) ^ DAT_140279870);
  fVar22 = (float)(*(uint *)(&DAT_192e9aecc + lVar16) ^ DAT_140279870);
  fVar21 = (float)(*(uint *)(&DAT_192e9aed0 + lVar16) ^ DAT_140279870);
  local_138 = ((float)(&DAT_15fd16270)[lVar8 * 0x17f] - local_100 * DAT_140278478) +
              local_118 * fVar23 + local_10c * fVar22 + local_100 * fVar21;
  local_134 = ((float)(&DAT_15fd16274)[lVar8 * 0x17f] - local_fc * DAT_140278478) +
              local_114 * fVar23 + local_108 * fVar22 + local_fc * fVar21;
  local_128 = (&DAT_15fd1627c)[lVar8 * 0x17f];
  local_120 = (&DAT_15fd16284)[lVar8 * 0x17f];
  local_130 = ((float)(&DAT_15fd16278)[lVar8 * 0x17f] - local_f8 * DAT_140278478) +
              local_110 * fVar23 + local_104 * fVar22 + local_f8 * fVar21;
  local_124 = (&DAT_15fd16280)[lVar8 * 0x17f];
  iVar3 = FUN_14005bca0((&DAT_15fd16260)[lVar8 * 0x17f],&local_138,&local_128,&local_118,
                        (&DAT_15fd16838)[lVar8 * 0x17f]);
  lVar16 = (longlong)iVar3;
  piVar11 = &DAT_151620cfc;
  iVar15 = 0;
  (&DAT_15fd16268)[lVar8 * 0x17f] = iVar3;
  iVar14 = 0;
  *(int *)(&DAT_15f2dc848 + lVar16 * 0x5168) = iVar2;
  piVar9 = &DAT_183f7c32c;
  local_res10 = &DAT_183f7c32c;
  do {
    if ((piVar11[-0x27] != 0) && (*piVar11 == -1)) {
      iVar2 = FUN_140053840(&DAT_15f2d922c + lVar16 * 0x145a,&DAT_15f2d9244 + lVar16 * 0x145a,iVar14
                           );
      lVar12 = (longlong)iVar2;
      *piVar11 = iVar2;
      *piVar9 = iVar14;
      FUN_140051dc0(iVar14);
      if (iVar15 < (int)(&DAT_192eb2998)[(longlong)(int)(&DAT_15fd16260)[lVar8 * 0x17f] * 0x6170]) {
        (&DAT_18329e330)[lVar12 * 0x1bfe] = iVar3;
        (&DAT_18329e334)[lVar12 * 0x1bfe] = iVar15;
      }
      if ((0 < iVar15) && (iVar2 != -1)) {
        puVar17 = &DAT_18329e55c + lVar12 * 0x1bfe;
        puVar20 = &DAT_18329e52c + lVar12 * 0x1bfe;
        uVar4 = FUN_140054130(9,puVar20,0,puVar17);
        FUN_1400e35d0(uVar4,0xffffffff,iVar2);
        uVar4 = FUN_140054130(10,puVar20,0,puVar17);
        FUN_1400e35d0(uVar4,0xffffffff,iVar2);
        iVar7 = 1;
        do {
          uVar4 = FUN_140054130(10,puVar20,0,puVar17);
          FUN_1400e35d0(uVar4,0xffffffff,iVar2,(iVar7 + -1 >> 1) + 3);
          iVar7 = iVar7 + 1;
          piVar9 = local_res10;
        } while (iVar7 < 8);
      }
      iVar15 = iVar15 + 1;
      piVar11[1] = 0x40000000;
      piVar9 = piVar9 + 1;
      piVar11[3] = -0x40800000;
      local_res10 = piVar9;
    }
    iVar14 = iVar14 + 1;
    piVar11 = piVar11 + 0xe0d;
  } while (iVar14 < 0x100);
  if (iVar15 == 1) {
    iVar2 = FUN_14005ccf0();
    lVar8 = (longlong)iVar2;
    (&DAT_151620ce4)[lVar8 * 0xe0d] = 0;
    FUN_140158ab0(&DAT_151620c64 + lVar8 * 0xe0d,"Gunner");
    local_138 = (float)(&DAT_15f2d922c)[lVar16 * 0x145a];
    local_134 = (float)(&DAT_15f2d9230)[lVar16 * 0x145a];
    local_130 = (float)(&DAT_15f2d9234)[lVar16 * 0x145a];
    (&DAT_151623978)[lVar8 * 0xe0d] = 1;
    _DAT_183f7c32c = CONCAT44(iVar2,DAT_183f7c32c);
    (&DAT_15162440c)[lVar8 * 0xe0d] = 1;
    *(undefined8 *)((longlong)&DAT_151624420 + lVar8 * 0x3834) = 1;
    iVar14 = FUN_140053840(&local_138,&DAT_15f2d9244 + lVar16 * 0x145a,iVar2);
    lVar16 = (longlong)iVar14;
    (&DAT_151620cfc)[lVar8 * 0xe0d] = iVar14;
    FUN_140051dc0(iVar2);
    (&DAT_18329e330)[lVar16 * 0x1bfe] = iVar3;
    (&DAT_18329e334)[lVar16 * 0x1bfe] = 1;
    if (iVar14 != -1) {
      puVar17 = &DAT_18329e55c + lVar16 * 0x1bfe;
      puVar20 = &DAT_18329e52c + lVar16 * 0x1bfe;
      uVar4 = FUN_140054130(9,puVar20,0,puVar17);
      FUN_1400e35d0(uVar4,0xffffffff,iVar14,0);
      uVar4 = FUN_140054130(10,puVar20,0,puVar17);
      FUN_1400e35d0(uVar4,0xffffffff,iVar14,1);
      iVar2 = 1;
      do {
        uVar4 = FUN_140054130(10,puVar20,0,puVar17);
        FUN_1400e35d0(uVar4,0xffffffff,iVar14,(iVar2 + -1 >> 1) + 3);
        iVar2 = iVar2 + 1;
      } while (iVar2 < 8);
    }
  }
  iVar2 = FUN_14012ceb0(7,1,0x43,0,1,DAT_1402783b8);
  lVar16 = (longlong)iVar2;
  DAT_16b2a2220 = iVar2;
  if (DAT_175ff3464 == 0) {
    iVar3 = 0;
  }
  else {
    iVar14 = 0;
    iVar3 = FUN_14023b1b0();
    lVar8 = (longlong)iVar3 % (longlong)DAT_175ff3464;
    do {
      iVar3 = (int)lVar8;
      if ((*(int *)(&DAT_175ff3498 + (longlong)iVar3 * 0x630) < 4) &&
         (*(int *)(&DAT_175ff349c + (longlong)iVar3 * 0x630) < 4)) break;
      iVar3 = FUN_14023b1b0();
      iVar14 = iVar14 + 1;
      lVar8 = (longlong)iVar3 % (longlong)DAT_175ff3464;
      iVar3 = (int)lVar8;
    } while (iVar14 < 0x400);
  }
  lVar8 = lVar16 * 0x5fc;
  uVar5 = FUN_14023b1b0();
  FUN_140008e40(iVar2,*(undefined4 *)(&DAT_15fd167f0 + lVar8),0,iVar3,uVar5 & 1);
  uVar4 = DAT_1402784b0;
  pfVar13 = (float *)((longlong)&DAT_15fd1628c + lVar8);
  (&DAT_15fd162dc)[lVar16 * 0x17f] = 0;
  pfVar10 = (float *)((longlong)&DAT_15fd16294 + lVar8 + 4);
  pfVar13[0] = 1.0;
  pfVar13[1] = 0.0;
  *(undefined8 *)((longlong)&DAT_15fd16294 + lVar8) = 0;
  *(undefined8 *)((longlong)&DAT_15fd1629c + lVar8) = 0x3f800000;
  *(undefined8 *)((longlong)&DAT_15fd162a4 + lVar8) = 0;
  (&DAT_15fd162ac)[lVar16 * 0x17f] = 0x3f800000;
  FUN_14007b2a0(pfVar13,pfVar10,uVar4);
  FUN_14007b2a0(pfVar13,pfVar10,(&DAT_15fd16288)[lVar16 * 0x17f]);
  local_100 = *(float *)((longlong)&DAT_15fd162a4 + lVar8);
  local_fc = *(float *)((longlong)&DAT_15fd162a4 + lVar8 + 4);
  local_118 = *pfVar13;
  local_10c = *pfVar10;
  local_114 = *(float *)((longlong)&DAT_15fd1628c + lVar8 + 4);
  local_108 = *(float *)((longlong)&DAT_15fd1629c + lVar8);
  local_f8 = (float)(&DAT_15fd162ac)[lVar16 * 0x17f];
  local_110 = *(float *)((longlong)&DAT_15fd16294 + lVar8);
  local_104 = *(float *)((longlong)&DAT_15fd1629c + lVar8 + 4);
  lVar8 = (longlong)(int)(&DAT_15fd16260)[lVar16 * 0x17f] * 0x185c0;
  fVar23 = (float)(*(uint *)(&DAT_192e9aec8 + lVar8) ^ uVar6);
  fVar22 = (float)(*(uint *)(&DAT_192e9aecc + lVar8) ^ uVar6);
  fVar21 = (float)(*(uint *)(&DAT_192e9aed0 + lVar8) ^ uVar6);
  local_138 = ((float)(&DAT_15fd16270)[lVar16 * 0x17f] - local_100 * fVar1) + local_118 * fVar23 +
              local_10c * fVar22 + local_100 * fVar21;
  local_134 = ((float)(&DAT_15fd16274)[lVar16 * 0x17f] - local_fc * fVar1) + local_114 * fVar23 +
              local_108 * fVar22 + local_fc * fVar21;
  local_128 = (&DAT_15fd1627c)[lVar16 * 0x17f];
  local_120 = (&DAT_15fd16284)[lVar16 * 0x17f];
  local_130 = ((float)(&DAT_15fd16278)[lVar16 * 0x17f] - local_f8 * fVar1) + local_110 * fVar23 +
              local_104 * fVar22 + local_f8 * fVar21;
  local_124 = (&DAT_15fd16280)[lVar16 * 0x17f];
  uVar6 = FUN_14005bca0((&DAT_15fd16260)[lVar16 * 0x17f],&local_138,&local_128,&local_118,
                        (&DAT_15fd16838)[lVar16 * 0x17f]);
  uVar18 = (ulonglong)(int)uVar6;
  (&DAT_15fd16268)[lVar16 * 0x17f] = uVar6;
  *(int *)(&DAT_15f2dc848 + uVar18 * 0x5168) = iVar2;
  (&DAT_15f2dcaa0)[uVar18 * 0x145a] = 0x439fc000;
  iVar2 = FUN_14005ccf0();
  lVar16 = (longlong)iVar2;
  lVar8 = lVar16 * 0x3834;
  (&DAT_151620ce4)[lVar16 * 0xe0d] = 7;
  FUN_140158ab0(&DAT_151620c64 + lVar16 * 0xe0d,&DAT_140270199);
  local_138 = (float)(&DAT_15f2d922c)[uVar18 * 0x145a];
  local_134 = (float)(&DAT_15f2d9230)[uVar18 * 0x145a];
  local_130 = (float)(&DAT_15f2d9234)[uVar18 * 0x145a];
  (&DAT_151623978)[lVar16 * 0xe0d] = 1;
  _DAT_183f7c30c = CONCAT44(DAT_183f7c310,iVar2);
  (&DAT_15162440c)[lVar16 * 0xe0d] = 1;
  *(undefined4 *)((longlong)&DAT_151624420 + lVar8) = 2;
  *(undefined4 *)((longlong)&DAT_151624420 + lVar8 + 4) = 1;
  *(undefined4 *)(&DAT_151623984 + lVar8) = 1;
  *(undefined8 *)((longlong)&DAT_151623994 + lVar8) = 0;
  iVar3 = FUN_140053840(&local_138,&DAT_15f2d9244 + uVar18 * 0x145a,iVar2);
  (&DAT_151620cfc)[lVar16 * 0xe0d] = iVar3;
  FUN_140051dc0(iVar2);
  (&DAT_18329e330)[(longlong)iVar3 * 0x1bfe] = uVar6;
  (&DAT_18329e334)[(longlong)iVar3 * 0x1bfe] = 0;
  iVar2 = 1;
  if (1 < DAT_183f7c300) {
    piVar9 = &DAT_183f7c310;
    uVar19 = uVar18;
    do {
      iVar3 = FUN_14005ccf0();
      lVar8 = (longlong)iVar3;
      (&DAT_151620ce4)[lVar8 * 0xe0d] = 7;
      FUN_140158ab0(&DAT_151620c64 + lVar8 * 0xe0d,&DAT_140270199);
      local_138 = (float)(&DAT_15f2d922c)[uVar18 * 0x145a];
      local_134 = (float)(&DAT_15f2d9230)[uVar18 * 0x145a];
      local_130 = (float)(&DAT_15f2d9234)[uVar18 * 0x145a];
      (&DAT_151623978)[lVar8 * 0xe0d] = 1;
      *piVar9 = iVar3;
      (&DAT_15162440c)[lVar8 * 0xe0d] = 1;
      *(undefined4 *)((longlong)&DAT_151624420 + lVar8 * 0x3834) = 2;
      *(undefined4 *)((longlong)&DAT_151624420 + lVar8 * 0x3834 + 4) = 1;
      iVar14 = FUN_140053840(&local_138,&DAT_15f2d9244 + uVar18 * 0x145a,iVar3);
      lVar16 = (longlong)iVar14;
      (&DAT_151620cfc)[lVar8 * 0xe0d] = iVar14;
      FUN_140051dc0(iVar3);
      (&DAT_18329e330)[lVar16 * 0x1bfe] = (int)uVar19;
      (&DAT_18329e334)[lVar16 * 0x1bfe] = iVar2;
      if (iVar14 != -1) {
        puVar17 = &DAT_18329e55c + lVar16 * 0x1bfe;
        puVar20 = &DAT_18329e52c + lVar16 * 0x1bfe;
        uVar4 = FUN_140054130(7,puVar20,0,puVar17);
        FUN_1400e35d0(uVar4,0xffffffff,iVar14);
        uVar4 = FUN_140054130(8,puVar20,0,puVar17);
        FUN_1400e35d0(uVar4,0xffffffff,iVar14);
        iVar3 = 1;
        do {
          uVar4 = FUN_140054130(8,puVar20,0,puVar17);
          FUN_1400e35d0(uVar4,0xffffffff,iVar14,(iVar3 + -1 >> 1) + 3);
          iVar3 = iVar3 + 1;
        } while (iVar3 < 4);
        uVar19 = (ulonglong)uVar6;
      }
      iVar2 = iVar2 + 1;
      piVar9 = piVar9 + 1;
    } while (iVar2 < DAT_183f7c300);
  }
  FUN_14012e960(0x80);
  return;
}



===== FUN_140059920 @ 140059920 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

ulonglong FUN_140059920(undefined8 param_1,int param_2,undefined4 *param_3)

{
  longlong lVar1;
  int iVar2;
  float fVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  int iVar6;
  ulonglong uVar7;
  int *piVar8;
  int iVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  longlong lVar12;
  uint uVar13;
  int iVar14;
  ulonglong uVar16;
  float fVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  float fVar22;
  float fVar23;
  float fVar24;
  undefined1 auStack_168 [32];
  float local_148;
  float local_144;
  float local_140;
  int local_138;
  longlong local_130;
  undefined4 *local_128;
  float local_120;
  float fStack_11c;
  float fStack_118;
  undefined4 uStack_114;
  float local_110;
  float fStack_10c;
  float fStack_108;
  undefined4 uStack_104;
  undefined4 local_100;
  int aiStack_f8 [8];
  ulonglong local_d8;
  ulonglong uVar15;
  
  uVar7 = DAT_1403020a0 ^ (ulonglong)auStack_168;
  if (2 < param_2) {
    local_138 = DAT_16b2a2ec0 + 0x65130;
    if (0x3b0d30 < DAT_16b2a2ec0 + 0x65130) {
      local_138 = 0x3b0d30;
    }
    uVar16 = 0;
    iVar2 = DAT_1b4657c84 + 0x13;
    uVar13 = DAT_1b4657c84 + 0x14;
    uVar10 = (ulonglong)(DAT_1b4657c84 + 1);
    if (0x18 < (int)uVar13) {
      uVar10 = uVar16;
    }
    DAT_1b4657c84 = (int)uVar10;
    uVar10 = (ulonglong)uVar13;
    uVar11 = uVar16;
    uVar15 = uVar16;
    local_128 = param_3;
    local_d8 = uVar7;
    do {
      uVar7 = uVar10;
      if ((uint)uVar15 < 2) {
        iVar6 = 100;
      }
      else {
        iVar6 = FUN_14023b1b0();
        uVar7 = (longlong)iVar6 * 0x66666667 & 0xffffffff;
        iVar6 = (iVar6 % 5 + 4) * 0xfa;
        if (1 < uVar11) {
          iVar14 = FUN_14023b1b0();
          uVar13 = (iVar14 % 5) * 0xfa;
          uVar7 = (ulonglong)uVar13;
          iVar6 = iVar6 + uVar13;
        }
        if (iVar2 == 0x17) {
          iVar6 = iVar6 * 4;
        }
        iVar6 = iVar6 * 2;
      }
      fVar3 = DAT_1402783a0;
      aiStack_f8[uVar11] = iVar6;
      uVar13 = (uint)uVar15 + 1;
      uVar15 = (ulonglong)uVar13;
      uVar11 = uVar11 + 1;
      uVar10 = uVar7;
    } while ((int)uVar13 < param_2);
    iVar6 = DAT_1b4657c80;
    if (param_2 != 0) {
      uVar7 = 0;
      fVar21 = DAT_140278338;
      local_130 = (longlong)param_2;
      do {
        lVar12 = (longlong)
                 *(int *)((longlong)(&DAT_1b4657d8c + uVar7) + (longlong)(param_3 + -0x6d195f63));
        local_120 = _DAT_140278d30;
        fStack_11c = _UNK_140278d34;
        fStack_118 = _UNK_140278d38;
        uStack_114 = _UNK_140278d3c;
        local_110 = _DAT_140278d30;
        fStack_10c = _UNK_140278d34;
        fStack_108 = _UNK_140278d38;
        uStack_104 = _UNK_140278d3c;
        local_100 = 0x3f800000;
        fVar19 = (float)(&DAT_183ebfd94)[lVar12 * 0x16f1];
        fVar20 = (float)(&DAT_183ebfd98)[lVar12 * 0x16f1];
        fVar22 = (float)(&DAT_183ebfd9c)[lVar12 * 0x16f1];
        FUN_14007b2a0(&local_120,&uStack_114,(&DAT_183ebfd90)[lVar12 * 0x16f1]);
        FUN_14007b2a0(&local_120,&uStack_114,DAT_140278654);
        fVar24 = fStack_118;
        fVar23 = fStack_11c;
        fVar18 = local_120;
        fVar17 = DAT_140278338;
        fVar19 = local_120 * fVar21 + fVar19;
        fVar20 = fStack_11c * DAT_140278338 + fVar20;
        fVar22 = fStack_118 * DAT_140278338 + fVar22;
        local_148 = fVar19;
        local_144 = fVar20;
        local_140 = fVar22;
        if (uVar7 < 2) {
          uVar5 = FUN_140054130(iVar2,&local_148,0,&local_120);
          (&DAT_1b4657d8c)[uVar7] = uVar5;
          (&DAT_183ebfdac)[lVar12 * 0x16f1] = (&DAT_183ebfdac)[lVar12 * 0x16f1] - aiStack_f8[uVar7];
          fVar21 = DAT_140278338;
          fVar18 = local_120 * fVar17 + fVar19 + local_120 * fVar3;
          fVar20 = fStack_11c * fVar17 + fVar20 + fStack_11c * fVar3;
          fVar19 = fStack_118 * DAT_140278338 + fVar22 + fStack_118 * fVar3;
          local_148 = fVar18;
          local_144 = fVar20;
          local_140 = fVar19;
          FUN_140054130(0xf,&local_148,0,&local_120);
          local_148 = local_120 * fVar3 + fVar18;
          local_144 = fStack_11c * fVar3 + fVar20;
          local_140 = fStack_118 * fVar3 + fVar19;
        }
        else {
          fVar21 = DAT_140278338;
          if ((uint)uVar16 < 3) {
            iVar6 = FUN_14023b1b0();
            iVar14 = iVar6 % 5 + 4;
            if (iVar2 == 0x17) {
              iVar14 = FUN_14023b1b0();
              iVar14 = iVar6 % 5 + 6 +
                       iVar14 + (iVar14 / 3 + (iVar14 >> 0x1f) +
                                (int)(((longlong)iVar14 / 3 + ((longlong)iVar14 >> 0x3f) &
                                      0xffffffffU) >> 0x1f)) * -3;
            }
            uVar13 = 0;
            fVar21 = DAT_140278338;
            if (0 < iVar14) {
              do {
                if ((uVar13 & 3) == 0) {
                  fVar19 = fVar19 + fVar18 * fVar3;
                  fVar20 = fVar20 + fVar23 * fVar3;
                  fVar22 = fVar22 + fVar24 * fVar3;
                  local_148 = fVar19;
                  local_144 = fVar20;
                  local_140 = fVar22;
                  FUN_140054130(0xf,&local_148,0,&local_120);
                  fVar19 = local_120 * fVar3 + fVar19;
                  fVar20 = fStack_11c * fVar3 + fVar20;
                  fVar22 = fStack_118 * fVar3 + fVar22;
                  fVar17 = DAT_140278338;
                  local_148 = fVar19;
                  local_144 = fVar20;
                  local_140 = fVar22;
                }
                FUN_140054130(0x11,&local_148,0,&local_120);
                uVar13 = uVar13 + 1;
                (&DAT_183ebfdac)[lVar12 * 0x16f1] = (&DAT_183ebfdac)[lVar12 * 0x16f1] + -0xfa;
                fVar19 = fVar19 + local_120 * fVar17;
                fVar20 = fVar20 + fStack_11c * fVar17;
                fVar22 = fVar22 + fStack_118 * fVar17;
                fVar21 = DAT_140278338;
                fVar18 = local_120;
                fVar23 = fStack_11c;
                fVar24 = fStack_118;
                local_148 = fVar19;
                local_144 = fVar20;
                local_140 = fVar22;
              } while ((int)uVar13 < iVar14);
            }
          }
        }
        puVar4 = local_128;
        uVar5 = DAT_1b4657d90;
        iVar14 = DAT_1b4657d8c;
        iVar6 = DAT_1b4657c80;
        uVar10 = 0;
        uVar16 = (ulonglong)((uint)uVar16 + 1);
        uVar7 = uVar7 + 1;
      } while ((longlong)uVar7 < local_130);
      local_148 = (float)(&DAT_182bbb194)[(longlong)DAT_1b4657d8c * 0x6e0];
      uVar16 = uVar10;
      do {
        uVar11 = 0;
        iVar2 = puVar4[uVar10];
        lVar12 = (longlong)iVar2;
        piVar8 = &DAT_183ec0358 + lVar12 * 0x16f1;
        uVar7 = uVar11;
        do {
          if (piVar8[-0x117] == 0) break;
          iVar9 = (int)uVar7;
          if (*piVar8 == 0) {
            uVar11 = uVar11 + 1;
            uVar7 = (ulonglong)(iVar9 + 1);
            break;
          }
          if (piVar8[0x117] == 0) {
            uVar11 = uVar11 + 2;
            uVar7 = (ulonglong)(iVar9 + 2);
            break;
          }
          if (piVar8[0x22e] == 0) {
            uVar11 = uVar11 + 3;
            uVar7 = (ulonglong)(iVar9 + 3);
            break;
          }
          uVar11 = uVar11 + 4;
          piVar8 = piVar8 + 0x45c;
          uVar7 = (ulonglong)(iVar9 + 4);
        } while ((longlong)uVar11 < 0x10);
        lVar1 = lVar12 * 0x5bc4 + uVar11 * 0x45c;
        (&DAT_183ebfefc)[uVar11 * 0x117 + lVar12 * 0x16f1] = 1;
        (&DAT_183ebff04)[uVar11 * 0x117 + lVar12 * 0x16f1] = iVar6;
        uVar13 = (uint)uVar16;
        if (uVar10 < 2) {
          (&DAT_183ebff08)[uVar11 * 0x117 + lVar12 * 0x16f1] = 7;
        }
        else if (uVar13 < 3) {
          (&DAT_183ebff08)[uVar11 * 0x117 + lVar12 * 0x16f1] = 8;
        }
        *(float *)(&DAT_183ebff38 + lVar1) = local_148;
        (&DAT_183ebff3c)[uVar11 * 0x117 + lVar12 * 0x16f1] = aiStack_f8[uVar10];
        (&DAT_183ebff40)[uVar11 * 0x117 + lVar12 * 0x16f1] = local_138;
        (&DAT_183ebff0c)[uVar11 * 0x117 + lVar12 * 0x16f1] = iVar14;
        (&DAT_183ebff10)[uVar11 * 0x117 + lVar12 * 0x16f1] = uVar5;
        if (uVar10 < 2) {
          *(undefined4 *)(&DAT_183ebff18 + lVar1) = puVar4[2];
          (&DAT_183ebff48)[uVar11 * 0x117 + lVar12 * 0x16f1] = 0;
        }
        else {
          *(undefined4 *)(&DAT_183ebff18 + lVar1) = *puVar4;
          *(undefined4 *)(&DAT_183ebff1c + lVar1) = puVar4[1];
          (&DAT_183ebff48)[uVar11 * 0x117 + lVar12 * 0x16f1] = 0;
          if (uVar13 < 3) {
            (&DAT_183ebff48)[uVar11 * 0x117 + lVar12 * 0x16f1] = -(&DAT_183ebfdac)[lVar12 * 0x16f1];
          }
        }
        uVar7 = FUN_1400519f0(iVar2,uVar7);
        uVar16 = (ulonglong)(uVar13 + 1);
        uVar10 = uVar10 + 1;
      } while ((longlong)uVar10 < local_130);
    }
    DAT_1b4657c80 = iVar6 + 1;
  }
  return uVar7;
}



===== FUN_14005a0e0 @ 14005a0e0 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

ulonglong FUN_14005a0e0(undefined8 param_1,int param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  float fVar2;
  int iVar3;
  byte bVar4;
  int iVar5;
  ulonglong uVar6;
  longlong lVar7;
  longlong lVar8;
  int *piVar9;
  int iVar10;
  int iVar11;
  ulonglong uVar12;
  uint uVar13;
  int iVar14;
  longlong lVar16;
  uint uVar17;
  longlong lVar18;
  bool bVar19;
  float fVar20;
  float fVar21;
  float fVar22;
  float fVar23;
  float fVar24;
  float fVar25;
  float fVar26;
  float fVar27;
  undefined1 auStack_168 [32];
  undefined8 local_148;
  float local_140;
  uint local_138;
  int local_134;
  undefined4 *local_130;
  longlong local_128;
  float local_120;
  float fStack_11c;
  float fStack_118;
  undefined4 uStack_114;
  float local_110;
  float fStack_10c;
  float fStack_108;
  undefined4 uStack_104;
  undefined4 local_100;
  uint local_f8 [8];
  ulonglong local_d8;
  ulonglong uVar15;
  
  uVar6 = DAT_1403020a0 ^ (ulonglong)auStack_168;
  if (1 < param_2) {
    local_130 = param_3;
    local_d8 = uVar6;
    bVar4 = FUN_14023b1b0();
    iVar10 = 2 - (uint)((bVar4 & 3) != 0);
    iVar5 = param_2 + -1;
    if (iVar10 <= param_2 + -1) {
      iVar5 = iVar10;
    }
    local_134 = DAT_16b2a2ec0 + 0x65130;
    if (0x3b0d30 < DAT_16b2a2ec0 + 0x65130) {
      local_134 = 0x3b0d30;
    }
    uVar12 = 0;
    iVar10 = DAT_1b4657c84 + 0x13;
    uVar6 = (ulonglong)(DAT_1b4657c84 + 1);
    if (0x18 < DAT_1b4657c84 + 0x14) {
      uVar6 = uVar12;
    }
    DAT_1b4657c84 = (int)uVar6;
    uVar6 = FUN_14023b1b0();
    if ((uVar6 & 3) == 0) {
      uVar17 = 0xffffffff;
    }
    else {
      uVar6 = FUN_14023b1b0();
      uVar17 = (uint)uVar6 & 0x80000007;
      if ((int)uVar17 < 0) {
        uVar17 = (uVar17 - 1 | 0xfffffff8) + 1;
      }
    }
    lVar16 = (longlong)iVar5;
    uVar15 = uVar12;
    local_138 = uVar17;
    do {
      if ((int)uVar15 == 0) {
        local_f8[uVar12] = 100;
      }
      else {
        iVar5 = FUN_14023b1b0();
        uVar13 = (iVar5 % 5 + 4) * 0xfa;
        local_f8[uVar12] = uVar13;
        if (lVar16 < (longlong)uVar12) {
          iVar5 = FUN_14023b1b0();
          uVar13 = (iVar5 % 5) * 0xfa + uVar13;
          local_f8[uVar12] = uVar13;
        }
        uVar6 = (longlong)iVar5 * 0x66666667 & 0xffffffff;
        if (iVar10 == 0x17) {
          uVar6 = (ulonglong)(uVar13 * 4);
          local_f8[uVar12] = uVar13 * 4;
        }
      }
      fVar2 = DAT_1402783a0;
      uVar13 = (int)uVar15 + 1;
      uVar15 = (ulonglong)uVar13;
      uVar12 = uVar12 + 1;
    } while ((int)uVar13 < param_2);
    iVar5 = DAT_1b4657c80;
    if (param_2 != 0) {
      lVar18 = 0;
      lVar7 = (longlong)(int)uVar17;
      fVar24 = DAT_140278338;
      local_128 = (longlong)param_2;
      do {
        local_100 = 0x3f800000;
        local_120 = _DAT_140278d30;
        fStack_11c = _UNK_140278d34;
        fStack_118 = _UNK_140278d38;
        uStack_114 = _UNK_140278d3c;
        lVar8 = (longlong)(int)local_130[lVar18];
        local_110 = _DAT_140278d30;
        fStack_10c = _UNK_140278d34;
        fStack_108 = _UNK_140278d38;
        uStack_104 = _UNK_140278d3c;
        fVar22 = (float)(&DAT_183ebfd94)[lVar8 * 0x16f1];
        fVar23 = (float)(&DAT_183ebfd98)[lVar8 * 0x16f1];
        fVar25 = (float)(&DAT_183ebfd9c)[lVar8 * 0x16f1];
        FUN_14007b2a0(&local_120,&uStack_114,(&DAT_183ebfd90)[lVar8 * 0x16f1]);
        FUN_14007b2a0(&local_120,&uStack_114,DAT_140278654);
        fVar27 = fStack_118;
        fVar26 = fStack_11c;
        fVar21 = local_120;
        fVar20 = DAT_140278338;
        fVar22 = local_120 * fVar24 + fVar22;
        fVar23 = fStack_11c * DAT_140278338 + fVar23;
        fVar25 = fStack_118 * DAT_140278338 + fVar25;
        local_148 = (undefined4 *)CONCAT44(fVar23,fVar22);
        local_140 = fVar25;
        if (lVar18 == 0) {
          if (lVar7 == -1) {
            DAT_1b4657d8c = FUN_140054130(iVar10,&local_148,0,&local_120);
            (&DAT_183ebfdac)[lVar8 * 0x16f1] = (&DAT_183ebfdac)[lVar8 * 0x16f1] - local_f8[0];
            fVar24 = DAT_140278338;
            fVar21 = local_120 * fVar20 + fVar22 + local_120 * fVar2;
            fVar23 = fStack_11c * fVar20 + fVar23 + fStack_11c * fVar2;
            local_148 = (undefined4 *)CONCAT44(fVar23,fVar21);
            fVar22 = fStack_118 * DAT_140278338 + fVar25 + fStack_118 * fVar2;
            local_140 = fVar22;
            FUN_140054130(0xf,&local_148,0,&local_120);
            local_148 = (undefined4 *)
                        CONCAT44(fStack_11c * fVar2 + fVar23,local_120 * fVar2 + fVar21);
            local_140 = fStack_118 * fVar2 + fVar22;
          }
          else {
            local_148 = *(undefined4 **)(&DAT_1b4657dbc + lVar7 * 0x13);
            local_140 = (float)(&DAT_1b4657dc4)[lVar7 * 0x13];
            DAT_1b4657d8c = FUN_140054130(iVar10,&local_148,0,&local_120);
            (&DAT_183ebfdac)[lVar8 * 0x16f1] = (&DAT_183ebfdac)[lVar8 * 0x16f1] - local_f8[0];
            uVar17 = FUN_140054130(0xf,&local_148,0,&local_120);
            iVar5 = DAT_1b4657d8c;
            lVar8 = (longlong)(int)uVar17;
            (&DAT_182bbb194)[lVar8 * 0x6e0] = 0x10;
            FUN_1400e35d0(uVar17,iVar5,0xffffffff,0);
            bVar19 = DAT_1ad04adc0 != 0;
            (&DAT_182bbb194)[lVar8 * 0x6e0] = 0xf;
            fVar24 = DAT_140278338;
            if ((bVar19) && (fVar24 = fVar20, uVar17 < 0x400)) {
              (&DAT_18329b1e0)[lVar8] = (&DAT_18329b1e0)[lVar8] + 1;
            }
          }
        }
        else {
          fVar24 = fVar20;
          if (lVar18 <= lVar16) {
            iVar5 = FUN_14023b1b0();
            iVar5 = iVar5 + (iVar5 / 3 + (iVar5 >> 0x1f) +
                            (int)(((longlong)iVar5 / 3 + ((longlong)iVar5 >> 0x3f) & 0xffffffffU) >>
                                 0x1f)) * -3;
            iVar14 = iVar5 + 2;
            if (iVar10 == 0x17) {
              iVar14 = FUN_14023b1b0();
              iVar14 = iVar5 + 4 +
                       iVar14 + (iVar14 / 3 + (iVar14 >> 0x1f) +
                                (int)(((longlong)iVar14 / 3 + ((longlong)iVar14 >> 0x3f) &
                                      0xffffffffU) >> 0x1f)) * -3;
            }
            uVar17 = 0;
            fVar24 = DAT_140278338;
            if (0 < iVar14) {
              do {
                if ((uVar17 & 3) == 0) {
                  fVar22 = fVar22 + fVar21 * fVar2;
                  fVar23 = fVar23 + fVar26 * fVar2;
                  fVar25 = fVar25 + fVar27 * fVar2;
                  local_148 = (undefined4 *)CONCAT44(fVar23,fVar22);
                  local_140 = fVar25;
                  FUN_140054130(0xf,&local_148,0,&local_120);
                  fVar22 = local_120 * fVar2 + fVar22;
                  fVar23 = fStack_11c * fVar2 + fVar23;
                  fVar25 = fStack_118 * fVar2 + fVar25;
                  local_148 = (undefined4 *)CONCAT44(fVar23,fVar22);
                  fVar20 = DAT_140278338;
                  local_140 = fVar25;
                }
                FUN_140054130(0x11,&local_148,0,&local_120);
                uVar17 = uVar17 + 1;
                (&DAT_183ebfdac)[lVar8 * 0x16f1] = (&DAT_183ebfdac)[lVar8 * 0x16f1] + -0xfa;
                fVar22 = fVar22 + local_120 * fVar20;
                fVar23 = fVar23 + fStack_11c * fVar20;
                local_148 = (undefined4 *)CONCAT44(fVar23,fVar22);
                fVar25 = fVar25 + fStack_118 * fVar20;
                fVar24 = DAT_140278338;
                fVar21 = local_120;
                fVar26 = fStack_11c;
                fVar27 = fStack_118;
                local_140 = fVar25;
              } while ((int)uVar17 < iVar14);
            }
          }
        }
        iVar3 = local_134;
        uVar17 = local_138;
        iVar14 = DAT_1b4657d8c;
        iVar5 = DAT_1b4657c80;
        lVar8 = 0;
        lVar18 = lVar18 + 1;
      } while (lVar18 < local_128);
      local_148 = &DAT_183ec0358;
      uVar1 = (&DAT_182bbb194)[(longlong)DAT_1b4657d8c * 0x6e0];
      do {
        uVar12 = 0;
        iVar10 = local_130[lVar8];
        lVar7 = (longlong)iVar10;
        piVar9 = local_148 + lVar7 * 0x16f1;
        uVar6 = uVar12;
        do {
          if (piVar9[-0x117] == 0) break;
          iVar11 = (int)uVar6;
          if (*piVar9 == 0) {
            uVar12 = uVar12 + 1;
            uVar6 = (ulonglong)(iVar11 + 1);
            break;
          }
          if (piVar9[0x117] == 0) {
            uVar12 = uVar12 + 2;
            uVar6 = (ulonglong)(iVar11 + 2);
            break;
          }
          if (piVar9[0x22e] == 0) {
            uVar12 = uVar12 + 3;
            uVar6 = (ulonglong)(iVar11 + 3);
            break;
          }
          uVar12 = uVar12 + 4;
          piVar9 = piVar9 + 0x45c;
          uVar6 = (ulonglong)(iVar11 + 4);
        } while ((longlong)uVar12 < 0x10);
        lVar18 = uVar12 * 0x45c + lVar7 * 0x5bc4;
        (&DAT_183ebfefc)[lVar7 * 0x16f1 + uVar12 * 0x117] = 1;
        (&DAT_183ebff04)[lVar7 * 0x16f1 + uVar12 * 0x117] = iVar5;
        if (lVar8 == 0) {
          (&DAT_183ebff08)[lVar7 * 0x16f1 + uVar12 * 0x117] = 2;
        }
        else {
          (&DAT_183ebff08)[lVar7 * 0x16f1 + uVar12 * 0x117] = (lVar16 < lVar8) + 3;
        }
        (&DAT_183ebff3c)[lVar7 * 0x16f1 + uVar12 * 0x117] = local_f8[lVar8];
        (&DAT_183ebff0c)[lVar7 * 0x16f1 + uVar12 * 0x117] = iVar14;
        *(undefined4 *)(&DAT_183ebff38 + lVar18) = uVar1;
        (&DAT_183ebff40)[lVar7 * 0x16f1 + uVar12 * 0x117] = iVar3;
        *(undefined4 *)(&DAT_183ebff18 + lVar18) = *local_130;
        (&DAT_183ebff48)[lVar7 * 0x16f1 + uVar12 * 0x117] = 0;
        *(undefined4 *)(&DAT_183ebff44 + lVar18) = 0xffffffff;
        if (lVar8 == 0) {
          *(uint *)(&DAT_183ebff44 + lVar18) = uVar17;
        }
        else if (lVar8 <= lVar16) {
          (&DAT_183ebff48)[lVar7 * 0x16f1 + uVar12 * 0x117] = -(&DAT_183ebfdac)[lVar7 * 0x16f1];
        }
        uVar6 = FUN_1400519f0(iVar10,uVar6);
        lVar8 = lVar8 + 1;
      } while (lVar8 < local_128);
    }
    DAT_1b4657c80 = iVar5 + 1;
  }
  return uVar6;
}



===== FUN_140117020 @ 140117020 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140117020(int param_1)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  longlong lVar5;
  undefined4 *puVar6;
  int *piVar7;
  int iVar8;
  int iVar9;
  ulonglong uVar10;
  int *piVar11;
  int *piVar12;
  longlong lVar13;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined8 local_48;
  undefined8 uStack_40;
  undefined4 local_38;
  
  lVar5 = (longlong)param_1;
  iVar1 = (&DAT_151620cfc)[lVar5 * 0xe0d];
  lVar13 = (longlong)iVar1;
  uVar2 = (&DAT_151620ce4)[lVar5 * 0xe0d];
  if (iVar1 != -1) {
    iVar8 = 0;
    local_68 = (&DAT_18329e52c)[lVar13 * 0x1bfe];
    piVar11 = &DAT_151622454 + lVar5 * 0xe0d;
    local_64 = (&DAT_18329e530)[lVar13 * 0x1bfe];
    local_60 = (&DAT_18329e534)[lVar13 * 0x1bfe];
    local_38 = DAT_1402783f4;
    local_58 = _DAT_140278d30;
    uStack_50 = _UNK_140278d38;
    local_48 = _DAT_140278d30;
    uStack_40 = _UNK_140278d38;
    do {
      iVar9 = 0;
      if (0 < *piVar11) {
        piVar12 = piVar11 + 2;
        piVar7 = piVar11 + 2;
        do {
          iVar3 = piVar7[-1];
          if (iVar3 < 0xf) {
            iVar3 = FUN_140054130(iVar3,&local_68,0,&local_58);
            if (*(int *)(&DAT_182a7e190 + (longlong)piVar7[-1] * 0x13d0) == 0) {
              (&DAT_182bbb2c4)[(longlong)iVar3 * 0x6e0] = piVar7[1];
            }
            else if (0 < *piVar7) {
              iVar4 = FUN_140054130(piVar7[-1] + 1,&local_68,0,&local_58);
              (&DAT_182bbb2c4)[(longlong)iVar4 * 0x6e0] = piVar7[1];
              FUN_1400e35d0(iVar3,iVar4,0xffffffff);
            }
            FUN_1400e35d0(iVar3,0xffffffff,iVar1,iVar8);
          }
          else if (iVar3 == 0x1b) {
            if (DAT_183ebfaac == 4) {
              iVar3 = FUN_140054130(0x1b,&local_68,0,&local_58);
              FUN_1400e35d0(iVar3,0xffffffff,iVar1,iVar8);
              if (0 < (int)DAT_16b2a2ee0) {
                iVar4 = *piVar12;
                puVar6 = &DAT_16b2a2eec;
                uVar10 = (ulonglong)DAT_16b2a2ee0;
                do {
                  if (puVar6[1] == iVar4) {
                    (&DAT_182bbb400)[(longlong)iVar3 * 0x6e0] = *puVar6;
                  }
                  puVar6 = puVar6 + 0x10;
                  uVar10 = uVar10 - 1;
                } while (uVar10 != 0);
              }
            }
            else if ((uVar2 < 3) && (iVar3 = FUN_1400f00d0(*piVar7,uVar2), iVar3 != -1)) {
              iVar4 = FUN_140054130(0x1b,&local_68,0,&local_58);
              (&DAT_182bbb400)[(longlong)iVar4 * 0x6e0] = iVar3;
              FUN_1400e35d0(iVar4,0xffffffff,iVar1,iVar8);
            }
          }
          else if (iVar3 == 0x12) {
            iVar3 = FUN_140054130(0x12,&local_68,0,&local_58);
            *(int *)(&DAT_182bbb424 + (longlong)iVar3 * 0x1b80) = *piVar7;
            *(int *)(&DAT_182bbb428 + (longlong)iVar3 * 0x1b80) = piVar7[1];
            FUN_1400e35d0(iVar3,0xffffffff,iVar1,iVar8);
          }
          iVar9 = iVar9 + 1;
          piVar12 = piVar12 + 3;
          piVar7 = piVar7 + 3;
        } while (iVar9 < *piVar11);
      }
      iVar8 = iVar8 + 1;
      piVar11 = piVar11 + 0x19;
    } while (iVar8 < 7);
  }
  return;
}



===== FUN_14012cd60 @ 14012cd60 root=false =====

void FUN_14012cd60(int param_1,int param_2,int param_3)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  if (param_1 != -1) {
    puVar3 = &DAT_18329e52c + (longlong)param_1 * 0x1bfe;
    puVar4 = &DAT_18329e55c + (longlong)param_1 * 0x1bfe;
    if (param_2 == 0xe) {
      uVar1 = FUN_140054130(0xe,puVar3,0,puVar4);
      FUN_1400e35d0(uVar1,0xffffffff,param_1);
      uVar1 = FUN_140054130(0xe,puVar3,0,puVar4);
      FUN_1400e35d0(uVar1,0xffffffff,param_1);
    }
    else {
      uVar1 = FUN_140054130(param_2,puVar3,0,puVar4);
      FUN_1400e35d0(uVar1,0xffffffff,param_1);
      uVar1 = FUN_140054130(param_2 + 1,puVar3,0,puVar4);
      iVar2 = 1;
      FUN_1400e35d0(uVar1,0xffffffff,param_1,1);
      if (1 < param_3) {
        do {
          uVar1 = FUN_140054130(param_2 + 1,puVar3,0,puVar4);
          FUN_1400e35d0(uVar1,0xffffffff,param_1,(iVar2 + -1 >> 1) + 3);
          iVar2 = iVar2 + 1;
        } while (iVar2 < param_3);
      }
    }
  }
  return;
}



===== FUN_14012d310 @ 14012d310 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_14012d310(undefined4 param_1,undefined4 param_2)

{
  byte bVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  ulonglong uVar8;
  float *pfVar9;
  longlong lVar10;
  float *pfVar11;
  longlong lVar12;
  longlong lVar13;
  undefined4 *puVar14;
  float fVar15;
  float fVar16;
  float fVar17;
  float local_108;
  float local_104;
  float local_100;
  undefined4 local_f8;
  undefined4 local_f4;
  undefined4 local_f0;
  float local_e8;
  float fStack_e4;
  float fStack_e0;
  float fStack_dc;
  float local_d8;
  float fStack_d4;
  float fStack_d0;
  float fStack_cc;
  float local_c8;
  
  if (DAT_175ff3464 != 0) {
    uVar2 = FUN_14023b1b0();
    uVar3 = FUN_140130000();
    bVar1 = FUN_14023b1b0();
    iVar4 = FUN_14012ceb0(0,0,uVar3,uVar2 & 1,1,(float)bVar1 * DAT_1402780cc);
    lVar13 = (longlong)iVar4;
    DAT_16b2a2220 = iVar4;
    uVar3 = FUN_140130000();
    lVar10 = lVar13 * 0x5fc;
    uVar5 = FUN_14023b1b0();
    FUN_140008e40(iVar4,*(undefined4 *)(&DAT_15fd167f0 + lVar10),uVar2 & 1,uVar3,uVar5 & 1);
    uVar3 = DAT_1402784b0;
    pfVar11 = (float *)((longlong)&DAT_15fd1628c + lVar10);
    pfVar9 = (float *)((longlong)&DAT_15fd16294 + lVar10 + 4);
    (&DAT_15fd162dc)[lVar13 * 0x17f] = 0;
    pfVar11[0] = 1.0;
    pfVar11[1] = 0.0;
    *(undefined8 *)((longlong)&DAT_15fd16294 + lVar10) = 0;
    *(undefined8 *)((longlong)&DAT_15fd1629c + lVar10) = 0x3f800000;
    *(undefined8 *)((longlong)&DAT_15fd162a4 + lVar10) = 0;
    (&DAT_15fd162ac)[lVar13 * 0x17f] = 0x3f800000;
    FUN_14007b2a0(pfVar11,pfVar9,uVar3);
    FUN_14007b2a0(pfVar11,pfVar9,(&DAT_15fd16288)[lVar13 * 0x17f]);
    fStack_dc = *pfVar9;
    local_d8 = *(float *)((longlong)&DAT_15fd1629c + lVar10);
    fStack_d4 = *(float *)((longlong)&DAT_15fd1629c + lVar10 + 4);
    fStack_d0 = *(float *)((longlong)&DAT_15fd162a4 + lVar10);
    local_e8 = *pfVar11;
    fStack_e4 = *(float *)((longlong)&DAT_15fd1628c + lVar10 + 4);
    fStack_e0 = *(float *)((longlong)&DAT_15fd16294 + lVar10);
    fStack_cc = *(float *)((longlong)&DAT_15fd162a4 + lVar10 + 4);
    local_c8 = (float)(&DAT_15fd162ac)[lVar13 * 0x17f];
    lVar10 = (longlong)(int)(&DAT_15fd16260)[lVar13 * 0x17f] * 0x185c0;
    fVar17 = (float)(*(uint *)(&DAT_192e9aec8 + lVar10) ^ DAT_140279870);
    fVar16 = (float)(*(uint *)(&DAT_192e9aecc + lVar10) ^ DAT_140279870);
    fVar15 = (float)(*(uint *)(&DAT_192e9aed0 + lVar10) ^ DAT_140279870);
    local_108 = ((float)(&DAT_15fd16270)[lVar13 * 0x17f] - fStack_d0 * DAT_140278478) +
                local_e8 * fVar17 + fStack_dc * fVar16 + fStack_d0 * fVar15;
    local_104 = ((float)(&DAT_15fd16274)[lVar13 * 0x17f] - fStack_cc * DAT_140278478) +
                fStack_e4 * fVar17 + local_d8 * fVar16 + fStack_cc * fVar15;
    local_f8 = (&DAT_15fd1627c)[lVar13 * 0x17f];
    local_f0 = (&DAT_15fd16284)[lVar13 * 0x17f];
    local_100 = ((float)(&DAT_15fd16278)[lVar13 * 0x17f] - local_c8 * DAT_140278478) +
                fStack_e0 * fVar17 + fStack_d4 * fVar16 + local_c8 * fVar15;
    local_f4 = (&DAT_15fd16280)[lVar13 * 0x17f];
    iVar6 = FUN_14005bca0((&DAT_15fd16260)[lVar13 * 0x17f],&local_108,&local_f8,&local_e8,
                          (&DAT_15fd16838)[lVar13 * 0x17f]);
    lVar12 = (longlong)iVar6;
    (&DAT_15fd16268)[lVar13 * 0x17f] = iVar6;
    *(int *)(&DAT_15f2dc848 + lVar12 * 0x5168) = iVar4;
    iVar4 = FUN_14005ccf0();
    lVar13 = (longlong)iVar4;
    lVar10 = lVar13 * 0x3834;
    (&DAT_151620ce4)[lVar13 * 0xe0d] = 7;
    FUN_140158ab0(&DAT_151620c64 + lVar13 * 0xe0d,&DAT_140270199);
    uVar3 = DAT_1b4657c80;
    local_108 = (float)(&DAT_15f2d922c)[lVar12 * 0x145a];
    local_104 = (float)(&DAT_15f2d9230)[lVar12 * 0x145a];
    (&DAT_151623978)[lVar13 * 0xe0d] = 1;
    (&DAT_151624344)[lVar13 * 0xe0d] = param_2;
    *(undefined4 *)(&DAT_151624348 + lVar10) = uVar3;
    (&DAT_15162440c)[lVar13 * 0xe0d] = 1;
    *(undefined4 *)((longlong)&DAT_151624420 + lVar10) = 2;
    *(undefined4 *)((longlong)&DAT_151624420 + lVar10 + 4) = 1;
    local_100 = (float)(&DAT_15f2d9234)[lVar12 * 0x145a];
    puVar14 = &DAT_15f2d9244 + lVar12 * 0x145a;
    iVar7 = FUN_140053840(&local_108,puVar14,iVar4);
    (&DAT_151620cfc)[lVar13 * 0xe0d] = iVar7;
    FUN_140051dc0(iVar4);
    fStack_dc = (float)_UNK_140278d3c;
    fStack_e0 = (float)_UNK_140278d38;
    fStack_e4 = (float)_UNK_140278d34;
    local_e8 = _DAT_140278d30;
    local_108 = DAT_140278810;
    local_100 = (float)DAT_14027880c;
    local_104 = (float)DAT_140278730;
    local_c8 = (float)DAT_1402783f4;
    (&DAT_18329e330)[(longlong)iVar7 * 0x1bfe] = iVar6;
    (&DAT_18329e334)[(longlong)iVar7 * 0x1bfe] = 0;
    local_d8 = local_e8;
    fStack_d4 = fStack_e4;
    fStack_d0 = fStack_e0;
    fStack_cc = fStack_dc;
    iVar4 = FUN_140054130(0x1b,&local_108,0,&local_e8);
    uVar3 = (&DAT_151620cfc)[lVar13 * 0xe0d];
    (&DAT_182bbb400)[(longlong)iVar4 * 0x6e0] = iVar6;
    FUN_1400e35d0(iVar4,0xffffffff,uVar3);
    iVar4 = FUN_140054130(0xf,&local_108,0,&local_e8);
    (&DAT_182bbb194)[(longlong)iVar4 * 0x6e0] = 0x10;
    DAT_1b4657d8c = FUN_140054130(param_1,&local_108,0,&local_e8);
    DAT_1b4657db0 = 0xff;
    FUN_1400e35d0(iVar4,DAT_1b4657d8c,0xffffffff);
    (&DAT_182bbb194)[(longlong)iVar4 * 0x6e0] = 0xf;
    FUN_1400e35d0(iVar4,0xffffffff,(&DAT_151620cfc)[lVar13 * 0xe0d]);
    (&DAT_151620ce4)[lVar13 * 0xe0d] = 7;
    *(undefined8 *)((longlong)&DAT_151623994 + lVar10) = 0;
    *(undefined4 *)(&DAT_151623984 + lVar10) = 1;
    iVar4 = FUN_14005ccf0();
    lVar10 = (longlong)iVar4;
    lVar13 = lVar10 * 0x3834;
    (&DAT_151620ce4)[lVar10 * 0xe0d] = 7;
    FUN_140158ab0(&DAT_151620c64 + lVar10 * 0xe0d,&DAT_140270199);
    uVar3 = DAT_1b4657c80;
    local_108 = (float)(&DAT_15f2d922c)[lVar12 * 0x145a];
    local_104 = (float)(&DAT_15f2d9230)[lVar12 * 0x145a];
    local_100 = (float)(&DAT_15f2d9234)[lVar12 * 0x145a];
    (&DAT_151623978)[lVar10 * 0xe0d] = 1;
    (&DAT_151624344)[lVar10 * 0xe0d] = param_2;
    *(undefined4 *)(&DAT_151624348 + lVar13) = uVar3;
    (&DAT_15162440c)[lVar10 * 0xe0d] = 1;
    *(undefined4 *)((longlong)&DAT_151624420 + lVar13) = 2;
    *(undefined4 *)((longlong)&DAT_151624420 + lVar13 + 4) = 1;
    iVar7 = FUN_140053840(&local_108,puVar14,iVar4);
    (&DAT_151620cfc)[lVar10 * 0xe0d] = iVar7;
    FUN_140051dc0(iVar4);
    (&DAT_18329e330)[(longlong)iVar7 * 0x1bfe] = iVar6;
    (&DAT_18329e334)[(longlong)iVar7 * 0x1bfe] = 1;
    FUN_14012cd60(iVar7,0xb,4);
    uVar8 = FUN_14023b1b0();
    if ((uVar8 & 1) == 0) {
      iVar4 = FUN_14005ccf0();
      lVar10 = (longlong)iVar4;
      lVar13 = lVar10 * 0x3834;
      (&DAT_151620ce4)[lVar10 * 0xe0d] = 7;
      FUN_140158ab0(&DAT_151620c64 + lVar10 * 0xe0d,&DAT_140270199);
      uVar3 = DAT_1b4657c80;
      local_108 = (float)(&DAT_15f2d922c)[lVar12 * 0x145a];
      local_104 = (float)(&DAT_15f2d9230)[lVar12 * 0x145a];
      local_100 = (float)(&DAT_15f2d9234)[lVar12 * 0x145a];
      (&DAT_151623978)[lVar10 * 0xe0d] = 1;
      (&DAT_151624344)[lVar10 * 0xe0d] = param_2;
      *(undefined4 *)(&DAT_151624348 + lVar13) = uVar3;
      (&DAT_15162440c)[lVar10 * 0xe0d] = 1;
      *(undefined4 *)((longlong)&DAT_151624420 + lVar13) = 2;
      *(undefined4 *)((longlong)&DAT_151624420 + lVar13 + 4) = 1;
      iVar7 = FUN_140053840(&local_108,puVar14,iVar4);
      (&DAT_151620cfc)[lVar10 * 0xe0d] = iVar7;
      FUN_140051dc0(iVar4);
      (&DAT_18329e330)[(longlong)iVar7 * 0x1bfe] = iVar6;
      (&DAT_18329e334)[(longlong)iVar7 * 0x1bfe] = 2;
      FUN_14012cd60(iVar7,0xb,4);
    }
    uVar8 = FUN_14023b1b0();
    if ((uVar8 & 1) == 0) {
      iVar4 = FUN_14005ccf0();
      lVar10 = (longlong)iVar4;
      lVar13 = lVar10 * 0x3834;
      (&DAT_151620ce4)[lVar10 * 0xe0d] = 7;
      FUN_140158ab0(&DAT_151620c64 + lVar10 * 0xe0d,&DAT_140270199);
      uVar3 = DAT_1b4657c80;
      local_108 = (float)(&DAT_15f2d922c)[lVar12 * 0x145a];
      local_104 = (float)(&DAT_15f2d9230)[lVar12 * 0x145a];
      local_100 = (float)(&DAT_15f2d9234)[lVar12 * 0x145a];
      (&DAT_151623978)[lVar10 * 0xe0d] = 1;
      (&DAT_151624344)[lVar10 * 0xe0d] = param_2;
      *(undefined4 *)(&DAT_151624348 + lVar13) = uVar3;
      (&DAT_15162440c)[lVar10 * 0xe0d] = 1;
      *(undefined4 *)((longlong)&DAT_151624420 + lVar13) = 2;
      *(undefined4 *)((longlong)&DAT_151624420 + lVar13 + 4) = 1;
      iVar7 = FUN_140053840(&local_108,puVar14,iVar4);
      (&DAT_151620cfc)[lVar10 * 0xe0d] = iVar7;
      FUN_140051dc0(iVar4);
      (&DAT_18329e330)[(longlong)iVar7 * 0x1bfe] = iVar6;
      (&DAT_18329e334)[(longlong)iVar7 * 0x1bfe] = 3;
      FUN_14012cd60(iVar7,0xb,4);
    }
  }
  return;
}



===== FUN_14012e620 @ 14012e620 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_14012e620(int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  int iVar11;
  undefined4 uVar12;
  int *piVar13;
  int iVar14;
  longlong lVar15;
  int iVar16;
  longlong lVar17;
  undefined4 uVar18;
  undefined4 local_e8;
  undefined4 local_e4;
  undefined4 local_e0;
  undefined4 local_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  undefined4 uStack_cc;
  undefined4 local_c8;
  undefined4 uStack_c4;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  undefined4 local_b8;
  
  lVar17 = (longlong)param_1 * 0xdb0c;
  if (0 < *(int *)(&DAT_1760c5828 + lVar17)) {
    FUN_1401fcd30(&DAT_144cbda20,0,0x100);
    uVar7 = FUN_14023b1b0();
    uVar8 = FUN_14023b1b0();
    uVar9 = FUN_14023b1b0();
    uVar6 = DAT_140278c40;
    uVar5 = DAT_140278654;
    uVar12 = DAT_1402784b0;
    iVar11 = *(int *)(&DAT_1760c5828 + lVar17);
    iVar14 = (uVar7 & 1) + (uVar8 & 1) + 2 + (uVar9 & 1);
    iVar4 = iVar11;
    if (iVar14 <= iVar11) {
      iVar4 = iVar14;
    }
    iVar14 = 0;
    if (0 < iVar4) {
      do {
        iVar10 = 0;
        if (0 < iVar11) {
          iVar11 = *(int *)(&DAT_1760c5828 + lVar17);
          iVar10 = FUN_14023b1b0();
          lVar15 = (longlong)iVar10 % (longlong)iVar11;
          iVar16 = 0;
          do {
            iVar10 = (int)lVar15;
            if ((&DAT_144cbda20)[iVar10] == 0) break;
            iVar11 = *(int *)(&DAT_1760c5828 + lVar17);
            iVar10 = FUN_14023b1b0();
            iVar16 = iVar16 + 1;
            lVar15 = (longlong)iVar10 % (longlong)iVar11;
            iVar10 = (int)lVar15;
          } while (iVar16 < 0x200);
        }
        (&DAT_144cbda20)[iVar10] = 1;
        lVar15 = (longlong)iVar10 * 0x314 + lVar17;
        iVar10 = *(int *)(&DAT_1760c5838 + lVar15);
        uVar18 = uVar12;
        if (((iVar10 != 1) && (uVar18 = uVar5, iVar10 != 2)) && (uVar18 = 0, iVar10 == 3)) {
          uVar18 = uVar6;
        }
        uVar1 = *(undefined4 *)(&DAT_1760c582c + lVar15);
        piVar13 = &DAT_1601172a0;
        uVar2 = *(undefined4 *)(&DAT_1760c5830 + lVar15);
        uVar3 = *(undefined4 *)(&DAT_1760c5834 + lVar15);
        iVar10 = 0;
        lVar15 = 0;
        do {
          if (*piVar13 == 0) {
            if (iVar10 != -1) {
              FUN_1401fcd30(&DAT_1601172a0 + (longlong)iVar10 * 0xca,0,0x328);
              *(undefined8 *)(&DAT_1601172a0 + lVar15 * 0xca) = 1;
              (&DAT_1601172b4)[lVar15 * 0xca] = uVar1;
              (&DAT_1601172b8)[lVar15 * 0xca] = uVar2;
              (&DAT_1601172bc)[lVar15 * 0xca] = uVar3;
              (&DAT_1601172c0)[lVar15 * 0xca] = uVar18;
              (&DAT_1601172a8)[lVar15 * 0x65] = 0xffffffffffffffff;
            }
            break;
          }
          iVar10 = iVar10 + 1;
          lVar15 = lVar15 + 1;
          piVar13 = piVar13 + 0xca;
        } while ((longlong)piVar13 < 0x1601e12a0);
        iVar14 = iVar14 + 1;
      } while (iVar14 < iVar4);
    }
    local_e8 = *(undefined4 *)(&DAT_1760d1d2c + lVar17);
    local_e4 = *(undefined4 *)(&DAT_1760d1d30 + lVar17);
    local_e0 = *(undefined4 *)(&DAT_1760d1d34 + lVar17);
    local_b8 = DAT_1402783f4;
    local_d8 = _DAT_140278d30;
    uStack_d4 = _UNK_140278d34;
    uStack_d0 = _UNK_140278d38;
    uStack_cc = _UNK_140278d3c;
    local_c8 = _DAT_140278d30;
    uStack_c4 = _UNK_140278d34;
    uStack_c0 = _UNK_140278d38;
    uStack_bc = _UNK_140278d3c;
    iVar11 = FUN_140054130(param_2,&local_e8,0,&local_d8);
    uVar12 = FUN_140050ef0(0x168);
    DAT_1b4657d8c = iVar11;
    DAT_1b4657db0 = param_1;
    *(undefined4 *)(&DAT_182bbb4b4 + (longlong)iVar11 * 0x1b80) = uVar12;
  }
  return;
}



===== FUN_14012eb50 @ 14012eb50 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_14012eb50(int param_1)

{
  char cVar1;
  bool bVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int *piVar6;
  ulonglong uVar7;
  int iVar8;
  undefined1 *puVar9;
  int iVar10;
  int iVar11;
  char *pcVar12;
  char *pcVar13;
  uint uVar14;
  int iVar15;
  longlong lVar16;
  longlong lVar17;
  int iVar18;
  longlong lVar19;
  undefined1 auStack_ac8 [32];
  char *local_aa8;
  int local_a98;
  int local_a94;
  int local_a90;
  undefined4 local_a88;
  undefined4 local_a84;
  undefined4 local_a80;
  int local_a78 [4];
  int local_a68;
  undefined4 uStack_a64;
  undefined4 uStack_a60;
  undefined4 uStack_a5c;
  undefined4 local_a58;
  int local_a38 [255];
  undefined1 uStack_639;
  char local_638 [511];
  char acStack_439 [513];
  char local_238 [512];
  ulonglong local_38;
  
  local_38 = DAT_1403020a0 ^ (ulonglong)auStack_ac8;
  lVar17 = (longlong)param_1 * 0x86c;
  iVar15 = *(int *)(&DAT_16b2aaf38 + lVar17);
  iVar3 = *(int *)(&DAT_16b2cccac + lVar17);
  iVar4 = *(int *)(&DAT_16b2eea20 + lVar17);
  iVar5 = 0x100;
  if (iVar15 < 0x100) {
    iVar5 = iVar15;
  }
  iVar18 = *(int *)(&DAT_16b310794 + lVar17);
  iVar11 = *(int *)(&DAT_16b332508 + lVar17);
  iVar10 = DAT_16b2aaf28;
  if (0xff < DAT_16b2aaf28) {
    iVar10 = 0x100;
  }
  iVar8 = iVar3;
  if (iVar5 <= iVar3) {
    iVar8 = iVar5;
  }
  iVar5 = DAT_16b2ccc9c;
  if (iVar10 <= DAT_16b2ccc9c) {
    iVar5 = iVar10;
  }
  iVar10 = iVar4;
  if (iVar8 <= iVar4) {
    iVar10 = iVar8;
  }
  iVar8 = DAT_16b2eea10;
  if (iVar5 <= DAT_16b2eea10) {
    iVar8 = iVar5;
  }
  iVar5 = iVar18;
  if (iVar10 <= iVar18) {
    iVar5 = iVar10;
  }
  iVar10 = DAT_16b310784;
  if (iVar8 <= DAT_16b310784) {
    iVar10 = iVar8;
  }
  iVar8 = iVar11;
  if (iVar5 <= iVar11) {
    iVar8 = iVar5;
  }
  iVar5 = DAT_16b3324f8;
  if (iVar10 <= DAT_16b3324f8) {
    iVar5 = iVar10;
  }
  local_a94 = *(int *)(&DAT_16b35427c + lVar17);
  iVar10 = local_a94;
  if (iVar8 <= local_a94) {
    iVar10 = iVar8;
  }
  iVar8 = DAT_16b35426c;
  if (iVar5 <= DAT_16b35426c) {
    iVar8 = iVar5;
  }
  local_a90 = *(int *)(&DAT_16b375ff0 + lVar17);
  iVar5 = local_a90;
  if (iVar10 <= local_a90) {
    iVar5 = iVar10;
  }
  iVar10 = DAT_16b375fe0;
  if (iVar8 <= DAT_16b375fe0) {
    iVar10 = iVar8;
  }
  if (iVar10 < 1) {
    uVar14 = 0;
    if ((iVar15 == iVar5) && (DAT_16b2aaf28 == iVar10)) {
      local_a38[0] = 0;
      uVar14 = 1;
    }
    if ((iVar3 == iVar5) && (DAT_16b2ccc9c == iVar10)) {
      uVar7 = (ulonglong)uVar14;
      uVar14 = uVar14 + 1;
      local_a38[uVar7] = 1;
    }
    if ((iVar4 == iVar5) && (DAT_16b2eea10 == iVar10)) {
      uVar7 = (ulonglong)uVar14;
      uVar14 = uVar14 + 1;
      local_a38[uVar7] = 2;
    }
    if ((iVar18 == iVar5) && (DAT_16b310784 == iVar10)) {
      uVar7 = (ulonglong)uVar14;
      uVar14 = uVar14 + 1;
      local_a38[uVar7] = 3;
    }
    lVar17 = 3;
    if ((iVar11 == iVar5) && (DAT_16b3324f8 == iVar10)) {
      uVar7 = (ulonglong)uVar14;
      uVar14 = uVar14 + 1;
      local_a38[uVar7] = 4;
    }
    if ((local_a94 == iVar5) && (DAT_16b35426c == iVar10)) {
      uVar7 = (ulonglong)uVar14;
      uVar14 = uVar14 + 1;
      local_a38[uVar7] = 5;
    }
    if ((local_a90 == iVar5) && (DAT_16b375fe0 == iVar10)) {
      uVar7 = (ulonglong)uVar14;
      uVar14 = uVar14 + 1;
      local_a38[uVar7] = 6;
    }
    if (uVar14 != 0) {
      iVar15 = 0;
      local_a98 = param_1;
      do {
        iVar3 = FUN_14023b1b0();
        bVar2 = true;
        iVar3 = local_a38[iVar3 % (int)uVar14];
        lVar19 = (longlong)iVar3;
        if ((0 < DAT_183ebfdb4) && (bVar2 = true, 0 < *(int *)(&DAT_16b2aaf34 + lVar19 * 0x21d74)))
        {
          bVar2 = false;
        }
        if ((0 < DAT_183ec5974._4_4_) && (0 < *(int *)(&DAT_16b2ab7a0 + lVar19 * 0x21d74))) {
          bVar2 = false;
        }
        if ((0 < DAT_183ecb53c) && (0 < *(int *)(&DAT_16b2ac00c + lVar19 * 0x21d74))) {
          bVar2 = false;
        }
        if ((0 < DAT_183ed1100) && (0 < *(int *)(&DAT_16b2ac878 + lVar19 * 0x21d74))) {
          bVar2 = false;
        }
        if ((0 < DAT_183ed6cc4) && (0 < *(int *)(&DAT_16b2ad0e4 + lVar19 * 0x21d74))) {
          bVar2 = false;
        }
        if ((0 < DAT_183edc888) && (0 < *(int *)(&DAT_16b2ad950 + lVar19 * 0x21d74))) {
          bVar2 = false;
        }
        iVar15 = iVar15 + 1;
      } while ((iVar15 < 100) && (bVar2));
      local_a78[0] = 0;
      lVar16 = 0x40;
      local_a78[1] = 1;
      local_a78[2] = 2;
      do {
        iVar4 = FUN_14023b1b0();
        iVar4 = iVar4 + (iVar4 / 3 + (iVar4 >> 0x1f) +
                        (int)(((longlong)iVar4 / 3 + ((longlong)iVar4 >> 0x3f) & 0xffffffffU) >>
                             0x1f)) * -3;
        iVar15 = local_a78[iVar4];
        iVar5 = FUN_14023b1b0();
        iVar5 = iVar5 + (iVar5 / 3 + (iVar5 >> 0x1f) +
                        (int)(((longlong)iVar5 / 3 + ((longlong)iVar5 >> 0x3f) & 0xffffffffU) >>
                             0x1f)) * -3;
        local_a78[iVar4] = local_a78[iVar5];
        local_a78[iVar5] = iVar15;
        lVar16 = lVar16 + -1;
      } while (lVar16 != 0);
      lVar19 = lVar19 * 0x21d74;
      acStack_439[1] = 0;
      piVar6 = local_a78;
      *(int *)(&DAT_16b2aaf38 + (longlong)local_a98 * 0x86c + lVar19) =
           *(int *)(&DAT_16b2aaf38 + (longlong)local_a98 * 0x86c + lVar19) + 1;
      (&DAT_16d48232c)[(longlong)local_a98 * 5] = 0xb;
      do {
        iVar15 = *piVar6;
        if (iVar15 == 0) {
          local_638[0] = '\0';
          iVar15 = FUN_14023b1b0();
          iVar15 = iVar15 + (iVar15 / 3 + (iVar15 >> 0x1f) +
                            (int)(((longlong)iVar15 / 3 + ((longlong)iVar15 >> 0x3f) & 0xffffffffU)
                                 >> 0x1f)) * -3;
          if (iVar15 == 0) {
            pcVar12 = "the laboratory at %s and %s has the data. ";
LAB_14012ef38:
            FUN_140158ab0(local_a38,pcVar12,&DAT_16b2ccbd0 + lVar19,&DAT_16b2ccc10 + lVar19);
          }
          else {
            if (iVar15 == 1) {
              pcVar12 = "the lab at %s and %s has made great strides. ";
              goto LAB_14012ef38;
            }
            if (iVar15 == 2) {
              pcVar12 = "we are increasing development at the %s and %s laboratory. ";
              goto LAB_14012ef38;
            }
          }
          puVar9 = &uStack_639;
          do {
            pcVar12 = puVar9 + 1;
            puVar9 = puVar9 + 1;
          } while (*pcVar12 != '\0');
          lVar16 = 0;
          do {
            cVar1 = *(char *)((longlong)local_a38 + lVar16);
            puVar9[lVar16] = cVar1;
            lVar16 = lVar16 + 1;
          } while (cVar1 != '\0');
          pcVar12 = acStack_439;
          do {
            pcVar13 = pcVar12 + 1;
            pcVar12 = pcVar12 + 1;
          } while (*pcVar13 != '\0');
          lVar16 = 0;
          do {
            cVar1 = local_638[lVar16];
            pcVar12[lVar16] = cVar1;
            lVar16 = lVar16 + 1;
          } while (cVar1 != '\0');
        }
        else if (iVar15 == 1) {
          local_638[0] = '\0';
          iVar15 = FUN_14023b1b0();
          iVar15 = iVar15 + (iVar15 / 3 + (iVar15 >> 0x1f) +
                            (int)(((longlong)iVar15 / 3 + ((longlong)iVar15 >> 0x3f) & 0xffffffffU)
                                 >> 0x1f)) * -3;
          if (iVar15 == 0) {
            pcVar12 = "project %s has made progress in many areas. ";
LAB_14012f023:
            FUN_140158ab0(local_a38,pcVar12,&DAT_16b2ccc50 + lVar19);
          }
          else {
            if (iVar15 == 1) {
              pcVar12 = "there are new developments in the %s project. ";
              goto LAB_14012f023;
            }
            if (iVar15 == 2) {
              pcVar12 = "the %s project will revolutionize the industry. ";
              goto LAB_14012f023;
            }
          }
          puVar9 = &uStack_639;
          do {
            pcVar12 = puVar9 + 1;
            puVar9 = puVar9 + 1;
          } while (*pcVar12 != '\0');
          lVar16 = 0;
          do {
            cVar1 = *(char *)((longlong)local_a38 + lVar16);
            puVar9[lVar16] = cVar1;
            lVar16 = lVar16 + 1;
          } while (cVar1 != '\0');
          pcVar12 = acStack_439;
          do {
            pcVar13 = pcVar12 + 1;
            pcVar12 = pcVar12 + 1;
          } while (*pcVar13 != '\0');
          lVar16 = 0;
          do {
            cVar1 = local_638[lVar16];
            pcVar12[lVar16] = cVar1;
            lVar16 = lVar16 + 1;
          } while (cVar1 != '\0');
        }
        else if (iVar15 == 2) {
          local_638[0] = '\0';
          if (iVar3 == DAT_16b2aaf18) {
            uVar14 = FUN_14023b1b0();
            uVar14 = uVar14 & 0x80000001;
            if ((int)uVar14 < 0) {
              uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
            }
            FUN_140158ab0(local_a38);
            if (uVar14 == 1) {
              FUN_140158ab0(local_a38);
            }
            puVar9 = &uStack_639;
            do {
              pcVar12 = puVar9 + 1;
              puVar9 = puVar9 + 1;
            } while (*pcVar12 != '\0');
            lVar16 = 0;
            do {
              cVar1 = *(char *)((longlong)local_a38 + lVar16);
              puVar9[lVar16] = cVar1;
              lVar16 = lVar16 + 1;
            } while (cVar1 != '\0');
          }
          else {
            uVar14 = FUN_14023b1b0();
            uVar14 = uVar14 & 0x80000003;
            if ((int)uVar14 < 0) {
              uVar14 = (uVar14 - 1 | 0xfffffffc) + 1;
            }
            FUN_140158ab0(local_a38);
            if (((uVar14 == 1) || (uVar14 == 2)) || (uVar14 == 3)) {
              FUN_140158ab0(local_a38);
            }
            puVar9 = &uStack_639;
            do {
              pcVar12 = puVar9 + 1;
              puVar9 = puVar9 + 1;
            } while (*pcVar12 != '\0');
            lVar16 = 0;
            do {
              cVar1 = *(char *)((longlong)local_a38 + lVar16);
              puVar9[lVar16] = cVar1;
              lVar16 = lVar16 + 1;
            } while (cVar1 != '\0');
          }
          pcVar12 = acStack_439;
          do {
            pcVar13 = pcVar12 + 1;
            pcVar12 = pcVar12 + 1;
          } while (*pcVar13 != '\0');
          lVar16 = 0;
          do {
            cVar1 = local_638[lVar16];
            pcVar12[lVar16] = cVar1;
            lVar16 = lVar16 + 1;
          } while (cVar1 != '\0');
        }
        iVar15 = local_a98;
        piVar6 = piVar6 + 1;
        lVar17 = lVar17 + -1;
      } while (lVar17 != 0);
      piVar6 = &DAT_1816deb80;
      iVar3 = 0;
      do {
        iVar4 = -1;
        if (*piVar6 == 0) {
          iVar5 = iVar3;
          if (iVar3 != -1) {
            (&DAT_1816deb80)[(longlong)iVar3 * 0x122] = 1;
            *(undefined4 *)(&DAT_1816def84 + (longlong)iVar3 * 0x488) = 0;
          }
          break;
        }
        iVar3 = iVar3 + 1;
        piVar6 = piVar6 + 0x122;
        iVar5 = iVar4;
      } while ((longlong)piVar6 < 0x181feeb80);
      pcVar12 = acStack_439;
      do {
        pcVar12 = pcVar12 + 1;
        cVar1 = *pcVar12;
        pcVar12[(longlong)(&DAT_1816deb84 + ((longlong)iVar5 * 0x488 - (longlong)(acStack_439 + 1)))
               ] = cVar1;
      } while (cVar1 != '\0');
      FUN_140115ff0(iVar5);
      DAT_16b2aaf1c = DAT_16b2aaf1c + 1;
      acStack_439[1] = 0;
      FUN_140158ab0(local_238,"INTEL%02d.CDE");
      uVar7 = FUN_14023b1b0();
      if ((uVar7 & 1) == 0) {
        iVar18 = DAT_16b2a2ec0 + 0x34bc0;
        iVar4 = FUN_14012dc20(local_238,iVar5,iVar18);
        iVar3 = (iVar18 / 0xe10) / 0x3c;
        iVar5 = (int)((ulonglong)((longlong)iVar3 * -0x2aaaaaab) >> 0x20);
        iVar3 = iVar3 + ((iVar5 >> 1) - (iVar5 >> 0x1f)) * 0xc;
        if (iVar3 == 0) {
          iVar3 = 0xc;
        }
        if (iVar4 == -1) {
          return;
        }
        lVar17 = (longlong)iVar4 * 0x5fc;
        if (*(int *)(&DAT_15fd162e8 + lVar17) < 1) {
          return;
        }
        FUN_140158ab0(local_638);
        pcVar12 = acStack_439;
        do {
          pcVar13 = pcVar12 + 1;
          pcVar12 = pcVar12 + 1;
        } while (*pcVar13 != '\0');
        lVar19 = 0;
        do {
          cVar1 = local_638[lVar19];
          pcVar12[lVar19] = cVar1;
          lVar19 = lVar19 + 1;
        } while (cVar1 != '\0');
        lVar19 = (longlong)
                 (int)(&DAT_175ff348c)[(longlong)*(int *)(&DAT_15fd162ec + lVar17) * 0x18c];
        iVar5 = (&DAT_175fd147c)[lVar19 * 0x22];
        if (iVar5 == -1) {
          iVar5 = (&DAT_175fd1484)[lVar19 * 0x22];
        }
        iVar11 = (&DAT_175fd1480)[lVar19 * 0x22];
        if (iVar11 == -1) {
          iVar11 = (&DAT_175fd1488)[lVar19 * 0x22];
        }
        if ((iVar5 != -1) && (iVar11 != -1)) {
          pcVar12 = acStack_439;
          do {
            pcVar13 = pcVar12;
            pcVar12 = pcVar13 + 1;
          } while (pcVar13[1] != '\0');
          *(undefined4 *)(pcVar13 + 1) = s_The_car_will_be_driving_from_140277780._0_4_;
          *(undefined4 *)(pcVar13 + 5) = s_The_car_will_be_driving_from_140277780._4_4_;
          *(undefined4 *)(pcVar13 + 9) = s_The_car_will_be_driving_from_140277780._8_4_;
          *(undefined4 *)(pcVar13 + 0xd) = s_The_car_will_be_driving_from_140277780._12_4_;
          *(undefined8 *)(pcVar13 + 0x11) = s_The_car_will_be_driving_from_140277780._16_8_;
          *(undefined4 *)(pcVar13 + 0x19) = s_The_car_will_be_driving_from_140277780._24_4_;
          *(undefined2 *)(pcVar13 + 0x1d) = s_The_car_will_be_driving_from_140277780._28_2_;
          FUN_140158ab0(local_638,"%s and %s\n",&DAT_175ff3468 + (longlong)iVar5 * 0x630,
                        &DAT_175ff3468 + (longlong)iVar11 * 0x630);
          pcVar12 = acStack_439;
          do {
            pcVar13 = pcVar12 + 1;
            pcVar12 = pcVar12 + 1;
          } while (*pcVar13 != '\0');
          lVar19 = 0;
          do {
            cVar1 = local_638[lVar19];
            pcVar12[lVar19] = cVar1;
            lVar19 = lVar19 + 1;
          } while (cVar1 != '\0');
        }
        lVar17 = (longlong)
                 (int)(&DAT_175ff348c)
                      [(longlong)
                       (int)(&DAT_15fd162d8)
                            [(longlong)*(int *)(&DAT_15fd162e8 + lVar17) * 5 +
                             (longlong)iVar4 * 0x17f] * 0x18c];
        iVar4 = (&DAT_175fd147c)[lVar17 * 0x22];
        if (iVar4 == -1) {
          iVar4 = (&DAT_175fd1484)[lVar17 * 0x22];
        }
        iVar5 = (&DAT_175fd1480)[lVar17 * 0x22];
        if (iVar5 == -1) {
          iVar5 = (&DAT_175fd1488)[lVar17 * 0x22];
        }
        if ((iVar4 != -1) && (iVar5 != -1)) {
          pcVar12 = acStack_439;
          do {
            pcVar13 = pcVar12 + 1;
            pcVar12 = pcVar12 + 1;
          } while (*pcVar13 != '\0');
          *(undefined4 *)pcVar12 = DAT_1402777ac;
          FUN_140158ab0(local_638,"%s and %s.\n",&DAT_175ff3468 + (longlong)iVar4 * 0x630,
                        &DAT_175ff3468 + (longlong)iVar5 * 0x630);
          pcVar12 = acStack_439;
          do {
            pcVar13 = pcVar12 + 1;
            pcVar12 = pcVar12 + 1;
          } while (*pcVar13 != '\0');
          lVar17 = 0;
          do {
            cVar1 = local_638[lVar17];
            pcVar12[lVar17] = cVar1;
            lVar17 = lVar17 + 1;
          } while (cVar1 != '\0');
        }
        pcVar12 = "This mission expires at %d:%02d AM.\n";
        if (0x278cff < iVar18) {
          pcVar12 = "This mission expires at %d:%02d PM.\n";
        }
        FUN_140158ab0(local_638,pcVar12,iVar3,(iVar18 / 0xe10) % 0x3c);
        pcVar12 = acStack_439;
        do {
          pcVar13 = pcVar12 + 1;
          pcVar12 = pcVar12 + 1;
        } while (*pcVar13 != '\0');
        lVar17 = 0;
        do {
          cVar1 = local_638[lVar17];
          pcVar12[lVar17] = cVar1;
          lVar17 = lVar17 + 1;
        } while (cVar1 != '\0');
      }
      else {
        iVar3 = FUN_14023b1b0();
        lVar17 = (longlong)*(int *)(&DAT_1b46590c0 + (longlong)(iVar3 % DAT_1b46590bc) * 0x40c) *
                 0xdb0c;
        local_a88 = *(undefined4 *)(&DAT_1760d1d2c + lVar17);
        local_a84 = *(undefined4 *)(&DAT_1760d1d30 + lVar17);
        local_a80 = *(undefined4 *)(&DAT_1760d1d34 + lVar17);
        local_a58 = DAT_1402783f4;
        local_a78[0] = _DAT_140278d30;
        local_a78[1] = _UNK_140278d34;
        local_a78[2] = _UNK_140278d38;
        local_a78[3] = _UNK_140278d3c;
        local_a68 = _DAT_140278d30;
        uStack_a64 = _UNK_140278d34;
        uStack_a60 = _UNK_140278d38;
        uStack_a5c = _UNK_140278d3c;
        iVar3 = FUN_140054130(0x15,&local_a88,0,local_a78);
        if (iVar3 != -1) {
          iVar18 = 0;
          piVar6 = &DAT_181feebc0;
          do {
            if (*piVar6 == 0) {
              iVar4 = iVar18;
              if (iVar18 != -1) {
                lVar19 = (longlong)iVar18;
                FUN_1401fcd30(&DAT_181feebc4 + lVar19 * 0xa0a,0,0x2824);
                (&DAT_181feebc0)[lVar19 * 0xa0a] = 1;
                (&DAT_181feebc4)[lVar19 * 0xa0a] = 0x168;
              }
              break;
            }
            iVar18 = iVar18 + 1;
            piVar6 = piVar6 + 0xa0a;
          } while ((longlong)piVar6 < 0x1829f8bc0);
          lVar19 = (longlong)iVar4;
          lVar16 = lVar19 * 0x2828;
          iVar18 = (&DAT_181fefbcc)[lVar19 * 0xa0a];
          *(int *)(&DAT_182bbb4b4 + (longlong)iVar3 * 0x1b80) = iVar4;
          if (iVar18 < 0x100) {
            *(int *)(&DAT_181fefbd0 + lVar16 + (longlong)iVar18 * 0x18) = iVar5;
            pcVar12 = local_238;
            pcVar13 = &DAT_181fefbd4 +
                      lVar16 + (longlong)(int)(&DAT_181fefbcc)[lVar19 * 0xa0a] * 0x18;
            do {
              cVar1 = *pcVar12;
              pcVar12 = pcVar12 + 1;
              *pcVar13 = cVar1;
              pcVar13 = pcVar13 + 1;
            } while (cVar1 != '\0');
            *(undefined4 *)
             (&DAT_181fefbe4 + lVar16 + (longlong)(int)(&DAT_181fefbcc)[lVar19 * 0xa0a] * 0x18) = 0;
            (&DAT_181fefbcc)[lVar19 * 0xa0a] = (&DAT_181fefbcc)[lVar19 * 0xa0a] + 1;
          }
        }
        local_aa8 = local_238;
        FUN_140158ab0(local_638,
                      "We have intercepted communications\nThe disk with the info in the lobby of the lab at\n%s and %s\nFilename: %s"
                      ,&DAT_175ff3468 + (longlong)*(int *)(&DAT_1760c5810 + lVar17) * 0x630,
                      &DAT_175ff3468 + (longlong)*(int *)(&DAT_1760c5814 + lVar17) * 0x630);
        pcVar12 = acStack_439;
        do {
          pcVar13 = pcVar12 + 1;
          pcVar12 = pcVar12 + 1;
        } while (*pcVar13 != '\0');
        lVar17 = 0;
        do {
          cVar1 = local_638[lVar17];
          pcVar12[lVar17] = cVar1;
          lVar17 = lVar17 + 1;
        } while (cVar1 != '\0');
      }
      FUN_140195d20(iVar15,acStack_439 + 1);
    }
  }
  return;
}



===== FUN_14012dc20 @ 14012dc20 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

int FUN_14012dc20(undefined8 param_1,undefined4 param_2,undefined4 param_3)

{
  byte bVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  longlong lVar8;
  longlong lVar9;
  ulonglong uVar10;
  int iVar11;
  float *pfVar12;
  int iVar13;
  float *pfVar14;
  longlong lVar15;
  float fVar16;
  float fVar17;
  float fVar18;
  float local_118;
  float local_114;
  float local_110;
  undefined4 local_108;
  undefined4 local_104;
  undefined4 local_100;
  float local_f8;
  float fStack_f4;
  float fStack_f0;
  float fStack_ec;
  float local_e8;
  float fStack_e4;
  float fStack_e0;
  float fStack_dc;
  float local_d8;
  
  if (DAT_175ff3464 == 0) {
    return -1;
  }
  uVar2 = FUN_14023b1b0();
  uVar3 = FUN_140130000();
  bVar1 = FUN_14023b1b0();
  iVar4 = FUN_14012ceb0(0,0,uVar3,uVar2 & 1,1,(float)bVar1 * DAT_1402780cc);
  lVar15 = (longlong)iVar4;
  DAT_16b2a2220 = iVar4;
  uVar5 = FUN_140130000();
  fVar16 = DAT_140278af4;
  iVar11 = 0;
  uVar10 = (ulonglong)uVar5;
  iVar6 = DAT_175ff3464;
  do {
    iVar7 = 0;
    lVar8 = (longlong)*(int *)(&DAT_15fd167f0 + lVar15 * 0x5fc);
    iVar13 = (int)uVar10;
    lVar9 = (longlong)iVar13;
    if (fVar16 <= ((float)(&DAT_175ff3680)[lVar8 * 0x18c] - (float)(&DAT_175ff3680)[lVar9 * 0x18c])
                  * ((float)(&DAT_175ff3680)[lVar8 * 0x18c] - (float)(&DAT_175ff3680)[lVar9 * 0x18c]
                    ) + ((float)(&DAT_175ff367c)[lVar8 * 0x18c] -
                        (float)(&DAT_175ff367c)[lVar9 * 0x18c]) *
                        ((float)(&DAT_175ff367c)[lVar8 * 0x18c] -
                        (float)(&DAT_175ff367c)[lVar9 * 0x18c]) +
                  ((float)(&DAT_175ff3684)[lVar8 * 0x18c] - (float)(&DAT_175ff3684)[lVar9 * 0x18c])
                  * ((float)(&DAT_175ff3684)[lVar8 * 0x18c] - (float)(&DAT_175ff3684)[lVar9 * 0x18c]
                    )) break;
    if (iVar6 == 0) {
      uVar10 = 0;
    }
    else {
      iVar6 = FUN_14023b1b0();
      uVar10 = (longlong)iVar6 % (longlong)DAT_175ff3464 & 0xffffffff;
      do {
        lVar8 = (longlong)(int)uVar10 * 0x630;
        if ((*(int *)(&DAT_175ff3498 + lVar8) < 4) &&
           (iVar6 = DAT_175ff3464, *(int *)(&DAT_175ff349c + lVar8) < 4)) break;
        iVar6 = FUN_14023b1b0();
        iVar7 = iVar7 + 1;
        uVar10 = (longlong)iVar6 % (longlong)DAT_175ff3464 & 0xffffffff;
        iVar6 = DAT_175ff3464;
      } while (iVar7 < 0x400);
    }
    iVar13 = (int)uVar10;
    iVar11 = iVar11 + 1;
  } while (iVar11 < 0x400);
  lVar8 = lVar15 * 0x5fc;
  uVar5 = FUN_14023b1b0();
  FUN_140008e40(iVar4,*(undefined4 *)(&DAT_15fd167f0 + lVar8),uVar2 & 1,iVar13,uVar5 & 1);
  uVar3 = DAT_1402784b0;
  (&DAT_15fd162dc)[lVar15 * 0x17f] = 0;
  pfVar14 = (float *)((longlong)&DAT_15fd1628c + lVar8);
  pfVar12 = (float *)((longlong)&DAT_15fd16294 + lVar8 + 4);
  pfVar14[0] = 1.0;
  pfVar14[1] = 0.0;
  *(undefined8 *)((longlong)&DAT_15fd16294 + lVar8) = 0;
  *(undefined8 *)((longlong)&DAT_15fd1629c + lVar8) = 0x3f800000;
  *(undefined8 *)((longlong)&DAT_15fd162a4 + lVar8) = 0;
  (&DAT_15fd162ac)[lVar15 * 0x17f] = 0x3f800000;
  FUN_14007b2a0(pfVar14,pfVar12,uVar3);
  FUN_14007b2a0(pfVar14,pfVar12,(&DAT_15fd16288)[lVar15 * 0x17f]);
  fStack_ec = *pfVar12;
  local_e8 = *(float *)((longlong)&DAT_15fd1629c + lVar8);
  fStack_e4 = *(float *)((longlong)&DAT_15fd1629c + lVar8 + 4);
  fStack_e0 = *(float *)((longlong)&DAT_15fd162a4 + lVar8);
  fStack_dc = *(float *)((longlong)&DAT_15fd162a4 + lVar8 + 4);
  local_f8 = *pfVar14;
  fStack_f4 = *(float *)((longlong)&DAT_15fd1628c + lVar8 + 4);
  fStack_f0 = *(float *)((longlong)&DAT_15fd16294 + lVar8);
  local_d8 = (float)(&DAT_15fd162ac)[lVar15 * 0x17f];
  lVar8 = (longlong)(int)(&DAT_15fd16260)[lVar15 * 0x17f] * 0x185c0;
  fVar17 = (float)(*(uint *)(&DAT_192e9aecc + lVar8) ^ DAT_140279870);
  fVar16 = (float)(*(uint *)(&DAT_192e9aed0 + lVar8) ^ DAT_140279870);
  fVar18 = (float)(*(uint *)(&DAT_192e9aec8 + lVar8) ^ DAT_140279870);
  local_118 = ((float)(&DAT_15fd16270)[lVar15 * 0x17f] - fStack_e0 * DAT_140278478) +
              local_f8 * fVar18 + fVar17 * fStack_ec + fVar16 * fStack_e0;
  local_114 = ((float)(&DAT_15fd16274)[lVar15 * 0x17f] - fStack_dc * DAT_140278478) +
              fStack_f4 * fVar18 + fVar17 * local_e8 + fVar16 * fStack_dc;
  local_108 = (&DAT_15fd1627c)[lVar15 * 0x17f];
  local_100 = (&DAT_15fd16284)[lVar15 * 0x17f];
  local_110 = ((float)(&DAT_15fd16278)[lVar15 * 0x17f] - local_d8 * DAT_140278478) +
              fStack_f0 * fVar18 + fVar17 * fStack_e4 + fVar16 * local_d8;
  local_104 = (&DAT_15fd16280)[lVar15 * 0x17f];
  iVar6 = FUN_14005bca0((&DAT_15fd16260)[lVar15 * 0x17f],&local_118,&local_108,&local_f8,
                        (&DAT_15fd16838)[lVar15 * 0x17f]);
  lVar9 = (longlong)iVar6;
  (&DAT_15fd16268)[lVar15 * 0x17f] = iVar6;
  *(int *)(&DAT_15f2dc848 + lVar9 * 0x5168) = iVar4;
  iVar11 = FUN_14005ccf0();
  lVar8 = (longlong)iVar11;
  lVar15 = lVar8 * 0x3834;
  (&DAT_151620ce4)[lVar8 * 0xe0d] = 7;
  FUN_140158ab0(&DAT_151620c64 + lVar8 * 0xe0d,&DAT_140270199);
  local_118 = (float)(&DAT_15f2d922c)[lVar9 * 0x145a];
  local_114 = (float)(&DAT_15f2d9230)[lVar9 * 0x145a];
  local_110 = (float)(&DAT_15f2d9234)[lVar9 * 0x145a];
  (&DAT_151623978)[lVar8 * 0xe0d] = 1;
  (&DAT_151624344)[lVar8 * 0xe0d] = param_3;
  (&DAT_15162440c)[lVar8 * 0xe0d] = 1;
  *(undefined4 *)((longlong)&DAT_151624420 + lVar15) = 2;
  *(undefined4 *)((longlong)&DAT_151624420 + lVar15 + 4) = 1;
  iVar7 = FUN_140053840(&local_118,&DAT_15f2d9244 + lVar9 * 0x145a,iVar11);
  (&DAT_151620cfc)[lVar8 * 0xe0d] = iVar7;
  FUN_140051dc0(iVar11);
  fStack_ec = (float)_UNK_140278d3c;
  fStack_f0 = (float)_UNK_140278d38;
  fStack_f4 = (float)_UNK_140278d34;
  local_f8 = _DAT_140278d30;
  local_118 = DAT_140278810;
  local_110 = (float)DAT_14027880c;
  local_114 = (float)DAT_140278730;
  local_d8 = (float)DAT_1402783f4;
  (&DAT_18329e330)[(longlong)iVar7 * 0x1bfe] = iVar6;
  (&DAT_18329e334)[(longlong)iVar7 * 0x1bfe] = 0;
  local_e8 = local_f8;
  fStack_e4 = fStack_f4;
  fStack_e0 = fStack_f0;
  fStack_dc = fStack_ec;
  iVar11 = FUN_140054130(0x1b,&local_118,0,&local_f8);
  uVar3 = (&DAT_151620cfc)[lVar8 * 0xe0d];
  (&DAT_182bbb400)[(longlong)iVar11 * 0x6e0] = iVar6;
  FUN_1400e35d0(iVar11,0xffffffff,uVar3);
  iVar11 = FUN_140054130(0x18,&local_118,0,&local_f8);
  if (iVar11 != -1) {
    uVar3 = FUN_140050ef0(0x168);
    *(undefined4 *)(&DAT_182bbb4b4 + (longlong)iVar11 * 0x1b80) = uVar3;
    FUN_140080690(uVar3,0,param_1,param_2);
    FUN_1400e35d0(iVar11,0xffffffff,(&DAT_151620cfc)[lVar8 * 0xe0d]);
  }
  (&DAT_151620ce4)[lVar8 * 0xe0d] = 7;
  *(undefined4 *)(&DAT_151623984 + lVar15) = 1;
  *(undefined8 *)((longlong)&DAT_151623994 + lVar15) = 0;
  iVar11 = FUN_14005ccf0();
  lVar15 = (longlong)iVar11;
  (&DAT_151620ce4)[lVar15 * 0xe0d] = 7;
  FUN_140158ab0(&DAT_151620c64 + lVar15 * 0xe0d,&DAT_140270199);
  local_118 = (float)(&DAT_15f2d922c)[lVar9 * 0x145a];
  local_114 = (float)(&DAT_15f2d9230)[lVar9 * 0x145a];
  local_110 = (float)(&DAT_15f2d9234)[lVar9 * 0x145a];
  (&DAT_151623978)[lVar15 * 0xe0d] = 1;
  (&DAT_151624344)[lVar15 * 0xe0d] = param_3;
  (&DAT_15162440c)[lVar15 * 0xe0d] = 1;
  *(undefined4 *)((longlong)&DAT_151624420 + lVar15 * 0x3834) = 2;
  *(undefined4 *)((longlong)&DAT_151624420 + lVar15 * 0x3834 + 4) = 1;
  iVar7 = FUN_140053840(&local_118,&DAT_15f2d9244 + lVar9 * 0x145a,iVar11);
  (&DAT_151620cfc)[lVar15 * 0xe0d] = iVar7;
  FUN_140051dc0(iVar11);
  (&DAT_18329e330)[(longlong)iVar7 * 0x1bfe] = iVar6;
  (&DAT_18329e334)[(longlong)iVar7 * 0x1bfe] = 1;
  FUN_14012cd60(iVar7,0xb,4);
  uVar10 = FUN_14023b1b0();
  if ((uVar10 & 1) == 0) {
    iVar11 = FUN_14005ccf0();
    lVar15 = (longlong)iVar11;
    (&DAT_151620ce4)[lVar15 * 0xe0d] = 7;
    FUN_140158ab0(&DAT_151620c64 + lVar15 * 0xe0d,&DAT_140270199);
    local_118 = (float)(&DAT_15f2d922c)[lVar9 * 0x145a];
    local_114 = (float)(&DAT_15f2d9230)[lVar9 * 0x145a];
    local_110 = (float)(&DAT_15f2d9234)[lVar9 * 0x145a];
    (&DAT_151623978)[lVar15 * 0xe0d] = 1;
    (&DAT_151624344)[lVar15 * 0xe0d] = param_3;
    (&DAT_15162440c)[lVar15 * 0xe0d] = 1;
    *(undefined4 *)((longlong)&DAT_151624420 + lVar15 * 0x3834) = 2;
    *(undefined4 *)((longlong)&DAT_151624420 + lVar15 * 0x3834 + 4) = 1;
    iVar7 = FUN_140053840(&local_118,&DAT_15f2d9244 + lVar9 * 0x145a,iVar11);
    (&DAT_151620cfc)[lVar15 * 0xe0d] = iVar7;
    FUN_140051dc0(iVar11);
    (&DAT_18329e330)[(longlong)iVar7 * 0x1bfe] = iVar6;
    (&DAT_18329e334)[(longlong)iVar7 * 0x1bfe] = 2;
    FUN_14012cd60(iVar7,0xb,4);
  }
  uVar10 = FUN_14023b1b0();
  if ((uVar10 & 1) == 0) {
    iVar11 = FUN_14005ccf0();
    lVar15 = (longlong)iVar11;
    (&DAT_151620ce4)[lVar15 * 0xe0d] = 7;
    FUN_140158ab0(&DAT_151620c64 + lVar15 * 0xe0d,&DAT_140270199);
    local_118 = (float)(&DAT_15f2d922c)[lVar9 * 0x145a];
    local_114 = (float)(&DAT_15f2d9230)[lVar9 * 0x145a];
    local_110 = (float)(&DAT_15f2d9234)[lVar9 * 0x145a];
    (&DAT_151623978)[lVar15 * 0xe0d] = 1;
    (&DAT_151624344)[lVar15 * 0xe0d] = param_3;
    (&DAT_15162440c)[lVar15 * 0xe0d] = 1;
    *(undefined4 *)((longlong)&DAT_151624420 + lVar15 * 0x3834) = 2;
    *(undefined4 *)((longlong)&DAT_151624420 + lVar15 * 0x3834 + 4) = 1;
    iVar7 = FUN_140053840(&local_118,&DAT_15f2d9244 + lVar9 * 0x145a,iVar11);
    (&DAT_151620cfc)[lVar15 * 0xe0d] = iVar7;
    FUN_140051dc0(iVar11);
    (&DAT_18329e330)[(longlong)iVar7 * 0x1bfe] = iVar6;
    (&DAT_18329e334)[(longlong)iVar7 * 0x1bfe] = 3;
    FUN_14012cd60(iVar7,0xb,4);
  }
  return iVar4;
}



===== FUN_140195d20 @ 140195d20 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140195d20(int param_1,longlong param_2)

{
  float fVar1;
  float fVar2;
  float fVar3;
  char cVar4;
  int iVar5;
  longlong lVar6;
  int iVar7;
  char *pcVar8;
  undefined1 *puVar9;
  longlong lVar10;
  undefined1 auStack_8b8 [32];
  int local_898;
  float local_888;
  float local_884;
  float local_880;
  float local_878;
  float fStack_874;
  float fStack_870;
  undefined4 uStack_86c;
  float local_868;
  float fStack_864;
  float fStack_860;
  undefined4 uStack_85c;
  undefined4 local_858;
  undefined1 uStack_849;
  char local_848 [2048];
  ulonglong local_48;
  
  local_48 = DAT_1403020a0 ^ (ulonglong)auStack_8b8;
  lVar10 = (longlong)param_1;
  iVar5 = (DAT_16b2a2ec0 / 0xe10) / 0x3c;
  iVar7 = (int)((ulonglong)((longlong)iVar5 * -0x2aaaaaab) >> 0x20);
  iVar5 = iVar5 + ((iVar7 >> 1) - (iVar7 >> 0x1f)) * 0xc;
  pcVar8 = "\n%s Internal Memo\n%d:%02d AM\n\n";
  if (iVar5 == 0) {
    iVar5 = 0xc;
  }
  local_898 = (DAT_16b2a2ec0 / 0xe10) % 0x3c;
  if (0x278cff < DAT_16b2a2ec0) {
    pcVar8 = "\n%s Internal Memo\n%d:%02d PM\n\n";
  }
  FUN_140158ab0(local_848,pcVar8,(&PTR_s_Goldmen_Inc_1402b2890)[lVar10],iVar5);
  puVar9 = &uStack_849;
  do {
    pcVar8 = puVar9 + 1;
    puVar9 = puVar9 + 1;
  } while (*pcVar8 != '\0');
  lVar6 = 0;
  do {
    cVar4 = *(char *)(param_2 + lVar6);
    puVar9[lVar6] = cVar4;
    lVar6 = lVar6 + 1;
  } while (cVar4 != '\0');
  local_878 = _DAT_140278d30;
  fStack_874 = _UNK_140278d34;
  fStack_870 = _UNK_140278d38;
  uStack_86c = _UNK_140278d3c;
  local_868 = _DAT_140278d30;
  fStack_864 = _UNK_140278d34;
  fStack_860 = _UNK_140278d38;
  uStack_85c = _UNK_140278d3c;
  local_858 = DAT_1402783f4;
  fVar1 = (float)(&DAT_183ebfd94)[lVar10 * 0x16f1];
  fVar2 = (float)(&DAT_183ebfd98)[lVar10 * 0x16f1];
  fVar3 = (float)(&DAT_183ebfd9c)[lVar10 * 0x16f1];
  FUN_14007b2a0(&local_878,&uStack_86c,
                (float)((double)(float)(&DAT_183ebfd90)[lVar10 * 0x16f1] - DAT_1402785a0));
  local_888 = fVar1 - local_878 * DAT_140278338;
  local_880 = fVar3 - fStack_870 * DAT_140278338;
  local_884 = fVar2 - fStack_874 * DAT_140278338;
  iVar5 = FUN_140054130(0x22,&local_888,0,&local_878);
  if (iVar5 != -1) {
    FUN_1400584b0(iVar5,local_848);
    (&DAT_182bbb19c)[(longlong)iVar5 * 0x6e0] = 0x10000;
  }
  return;
}



===== FUN_1400589a0 @ 1400589a0 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400589a0(int param_1,int param_2,longlong param_3)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  float fVar9;
  float fVar10;
  int iVar11;
  undefined4 uVar12;
  int *piVar13;
  ulonglong uVar14;
  uint *puVar15;
  longlong lVar16;
  int iVar17;
  ulonglong uVar18;
  char *pcVar19;
  ulonglong uVar20;
  longlong lVar21;
  longlong lVar22;
  uint uVar23;
  char *pcVar24;
  longlong lVar25;
  longlong lVar26;
  uint uVar27;
  uint uVar28;
  uint uVar29;
  uint uVar30;
  uint uVar31;
  uint uVar32;
  uint uVar33;
  uint uVar34;
  undefined1 auStack_5e8 [32];
  int local_5c8;
  int local_5b8;
  int local_5b4;
  longlong local_5b0;
  undefined4 local_5a8;
  undefined4 local_5a4;
  undefined4 local_5a0;
  undefined *local_598;
  longlong local_590;
  undefined8 local_588;
  undefined8 uStack_580;
  undefined8 local_578;
  undefined8 uStack_570;
  undefined4 local_568;
  char local_558 [256];
  char local_458 [1024];
  ulonglong local_58;
  
  local_58 = DAT_1403020a0 ^ (ulonglong)auStack_5e8;
  iVar7 = DAT_1b4657c84 + 0x13;
  iVar8 = DAT_16b2a2ec0 + 630000;
  if (0x3b0d30 < DAT_16b2a2ec0 + 630000) {
    iVar8 = 0x3b0d30;
  }
  uVar20 = 0;
  uVar18 = (ulonglong)(DAT_1b4657c84 + 1);
  if (0x18 < DAT_1b4657c84 + 0x14) {
    uVar18 = uVar20;
  }
  DAT_1b4657c84 = (int)uVar18;
  local_5b8 = param_1;
  local_5b4 = iVar7;
  local_5b0 = param_3;
  if (param_1 == 1) {
    FUN_14012d310(iVar7,iVar8);
  }
  else if (param_1 == 0) {
    if (DAT_1760c55f4 == 0) {
      return;
    }
    if (DAT_1b46590bc == 0) {
      return;
    }
    uVar23 = 0x10000;
    uVar18 = uVar20;
    if (((0 < (int)DAT_1b46590bc) && (uVar18 = 0, 7 < DAT_1b46590bc)) && (1 < DAT_140302080)) {
      uVar23 = DAT_1b46590bc & 0x80000007;
      if ((int)uVar23 < 0) {
        uVar23 = (uVar23 - 1 | 0xfffffff8) + 1;
      }
      piVar13 = &DAT_1b46598dc;
      uVar14 = uVar20;
      uVar18 = uVar20;
      uVar27 = _DAT_1402791b0;
      uVar28 = _UNK_1402791b4;
      uVar29 = _UNK_1402791b8;
      uVar30 = _UNK_1402791bc;
      uVar31 = _DAT_1402791b0;
      uVar32 = _UNK_1402791b4;
      uVar33 = _UNK_1402791b8;
      uVar34 = _UNK_1402791bc;
      do {
        iVar11 = piVar13[0x103];
        uVar18 = (ulonglong)((int)uVar18 + 8);
        iVar17 = piVar13[-0x103];
        uVar14 = uVar14 + 8;
        iVar2 = *piVar13;
        iVar3 = piVar13[-0x206];
        iVar4 = piVar13[0x309];
        iVar5 = piVar13[0x50f];
        iVar6 = piVar13[0x40c];
        uVar27 = (uint)(iVar3 < (int)uVar27) * iVar3 | (iVar3 >= (int)uVar27) * uVar27;
        uVar28 = (uint)(iVar17 < (int)uVar28) * iVar17 | (iVar17 >= (int)uVar28) * uVar28;
        uVar29 = (uint)(iVar2 < (int)uVar29) * iVar2 | (iVar2 >= (int)uVar29) * uVar29;
        uVar30 = (uint)(iVar11 < (int)uVar30) * iVar11 | (iVar11 >= (int)uVar30) * uVar30;
        iVar11 = piVar13[0x206];
        uVar31 = (uint)(iVar11 < (int)uVar31) * iVar11 | (iVar11 >= (int)uVar31) * uVar31;
        uVar32 = (uint)(iVar4 < (int)uVar32) * iVar4 | (iVar4 >= (int)uVar32) * uVar32;
        uVar33 = (uint)(iVar6 < (int)uVar33) * iVar6 | (iVar6 >= (int)uVar33) * uVar33;
        uVar34 = (uint)(iVar5 < (int)uVar34) * iVar5 | (iVar5 >= (int)uVar34) * uVar34;
        piVar13 = piVar13 + 0x818;
      } while ((longlong)uVar14 < (longlong)(int)(DAT_1b46590bc - uVar23));
      uVar23 = ((int)uVar31 < (int)uVar27) * uVar31 | ((int)uVar31 >= (int)uVar27) * uVar27;
      uVar27 = ((int)uVar32 < (int)uVar28) * uVar32 | ((int)uVar32 >= (int)uVar28) * uVar28;
      uVar28 = ((int)uVar33 < (int)uVar29) * uVar33 | ((int)uVar33 >= (int)uVar29) * uVar29;
      uVar29 = ((int)uVar34 < (int)uVar30) * uVar34 | ((int)uVar34 >= (int)uVar30) * uVar30;
      uVar23 = ((int)uVar28 < (int)uVar23) * uVar28 | ((int)uVar28 >= (int)uVar23) * uVar23;
      uVar27 = ((int)uVar29 < (int)uVar27) * uVar29 | ((int)uVar29 >= (int)uVar27) * uVar27;
      uVar23 = ((int)uVar27 < (int)uVar23) * uVar27 | ((int)uVar27 >= (int)uVar23) * uVar23;
    }
    iVar11 = (int)uVar18;
    if (iVar11 < (int)DAT_1b46590bc) {
      puVar15 = &DAT_1b46590c4 + (longlong)iVar11 * 0x103;
      uVar18 = (ulonglong)(DAT_1b46590bc - iVar11);
      do {
        uVar27 = *puVar15;
        puVar15 = puVar15 + 0x103;
        if ((int)uVar23 <= (int)uVar27) {
          uVar27 = uVar23;
        }
        uVar23 = uVar27;
        uVar18 = uVar18 - 1;
      } while (uVar18 != 0);
    }
    iVar11 = FUN_14023b1b0();
    lVar22 = (longlong)iVar11 % (longlong)(int)DAT_1b46590bc;
    do {
      iVar11 = (int)lVar22;
      if ((int)(&DAT_1b46590c4)[(longlong)iVar11 * 0x103] <= (int)uVar23) break;
      iVar11 = FUN_14023b1b0();
      uVar27 = (int)uVar20 + 1;
      uVar20 = (ulonglong)uVar27;
      lVar22 = (longlong)iVar11 % (longlong)(int)DAT_1b46590bc;
      iVar11 = (int)lVar22;
    } while ((int)uVar27 < 0x400);
    lVar22 = (longlong)iVar11;
    (&DAT_1b46590c4)[lVar22 * 0x103] = (&DAT_1b46590c4)[lVar22 * 0x103] + 1;
    iVar11 = *(int *)(&DAT_1b46590c0 + lVar22 * 0x40c);
    DAT_1b4657dac = DAT_1b4657c80 + 100;
    FUN_140158ab0(local_558,"SECRET%02d.TXT");
    lVar26 = lVar22 * 0x2828;
    if ((int)(&DAT_181fefbcc)[lVar22 * 0xa0a] < 0x100) {
      *(int *)(&DAT_181fefbd0 + lVar26 + (longlong)(int)(&DAT_181fefbcc)[lVar22 * 0xa0a] * 0x18) =
           DAT_1b4657dac;
      pcVar24 = local_558;
      pcVar19 = &DAT_181fefbd4 + lVar26 + (longlong)(int)(&DAT_181fefbcc)[lVar22 * 0xa0a] * 0x18;
      do {
        cVar1 = *pcVar24;
        pcVar24 = pcVar24 + 1;
        *pcVar19 = cVar1;
        pcVar19 = pcVar19 + 1;
      } while (cVar1 != '\0');
      *(undefined4 *)
       (&DAT_181fefbe4 + lVar26 + (longlong)(int)(&DAT_181fefbcc)[lVar22 * 0xa0a] * 0x18) = 0;
      (&DAT_181fefbcc)[lVar22 * 0xa0a] = (&DAT_181fefbcc)[lVar22 * 0xa0a] + 1;
    }
    if ((&DAT_1760c5638)[(longlong)iVar11 * 0x36c3] != 4) {
      return;
    }
    FUN_14012e620(iVar11,iVar7,iVar8);
  }
  fVar10 = DAT_1402784b0;
  fVar9 = DAT_140278064;
  lVar22 = 0;
  if (0 < param_2) {
    local_598 = &DAT_182a7e1b0 + (longlong)iVar7 * 0x13d0;
    local_590 = (longlong)param_2;
    do {
      uVar20 = 0;
      iVar7 = *(int *)(local_5b0 + lVar22 * 4);
      lVar26 = (longlong)iVar7;
      piVar13 = &DAT_183ec0358 + lVar26 * 0x16f1;
      uVar18 = uVar20;
      do {
        uVar23 = (uint)uVar18;
        if (piVar13[-0x117] == 0) break;
        if (*piVar13 == 0) {
          uVar20 = uVar20 + 1;
          uVar23 = uVar23 + 1;
          break;
        }
        if (piVar13[0x117] == 0) {
          uVar20 = uVar20 + 2;
          uVar23 = uVar23 + 2;
          break;
        }
        if (piVar13[0x22e] == 0) {
          uVar20 = uVar20 + 3;
          uVar23 = uVar23 + 3;
          break;
        }
        uVar20 = uVar20 + 4;
        piVar13 = piVar13 + 0x45c;
        uVar23 = uVar23 + 4;
        uVar18 = (ulonglong)uVar23;
      } while ((longlong)uVar20 < 0x10);
      lVar25 = (longlong)(int)uVar23 * 0x45c + lVar26 * 0x5bc4;
      FUN_1401fcd30(&DAT_183ebfefc + lVar26 * 0x16f1 + (longlong)(int)uVar23 * 0x117,0,0x45c);
      iVar11 = DAT_1b4657d8c;
      lVar16 = (longlong)DAT_1b4657d8c;
      lVar21 = uVar20 * 0x45c + lVar26 * 0x5bc4;
      (&DAT_183ebff04)[lVar26 * 0x16f1 + uVar20 * 0x117] = DAT_1b4657c80;
      (&DAT_183ebff08)[lVar26 * 0x16f1 + uVar20 * 0x117] = local_5b8;
      iVar17 = DAT_1b4657dac;
      (&DAT_183ebff0c)[lVar26 * 0x16f1 + uVar20 * 0x117] = iVar11;
      *(int *)(&DAT_183ebff14 + lVar21) = iVar17;
      (&DAT_183ebfefc)[lVar26 * 0x16f1 + uVar20 * 0x117] = 1;
      *(undefined4 *)(&DAT_183ebff38 + lVar21) = (&DAT_182bbb194)[lVar16 * 0x6e0];
      iVar11 = FUN_14023b1b0();
      iVar11 = iVar11 % 5 + 4;
      local_5c8 = iVar11 * 0xfa;
      (&DAT_183ebff3c)[lVar26 * 0x16f1 + uVar20 * 0x117] = local_5c8;
      if (local_5b4 == 0x17) {
        local_5c8 = iVar11 * 1000;
        (&DAT_183ebff3c)[lVar26 * 0x16f1 + uVar20 * 0x117] = local_5c8;
      }
      uVar12 = DAT_1b4657db0;
      *(undefined4 *)(lVar21 + 0x183ebff54) = 0;
      (&DAT_183ebff48)[lVar26 * 0x16f1 + uVar20 * 0x117] = 0;
      (&DAT_183ebff40)[lVar26 * 0x16f1 + uVar20 * 0x117] = iVar8;
      *(undefined4 *)(&DAT_183ebff44 + lVar21) = uVar12;
      (&DAT_183ebff50)[lVar26 * 0x16f1 + uVar20 * 0x117] = (float)local_5c8 * fVar9;
      FUN_140158ab0(&DAT_183ebff58 + lVar25,
                    "Acquisition(%d):\nWe have received reports that Megacorp has disks containing\ninformation that will be beneficial to one of our subsidiaries.\nThe %s is in a town car driving around the city.\n\nValue:               $%d Bonus\n"
                    ,uVar23 + 1,local_598);
      iVar11 = (iVar8 / 0xe10) / 0x3c;
      iVar17 = (int)((ulonglong)((longlong)iVar11 * -0x2aaaaaab) >> 0x20);
      iVar11 = iVar11 + ((iVar17 >> 1) - (iVar17 >> 0x1f)) * 0xc;
      if (iVar11 == 0) {
        iVar11 = 0xc;
      }
      local_5c8 = (iVar8 / 0xe10) % 0x3c;
      iVar17 = local_5c8 / 10;
      local_5c8 = local_5c8 % 10;
      FUN_140158ab0(local_458,"\nThis mission expires at %d:%d%d\n\n",iVar11,
                    iVar17 + (iVar17 / 6 + (iVar17 >> 0x1f) +
                             (int)(((longlong)iVar17 / 6 + ((longlong)iVar17 >> 0x3f) & 0xffffffffU)
                                  >> 0x1f)) * -6);
      lVar16 = lVar25 + 0x183ebff57;
      do {
        pcVar24 = (char *)(lVar16 + 1);
        lVar16 = lVar16 + 1;
      } while (*pcVar24 != '\0');
      lVar21 = 0;
      do {
        cVar1 = local_458[lVar21];
        *(char *)(lVar16 + lVar21) = cVar1;
        lVar21 = lVar21 + 1;
      } while (cVar1 != '\0');
      FUN_140051bd0(iVar7,uVar23);
      local_568 = 0x3f800000;
      local_5a8 = (&DAT_183ebfd94)[lVar26 * 0x16f1];
      local_5a4 = (&DAT_183ebfd98)[lVar26 * 0x16f1];
      local_5a0 = (&DAT_183ebfd9c)[lVar26 * 0x16f1];
      local_588 = _DAT_140278d30;
      uStack_580 = _UNK_140278d38;
      local_578 = _DAT_140278d30;
      uStack_570 = _UNK_140278d38;
      FUN_14007b2a0(&local_588,(longlong)&uStack_580 + 4,
                    (float)(&DAT_183ebfd90)[lVar26 * 0x16f1] - fVar10);
      uVar12 = FUN_140054130(0x22,&local_5a8,0,&local_588);
      FUN_1400584b0(uVar12,&DAT_183ebff58 + lVar25);
      lVar22 = lVar22 + 1;
    } while (lVar22 < local_590);
  }
  DAT_1b4657c80 = DAT_1b4657c80 + 1;
  return;
}



===== FUN_1400590b0 @ 1400590b0 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400590b0(undefined8 param_1,int param_2,undefined4 *param_3)

{
  longlong lVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  int iVar6;
  int iVar7;
  longlong lVar8;
  int *piVar9;
  int iVar10;
  ulonglong uVar11;
  longlong lVar12;
  uint uVar13;
  int iVar14;
  ulonglong uVar15;
  uint uVar16;
  ulonglong uVar17;
  float fVar18;
  float fVar19;
  undefined1 auStack_108 [32];
  uint local_e8;
  undefined8 local_e0;
  float local_d8;
  int local_d0;
  int local_cc;
  undefined4 *local_c8;
  undefined8 local_c0;
  undefined8 uStack_b8;
  undefined8 local_b0;
  undefined8 uStack_a8;
  undefined4 local_a0;
  int local_98 [8];
  ulonglong local_78;
  
  if (2 < param_2) {
    local_78 = DAT_1403020a0 ^ (ulonglong)auStack_108;
    local_d0 = DAT_16b2a2ec0 + 0x65130;
    if (0x3b0d30 < DAT_16b2a2ec0 + 0x65130) {
      local_d0 = 0x3b0d30;
    }
    piVar9 = local_98;
    uVar17 = 0;
    iVar14 = DAT_1b4657c84 + 0x13;
    iVar6 = DAT_1b4657c84 + 0x14;
    uVar15 = uVar17;
    DAT_1b4657c84 = DAT_1b4657c84 + 1;
    local_cc = param_2;
    local_c8 = param_3;
    if (0x18 < iVar6) {
      DAT_1b4657c84 = 0;
    }
    do {
      iVar6 = 0;
      if (1 < (uint)uVar15) {
        iVar6 = 1000;
        *piVar9 = 1000;
        uVar11 = FUN_14023b1b0();
        if ((uVar11 & 1) == 0) {
          iVar6 = 0x5dc;
          *piVar9 = 0x5dc;
        }
        uVar11 = FUN_14023b1b0();
        if ((uVar11 & 3) == 0) {
          iVar6 = iVar6 + 500;
          *piVar9 = iVar6;
        }
        uVar11 = FUN_14023b1b0();
        if ((uVar11 & 3) == 0) {
          iVar6 = iVar6 + 500;
          *piVar9 = iVar6;
        }
        uVar11 = FUN_14023b1b0();
        if ((uVar11 & 3) == 0) {
          iVar6 = iVar6 + 500;
        }
        if (iVar14 == 0x17) {
          iVar6 = iVar6 * 5;
        }
        iVar6 = iVar6 * 2;
      }
      fVar3 = DAT_1402783f4;
      fVar2 = DAT_1402783a0;
      fVar18 = DAT_140278338;
      *piVar9 = iVar6;
      uVar13 = (uint)uVar15 + 1;
      piVar9 = piVar9 + 1;
      uVar11 = uVar17;
      uVar15 = (ulonglong)uVar13;
      iVar6 = DAT_1b4657d8c;
      uVar16 = DAT_1b4657c80;
    } while ((int)uVar13 < param_2);
    do {
      lVar8 = (longlong)(int)param_3[uVar11];
      local_c0 = _DAT_140278d30;
      uStack_b8 = _UNK_140278d38;
      local_b0 = _DAT_140278d30;
      uStack_a8 = _UNK_140278d38;
      local_a0 = 0x3f800000;
      fVar19 = ((float)(&DAT_183ebfd80)[lVar8 * 0x16f1] + (float)(&DAT_183ebfd8c)[lVar8 * 0x16f1]) *
               fVar18;
      local_d8 = fVar19 - fVar3;
      local_e0 = CONCAT44(((float)(&DAT_183ebfd7c)[lVar8 * 0x16f1] +
                          (float)(&DAT_183ebfd88)[lVar8 * 0x16f1]) * fVar18,
                          ((float)(&DAT_183ebfd78)[lVar8 * 0x16f1] +
                          (float)(&DAT_183ebfd84)[lVar8 * 0x16f1]) * fVar18 +
                          (float)(uVar16 & 7) * fVar2);
      if (uVar11 == 0) {
        iVar6 = FUN_140054130(iVar14,&local_e0,0,&local_c0);
        local_d8 = fVar19 + fVar3;
        uVar16 = DAT_1b4657c80;
        DAT_1b4657d8c = iVar6;
      }
      fVar5 = DAT_140278b1c;
      fVar4 = DAT_140278b18;
      fVar19 = DAT_140278064;
      uVar11 = uVar11 + 1;
      uVar15 = uVar17;
    } while ((longlong)uVar11 < 2);
    do {
      local_e8 = param_3[uVar17];
      lVar8 = (longlong)(int)local_e8;
      iVar14 = 0;
      lVar12 = 0;
      piVar9 = &DAT_183ec0358 + lVar8 * 0x16f1;
      do {
        if (piVar9[-0x117] == 0) break;
        if (*piVar9 == 0) {
          lVar12 = lVar12 + 1;
          iVar14 = iVar14 + 1;
          break;
        }
        if (piVar9[0x117] == 0) {
          lVar12 = lVar12 + 2;
          iVar14 = iVar14 + 2;
          break;
        }
        if (piVar9[0x22e] == 0) {
          lVar12 = lVar12 + 3;
          iVar14 = iVar14 + 3;
          break;
        }
        lVar12 = lVar12 + 4;
        piVar9 = piVar9 + 0x45c;
        iVar14 = iVar14 + 4;
      } while (lVar12 < 0x10);
      FUN_1401fcd30(&DAT_183ebfefc + lVar8 * 0x16f1 + (longlong)iVar14 * 0x117,0,0x45c);
      local_e0 = lVar12 * 0x45c;
      lVar1 = local_e0 + lVar8 * 0x5bc4;
      (&DAT_183ebfefc)[lVar8 * 0x16f1 + lVar12 * 0x117] = 1;
      (&DAT_183ebff04)[lVar8 * 0x16f1 + lVar12 * 0x117] = uVar16;
      (&DAT_183ebff0c)[lVar8 * 0x16f1 + lVar12 * 0x117] = iVar6;
      uVar13 = (uint)uVar15;
      if (uVar13 < 2) {
        fVar18 = 0.0;
        (&DAT_183ebff08)[lVar8 * 0x16f1 + lVar12 * 0x117] = 7;
        *(undefined4 *)(&DAT_183ebff38 + lVar1) = (&DAT_182bbb194)[(longlong)iVar6 * 0x6e0];
        (&DAT_183ebff3c)[lVar8 * 0x16f1 + lVar12 * 0x117] = 0;
        (&DAT_183ebff50)[lVar8 * 0x16f1 + lVar12 * 0x117] = 0;
        if (uVar13 != 0) goto LAB_14005945e;
      }
      else {
        if (uVar17 < 2) {
          (&DAT_183ebff08)[lVar8 * 0x16f1 + lVar12 * 0x117] = 8;
        }
        *(undefined4 *)(&DAT_183ebff38 + lVar1) = (&DAT_182bbb194)[(longlong)iVar6 * 0x6e0];
        iVar7 = local_98[uVar17];
        if (uVar13 < 3) {
          iVar7 = iVar7 * 2;
        }
        fVar18 = (float)iVar7;
        (&DAT_183ebff3c)[lVar8 * 0x16f1 + lVar12 * 0x117] = iVar7;
        (&DAT_183ebff50)[lVar8 * 0x16f1 + lVar12 * 0x117] = fVar18 * fVar19;
LAB_14005945e:
        fVar18 = fVar18 * fVar4;
      }
      *(float *)(lVar1 + 0x183ebff54) = fVar18;
      (&DAT_183ebff40)[lVar8 * 0x16f1 + lVar12 * 0x117] = local_d0;
      *(undefined4 *)(&DAT_183ebff18 + lVar1) = *local_c8;
      (&DAT_183ebff48)[lVar8 * 0x16f1 + lVar12 * 0x117] = 0;
      if (uVar13 == 2) {
        iVar6 = local_98[uVar17];
        iVar7 = FUN_14023b1b0();
        uVar15 = (ulonglong)(int)local_e8;
        iVar6 = iVar6 / 1000 + iVar7 % (iVar6 / 0x2ee + 1);
        if (iVar6 < 1) {
          iVar6 = 1;
        }
        iVar6 = iVar6 * 500;
        if ((int)(&DAT_19021f0c0)[uVar15 * 6] < 1) {
          iVar10 = 0;
          iVar7 = iVar6;
        }
        else {
          iVar10 = ((0x19 - (int)((float)(int)(&DAT_19021f0c0)[uVar15 * 6] *
                                  (float)(&DAT_19021f0c4)[uVar15 * 6] * (float)iVar6 * fVar5)) /
                   0x32) * 0x32;
          iVar7 = iVar10;
          if (iVar10 <= iVar6) {
            iVar7 = iVar6;
          }
        }
        *(int *)((longlong)&DAT_183ebff4c + local_e0 + lVar8 * 0x5bc4) = iVar10;
        (&DAT_19021f0d4)[uVar15 * 6] = (&DAT_19021f0d4)[uVar15 * 6] + iVar7;
        iVar6 = DAT_1b4657d8c;
        uVar16 = DAT_1b4657c80;
        (&DAT_183ebff48)[lVar8 * 0x16f1 + lVar12 * 0x117] = iVar7;
      }
      else {
        uVar15 = (ulonglong)local_e8;
      }
      FUN_1400519f0(uVar15 & 0xffffffff,iVar14);
      uVar17 = uVar17 + 1;
      param_3 = local_c8;
      uVar15 = (ulonglong)(uVar13 + 1);
    } while ((int)(uVar13 + 1) < local_cc);
    DAT_1b4657c80 = uVar16 + 1;
  }
  return;
}



===== FUN_14005a990 @ 14005a990 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_14005a990(undefined8 param_1,int param_2,longlong param_3)

{
  int iVar1;
  float fVar2;
  float fVar3;
  undefined4 uVar4;
  ulonglong uVar5;
  int *piVar6;
  int iVar7;
  ulonglong uVar8;
  int *piVar9;
  longlong lVar10;
  ulonglong uVar11;
  uint uVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  longlong lVar15;
  longlong lVar16;
  float fVar17;
  undefined1 auStack_f8 [32];
  int local_d8;
  undefined4 local_d4;
  int local_d0;
  longlong local_c8;
  undefined8 local_c0;
  float local_b8;
  undefined8 local_b0;
  undefined8 uStack_a8;
  undefined8 local_a0;
  undefined8 uStack_98;
  undefined4 local_90;
  int aiStack_88 [4];
  int local_78 [4];
  int aiStack_68 [4];
  ulonglong local_58;
  
  local_58 = DAT_1403020a0 ^ (ulonglong)auStack_f8;
  if (2 < param_2) {
    local_d8 = DAT_16b2a2ec0 + 0x65130;
    if (0x3b0d30 < DAT_16b2a2ec0 + 0x65130) {
      local_d8 = 0x3b0d30;
    }
    uVar8 = 0;
    lVar10 = 3;
    uVar13 = uVar8;
    local_c8 = param_3;
    do {
      iVar7 = 1000;
      *(undefined4 *)((longlong)aiStack_88 + uVar13) = 1000;
      iVar1 = DAT_1b4657c84 + 0x13;
      *(int *)((longlong)local_78 + uVar13) = iVar1;
      uVar5 = (ulonglong)(DAT_1b4657c84 + 1);
      if (0x18 < DAT_1b4657c84 + 0x14) {
        uVar5 = uVar8;
      }
      DAT_1b4657c84 = (int)uVar5;
      uVar5 = FUN_14023b1b0();
      if ((uVar5 & 1) == 0) {
        iVar7 = 0x5dc;
        *(undefined4 *)((longlong)aiStack_88 + uVar13) = 0x5dc;
      }
      uVar5 = FUN_14023b1b0();
      if ((uVar5 & 1) == 0) {
        iVar7 = iVar7 + 500;
        *(int *)((longlong)aiStack_88 + uVar13) = iVar7;
      }
      uVar5 = FUN_14023b1b0();
      if ((uVar5 & 3) == 0) {
        iVar7 = iVar7 + 500;
        *(int *)((longlong)aiStack_88 + uVar13) = iVar7;
      }
      uVar5 = FUN_14023b1b0();
      fVar17 = DAT_140278338;
      if ((uVar5 & 3) == 0) {
        iVar7 = iVar7 + 1000;
        *(int *)((longlong)aiStack_88 + uVar13) = iVar7;
      }
      if (iVar1 == 0x17) {
        *(int *)((longlong)aiStack_88 + uVar13) = iVar7 * 5;
      }
      uVar13 = uVar13 + 4;
      lVar10 = lVar10 + -1;
    } while (lVar10 != 0);
    do {
      local_90 = 0x3f800000;
      local_b0 = _DAT_140278d30;
      uStack_a8 = _UNK_140278d38;
      local_a0 = _DAT_140278d30;
      uStack_98 = _UNK_140278d38;
      lVar10 = (longlong)
               *(int *)((param_3 - (longlong)local_78) + (longlong)((longlong)local_78 + uVar8));
      local_c0 = CONCAT44(((float)(&DAT_183ebfd7c)[lVar10 * 0x16f1] +
                          (float)(&DAT_183ebfd88)[lVar10 * 0x16f1]) * fVar17,
                          ((float)(&DAT_183ebfd84)[lVar10 * 0x16f1] +
                          (float)(&DAT_183ebfd78)[lVar10 * 0x16f1]) * fVar17);
      local_b8 = ((float)(&DAT_183ebfd80)[lVar10 * 0x16f1] +
                 (float)(&DAT_183ebfd8c)[lVar10 * 0x16f1]) * fVar17;
      uVar4 = FUN_140054130(*(undefined4 *)((longlong)local_78 + uVar8),&local_c0,0,&local_b0);
      *(undefined4 *)((longlong)&DAT_1b4657d8c + uVar8) = uVar4;
      fVar3 = DAT_140278b18;
      fVar2 = DAT_140278064;
      *(int *)((longlong)aiStack_68 + uVar8) = DAT_1b4657c80;
      DAT_1b4657c80 = DAT_1b4657c80 + 1;
      uVar8 = uVar8 + 4;
    } while ((longlong)uVar8 < 0xc);
    if (param_2 != 0) {
      local_d0 = aiStack_88[2];
      local_d4 = aiStack_68[2];
      uVar13 = 0;
      local_c0 = (longlong)param_2;
      do {
        uVar5 = 0;
        iVar1 = *(int *)(param_3 + uVar13 * 4);
        lVar10 = (longlong)iVar1;
        uVar11 = uVar13 + 1;
        uVar8 = uVar11;
        if (2 < (longlong)uVar11) {
          uVar8 = uVar11 % 3;
        }
        piVar9 = &DAT_183ec0358 + lVar10 * 0x16f1;
        piVar6 = piVar9;
        uVar14 = uVar5;
        do {
          uVar12 = (uint)uVar5;
          if (piVar6[-0x117] == 0) break;
          if (*piVar6 == 0) {
            uVar14 = uVar14 + 1;
            uVar12 = uVar12 + 1;
            break;
          }
          if (piVar6[0x117] == 0) {
            uVar14 = uVar14 + 2;
            uVar12 = uVar12 + 2;
            break;
          }
          if (piVar6[0x22e] == 0) {
            uVar14 = uVar14 + 3;
            uVar12 = uVar12 + 3;
            break;
          }
          uVar14 = uVar14 + 4;
          piVar6 = piVar6 + 0x45c;
          uVar12 = uVar12 + 4;
          uVar5 = (ulonglong)uVar12;
        } while ((longlong)uVar14 < 0x10);
        FUN_1401fcd30(&DAT_183ebfefc + lVar10 * 0x16f1 + (longlong)(int)uVar12 * 0x117,0,0x45c);
        lVar15 = uVar14 * 0x45c + lVar10 * 0x5bc4;
        (&DAT_183ebff04)[lVar10 * 0x16f1 + uVar14 * 0x117] = aiStack_68[uVar8];
        (&DAT_183ebfefc)[lVar10 * 0x16f1 + uVar14 * 0x117] = 1;
        (&DAT_183ebff08)[lVar10 * 0x16f1 + uVar14 * 0x117] = 6 - (uint)(uVar13 < 3);
        iVar7 = (&DAT_1b4657d8c)[uVar8];
        (&DAT_183ebff0c)[lVar10 * 0x16f1 + uVar14 * 0x117] = iVar7;
        *(undefined4 *)(&DAT_183ebff44 + lVar15) = 0xffffffff;
        *(undefined4 *)(&DAT_183ebff38 + lVar15) = (&DAT_182bbb194)[(longlong)iVar7 * 0x6e0];
        iVar7 = aiStack_88[uVar8];
        (&DAT_183ebff3c)[lVar10 * 0x16f1 + uVar14 * 0x117] = iVar7;
        (&DAT_183ebff40)[lVar10 * 0x16f1 + uVar14 * 0x117] = local_d8;
        fVar17 = (float)iVar7;
        *(float *)(lVar15 + 0x183ebff54) = fVar17 * fVar3;
        (&DAT_183ebff50)[lVar10 * 0x16f1 + uVar14 * 0x117] = fVar17 * fVar2;
        uVar5 = 0;
        *(undefined4 *)(&DAT_183ebff18 + lVar15) = *(undefined4 *)(local_c8 + uVar8 * 4);
        (&DAT_183ebff48)[lVar10 * 0x16f1 + uVar14 * 0x117] = 0;
        FUN_1400519f0(iVar1,uVar12);
        if ((uVar13 == 0) && (uVar8 = FUN_14023b1b0(), uVar13 = uVar5, (uVar8 & 7) == 0)) {
          do {
            uVar12 = (uint)uVar5;
            if (piVar9[-0x117] == 0) break;
            if (*piVar9 == 0) {
              uVar13 = uVar13 + 1;
              uVar12 = uVar12 + 1;
              break;
            }
            if (piVar9[0x117] == 0) {
              uVar13 = uVar13 + 2;
              uVar12 = uVar12 + 2;
              break;
            }
            if (piVar9[0x22e] == 0) {
              uVar13 = uVar13 + 3;
              uVar12 = uVar12 + 3;
              break;
            }
            uVar13 = uVar13 + 4;
            piVar9 = piVar9 + 0x45c;
            uVar12 = uVar12 + 4;
            uVar5 = (ulonglong)uVar12;
          } while ((longlong)uVar13 < 0x10);
          FUN_1401fcd30(&DAT_183ebfefc + lVar10 * 0x16f1 + (longlong)(int)uVar12 * 0x117,0,0x45c);
          lVar16 = lVar10 * 0x5bc4 + uVar13 * 0x45c;
          (&DAT_183ebff04)[uVar13 * 0x117 + lVar10 * 0x16f1] = local_d4;
          iVar7 = DAT_1b4657d94;
          lVar15 = (longlong)DAT_1b4657d94;
          (&DAT_183ebff50)[uVar13 * 0x117 + lVar10 * 0x16f1] = (float)local_d0 * fVar2;
          *(float *)(lVar16 + 0x183ebff54) = (float)local_d0 * fVar3;
          (&DAT_183ebff0c)[uVar13 * 0x117 + lVar10 * 0x16f1] = iVar7;
          (&DAT_183ebfefc)[uVar13 * 0x117 + lVar10 * 0x16f1] = 1;
          (&DAT_183ebff08)[uVar13 * 0x117 + lVar10 * 0x16f1] = 6;
          (&DAT_183ebff3c)[uVar13 * 0x117 + lVar10 * 0x16f1] = local_d0;
          *(undefined4 *)(&DAT_183ebff38 + lVar16) = (&DAT_182bbb194)[lVar15 * 0x6e0];
          (&DAT_183ebff40)[uVar13 * 0x117 + lVar10 * 0x16f1] = local_d8;
          *(undefined4 *)(&DAT_183ebff18 + lVar16) = *(undefined4 *)(local_c8 + 8);
          (&DAT_183ebff48)[uVar13 * 0x117 + lVar10 * 0x16f1] = 0;
          FUN_1400519f0(iVar1,uVar12);
        }
        uVar13 = uVar11;
        param_3 = local_c8;
      } while ((longlong)uVar11 < local_c0);
    }
  }
  return;
}



===== FUN_14005d1f0 @ 14005d1f0 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_14005d1f0(float *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  float fVar3;
  uint uVar4;
  int iVar5;
  longlong lVar6;
  longlong lVar7;
  int iVar8;
  ulonglong uVar9;
  float fVar10;
  float local_88;
  float local_84;
  float local_80;
  undefined8 local_78;
  undefined8 uStack_70;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined4 local_58;
  
  fVar10 = param_1[1];
  local_88 = *param_1 - DAT_140278728;
  local_78 = _DAT_140278d30;
  uStack_70 = _UNK_140278d38;
  local_68 = _DAT_140278d30;
  uStack_60 = _UNK_140278d38;
  local_58 = DAT_1402783f4;
  local_80 = param_1[2];
  local_84 = fVar10;
  _DAT_181676084 = FUN_140054130(0x24,&local_88,0,&local_78);
  fVar3 = DAT_140278338;
  uVar9 = (ulonglong)_DAT_181676084;
  iVar8 = 0;
  (&DAT_182bbb190)[uVar9 * 0x6e0] = 1;
  (&DAT_182bbb4e8)[uVar9 * 0x6e0] = (&DAT_182bbb1d8)[uVar9 * 0x6e0];
  do {
    fVar10 = fVar10 + fVar3;
    local_84 = fVar10;
    uVar4 = FUN_140054130(0x24,&local_88,0,&local_78);
    if (iVar8 == 0xf) {
      (&DAT_144981704)[(longlong)(int)(&DAT_182bbb1d8)[(longlong)(int)uVar4 * 0x6e0] * 0x2f] =
           0x3c888889;
    }
    iVar5 = FUN_1400a4440();
    if (iVar5 == -1) {
      return;
    }
    lVar6 = (longlong)iVar5;
    lVar7 = lVar6 * 0xf4;
    FUN_1401fcd30(&DAT_1b4287c84 + lVar6 * 0x3d,0,0xf0);
    (&DAT_1b4287c80)[lVar6 * 0x3d] = 1;
    (&DAT_1b4287c84)[lVar6 * 0x3d] = 7;
    *(undefined8 *)(&DAT_1b4287c8c + lVar6 * 0x3d) = 0x10000;
    *(undefined4 *)(&DAT_1b4287d20 + lVar7) = 0xffffffff;
    uVar1 = (&DAT_182bbb1d8)[(longlong)(int)uVar9 * 0x6e0];
    (&DAT_1b4287d18)[lVar6 * 0x3d] = uVar1;
    uVar2 = (&DAT_182bbb1d8)[(longlong)(int)uVar4 * 0x6e0];
    (&DAT_1b4287d1c)[lVar6 * 0x3d] = uVar2;
    (&DAT_1b4287cf0)[lVar6 * 0x3d] = 0x3e800000;
    (&DAT_1b4287cf4)[lVar6 * 0x3d] = 0x3ec00000;
    (&DAT_1b4287cb8)[lVar6 * 0x3d] = 0;
    *(undefined8 *)(&DAT_1b4287cbc + lVar6 * 0x3d) = 0x3e800000;
    *(undefined4 *)(&DAT_1b4287cc4 + lVar7) = 0;
    *(undefined4 *)(&DAT_1b4287cc8 + lVar7) = 0xbe800000;
    *(undefined4 *)(&DAT_1b4287ccc + lVar7) = 0;
    iVar5 = FUN_1400a4440();
    if (iVar5 == -1) {
      return;
    }
    lVar6 = (longlong)iVar5;
    FUN_1401fcd30(&DAT_1b4287c84 + lVar6 * 0x3d,0);
    (&DAT_1b4287c80)[lVar6 * 0x3d] = 1;
    (&DAT_1b4287c84)[lVar6 * 0x3d] = 8;
    *(undefined8 *)(&DAT_1b4287c8c + lVar6 * 0x3d) = 0x10000;
    (&DAT_1b4287d18)[lVar6 * 0x3d] = uVar1;
    iVar8 = iVar8 + 1;
    (&DAT_1b4287d1c)[lVar6 * 0x3d] = uVar2;
    uVar9 = (ulonglong)uVar4;
    *(undefined4 *)(&DAT_1b4287d20 + lVar6 * 0xf4) = 0xffffffff;
    *(undefined8 *)(&DAT_1b4037c50 + lVar6 * 0x24) = 0;
    (&DAT_1b4037c58)[lVar6 * 0x24] = 0;
    (&DAT_1b4287cf0)[lVar6 * 0x3d] = 0;
    (&DAT_1b4287cf4)[lVar6 * 0x3d] = 0x3b800000;
  } while (iVar8 < 0x10);
  return;
}



===== FUN_14005d550 @ 14005d550 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_14005d550(int param_1)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  FILE *_File;
  ulonglong uVar6;
  longlong lVar7;
  ulonglong uVar8;
  longlong lVar9;
  longlong lVar10;
  undefined4 *puVar11;
  undefined1 auStack_298 [32];
  undefined4 local_278;
  undefined4 local_274;
  undefined4 local_270;
  int local_268 [2];
  undefined4 local_260;
  undefined4 uStack_25c;
  undefined4 uStack_258;
  undefined4 uStack_254;
  undefined4 local_250;
  undefined4 uStack_24c;
  undefined4 uStack_248;
  undefined4 uStack_244;
  undefined4 local_240;
  char local_238 [512];
  ulonglong local_38;
  
  local_38 = DAT_1403020a0 ^ (ulonglong)auStack_298;
  lVar10 = (longlong)param_1;
  iVar2 = _chdir("data");
  iVar3 = _chdir("mission");
  uVar8 = 0;
  uVar6 = uVar8;
  do {
    cVar1 = "test.srm"[uVar6];
    local_238[uVar6] = cVar1;
    uVar6 = uVar6 + 1;
  } while (cVar1 != '\0');
  _File = (FILE *)FUN_14020b8d8(local_238,&DAT_1402724dc);
  if (_File != (FILE *)0x0) {
    fread(local_268,4,1,_File);
    if (local_268[0] != 1) {
      fclose(_File);
      goto LAB_14005d6ce;
    }
    fread(&DAT_1b4277c40,4,1,_File);
    if (0 < DAT_1b4277c40) {
      do {
        iVar4 = (int)uVar8;
        fread(&DAT_1b4277c44 + (longlong)iVar4 * 4,4,3,_File);
        fread(&DAT_1b4277c50 + (longlong)iVar4 * 4,4,1,_File);
        uVar8 = (ulonglong)(iVar4 + 1U);
      } while ((int)(iVar4 + 1U) < DAT_1b4277c40);
    }
    fclose(_File);
  }
  if (iVar3 == 0) {
    _chdir("..");
  }
  if (iVar2 == 0) {
    _chdir("..");
  }
LAB_14005d6ce:
  iVar2 = 0;
  if (0 < (&DAT_1b4277c40)[lVar10 * 0x401]) {
    puVar11 = &DAT_1b4277c4c + lVar10 * 0x401;
    do {
      local_278 = puVar11[-2];
      local_274 = puVar11[-1];
      local_270 = *puVar11;
      local_260 = _DAT_140278d30;
      uStack_25c = _UNK_140278d34;
      uStack_258 = _UNK_140278d38;
      uStack_254 = _UNK_140278d3c;
      local_240 = 0x3f800000;
      local_250 = _DAT_140278d30;
      uStack_24c = _UNK_140278d34;
      uStack_248 = _UNK_140278d38;
      uStack_244 = _UNK_140278d3c;
      FUN_14007b2a0(_DAT_140278d30,&uStack_254,puVar11[1]);
      iVar3 = FUN_14005ccf0();
      lVar7 = (longlong)iVar3;
      lVar9 = lVar7 * 0x3834;
      (&DAT_151620ce4)[lVar7 * 0xe0d] = 7;
      FUN_140158ab0(&DAT_151620c64 + lVar7 * 0xe0d,&DAT_140270199);
      uStack_254 = _UNK_140278d3c;
      uStack_258 = _UNK_140278d38;
      uStack_25c = _UNK_140278d34;
      local_260 = _DAT_140278d30;
      (&DAT_151623978)[lVar7 * 0xe0d] = 1;
      (&DAT_15162440c)[lVar7 * 0xe0d] = 1;
      *(undefined4 *)((longlong)&DAT_151624420 + lVar9) = 3;
      *(undefined4 *)((longlong)&DAT_151624420 + lVar9 + 4) = 1;
      local_240 = 0x3f800000;
      local_250 = local_260;
      uStack_24c = uStack_25c;
      uStack_248 = uStack_258;
      uStack_244 = uStack_254;
      iVar4 = FUN_140053840(&local_278,&local_260,iVar3);
      uVar5 = puVar11[1];
      (&DAT_151620cfc)[lVar7 * 0xe0d] = iVar4;
      *(undefined4 *)(&DAT_151623988 + lVar9) = uVar5;
      (&DAT_18329e3a0)[(longlong)iVar4 * 0x1bfe] = uVar5;
      FUN_140051dc0(iVar3);
      uVar5 = FUN_140054130(1,&local_278,0,&local_260);
      FUN_1400e35d0(uVar5,0xffffffff,(&DAT_151620cfc)[lVar7 * 0xe0d]);
      uVar5 = FUN_140054130(2,&local_278,0,&local_260);
      FUN_1400e35d0(uVar5,0xffffffff,(&DAT_151620cfc)[lVar7 * 0xe0d]);
      uVar5 = FUN_140054130(2,&local_278,0,&local_260);
      FUN_1400e35d0(uVar5,0xffffffff,(&DAT_151620cfc)[lVar7 * 0xe0d]);
      uVar5 = FUN_140054130(2,&local_278,0,&local_260);
      FUN_1400e35d0(uVar5,0xffffffff,(&DAT_151620cfc)[lVar7 * 0xe0d]);
      iVar2 = iVar2 + 1;
      puVar11 = puVar11 + 4;
    } while (iVar2 < (&DAT_1b4277c40)[lVar10 * 0x401]);
  }
  return;
}



===== FUN_1400ef980 @ 1400ef980 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400ef980(int param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  longlong lVar4;
  int iVar5;
  longlong lVar6;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 local_18;
  
  lVar4 = (longlong)param_1;
  if ((int)(&DAT_151620cc8)[lVar4 * 0xe0d] < 10) {
    iVar1 = (&DAT_151620cfc)[lVar4 * 0xe0d];
    lVar6 = (longlong)iVar1;
    if (*(int *)(&DAT_1760d2028 +
                ((longlong)*(int *)(&DAT_151620dc8 + lVar4 * 0x3834) * 0x1241 + (longlong)param_2) *
                0xc) <= (int)(&DAT_151620cac)[lVar4 * 0xe0d]) {
      (&DAT_151620cac)[lVar4 * 0xe0d] =
           (&DAT_151620cac)[lVar4 * 0xe0d] -
           *(int *)(&DAT_1760d2028 +
                   ((longlong)*(int *)(&DAT_151620dc8 + lVar4 * 0x3834) * 0x1241 + (longlong)param_2
                   ) * 0xc);
      (&DAT_151620cc8)[lVar4 * 0xe0d] = (&DAT_151620cc8)[lVar4 * 0xe0d] + 1;
      if ((param_2 == 1) && (iVar1 != -1)) {
        local_48 = (&DAT_18329e388)[lVar6 * 0x1bfe];
        local_44 = (&DAT_18329e38c)[lVar6 * 0x1bfe];
        local_40 = (&DAT_18329e390)[lVar6 * 0x1bfe];
        local_18 = DAT_1402783f4;
        local_38 = _DAT_140278d30;
        uStack_34 = _UNK_140278d34;
        uStack_30 = _UNK_140278d38;
        uStack_2c = _UNK_140278d3c;
        local_28 = _DAT_140278d30;
        uStack_24 = _UNK_140278d34;
        uStack_20 = _UNK_140278d38;
        uStack_1c = _UNK_140278d3c;
        uVar2 = FUN_140054130(0x1e,&local_48,0,&local_38);
        iVar5 = 0;
        do {
          iVar3 = FUN_1400e35d0(uVar2,0xffffffff,iVar1,iVar5);
          if (iVar3 != 0) {
            return;
          }
          iVar5 = iVar5 + 1;
        } while (iVar5 < 7);
      }
    }
  }
  return;
}



===== FUN_1400f04f0 @ 1400f04f0 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400f04f0(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  longlong lVar5;
  int iVar6;
  longlong lVar7;
  longlong lVar8;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined4 local_28;
  
  lVar8 = (longlong)param_1;
  if ((int)(&DAT_151620cc8)[lVar8 * 0xe0d] < 0x14) {
    lVar5 = (longlong)*(int *)(&DAT_151620dc8 + lVar8 * 0x3834) * 0x1241 + (longlong)param_2;
    iVar1 = *(int *)(&DAT_1760d2028 + lVar5 * 0xc);
    if (iVar1 <= (int)(&DAT_151620cac)[lVar8 * 0xe0d]) {
      iVar2 = (&DAT_151620cfc)[lVar8 * 0xe0d];
      lVar7 = (longlong)iVar2;
      local_58 = (&DAT_18329e388)[lVar7 * 0x1bfe];
      local_54 = (&DAT_18329e38c)[lVar7 * 0x1bfe];
      local_50 = (&DAT_18329e390)[lVar7 * 0x1bfe];
      local_28 = DAT_1402783f4;
      local_48 = _DAT_140278d30;
      uStack_44 = _UNK_140278d34;
      uStack_40 = _UNK_140278d38;
      uStack_3c = _UNK_140278d3c;
      local_38 = _DAT_140278d30;
      uStack_34 = _UNK_140278d34;
      uStack_30 = _UNK_140278d38;
      uStack_2c = _UNK_140278d3c;
      uVar3 = FUN_140054130(*(undefined4 *)(&DAT_1760d2024 + lVar5 * 0xc),&local_58,0,&local_48);
      iVar6 = 2;
      do {
        iVar4 = FUN_1400e35d0(uVar3,0xffffffff,iVar2,iVar6);
        if (iVar4 != 0) break;
        iVar6 = iVar6 + 1;
      } while (iVar6 < 7);
      (&DAT_151620cac)[lVar8 * 0xe0d] = (&DAT_151620cac)[lVar8 * 0xe0d] - iVar1;
      (&DAT_151620cc8)[lVar8 * 0xe0d] = (&DAT_151620cc8)[lVar8 * 0xe0d] + 1;
      FUN_140051dc0(param_1);
    }
  }
  return;
}



===== FUN_1400be010 @ 1400be010 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400be010(void)

{
  float fVar1;
  float fVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  float *pfVar7;
  longlong lVar8;
  ulonglong uVar9;
  longlong lVar10;
  ulonglong uVar11;
  int *piVar12;
  uint *puVar13;
  uint uVar14;
  longlong lVar15;
  ulonglong uVar16;
  int iVar17;
  longlong lVar18;
  float *pfVar19;
  longlong lVar20;
  undefined4 *puVar21;
  longlong lVar22;
  longlong lVar23;
  ulonglong uVar24;
  undefined4 *puVar25;
  undefined4 uVar26;
  float fVar27;
  double dVar28;
  undefined8 uVar29;
  float fVar30;
  float fVar31;
  float fVar32;
  float fVar33;
  float fVar34;
  float fVar35;
  float fVar36;
  float fVar37;
  undefined4 uVar38;
  float fVar39;
  undefined4 uVar40;
  undefined4 uVar41;
  uint uVar42;
  float fVar43;
  float fVar44;
  float fVar45;
  float fVar46;
  undefined1 auStack_398 [32];
  float *local_378;
  float local_370;
  undefined4 *local_368;
  undefined4 *local_360;
  float local_358;
  float local_348;
  uint local_344;
  float local_340;
  float local_33c;
  float local_338;
  float local_334;
  float local_330;
  float local_32c;
  float *local_328;
  float local_320;
  float local_31c;
  float local_318;
  float *local_310;
  float local_308;
  float local_304;
  uint local_2f8;
  float local_2e8;
  longlong local_2e0;
  longlong local_2d8;
  longlong local_2d0;
  float local_2c8;
  float local_2c4;
  float local_2c0;
  float local_2b8;
  uint local_2a8;
  uint local_298;
  ulonglong local_290;
  float local_288;
  float local_284;
  float local_280;
  float local_278;
  float local_274;
  float local_270;
  float local_26c;
  float local_268;
  float local_264;
  double local_260;
  float local_258;
  float local_254;
  float local_250;
  longlong local_248;
  double local_240;
  undefined8 local_238;
  undefined8 local_230;
  double local_228;
  double local_220;
  float local_218;
  float local_214;
  float local_210;
  undefined8 local_208;
  undefined8 uStack_200;
  undefined8 local_1f8;
  undefined8 uStack_1f0;
  float local_1e8;
  char local_1d8 [256];
  ulonglong local_d8;
  
  local_d8 = DAT_1403020a0 ^ (ulonglong)auStack_398;
  uVar16 = 0;
  uVar24 = (ulonglong)(int)(uint)local_328;
  fVar43 = 0.0;
  uVar26 = (undefined4)DAT_1402785e8;
  uVar38 = (undefined4)((ulonglong)DAT_1402785e8 >> 0x20);
  uVar40 = (undefined4)DAT_140278620;
  uVar41 = (undefined4)((ulonglong)DAT_140278620 >> 0x20);
  local_2f8 = DAT_140279870;
  local_268 = DAT_140278094;
  local_264 = DAT_1402783e4;
  local_258 = DAT_14027836c;
  local_254 = DAT_140278b74;
  local_250 = DAT_1402781a4;
  local_260 = DAT_140278ca8;
  local_228 = DAT_1402785a0;
  local_274 = DAT_140278198;
  local_270 = DAT_1402780b4;
  local_240 = DAT_1402784d0;
  local_278 = DAT_140278058;
  local_26c = DAT_1402782f8;
  local_220 = DAT_140278cd8;
  local_304 = DAT_1402781ac;
  local_2a8 = DAT_140279840;
  local_348 = 0.0;
  local_2e8 = DAT_1402783f4;
  local_330 = DAT_140278148;
  local_230 = DAT_1402785e8;
  local_238 = DAT_140278620;
  local_308 = DAT_140278338;
  local_2b8 = DAT_14027824c;
  local_344 = 0;
  local_298 = (uint)local_328;
  local_248 = 0;
  fVar27 = DAT_140278c40;
  fVar35 = DAT_140278148;
  fVar33 = DAT_140278338;
  uVar42 = DAT_140279840;
  fVar39 = DAT_140278280;
  fVar46 = DAT_1402781bc;
  fVar44 = DAT_1402783f4;
  local_290 = uVar24;
  do {
    lVar20 = local_248;
    iVar17 = 0;
    uVar14 = (uint)uVar16;
    lVar23 = local_248 * 0x6ff8;
    if ((&DAT_18329e308)[local_248 * 0x1bfe] != 0) {
      (&DAT_18329e4f8)[local_248 * 0x1bfe] = 0;
      pfVar7 = (float *)&DAT_15f2d92c4;
      iVar4 = iVar17;
      do {
        if ((((((pfVar7[-0x31] != 0.0) && (iVar4 < 8)) &&
              (pfVar7[-5] < (float)(&DAT_18329e4d4)[local_248 * 0x1bfe] ||
               pfVar7[-5] == (float)(&DAT_18329e4d4)[local_248 * 0x1bfe])) &&
             (((float)(&DAT_18329e4c8)[local_248 * 0x1bfe] <= pfVar7[-2] &&
              (pfVar7[-3] < (float)(&DAT_18329e4dc)[local_248 * 0x1bfe] ||
               pfVar7[-3] == (float)(&DAT_18329e4dc)[local_248 * 0x1bfe])))) &&
            ((float)(&DAT_18329e4d0)[local_248 * 0x1bfe] <= *pfVar7)) &&
           ((pfVar7[-4] < (float)(&DAT_18329e4d8)[local_248 * 0x1bfe] ||
             pfVar7[-4] == (float)(&DAT_18329e4d8)[local_248 * 0x1bfe] &&
            ((float)(&DAT_18329e4cc)[local_248 * 0x1bfe] <= pfVar7[-1])))) {
          (&DAT_18329e4fc)[local_248 * 0x1bfe + (longlong)iVar4] = iVar17;
          iVar4 = (&DAT_18329e4f8)[local_248 * 0x1bfe] + 1;
          (&DAT_18329e4f8)[local_248 * 0x1bfe] = iVar4;
        }
        iVar17 = iVar17 + 1;
        pfVar7 = pfVar7 + 0x145a;
      } while (iVar17 < 0x200);
      local_2d0 = lVar23;
      FUN_1400b5e70(uVar16);
      uVar3 = DAT_183ebfd34;
      if ((DAT_183ebfd34 & 0x1f) == 0) {
        iVar17 = (&DAT_18329e328)[lVar20 * 0x1bfe];
        iVar4 = (&DAT_18329e324)[lVar20 * 0x1bfe];
        if (iVar17 < (int)(&DAT_18329e324)[lVar20 * 0x1bfe]) {
          (&DAT_18329e324)[lVar20 * 0x1bfe] = iVar17;
          iVar4 = iVar17;
        }
        if (0x7f < iVar17) {
          iVar17 = 0x7f;
        }
        if (iVar4 < iVar17) {
          (&DAT_18329e324)[lVar20 * 0x1bfe] = iVar4 + 1;
        }
      }
      fVar32 = (float)(&DAT_1832a4dc0)[lVar20 * 0x1bfe];
      fVar30 = (float)(&DAT_1832a4dbc)[lVar20 * 0x1bfe];
      fVar31 = (float)(&DAT_1832a4dc4)[lVar20 * 0x1bfe];
      fVar45 = fVar43;
      fVar37 = fVar43;
      fVar34 = fVar43;
      if (local_268 < SQRT(fVar30 * fVar30 + fVar32 * fVar32 + fVar31 * fVar31)) {
        fVar45 = fVar31 * local_264;
        fVar37 = fVar32 * local_264;
        fVar34 = fVar30 * local_264;
      }
      (&DAT_1832a4dbc)[lVar20 * 0x1bfe] = fVar34;
      (&DAT_1832a4dc0)[lVar20 * 0x1bfe] = fVar37;
      (&DAT_1832a4dc4)[lVar20 * 0x1bfe] = fVar45;
      if (0 < (int)(&DAT_18329e358)[lVar20 * 0x1bfe]) {
        (&DAT_18329e358)[lVar20 * 0x1bfe] = (&DAT_18329e358)[lVar20 * 0x1bfe] + -1;
      }
      iVar17 = (&DAT_18329e330)[lVar20 * 0x1bfe];
      lVar10 = (longlong)iVar17;
      iVar4 = (&DAT_18329e334)[lVar20 * 0x1bfe];
      lVar15 = (longlong)iVar4;
      local_2e0 = CONCAT44(local_2e0._4_4_,iVar4);
      fVar32 = fVar44;
      if (((&DAT_18329e51c)[lVar23] & 8) != 0) {
        fVar32 = local_258;
      }
      if (DAT_16b27ecc4 == 0) {
        fVar30 = (float)(&DAT_18329e420)[lVar20 * 0x1bfe];
        if (fVar32 - fVar35 <= fVar30) {
          if (fVar30 <= fVar32 + fVar35) {
            (&DAT_18329e420)[lVar20 * 0x1bfe] = fVar32;
          }
          else {
            (&DAT_18329e420)[lVar20 * 0x1bfe] = fVar30 - fVar35;
          }
        }
        else {
          (&DAT_18329e420)[lVar20 * 0x1bfe] = fVar30 + fVar35;
        }
      }
      if (((uVar3 & 7) == 0) && (0 < (int)(&DAT_18329e380)[lVar20 * 0x1bfe])) {
        (&DAT_18329e380)[lVar20 * 0x1bfe] = (&DAT_18329e380)[lVar20 * 0x1bfe] + -1;
      }
      if (0 < (int)(&DAT_18329e320)[lVar20 * 0x1bfe]) {
        (&DAT_18329e320)[lVar20 * 0x1bfe] = (&DAT_18329e320)[lVar20 * 0x1bfe] + -1;
      }
      if (iVar17 == -1) {
        fVar32 = (float)(&DAT_18329e3e0)[lVar20 * 0x1bfe];
        fVar30 = (float)(&DAT_18329e450)[lVar20 * 0x1bfe];
        fVar31 = fVar32;
        if ((double)CONCAT44(uVar38,uVar26) <= (double)(fVar30 - fVar32)) {
          fVar31 = (float)((double)fVar32 + (double)CONCAT44(uVar41,uVar40));
        }
        if ((double)CONCAT44(uVar38,uVar26) <= (double)(fVar31 - fVar30)) {
          fVar30 = (float)((double)fVar30 + (double)CONCAT44(uVar41,uVar40));
        }
        fVar31 = fVar31 - fVar30;
        fVar30 = (float)(&DAT_18329e440)[lVar20 * 0x1bfe];
        if ((double)CONCAT44(uVar38,uVar26) <= (double)(fVar31 - fVar30)) {
          fVar30 = (float)((double)fVar30 + (double)CONCAT44(uVar41,uVar40));
        }
        if ((double)CONCAT44(uVar38,uVar26) <= (double)(fVar30 - fVar31)) {
          fVar31 = (float)((double)fVar31 + (double)CONCAT44(uVar41,uVar40));
        }
        fVar30 = fVar30 - fVar31;
        (&DAT_18329e3c0)[lVar20 * 0x1bfe] = fVar30;
        fVar31 = fVar30;
        if (fVar30 <= local_254) {
          fVar31 = local_254;
        }
        if (local_250 < fVar31) {
          fVar31 = local_250;
        }
        if ((&DAT_18329e384)[lVar20 * 0x1bfe] == 0) {
          fVar31 = fVar43;
        }
        fVar30 = fVar30 - fVar31;
        if (local_260 <= (double)fVar30) {
          (&DAT_18329e400)[lVar20 * 0x1bfe] = fVar30;
          if (local_228 < (double)fVar30) {
            (&DAT_18329e400)[lVar20 * 0x1bfe] = 0x3fc90fdb;
          }
        }
        else {
          (&DAT_18329e400)[lVar20 * 0x1bfe] = 0xbfc90fdb;
        }
        if (DAT_183f7c960 == '\0') {
          fVar32 = fVar31 + fVar32;
          (&DAT_18329e3e0)[lVar20 * 0x1bfe] = fVar32;
          (&DAT_18329e3a0)[lVar20 * 0x1bfe] = fVar31 + (float)(&DAT_18329e3a0)[lVar20 * 0x1bfe];
        }
        fVar30 = (float)(&DAT_1832a4b84)[lVar20 * 0x1bfe] + (float)(&DAT_18329e3a0)[lVar20 * 0x1bfe]
        ;
        if ((float)((uint)((float)(&DAT_1832a4b84)[lVar20 * 0x1bfe] +
                          (float)(&DAT_18329e3a0)[lVar20 * 0x1bfe]) & uVar42) < local_278) {
          fVar30 = fVar43;
        }
        (&DAT_18329e3a0)[lVar20 * 0x1bfe] = fVar30;
        if ((float)((uint)fVar32 & uVar42) < local_278) {
          (&DAT_18329e3e0)[lVar20 * 0x1bfe] = 0;
          fVar32 = fVar43;
        }
        dVar28 = (double)fVar30;
        if (local_220 <= dVar28) {
          if ((double)CONCAT44(uVar38,uVar26) <= dVar28 && dVar28 != (double)CONCAT44(uVar38,uVar26)
             ) {
            dVar28 = dVar28 - (double)CONCAT44(uVar41,uVar40);
            goto LAB_1400be633;
          }
        }
        else {
          dVar28 = dVar28 + (double)CONCAT44(uVar41,uVar40);
LAB_1400be633:
          (&DAT_18329e3a0)[lVar20 * 0x1bfe] = (float)dVar28;
        }
        dVar28 = (double)fVar32;
        if (local_220 <= dVar28) {
          if ((double)CONCAT44(uVar38,uVar26) <= dVar28 && dVar28 != (double)CONCAT44(uVar38,uVar26)
             ) {
            dVar28 = dVar28 - (double)CONCAT44(uVar41,uVar40);
            goto LAB_1400be66d;
          }
        }
        else {
          dVar28 = (double)(float)(&DAT_18329e3e0)[lVar20 * 0x1bfe] +
                   (double)CONCAT44(uVar41,uVar40);
LAB_1400be66d:
          (&DAT_18329e3e0)[lVar20 * 0x1bfe] = (float)dVar28;
        }
        (&DAT_18329e3a4)[lVar20 * 0x1bfe] = (&DAT_18329e444)[lVar20 * 0x1bfe];
        fVar32 = fVar43;
        fVar30 = fVar43;
      }
      else {
        fVar32 = (float)(&DAT_18329e440)[lVar20 * 0x1bfe];
        (&DAT_18329e400)[lVar20 * 0x1bfe] = fVar32;
        fVar30 = (float)(&DAT_18329e444)[lVar20 * 0x1bfe];
        (&DAT_18329e404)[lVar20 * 0x1bfe] = fVar30;
      }
      local_310 = (float *)(&DAT_18329e440 + lVar20 * 0x1bfe);
      local_328 = (float *)(&DAT_18329e444 + lVar20 * 0x1bfe);
      (&DAT_18329e408)[lVar20 * 0x1bfe] = fVar32;
      iVar5 = 0;
      (&DAT_18329e40c)[lVar20 * 0x1bfe] = fVar30;
      if (((&DAT_18329e310)[lVar20 * 0x1bfe] != -1) &&
         (0 < (int)(&DAT_151620cbc)[(longlong)(int)(&DAT_18329e310)[lVar20 * 0x1bfe] * 0xe0d])) {
        iVar5 = (99 < (int)(&DAT_151620cbc)
                           [(longlong)(int)(&DAT_18329e310)[lVar20 * 0x1bfe] * 0xe0d]) + 1;
      }
      if ((&DAT_1832a52b4)[lVar20 * 0x1bfe] != iVar5) {
        (&DAT_18399dae0)[lVar20] = (&DAT_18399dae0)[lVar20] + 1;
        (&DAT_1832a52b4)[lVar20 * 0x1bfe] = iVar5;
      }
      iVar5 = (&DAT_18329e344)[lVar20 * 0x1bfe];
      (&DAT_1832a5048)[lVar20 * 0x1bfe] = 0x3f800000;
      local_32c = (float)iVar17;
      if (iVar5 < 0x19) {
        fVar32 = (float)iVar5 * local_274;
        dVar28 = (double)FUN_1402431f0((double)(float)((double)((float)(uVar14 * uVar14 * uVar14 +
                                                                        uVar3 & 0x1ff) * local_270)
                                                      * (double)CONCAT44(uVar41,uVar40)));
        fVar27 = DAT_140278c40;
        fVar32 = (float)(dVar28 * local_240 * (double)(fVar44 - fVar32) +
                        (double)(fVar32 * fVar33 + local_26c));
        if (iVar5 < 10) {
          fVar32 = fVar32 * ((float)iVar5 * local_304 + fVar33);
        }
        (&DAT_1832a5048)[lVar20 * 0x1bfe] = fVar32;
      }
      lVar18 = 0;
      local_334 = 0.0;
      if ((0 < (int)(&DAT_1832a4dd8)[lVar20 * 0x1bfe]) ||
         (0 < (int)(&DAT_1832a4e00)[lVar20 * 0x1bfe])) {
        local_334 = 1.4013e-45;
      }
      (&DAT_18329e35c)[lVar20 * 0x1bfe] = 0;
      lVar22 = lVar10 * 0x5168;
      pfVar19 = (float *)(&DAT_18329e5f0 + lVar20 * 0x1bfe);
      pfVar7 = pfVar19;
      do {
        pfVar7[0x1a] = 0.0;
        if ((lVar18 == 6) || (lVar18 == 9)) {
          *(undefined4 *)(&DAT_1449816f4 + (longlong)(int)pfVar7[-0x32] * 0xbc) = 0x3fc00000;
        }
        *pfVar7 = 1.0;
        if (((iVar17 != -1) &&
            (*(int *)(&DAT_192e9a684 + (longlong)(int)(&DAT_15f2d9204)[lVar10 * 0x145a] * 0x185c0)
             == 0)) && ((lVar18 == 0 || (9 < lVar18)))) {
          *pfVar7 = 0.0;
        }
        pfVar7[0x68] = 0.0;
        if ((lVar18 == 5) || (lVar18 == 8)) {
          *(undefined4 *)(&DAT_1449816f4 + (longlong)(int)pfVar7[0x1c] * 0xbc) = 0x3fc00000;
        }
        pfVar7[0x4e] = 1.0;
        if (((iVar17 != -1) &&
            (*(int *)(&DAT_192e9a684 + (longlong)(int)(&DAT_15f2d9204)[lVar10 * 0x145a] * 0x185c0)
             == 0)) && ((lVar18 == -1 || (9 < lVar18 + 1)))) {
          pfVar7[0x4e] = 0.0;
        }
        pfVar7[0xb6] = 0.0;
        if ((lVar18 == 4) || (lVar18 == 7)) {
          *(undefined4 *)(&DAT_1449816f4 + (longlong)(int)pfVar7[0x6a] * 0xbc) = 0x3fc00000;
        }
        pfVar7[0x9c] = 1.0;
        if (((iVar17 != -1) &&
            (*(int *)(&DAT_192e9a684 + (longlong)(int)(&DAT_15f2d9204)[lVar10 * 0x145a] * 0x185c0)
             == 0)) && ((lVar18 == -2 || (9 < lVar18 + 2)))) {
          pfVar7[0x9c] = 0.0;
        }
        pfVar7[0x104] = 0.0;
        if ((lVar18 == 3) || (lVar18 == 6)) {
          *(undefined4 *)(&DAT_1449816f4 + (longlong)(int)pfVar7[0xb8] * 0xbc) = 0x3fc00000;
        }
        pfVar7[0xea] = 1.0;
        if (((iVar17 != -1) &&
            (*(int *)(&DAT_192e9a684 + (longlong)(int)(&DAT_15f2d9204)[lVar10 * 0x145a] * 0x185c0)
             == 0)) && ((lVar18 == -3 || (9 < lVar18 + 3)))) {
          pfVar7[0xea] = 0.0;
        }
        pfVar7[0x152] = 0.0;
        if ((lVar18 == 2) || (lVar18 == 5)) {
          *(undefined4 *)(&DAT_1449816f4 + (longlong)(int)pfVar7[0x106] * 0xbc) = 0x3fc00000;
        }
        pfVar7[0x138] = 1.0;
        if (((iVar17 != -1) &&
            (*(int *)(&DAT_192e9a684 + (longlong)(int)(&DAT_15f2d9204)[lVar10 * 0x145a] * 0x185c0)
             == 0)) && ((lVar18 == -4 || (9 < lVar18 + 4)))) {
          pfVar7[0x138] = 0.0;
        }
        pfVar7[0x1a0] = 0.0;
        if ((lVar18 == 1) || (lVar18 == 4)) {
          *(undefined4 *)(&DAT_1449816f4 + (longlong)(int)pfVar7[0x154] * 0xbc) = 0x3fc00000;
        }
        pfVar7[0x186] = 1.0;
        if (((iVar17 != -1) &&
            (*(int *)(&DAT_192e9a684 + (longlong)(int)(&DAT_15f2d9204)[lVar10 * 0x145a] * 0x185c0)
             == 0)) && ((lVar18 == -5 || (9 < lVar18 + 5)))) {
          pfVar7[0x186] = 0.0;
        }
        pfVar7[0x1ee] = 0.0;
        if ((lVar18 == 0) || (lVar18 == 3)) {
          *(undefined4 *)(&DAT_1449816f4 + (longlong)(int)pfVar7[0x1a2] * 0xbc) = 0x3fc00000;
        }
        pfVar7[0x1d4] = 1.0;
        if (((iVar17 != -1) &&
            (*(int *)(&DAT_192e9a684 + (longlong)(int)(&DAT_15f2d9204)[lVar10 * 0x145a] * 0x185c0)
             == 0)) && ((lVar18 == -6 || (9 < lVar18 + 6)))) {
          pfVar7[0x1d4] = 0.0;
        }
        pfVar7[0x23c] = 0.0;
        if ((lVar18 == -1) || (lVar18 == 2)) {
          *(undefined4 *)(&DAT_1449816f4 + (longlong)(int)pfVar7[0x1f0] * 0xbc) = 0x3fc00000;
        }
        pfVar7[0x222] = 1.0;
        if (((iVar17 != -1) &&
            (*(int *)(&DAT_192e9a684 + (longlong)(int)(&DAT_15f2d9204)[lVar10 * 0x145a] * 0x185c0)
             == 0)) && ((lVar18 == -7 || (9 < lVar18 + 7)))) {
          pfVar7[0x222] = 0.0;
        }
        lVar18 = lVar18 + 8;
        pfVar7 = pfVar7 + 0x270;
      } while (lVar18 < 0x10);
      lVar18 = 4;
      do {
        fVar32 = pfVar19[-0x32];
        fVar33 = *pfVar19;
        (&DAT_1449816e8)[(longlong)(int)fVar32 * 0x2f] = 0;
        if (fVar43 == fVar33) {
          (&DAT_1449816e8)[(longlong)(int)fVar32 * 0x2f] = 1;
        }
        fVar32 = pfVar19[0x1c];
        fVar33 = pfVar19[0x4e];
        (&DAT_1449816e8)[(longlong)(int)fVar32 * 0x2f] = 0;
        if (fVar43 == fVar33) {
          (&DAT_1449816e8)[(longlong)(int)fVar32 * 0x2f] = 1;
        }
        fVar32 = pfVar19[0x6a];
        fVar33 = pfVar19[0x9c];
        (&DAT_1449816e8)[(longlong)(int)fVar32 * 0x2f] = 0;
        if (fVar43 == fVar33) {
          (&DAT_1449816e8)[(longlong)(int)fVar32 * 0x2f] = 1;
        }
        fVar32 = pfVar19[0xb8];
        fVar33 = pfVar19[0xea];
        (&DAT_1449816e8)[(longlong)(int)fVar32 * 0x2f] = 0;
        if (fVar43 == fVar33) {
          (&DAT_1449816e8)[(longlong)(int)fVar32 * 0x2f] = 1;
        }
        pfVar19 = pfVar19 + 0x138;
        lVar18 = lVar18 + -1;
      } while (lVar18 != 0);
      local_2d8 = lVar22;
      FUN_1400abb10(uVar16);
      local_1e8 = 1.0;
      local_208 = _DAT_140278d30;
      uStack_200 = _UNK_140278d38;
      local_1f8 = _DAT_140278d30;
      uStack_1f0 = _UNK_140278d38;
      FUN_14007b2a0(&local_208,(longlong)&uStack_200 + 4,(&DAT_18329e3a0)[lVar20 * 0x1bfe]);
      (&DAT_1832a4c8c)[lVar20 * 0x1bfe] = (&DAT_1832a4c88)[lVar20 * 0x1bfe];
      (&DAT_1832a4c88)[lVar20 * 0x1bfe] = 0;
      fVar32 = ((float)(&DAT_18329e530)[lVar20 * 0x1bfe] - (float)(&DAT_18329f3d0)[lVar20 * 0x1bfe])
               * uStack_1f0._4_4_ +
               ((float)(&DAT_18329e52c)[lVar20 * 0x1bfe] - (float)(&DAT_18329f3cc)[lVar20 * 0x1bfe])
               * (float)uStack_1f0 +
               ((float)(&DAT_18329e534)[lVar20 * 0x1bfe] - (float)(&DAT_18329f3d4)[lVar20 * 0x1bfe])
               * local_1e8 + local_2b8;
      fVar33 = fVar43;
      if ((fVar32 < fVar43) && (fVar33 = fVar32 * DAT_140278644, (double)fVar33 < local_260)) {
        fVar33 = fVar27;
      }
      (&DAT_1832a4d68)[lVar20 * 0x1bfe] = (&DAT_1832a4d64)[lVar20 * 0x1bfe];
      (&DAT_1832a4d64)[lVar20 * 0x1bfe] = 0;
      (&DAT_1832a4c88)[lVar20 * 0x1bfe] = fVar33;
      local_320 = (float)(&DAT_18329f774)[lVar20 * 0x1bfe];
      local_31c = (float)(&DAT_18329f778)[lVar20 * 0x1bfe];
      local_318 = (float)(&DAT_18329f77c)[lVar20 * 0x1bfe];
      local_218 = (float)(&DAT_18329e52c)[lVar20 * 0x1bfe] - local_320;
      local_214 = (float)(&DAT_18329e530)[lVar20 * 0x1bfe] - local_31c;
      fVar33 = local_218 * (float)uStack_1f0 + local_214 * uStack_1f0._4_4_ +
               ((float)(&DAT_18329e534)[lVar20 * 0x1bfe] - local_318) * local_1e8 + local_2b8;
      local_210 = fVar43;
      if ((fVar33 < fVar43) && (local_210 = fVar33 * DAT_140278644, (double)local_210 < local_260))
      {
        local_210 = fVar27;
      }
      (&DAT_1832a4d64)[lVar20 * 0x1bfe] = local_210;
      if (iVar17 == -1) {
        if ((((0 < (int)(&DAT_18329e344)[lVar20 * 0x1bfe]) &&
             ((&DAT_18329e360)[lVar20 * 0x1bfe] == 0)) && (((&DAT_18329e51c)[lVar23] & 4) != 0)) &&
           ((int)(&DAT_1832a4a3c)[lVar20 * 0x1bfe] < 0x20)) {
          (&DAT_1832a4a3c)[lVar20 * 0x1bfe] = (&DAT_1832a4a3c)[lVar20 * 0x1bfe] + 1;
        }
        uVar11 = 0;
        puVar25 = &DAT_18329e658 + lVar20 * 0x1bfe;
        uVar9 = uVar11;
        do {
          *puVar25 = 0;
          if (((0 < (int)(&DAT_18329e344)[lVar20 * 0x1bfe]) &&
              (0x31 < (int)(&DAT_1832a5058)[lVar20 * 0x1bfe])) &&
             (((&DAT_18329e360)[lVar20 * 0x1bfe] != 2 && ((uVar9 == 0xc || (uVar9 == 0xf)))))) {
            uVar24 = (ulonglong)(uVar9 == 0xf);
            FUN_1400b5460(uVar16,uVar24);
            local_290 = (ulonglong)(uVar9 == 0xf);
          }
          fVar27 = local_308;
          uVar9 = uVar9 + 1;
          puVar25 = puVar25 + 0x4e;
        } while ((longlong)uVar9 < 0x10);
        local_298 = (uint)uVar24;
        if ((((((&DAT_18329e360)[lVar20 * 0x1bfe] != 3) &&
              (0 < (int)(&DAT_1832a4a3c)[lVar20 * 0x1bfe])) && (((&DAT_18329e51c)[lVar23] & 4) == 0)
             ) && (((&DAT_1832a4c14)[lVar20 * 0x1bfe] == 1 &&
                   ((&DAT_1832a4cf0)[lVar20 * 0x1bfe] == 1)))) &&
           (((&DAT_18329f4f8)[lVar20 * 0x1bfe] != 0 && ((&DAT_18329f8a0)[lVar20 * 0x1bfe] != 0)))) {
          (&DAT_18329e360)[lVar20 * 0x1bfe] = 3;
          fVar33 = DAT_18399e404;
          fVar35 = DAT_18399e3a4;
          fVar43 = DAT_18399e2d8;
          (&DAT_1832a4c14)[lVar20 * 0x1bfe + local_290 * 0x37] = 1;
          (&DAT_1832a4bbc)[lVar20 * 0x1bfe] = local_298 ^ 1;
          (&DAT_1832a4a48)[lVar20 * 0x1bfe] = (&DAT_18329e474)[lVar20 * 0x1bfe];
          (&DAT_1832a4a4c)[lVar20 * 0x1bfe] = (&DAT_18329e470)[lVar20 * 0x1bfe];
          (&DAT_1832a4b58)[lVar20 * 0x1bfe] = 0x4016cbe4;
          (&DAT_1832a4c1c)[lVar20 * 0x1bfe] = 0;
          (&DAT_1832a4cf8)[lVar20 * 0x1bfe] = 0;
          (&DAT_1832a4c20)[lVar20 * 0x1bfe] =
               (fVar35 * (float)(&DAT_18329f2d0)[lVar20 * 0x1bfe] +
               (float)(&DAT_18329f294)[lVar20 * 0x1bfe]) -
               (fVar43 * (float)(&DAT_18329e55c)[lVar20 * 0x1bfe] +
               (float)(&DAT_18329e52c)[lVar20 * 0x1bfe]);
          (&DAT_1832a4c24)[lVar20 * 0x1bfe] =
               (fVar35 * (float)(&DAT_18329f2d4)[lVar20 * 0x1bfe] +
               (float)(&DAT_18329f298)[lVar20 * 0x1bfe]) -
               (fVar43 * (float)(&DAT_18329e560)[lVar20 * 0x1bfe] +
               (float)(&DAT_18329e530)[lVar20 * 0x1bfe]);
          fVar39 = DAT_18399e4d0;
          (&DAT_1832a4c28)[lVar20 * 0x1bfe] =
               (fVar35 * (float)(&DAT_18329f2d8)[lVar20 * 0x1bfe] +
               (float)(&DAT_18329f29c)[lVar20 * 0x1bfe]) -
               (fVar43 * (float)(&DAT_18329e564)[lVar20 * 0x1bfe] +
               (float)(&DAT_18329e534)[lVar20 * 0x1bfe]);
          local_320 = fVar39 * (float)(&DAT_18329f678)[lVar20 * 0x1bfe] +
                      (float)(&DAT_18329f63c)[lVar20 * 0x1bfe];
          local_31c = fVar39 * (float)(&DAT_18329f67c)[lVar20 * 0x1bfe] +
                      (float)(&DAT_18329f640)[lVar20 * 0x1bfe];
          local_318 = fVar39 * (float)(&DAT_18329f680)[lVar20 * 0x1bfe] +
                      (float)(&DAT_18329f644)[lVar20 * 0x1bfe];
          local_218 = fVar33 * (float)(&DAT_18329e55c)[lVar20 * 0x1bfe] +
                      (float)(&DAT_18329e52c)[lVar20 * 0x1bfe];
          local_214 = fVar33 * (float)(&DAT_18329e560)[lVar20 * 0x1bfe] +
                      (float)(&DAT_18329e530)[lVar20 * 0x1bfe];
          local_210 = fVar33 * (float)(&DAT_18329e564)[lVar20 * 0x1bfe] +
                      (float)(&DAT_18329e534)[lVar20 * 0x1bfe];
          (&DAT_1832a4cfc)[lVar20 * 0x1bfe] = local_320 - local_218;
          (&DAT_1832a4d00)[lVar20 * 0x1bfe] = local_31c - local_214;
          (&DAT_1832a4d04)[lVar20 * 0x1bfe] = local_318 - local_210;
          fVar35 = local_330;
          uVar42 = local_2a8;
        }
        fVar33 = DAT_140278bd0;
        pfVar7 = (float *)(&DAT_18329e548 + lVar20 * 0x1bfe);
        piVar12 = (int *)((longlong)&DAT_18399df34 + 4);
        uVar24 = uVar11;
        do {
          uVar14 = (uint)uVar11;
          if (((uVar14 != 0xc) && (uVar14 != 0xf)) &&
             (((uVar14 != 0xb && (uVar14 != 0xe)) ||
              ((((&DAT_18329e360)[lVar20 * 0x1bfe] == 2 ||
                ((int)(&DAT_18329e344)[lVar20 * 0x1bfe] < 1)) ||
               ((int)(&DAT_1832a5058)[lVar20 * 0x1bfe] < 0x32)))))) {
            fVar43 = fVar46;
            if ((uVar14 != 3) && (fVar43 = fVar35, uVar14 < 3)) {
              fVar43 = DAT_140278178;
            }
            fVar35 = (float)piVar12[1];
            lVar10 = (longlong)*piVar12 + uVar24;
            local_320 = pfVar7[-7];
            local_31c = pfVar7[-6];
            local_318 = pfVar7[-5];
            fVar30 = fVar35 * fVar33;
            fVar39 = (float)(&DAT_18329e55c)[lVar10 * 3 + lVar20 * 0x1bfe];
            fVar44 = (float)(&DAT_18329e560)[lVar10 * 3 + lVar20 * 0x1bfe];
            fVar32 = (float)(&DAT_18329e564)[lVar10 * 3 + lVar20 * 0x1bfe];
            local_218 = fVar30 * fVar39 + local_320;
            local_214 = fVar30 * fVar44 + local_31c;
            local_210 = fVar30 * fVar32 + local_318;
            if ((((&DAT_18329e360)[lVar20 * 0x1bfe] == 0) &&
                (0 < (int)(&DAT_18329e344)[lVar20 * 0x1bfe])) &&
               ((0x31 < (int)(&DAT_1832a5058)[lVar20 * 0x1bfe] &&
                ((uVar14 == 10 || (uVar14 == 0xd)))))) {
              fVar30 = fVar35 * DAT_140278b90;
              local_218 = fVar30 * fVar39 + local_320;
              local_214 = fVar30 * fVar44 + local_31c;
              local_210 = fVar30 * fVar32 + local_318;
            }
            fVar35 = fVar35 * fVar27;
            fVar30 = (float)piVar12[2];
            local_31c = fVar35 * fVar44 + local_31c;
            local_320 = fVar35 * fVar39 + local_320;
            local_318 = fVar35 * fVar32 + local_318;
            iVar17 = FUN_140033fe0(&local_218,&local_320,fVar30,1);
            if (iVar17 != 0) {
              if (((_DAT_140278460 <
                    (double)(float)((uint)(DAT_151a8488c * pfVar7[-1] + DAT_151a84890 * *pfVar7 +
                                          DAT_151a84894 * pfVar7[1]) & uVar42)) &&
                  (DAT_151a848d4 != -1)) && (DAT_151a848d8 != -1)) {
                local_368 = &DAT_18329e52c + uVar16 * 0x1bfe + uVar11 * 0x4e;
                local_360 = &DAT_18329e544 + uVar16 * 0x1bfe + uVar11 * 0x4e;
                local_370 = DAT_151a848f4;
                local_378 = (float *)CONCAT44(local_378._4_4_,DAT_151a848f0);
                FUN_14000b7d0(DAT_151a848d4,DAT_151a848d8,DAT_151a848dc,DAT_151a848e0);
              }
              if ((&DAT_18329e33c)[lVar20 * 0x1bfe] == 0) {
                if (uVar14 == 3) {
                  if (((&DAT_18329e348)[lVar20 * 0x1bfe] == 0) &&
                     (_DAT_1402784d8 <
                      (double)(float)((uint)(DAT_151a8488c * pfVar7[-1] + DAT_151a84890 * *pfVar7 +
                                            DAT_151a84894 * pfVar7[1]) & uVar42))) {
                    (&DAT_18329e344)[lVar20 * 0x1bfe] = (&DAT_18329e344)[lVar20 * 0x1bfe] + -0x78;
                  }
                }
                else if (uVar14 == 0) {
                  if (((&DAT_18329e348)[lVar20 * 0x1bfe] == 0) &&
                     (_DAT_1402784c0 <
                      (double)(float)((uint)(DAT_151a8488c * pfVar7[-1] + DAT_151a84890 * *pfVar7 +
                                            DAT_151a84894 * pfVar7[1]) & uVar42))) {
                    (&DAT_18329e344)[lVar20 * 0x1bfe] = (&DAT_18329e344)[lVar20 * 0x1bfe] + -0x78;
                  }
                }
                else if (uVar14 == 2) {
                  if (((&DAT_18329e348)[lVar20 * 0x1bfe] == 0) &&
                     (_DAT_1402784c0 <
                      (double)(float)((uint)(DAT_151a8488c * pfVar7[-1] + DAT_151a84890 * *pfVar7 +
                                            DAT_151a84894 * pfVar7[1]) & uVar42))) {
                    (&DAT_18329e344)[lVar20 * 0x1bfe] = (&DAT_18329e344)[lVar20 * 0x1bfe] + -0x78;
                  }
                }
                else if (((uVar14 == 10) || (uVar14 == 0xd)) &&
                        (((&DAT_18329e348)[lVar20 * 0x1bfe] == 0 &&
                         (_DAT_1402784d8 <
                          (double)(float)((uint)(DAT_151a8488c * pfVar7[-1] +
                                                 DAT_151a84890 * *pfVar7 + DAT_151a84894 * pfVar7[1]
                                                ) & uVar42))))) {
                  if (uVar14 == 10) {
                    (&DAT_1832a5084)[lVar20 * 0x1bfe] = 0;
                  }
                  else if (uVar14 == 0xd) {
                    (&DAT_1832a508c)[lVar20 * 0x1bfe] = 0;
                  }
                }
              }
              uVar26 = DAT_1402783b0;
              if ((&DAT_18329e360)[lVar20 * 0x1bfe] == 2) {
                uVar26 = DAT_1402781f0;
              }
              lVar10 = (longlong)(int)pfVar7[-8];
              local_218 = DAT_151a84880 - (float)(&DAT_1449816f8)[lVar10 * 0x2f];
              local_214 = DAT_151a84884 - (float)(&DAT_1449816fc)[lVar10 * 0x2f];
              local_210 = DAT_151a84888 - (float)(&DAT_144981700)[lVar10 * 0x2f];
              if (DAT_151a84908 == -1) {
                local_368 = (undefined4 *)CONCAT44(local_368._4_4_,fVar46);
                local_378 = (float *)CONCAT44(local_378._4_4_,uVar26);
                local_370 = fVar43;
                FUN_140005160(lVar10,&local_218,&DAT_151a8488c,fVar30 - DAT_151a8489c);
              }
              (&DAT_18329e35c)[lVar20 * 0x1bfe] = 1;
            }
          }
          fVar43 = local_348;
          uVar11 = (ulonglong)(uVar14 + 1);
          uVar24 = uVar24 + 0x1a;
          piVar12 = piVar12 + 0x19;
          pfVar7 = pfVar7 + 0x4e;
          fVar35 = local_330;
        } while ((int)(uVar14 + 1) < 0x10);
        if ((int)(&DAT_18329e33c)[lVar20 * 0x1bfe] < 1) {
          (&DAT_18329e338)[lVar20 * 0x1bfe] = 0xffffffff;
        }
        else {
          (&DAT_18329e33c)[lVar20 * 0x1bfe] = (&DAT_18329e33c)[lVar20 * 0x1bfe] + -1;
        }
        iVar17 = 0;
        if (0 < (int)(&DAT_18329e4f8)[lVar20 * 0x1bfe]) {
          puVar25 = &DAT_18329e4fc + lVar20 * 0x1bfe;
          do {
            FUN_1400b3a80(uVar16,*puVar25);
            iVar17 = iVar17 + 1;
            puVar25 = puVar25 + 1;
          } while (iVar17 < (int)(&DAT_18329e4f8)[lVar20 * 0x1bfe]);
        }
        (&DAT_18329e388)[lVar20 * 0x1bfe] = (&DAT_18329e52c)[lVar20 * 0x1bfe];
        (&DAT_18329e38c)[lVar20 * 0x1bfe] = (&DAT_18329e530)[lVar20 * 0x1bfe];
        (&DAT_18329e390)[lVar20 * 0x1bfe] = (&DAT_18329e534)[lVar20 * 0x1bfe];
      }
      else {
        uVar26 = FUN_14023f704();
        (&DAT_18329e3a0)[lVar20 * 0x1bfe] = uVar26;
        (&DAT_18329e3a4)[lVar20 * 0x1bfe] = 0;
        (&DAT_1832a4c14)[lVar20 * 0x1bfe] = 0;
        (&DAT_1832a4cf0)[lVar20 * 0x1bfe] = 0;
        if (900 < (int)(&DAT_18329e358)[lVar20 * 0x1bfe]) {
          (&DAT_18329e358)[lVar20 * 0x1bfe] = 900;
        }
        if (((&DAT_18329e334)[lVar20 * 0x1bfe] == 0) &&
           (((*(int *)(&DAT_15f2dc848 + lVar22) == -1 ||
             ((&DAT_15fd16264)[(longlong)*(int *)(&DAT_15f2dc848 + lVar22) * 0x17f] != uVar14)) &&
            ((&DAT_18329e340)[lVar20 * 0x1bfe] != 0)))) {
          fVar27 = (float)(&DAT_18329e43c)[lVar20 * 0x1bfe];
          if (fVar43 < (float)(&DAT_18329e43c)[lVar20 * 0x1bfe]) {
            fVar27 = fVar43;
          }
          *(float *)(&DAT_15f2dc80c + lVar22) = fVar27;
          if (((((&DAT_1832a4dd8)[lVar20 * 0x1bfe] == 0) ||
               ((&DAT_182bbb194)[(longlong)(int)(&DAT_1832a4ddc)[lVar20 * 0x1bfe] * 0x6e0] == 0xf))
              || ((&DAT_182bbb194)[(longlong)(int)(&DAT_1832a4ddc)[lVar20 * 0x1bfe] * 0x6e0] == 0x19
                 )) && ((((&DAT_1832a4e00)[lVar20 * 0x1bfe] == 0 ||
                         ((&DAT_182bbb194)[(longlong)(int)(&DAT_1832a4e04)[lVar20 * 0x1bfe] * 0x6e0]
                          == 0xf)) ||
                        ((&DAT_182bbb194)[(longlong)(int)(&DAT_1832a4e04)[lVar20 * 0x1bfe] * 0x6e0]
                         == 0x19)))) {
            *(undefined4 *)(&DAT_15f2dc800 + lVar22) = (&DAT_18329e430)[lVar20 * 0x1bfe];
            (&DAT_15f2dc804)[lVar10 * 0x145a] = (&DAT_18329e434)[lVar20 * 0x1bfe];
            *(undefined4 *)(&DAT_15f2dc808 + lVar22) = (&DAT_18329e438)[lVar20 * 0x1bfe];
            *(undefined4 *)(&DAT_15f2dc80c + lVar22) = (&DAT_18329e43c)[lVar20 * 0x1bfe];
            *(undefined4 *)(&DAT_15f2dc820 + lVar22) = *(undefined4 *)(&DAT_18329e51c + lVar23);
            *(undefined4 *)(&DAT_15f2d9214 + lVar22) = (&DAT_18329e310)[lVar20 * 0x1bfe];
          }
          if (*(int *)(&DAT_15f2dc848 + lVar22) != -1) {
            (&DAT_15fd162dc)[(longlong)*(int *)(&DAT_15f2dc848 + lVar22) * 0x17f] = 2;
          }
        }
        if (*(int *)(&DAT_192e9a684 + (longlong)(int)(&DAT_15f2d9204)[lVar10 * 0x145a] * 0x185c0) !=
            0) {
          lVar23 = 2;
          piVar12 = &DAT_18329f290 + lVar20 * 0x1bfe;
          fVar27 = (float)(&DAT_15f2de2e4)[lVar10 * 0x145a + lVar15 * 3];
          fVar43 = (float)(&DAT_15f2de2e0)[lVar10 * 0x145a + lVar15 * 3];
          fVar35 = (float)(&DAT_15f2de2e8)[lVar10 * 0x145a + lVar15 * 3];
          fVar46 = fVar43 * (float)(&DAT_15f2d9244)[lVar10 * 0x145a] +
                   (float)(&DAT_15f2d922c)[lVar10 * 0x145a] +
                   fVar27 * (float)(&DAT_15f2d9250)[lVar10 * 0x145a] +
                   fVar35 * (float)(&DAT_15f2d925c)[lVar10 * 0x145a];
          fVar33 = fVar43 * (float)(&DAT_15f2d924c)[lVar10 * 0x145a] +
                   (float)(&DAT_15f2d9234)[lVar10 * 0x145a] +
                   fVar27 * (float)(&DAT_15f2d9258)[lVar10 * 0x145a] +
                   fVar35 * (float)(&DAT_15f2d9264)[lVar10 * 0x145a];
          fVar43 = fVar43 * (float)(&DAT_15f2d9248)[lVar10 * 0x145a] +
                   (float)(&DAT_15f2d9230)[lVar10 * 0x145a] +
                   fVar27 * (float)(&DAT_15f2d9254)[lVar10 * 0x145a] +
                   fVar35 * (float)(&DAT_15f2d9260)[lVar10 * 0x145a];
          fVar27 = local_348;
          fVar35 = DAT_140278224;
          local_340 = fVar43;
          local_33c = fVar46;
          local_338 = fVar33;
          do {
            fVar44 = DAT_140278224;
            local_288 = (float)(&DAT_15f2d9250)[lVar10 * 0x145a];
            local_284 = (float)(&DAT_15f2d9254)[lVar10 * 0x145a];
            local_280 = (float)(&DAT_15f2d9258)[lVar10 * 0x145a];
            lVar18 = (longlong)*piVar12;
            fVar32 = (float)(&DAT_1449816f8)[lVar18 * 0x2f] -
                     (float)(&DAT_144981728)[lVar18 * 0x2f] * fVar39;
            fVar30 = (float)(&DAT_1449816fc)[lVar18 * 0x2f] -
                     (float)(&DAT_14498172c)[lVar18 * 0x2f] * fVar39;
            fVar39 = (float)(&DAT_144981700)[lVar18 * 0x2f] -
                     (float)(&DAT_144981730)[lVar18 * 0x2f] * fVar39;
            fVar31 = fVar30 - local_284 * fVar35;
            fVar35 = fVar32 - local_288 * fVar35;
            fVar45 = fVar39 - local_280 * DAT_140278224;
            if ((fVar27 <= (fVar43 - fVar31) * local_284 + (fVar46 - fVar35) * local_288 +
                           (fVar33 - fVar45) * local_280) &&
               (fVar37 = (fVar43 - fVar30) * local_284 + (fVar46 - fVar32) * local_288 +
                         (fVar33 - fVar39) * local_280, fVar43 = local_340, fVar37 <= fVar27)) {
              fVar34 = local_284 * (fVar31 - fVar30) + local_288 * (fVar35 - fVar32) +
                       local_280 * (fVar45 - fVar39);
              fVar27 = local_348;
              fVar33 = local_338;
              fVar46 = local_33c;
              if (fVar34 != local_348) {
                lVar8 = (longlong)(int)(&DAT_15f2d9228)[lVar10 * 0x145a];
                local_378 = &local_288;
                fVar37 = fVar37 / fVar34;
                fVar27 = fVar37 * (fVar35 - fVar32) + fVar32;
                local_320 = fVar32 - (float)(&DAT_1449816f8)[lVar18 * 0x2f];
                fVar43 = fVar37 * (fVar31 - fVar30) + fVar30;
                local_31c = fVar30 - (float)(&DAT_1449816fc)[lVar18 * 0x2f];
                fVar33 = fVar37 * (fVar45 - fVar39) + fVar39;
                local_318 = fVar39 - (float)(&DAT_144981700)[lVar18 * 0x2f];
                local_358 = DAT_140278224;
                local_2c8 = fVar27 - (float)(&DAT_1449816f8)[lVar8 * 0x2f];
                local_2c4 = fVar43 - (float)(&DAT_1449816fc)[lVar8 * 0x2f];
                local_2c0 = fVar33 - (float)(&DAT_144981700)[lVar8 * 0x2f];
                local_360 = (undefined4 *)CONCAT44(local_360._4_4_,DAT_1402781bc);
                local_368 = (undefined4 *)CONCAT44(local_368._4_4_,DAT_1402783b0);
                local_370 = (fVar43 - fVar31) * local_284 + (fVar27 - fVar35) * local_288 +
                            (fVar33 - fVar45) * local_280;
                FUN_1400052c0(*piVar12,lVar8,&local_320);
                local_284 = (float)(&DAT_15f2d9254)[lVar10 * 0x145a];
                local_280 = (float)(&DAT_15f2d9258)[lVar10 * 0x145a];
                fVar27 = local_348;
                fVar43 = local_340;
                fVar33 = local_338;
                fVar46 = local_33c;
              }
            }
            piVar12 = piVar12 + 0xea;
            lVar23 = lVar23 + -1;
            fVar35 = fVar44;
            fVar39 = DAT_140278280;
          } while (lVar23 != 0);
          fVar27 = (float)(&DAT_15f2de2e0)[lVar10 * 0x145a + lVar15 * 3];
          fVar43 = (float)(&DAT_15f2de2e8)[lVar10 * 0x145a + lVar15 * 3];
          iVar17 = (&DAT_18329e528)[lVar20 * 0x1bfe];
          lVar23 = (longlong)iVar17;
          iVar4 = 0;
          fVar39 = (float)(&DAT_15f2de2e4)[lVar10 * 0x145a + lVar15 * 3] + local_2b8;
          fVar35 = fVar27 * (float)(&DAT_15f2d9248)[lVar10 * 0x145a] +
                   (float)(&DAT_15f2d9230)[lVar10 * 0x145a] + local_284 * fVar39 +
                   fVar43 * (float)(&DAT_15f2d9260)[lVar10 * 0x145a];
          fVar33 = fVar27 * (float)(&DAT_15f2d9244)[lVar10 * 0x145a] +
                   (float)(&DAT_15f2d922c)[lVar10 * 0x145a] +
                   fVar39 * (float)(&DAT_15f2d9250)[lVar10 * 0x145a] +
                   fVar43 * (float)(&DAT_15f2d925c)[lVar10 * 0x145a];
          fVar27 = fVar27 * (float)(&DAT_15f2d924c)[lVar10 * 0x145a] +
                   (float)(&DAT_15f2d9234)[lVar10 * 0x145a] + fVar39 * local_280 +
                   fVar43 * (float)(&DAT_15f2d9264)[lVar10 * 0x145a];
          pfVar7 = (float *)(&DAT_14498171c + lVar23 * 0x2f);
          local_340 = fVar35;
          local_33c = fVar33;
          local_338 = fVar27;
          local_218 = fVar33;
          local_214 = fVar35;
          local_210 = fVar27;
          do {
            fVar43 = DAT_140278224;
            if (iVar4 == 0) {
              fVar39 = (float)(&DAT_1449816f8)[lVar23 * 0x2f] - *pfVar7 * DAT_140278280;
              fVar46 = (float)(&DAT_1449816fc)[lVar23 * 0x2f] -
                       (float)(&DAT_144981720)[lVar23 * 0x2f] * DAT_140278280;
              fVar32 = (float)(&DAT_144981700)[lVar23 * 0x2f] -
                       (float)(&DAT_144981724)[lVar23 * 0x2f] * DAT_140278280;
            }
            else {
              fVar39 = *pfVar7 * DAT_140278280 + (float)(&DAT_1449816f8)[lVar23 * 0x2f];
              fVar46 = (float)(&DAT_144981720)[lVar23 * 0x2f] * DAT_140278280 +
                       (float)(&DAT_1449816fc)[lVar23 * 0x2f];
              fVar32 = (float)(&DAT_144981724)[lVar23 * 0x2f] * DAT_140278280 +
                       (float)(&DAT_144981700)[lVar23 * 0x2f];
            }
            local_288 = (float)(&DAT_15f2d9250)[lVar10 * 0x145a];
            local_284 = (float)(&DAT_15f2d9254)[lVar10 * 0x145a];
            local_280 = (float)(&DAT_15f2d9258)[lVar10 * 0x145a];
            fVar30 = fVar39 - local_288 * fVar44;
            fVar44 = fVar46 - local_284 * fVar44;
            fVar31 = fVar32 - local_280 * DAT_140278224;
            local_2c8 = fVar30;
            local_2c4 = fVar44;
            local_2c0 = fVar31;
            if ((local_348 <=
                 (fVar35 - fVar44) * local_284 + (fVar33 - fVar30) * local_288 +
                 (fVar27 - fVar31) * local_280) &&
               (fVar45 = (fVar35 - fVar46) * local_284 + (fVar33 - fVar39) * local_288 +
                         (fVar27 - fVar32) * local_280, fVar35 = local_340, fVar45 <= local_348)) {
              fVar37 = local_284 * (fVar44 - fVar46) + local_288 * (fVar30 - fVar39) +
                       local_280 * (fVar31 - fVar32);
              fVar27 = local_338;
              fVar33 = local_33c;
              if (fVar37 != local_348) {
                lVar20 = (longlong)(int)(&DAT_15f2d9228)[lVar10 * 0x145a];
                local_378 = &local_288;
                fVar45 = fVar45 / fVar37;
                fVar27 = fVar45 * (fVar30 - fVar39) + fVar39;
                local_320 = fVar39 - (float)(&DAT_1449816f8)[lVar23 * 0x2f];
                fVar35 = fVar45 * (fVar44 - fVar46) + fVar46;
                local_31c = fVar46 - (float)(&DAT_1449816fc)[lVar23 * 0x2f];
                fVar33 = fVar45 * (fVar31 - fVar32) + fVar32;
                local_2c8 = fVar27 - (float)(&DAT_1449816f8)[lVar20 * 0x2f];
                local_318 = fVar32 - (float)(&DAT_144981700)[lVar23 * 0x2f];
                local_2c4 = fVar35 - (float)(&DAT_1449816fc)[lVar20 * 0x2f];
                local_2c0 = fVar33 - (float)(&DAT_144981700)[lVar20 * 0x2f];
                local_358 = DAT_140278224;
                local_360 = (undefined4 *)CONCAT44(local_360._4_4_,DAT_1402781bc);
                local_368 = (undefined4 *)CONCAT44(local_368._4_4_,DAT_1402783b0);
                local_370 = (fVar35 - fVar44) * local_284 + (fVar27 - fVar30) * local_288 +
                            (fVar33 - fVar31) * local_280;
                FUN_1400052c0(iVar17,lVar20,&local_320);
                fVar35 = local_340;
                fVar27 = local_338;
                fVar33 = local_33c;
              }
            }
            iVar4 = iVar4 + 1;
            fVar44 = fVar43;
          } while (iVar4 < 2);
          iVar4 = FUN_1400a4440();
          lVar23 = local_2d0;
          if (iVar4 != -1) {
            lVar20 = (longlong)iVar4;
            lVar18 = lVar20 * 0xf4;
            FUN_1401fcd30(&DAT_1b4287c84 + lVar20 * 0x3d,0,0xf0);
            (&DAT_1b4287c80)[lVar20 * 0x3d] = 1;
            (&DAT_1b4287c84)[lVar20 * 0x3d] = 10;
            *(undefined8 *)(&DAT_1b4287c8c + lVar20 * 0x3d) = 0;
            (&DAT_1b4287d18)[lVar20 * 0x3d] = (&DAT_15f2d9228)[lVar10 * 0x145a];
            *(undefined8 *)(&DAT_1b4037c40 + lVar20 * 0x48) = 0;
            *(undefined8 *)(&DAT_1b4037c48 + lVar20 * 0x24) = 0;
            *(uint *)(&DAT_1b4287d20 + lVar18) = local_344;
            uVar26 = (&DAT_15f2de2e0)[lVar10 * 0x145a + lVar15 * 3];
            *(undefined8 *)(&DAT_1b4037c50 + lVar20 * 0x24) = 0;
            *(undefined8 *)(&DAT_1b4037c58 + lVar20 * 0x24) = 0;
            (&DAT_1b4287d1c)[lVar20 * 0x3d] = iVar17;
            *(undefined8 *)(&DAT_1b4037c60 + lVar20 * 0x90) = 0;
            *(undefined8 *)(&DAT_1b4037c68 + lVar20 * 0x90) = 0;
            (&DAT_1b4287cf0)[lVar20 * 0x3d] = 0x3e800000;
            *(undefined8 *)(&DAT_1b4037c70 + lVar20 * 0x90) = 0;
            *(undefined8 *)(lVar20 * 0x90 + 0x1b4037c78) = 0;
            (&DAT_1b4287cf4)[lVar20 * 0x3d] = 0x3ec00000;
            *(undefined8 *)(&DAT_1b4037c80 + lVar20 * 0x24) = 0;
            *(undefined8 *)(&DAT_1b4037c88 + lVar20 * 0x90) = 0;
            (&DAT_1b4287cb8)[lVar20 * 0x3d] = uVar26;
            uVar26 = (&DAT_15f2de2e8)[lVar10 * 0x145a + lVar15 * 3];
            *(undefined8 *)(&DAT_1b4037c90 + lVar20 * 0x24) = 0;
            *(undefined8 *)(&DAT_1b4037c98 + lVar20 * 0x24) = 0;
            (&DAT_1b4287cc0)[lVar20 * 0x3d] = uVar26;
            *(undefined8 *)(&DAT_1b4037ca0 + lVar20 * 0x24) = 0;
            *(undefined8 *)(&DAT_1b4037ca8 + lVar20 * 0x24) = 0;
            *(undefined8 *)(&DAT_1b4037cb0 + lVar20 * 0x90) = 0;
            *(undefined8 *)(&DAT_1b4037cb8 + lVar20 * 0x90) = 0;
            *(undefined8 *)(&DAT_1b4037cc0 + lVar20 * 0x90) = 0;
            *(undefined8 *)(lVar20 * 0x90 + 0x1b4037cc8) = 0;
            (&DAT_1b4287cbc)[lVar20 * 0x3d] =
                 (float)(&DAT_15f2de2e4)[lVar10 * 0x145a + lVar15 * 3] + local_308;
            *(undefined8 *)(&DAT_1b4287cc4 + lVar18) = 0;
            *(undefined4 *)(&DAT_1b4287ccc + lVar18) = 0;
            fVar43 = (float)FUN_14002d050(&local_218,&DAT_15f2d9244 + lVar10 * 0x145a,pfVar7);
            iVar17 = DAT_16b27ecfc;
            fVar27 = DAT_140278250;
            if (DAT_16b27ecfc == 0) {
              fVar27 = DAT_140278300;
            }
            fVar33 = (float)((uint)fVar27 ^ local_2f8);
            fVar35 = fVar43;
            if (fVar43 < fVar33) {
              fVar35 = fVar33;
            }
            fVar39 = fVar35;
            if (fVar27 < fVar35) {
              fVar39 = fVar27;
            }
            local_218 = fVar39 * local_218;
            *(undefined4 *)(&DAT_1b4287d24 + lVar18) = 0x457;
            fVar46 = DAT_140278bd0;
            local_214 = fVar39 * local_214;
            local_210 = fVar39 * local_210;
            if (iVar17 == 0) {
              fVar27 = local_210 * DAT_140278bd0;
              (&DAT_1b4287d08)[lVar20 * 0x3d] = 0x3c800000;
              (&DAT_1b4037c58)[lVar20 * 0x24] = fVar27;
              (&DAT_1b4037c50)[lVar20 * 0x24] = local_218 * fVar46;
              (&DAT_1b4037c54)[lVar20 * 0x24] = local_214 * fVar46;
              fVar27 = local_348;
            }
            else {
              fVar46 = local_214 * DAT_140278b90;
              fVar39 = local_210 * DAT_140278b90;
              (&DAT_1b4037c50)[lVar20 * 0x24] = local_218 * DAT_140278b90;
              (&DAT_1b4037c54)[lVar20 * 0x24] = fVar46;
              (&DAT_1b4037c58)[lVar20 * 0x24] = fVar39;
              fVar39 = local_330;
              if (fVar27 >= fVar35 && fVar33 <= fVar43) {
                fVar39 = DAT_1402781b4;
              }
              (&DAT_1b4287d08)[lVar20 * 0x3d] = fVar39;
              fVar27 = local_330;
            }
            *(float *)(&DAT_1b4037ccc + lVar20 * 0x90) = fVar27;
            (&DAT_1b4037c8c)[lVar20 * 0x24] = 0;
          }
          fVar43 = local_348;
          fVar39 = DAT_140278280;
          fVar46 = DAT_1402781bc;
          fVar44 = local_2e8;
          iVar4 = (int)(float)local_2e0;
        }
        fVar27 = local_308;
        pfVar7 = local_310;
        if (*(int *)(&DAT_192e9a684 + (longlong)(int)(&DAT_15f2d9204)[lVar10 * 0x145a] * 0x185c0) ==
            0) {
          fVar35 = (float)(&DAT_15f2d9248)[lVar10 * 0x145a];
          fVar33 = (float)(&DAT_15f2d924c)[lVar10 * 0x145a];
          fVar46 = (float)(&DAT_15f2d9244)[lVar10 * 0x145a];
          lVar20 = (longlong)iVar4;
          lVar15 = (longlong)*(int *)((longlong)&DAT_18329e528 + lVar23);
          lVar18 = lVar15 * 0xbc;
          iVar17 = *(int *)((longlong)&DAT_18329e354 + lVar23);
          fVar32 = (float)(&DAT_15f2de2e0)[lVar10 * 0x145a + lVar20 * 3];
          fVar30 = fVar32 * fVar35 + (float)(&DAT_15f2d9230)[lVar10 * 0x145a];
          fVar45 = fVar32 * fVar33 + (float)(&DAT_15f2d9234)[lVar10 * 0x145a];
          fVar31 = fVar32 * fVar46 + (float)(&DAT_15f2d922c)[lVar10 * 0x145a];
          (&DAT_1449816fc)[lVar15 * 0x2f] = fVar30;
          (&DAT_144981700)[lVar15 * 0x2f] = fVar45;
          if (0 < iVar17) {
            fVar32 = (float)iVar17 * fVar32 * DAT_1402781c4;
            fVar31 = fVar32 * fVar46 + fVar31;
            (&DAT_1449816f8)[lVar15 * 0x2f] = fVar31;
            fVar30 = fVar32 * fVar35 + (float)(&DAT_1449816fc)[lVar15 * 0x2f];
            (&DAT_1449816fc)[lVar15 * 0x2f] = fVar30;
            fVar45 = fVar32 * fVar33 + (float)(&DAT_144981700)[lVar15 * 0x2f];
          }
          fVar32 = (float)(&DAT_15f2d9254)[lVar10 * 0x145a];
          fVar36 = (float)(&DAT_15f2de2e4)[lVar10 * 0x145a + lVar20 * 3] + fVar39;
          fVar37 = (float)(&DAT_15f2d9258)[lVar10 * 0x145a];
          fVar34 = (float)(&DAT_15f2d9250)[lVar10 * 0x145a];
          fVar1 = (float)(&DAT_15f2d925c)[lVar10 * 0x145a];
          uVar26 = (&DAT_15f2d928c)[lVar10 * 0x145a];
          (&DAT_1449816fc)[lVar15 * 0x2f] = fVar32 * fVar36 + fVar30;
          fVar30 = (float)(&DAT_15f2de2e8)[lVar10 * 0x145a + lVar20 * 3];
          pfVar19 = (float *)(&DAT_144981734 + lVar15 * 0x2f);
          (&DAT_144981700)[lVar15 * 0x2f] = fVar37 * fVar36 + fVar45;
          fVar45 = (float)(&DAT_15f2d9260)[lVar10 * 0x145a];
          fVar2 = (float)(&DAT_15f2d9264)[lVar10 * 0x145a];
          (&DAT_1449816f8)[lVar15 * 0x2f] = fVar34 * fVar36 + fVar31 + fVar1 * fVar30;
          (&DAT_1449816fc)[lVar15 * 0x2f] = fVar45 * fVar30 + (float)(&DAT_1449816fc)[lVar15 * 0x2f]
          ;
          (&DAT_144981700)[lVar15 * 0x2f] = fVar2 * fVar30 + (float)(&DAT_144981700)[lVar15 * 0x2f];
          (&DAT_144981704)[lVar15 * 0x2f] = uVar26;
          (&DAT_144981708)[lVar15 * 0x2f] = (&DAT_15f2d9290)[lVar10 * 0x145a];
          (&DAT_14498170c)[lVar15 * 0x2f] = (&DAT_15f2d9294)[lVar10 * 0x145a];
          (&DAT_14498171c)[lVar15 * 0x2f] = fVar46;
          (&DAT_144981720)[lVar15 * 0x2f] = fVar35;
          (&DAT_144981724)[lVar15 * 0x2f] = fVar33;
          (&DAT_144981728)[lVar15 * 0x2f] = fVar34;
          (&DAT_14498172c)[lVar15 * 0x2f] = fVar32;
          (&DAT_144981730)[lVar15 * 0x2f] = fVar37;
          *pfVar19 = fVar1;
          (&DAT_144981738)[lVar15 * 0x2f] = fVar45;
          (&DAT_14498173c)[lVar15 * 0x2f] = fVar2;
          if (0 < iVar17) {
            fVar32 = SQRT(fVar45 * fVar45 + fVar1 * fVar1 + fVar2 * fVar2);
            fVar35 = fVar43;
            fVar33 = fVar43;
            fVar46 = fVar43;
            if (fVar32 != fVar43) {
              fVar32 = fVar44 / fVar32;
              fVar35 = fVar45 * fVar32;
              fVar33 = fVar2 * fVar32;
              fVar46 = fVar1 * fVar32;
            }
            *pfVar19 = fVar46;
            (&DAT_144981738)[lVar15 * 0x2f] = fVar35;
            (&DAT_14498173c)[lVar15 * 0x2f] = fVar33;
            fVar46 = fVar35 * (float)(&DAT_144981724)[lVar15 * 0x2f] -
                     fVar33 * (float)(&DAT_144981720)[lVar15 * 0x2f];
            (&DAT_144981728)[lVar15 * 0x2f] = fVar46;
            fVar33 = (float)(&DAT_14498173c)[lVar15 * 0x2f] * (float)(&DAT_14498171c)[lVar15 * 0x2f]
                     - (float)(&DAT_144981724)[lVar15 * 0x2f] * *pfVar19;
            (&DAT_14498172c)[lVar15 * 0x2f] = fVar33;
            fVar35 = (float)(&DAT_144981720)[lVar15 * 0x2f] * *pfVar19 -
                     (float)(&DAT_144981738)[lVar15 * 0x2f] * (float)(&DAT_14498171c)[lVar15 * 0x2f]
            ;
            (&DAT_144981730)[lVar15 * 0x2f] = fVar35;
            fVar35 = SQRT(fVar46 * fVar46 + fVar33 * fVar33 + fVar35 * fVar35);
            if (fVar35 == fVar43) {
              *(undefined8 *)(&DAT_144981728 + lVar15 * 0x2f) = 0;
              (&DAT_144981730)[lVar15 * 0x2f] = 0;
              fVar33 = fVar43;
              fVar35 = fVar43;
            }
            else {
              fVar35 = fVar44 / fVar35;
              (&DAT_144981728)[lVar15 * 0x2f] = fVar46 * fVar35;
              fVar33 = (float)(&DAT_14498172c)[lVar15 * 0x2f];
              (&DAT_14498172c)[lVar15 * 0x2f] = fVar35 * fVar33;
              fVar46 = (float)(&DAT_144981730)[lVar15 * 0x2f];
              (&DAT_144981730)[lVar15 * 0x2f] = fVar35 * fVar46;
              fVar33 = fVar35 * fVar33;
              fVar35 = fVar35 * fVar46;
            }
            fVar46 = fVar33 * (float)(&DAT_14498173c)[lVar15 * 0x2f] -
                     fVar35 * (float)(&DAT_144981738)[lVar15 * 0x2f];
            (&DAT_14498171c)[lVar15 * 0x2f] = fVar46;
            fVar33 = (float)(&DAT_144981730)[lVar15 * 0x2f] * *pfVar19 -
                     (float)(&DAT_14498173c)[lVar15 * 0x2f] * (float)(&DAT_144981728)[lVar15 * 0x2f]
            ;
            (&DAT_144981720)[lVar15 * 0x2f] = fVar33;
            fVar35 = (float)(&DAT_144981738)[lVar15 * 0x2f] * (float)(&DAT_144981728)[lVar15 * 0x2f]
                     - (float)(&DAT_14498172c)[lVar15 * 0x2f] * *pfVar19;
            (&DAT_144981724)[lVar15 * 0x2f] = fVar35;
            fVar35 = SQRT(fVar33 * fVar33 + fVar46 * fVar46 + fVar35 * fVar35);
            if (fVar35 == fVar43) {
              *(undefined8 *)(&DAT_14498171c + lVar15 * 0x2f) = 0;
              (&DAT_144981724)[lVar15 * 0x2f] = 0;
            }
            else {
              fVar35 = fVar44 / fVar35;
              (&DAT_14498171c)[lVar15 * 0x2f] = fVar46 * fVar35;
              (&DAT_144981720)[lVar15 * 0x2f] = fVar35 * (float)(&DAT_144981720)[lVar15 * 0x2f];
              (&DAT_144981724)[lVar15 * 0x2f] = fVar35 * (float)(&DAT_144981724)[lVar15 * 0x2f];
            }
          }
          fVar35 = DAT_140278bd0;
          lVar20 = (longlong)(int)(&DAT_15f2d9228)[lVar10 * 0x145a];
          uVar16 = 1;
          (&DAT_14498174c)[lVar15 * 0x2f] = (&DAT_14498174c)[lVar20 * 0x2f];
          (&DAT_144981750)[lVar15 * 0x2f] = (&DAT_144981750)[lVar20 * 0x2f];
          (&DAT_144981754)[lVar15 * 0x2f] = (&DAT_144981754)[lVar20 * 0x2f];
          local_214 = (float)(&DAT_144981750)[lVar20 * 0x2f];
          local_218 = (float)(&DAT_14498174c)[lVar20 * 0x2f];
          local_210 = (float)(&DAT_144981754)[lVar20 * 0x2f];
          *(undefined8 *)(&DAT_144981740 + lVar15 * 0x2f) = 0;
          (&DAT_144981748)[lVar15 * 0x2f] = 0;
          fVar33 = (local_214 * (float)(&DAT_144981720)[lVar15 * 0x2f] +
                    (float)(&DAT_14498171c)[lVar15 * 0x2f] * local_218 +
                   local_210 * (float)(&DAT_144981724)[lVar15 * 0x2f]) *
                   *(float *)(&DAT_144981764 + lVar18);
          fVar43 = fVar33 * (float)(&DAT_14498171c)[lVar15 * 0x2f];
          (&DAT_144981740)[lVar15 * 0x2f] = fVar43;
          (&DAT_144981744)[lVar15 * 0x2f] =
               fVar33 * (float)(&DAT_144981720)[lVar15 * 0x2f] +
               (float)(&DAT_144981744)[lVar15 * 0x2f];
          (&DAT_144981748)[lVar15 * 0x2f] =
               fVar33 * (float)(&DAT_144981724)[lVar15 * 0x2f] +
               (float)(&DAT_144981748)[lVar15 * 0x2f];
          fVar33 = (local_214 * (float)(&DAT_14498172c)[lVar15 * 0x2f] +
                    local_218 * (float)(&DAT_144981728)[lVar15 * 0x2f] +
                   local_210 * (float)(&DAT_144981730)[lVar15 * 0x2f]) *
                   *(float *)(&DAT_144981768 + lVar18);
          fVar43 = fVar33 * (float)(&DAT_144981728)[lVar15 * 0x2f] + fVar43;
          (&DAT_144981740)[lVar15 * 0x2f] = fVar43;
          (&DAT_144981744)[lVar15 * 0x2f] =
               fVar33 * (float)(&DAT_14498172c)[lVar15 * 0x2f] +
               (float)(&DAT_144981744)[lVar15 * 0x2f];
          (&DAT_144981748)[lVar15 * 0x2f] =
               fVar33 * (float)(&DAT_144981730)[lVar15 * 0x2f] +
               (float)(&DAT_144981748)[lVar15 * 0x2f];
          fVar33 = (local_214 * (float)(&DAT_144981738)[lVar15 * 0x2f] + local_218 * *pfVar19 +
                   local_210 * (float)(&DAT_14498173c)[lVar15 * 0x2f]) *
                   *(float *)(&DAT_14498176c + lVar18);
          (&DAT_144981740)[lVar15 * 0x2f] = *pfVar19 * fVar33 + fVar43;
          (&DAT_144981744)[lVar15 * 0x2f] =
               fVar33 * (float)(&DAT_144981738)[lVar15 * 0x2f] +
               (float)(&DAT_144981744)[lVar15 * 0x2f];
          (&DAT_144981748)[lVar15 * 0x2f] =
               fVar33 * (float)(&DAT_14498173c)[lVar15 * 0x2f] +
               (float)(&DAT_144981748)[lVar15 * 0x2f];
          fVar33 = DAT_140278c40;
          do {
            iVar17 = *(int *)((longlong)&DAT_18329e354 + lVar23);
            if (((iVar17 == 0) && (local_334 == 0.0)) || (9 < uVar16)) {
              local_2e0 = uVar16 * 100;
              lVar20 = (longlong)
                       *(int *)((longlong)&DAT_18329e528 +
                               (longlong)(int)(&DAT_18399dee0)[uVar16 * 0x19] * 0x138 + lVar23);
              lVar10 = (longlong)*(int *)((longlong)&DAT_18329e528 + uVar16 * 0x138 + lVar23);
              puVar25 = &DAT_14498171c + lVar10 * 0x2f;
              puVar21 = &DAT_144981728 + lVar10 * 0x2f;
              *puVar25 = (&DAT_14498171c)[lVar20 * 0x2f];
              (&DAT_144981720)[lVar10 * 0x2f] = (&DAT_144981720)[lVar20 * 0x2f];
              (&DAT_144981724)[lVar10 * 0x2f] = (&DAT_144981724)[lVar20 * 0x2f];
              *puVar21 = (&DAT_144981728)[lVar20 * 0x2f];
              (&DAT_14498172c)[lVar10 * 0x2f] = (&DAT_14498172c)[lVar20 * 0x2f];
              (&DAT_144981730)[lVar10 * 0x2f] = (&DAT_144981730)[lVar20 * 0x2f];
              (&DAT_144981734)[lVar10 * 0x2f] = (&DAT_144981734)[lVar20 * 0x2f];
              (&DAT_144981738)[lVar10 * 0x2f] = (&DAT_144981738)[lVar20 * 0x2f];
              (&DAT_14498173c)[lVar10 * 0x2f] = (&DAT_14498173c)[lVar20 * 0x2f];
              if (iVar17 == 0) {
                fVar43 = fVar33;
                if ((uVar16 == 10) || (uVar16 == 0xd)) {
LAB_1400c0cce:
                  FUN_14007b2a0(puVar25,puVar25,fVar43);
                }
LAB_1400c0cd9:
                if (uVar16 == 2) {
                  FUN_14007b2a0(puVar25,puVar21,*pfVar7 * fVar39);
                  fVar43 = *local_328 * fVar39;
                  goto LAB_1400c0d35;
                }
                if (uVar16 == 3) {
                  FUN_14007b2a0(puVar25,puVar21,*pfVar7 * DAT_1402783a0);
                  fVar43 = *local_328 * DAT_1402783a0;
                  goto LAB_1400c0d35;
                }
              }
              else {
                local_218 = *(float *)((longlong)&DAT_18329e52c + lVar23) - DAT_1402f6188 * fVar44;
                local_214 = *(float *)((longlong)&DAT_18329e530 + lVar23) - DAT_1402f618c * fVar44;
                local_210 = *(float *)((longlong)&DAT_18329e534 + lVar23) - DAT_1402f6190 * fVar44;
                iVar17 = FUN_1400dc050(&DAT_18329e52c + (ulonglong)local_344 * 0x1bfe,&local_218,0);
                fVar43 = DAT_1402783a4;
                if (iVar17 != 0) {
                  fVar43 = *(float *)((longlong)&DAT_18329e530 + lVar23) - DAT_151a84884;
                  if (fVar44 <= fVar43) {
                    fVar43 = fVar44;
                  }
                  dVar28 = (double)FUN_14023e7d4((double)fVar43);
                  fVar43 = (float)(dVar28 + dVar28);
                }
                if (uVar16 == 10) {
                  fVar43 = (float)((double)(fVar43 * fVar35) - _DAT_140278520);
                }
                else {
                  if (uVar16 != 0xd) {
                    if ((uVar16 == 0xb) || (uVar16 == 0xe)) goto LAB_1400c0cce;
                    goto LAB_1400c0cd9;
                  }
                  fVar43 = (float)(DAT_1402784b8 - (double)(fVar43 * fVar27));
                }
LAB_1400c0d35:
                FUN_14007b2a0(puVar25,puVar25,fVar43);
              }
              if (*(int *)((longlong)&DAT_18329e334 + lVar23) == 0) {
                if ((uVar16 == 4) || (uVar16 == 7)) {
                  FUN_14007b2a0(puVar25,puVar21,*pfVar7 * DAT_140278bac);
                  FUN_14007b2a0(puVar25,puVar25,DAT_140278c10);
                }
                if ((uVar16 == 5) || (uVar16 == 8)) {
                  FUN_14007b2a0(puVar25,puVar25,DAT_140278bc8);
                }
              }
              local_218 = *(float *)((longlong)&DAT_18399def0 + local_2e0);
              fVar43 = *(float *)((longlong)&DAT_18399def4 + local_2e0);
              fVar46 = *(float *)((longlong)&DAT_18399def8 + local_2e0);
              fVar32 = local_218 * (float)(&DAT_14498171c)[lVar20 * 0x2f] +
                       (float)(&DAT_1449816f8)[lVar20 * 0x2f];
              (&DAT_1449816f8)[lVar10 * 0x2f] = fVar32;
              (&DAT_1449816fc)[lVar10 * 0x2f] =
                   local_218 * (float)(&DAT_144981720)[lVar20 * 0x2f] +
                   (float)(&DAT_1449816fc)[lVar20 * 0x2f];
              (&DAT_144981700)[lVar10 * 0x2f] =
                   local_218 * (float)(&DAT_144981724)[lVar20 * 0x2f] +
                   (float)(&DAT_144981700)[lVar20 * 0x2f];
              fVar32 = fVar43 * (float)(&DAT_144981728)[lVar20 * 0x2f] + fVar32;
              local_218 = *(float *)((longlong)&DAT_18399dee4 + local_2e0) - local_218;
              local_214 = *(float *)((longlong)&DAT_18399dee8 + local_2e0) - fVar43;
              (&DAT_1449816f8)[lVar10 * 0x2f] = fVar32;
              (&DAT_1449816fc)[lVar10 * 0x2f] =
                   fVar43 * (float)(&DAT_14498172c)[lVar20 * 0x2f] +
                   (float)(&DAT_1449816fc)[lVar10 * 0x2f];
              local_210 = *(float *)((longlong)&DAT_18399deec + local_2e0) - fVar46;
              (&DAT_144981700)[lVar10 * 0x2f] =
                   fVar43 * (float)(&DAT_144981730)[lVar20 * 0x2f] +
                   (float)(&DAT_144981700)[lVar10 * 0x2f];
              fVar32 = fVar46 * (float)(&DAT_144981734)[lVar20 * 0x2f] + fVar32;
              (&DAT_1449816f8)[lVar10 * 0x2f] = fVar32;
              (&DAT_1449816fc)[lVar10 * 0x2f] =
                   fVar46 * (float)(&DAT_144981738)[lVar20 * 0x2f] +
                   (float)(&DAT_1449816fc)[lVar10 * 0x2f];
              (&DAT_144981700)[lVar10 * 0x2f] =
                   fVar46 * (float)(&DAT_14498173c)[lVar20 * 0x2f] +
                   (float)(&DAT_144981700)[lVar10 * 0x2f];
              fVar32 = local_218 * (float)(&DAT_14498171c)[lVar10 * 0x2f] + fVar32;
              (&DAT_1449816f8)[lVar10 * 0x2f] = fVar32;
              (&DAT_1449816fc)[lVar10 * 0x2f] =
                   local_218 * (float)(&DAT_144981720)[lVar10 * 0x2f] +
                   (float)(&DAT_1449816fc)[lVar10 * 0x2f];
              (&DAT_144981700)[lVar10 * 0x2f] =
                   local_218 * (float)(&DAT_144981724)[lVar10 * 0x2f] +
                   (float)(&DAT_144981700)[lVar10 * 0x2f];
              fVar32 = local_214 * (float)(&DAT_144981728)[lVar10 * 0x2f] + fVar32;
              (&DAT_1449816f8)[lVar10 * 0x2f] = fVar32;
              (&DAT_1449816fc)[lVar10 * 0x2f] =
                   local_214 * (float)(&DAT_14498172c)[lVar10 * 0x2f] +
                   (float)(&DAT_1449816fc)[lVar10 * 0x2f];
              (&DAT_144981700)[lVar10 * 0x2f] =
                   local_214 * (float)(&DAT_144981730)[lVar10 * 0x2f] +
                   (float)(&DAT_144981700)[lVar10 * 0x2f];
              (&DAT_1449816f8)[lVar10 * 0x2f] =
                   local_210 * (float)(&DAT_144981734)[lVar10 * 0x2f] + fVar32;
              (&DAT_1449816fc)[lVar10 * 0x2f] =
                   local_210 * (float)(&DAT_144981738)[lVar10 * 0x2f] +
                   (float)(&DAT_1449816fc)[lVar10 * 0x2f];
              (&DAT_144981700)[lVar10 * 0x2f] =
                   local_210 * (float)(&DAT_14498173c)[lVar10 * 0x2f] +
                   (float)(&DAT_144981700)[lVar10 * 0x2f];
              (&DAT_144981704)[lVar10 * 0x2f] = (&DAT_144981704)[lVar20 * 0x2f];
              (&DAT_144981708)[lVar10 * 0x2f] = (&DAT_144981708)[lVar20 * 0x2f];
              (&DAT_14498170c)[lVar10 * 0x2f] = (&DAT_14498170c)[lVar20 * 0x2f];
            }
            uVar16 = uVar16 + 1;
            lVar22 = local_2d8;
            fVar43 = local_348;
            fVar46 = DAT_1402781bc;
          } while ((longlong)uVar16 < 0x10);
        }
        *(float *)((longlong)&DAT_18329e338 + lVar23) = local_32c;
        *(undefined4 *)((longlong)&DAT_18329e33c + lVar23) = 100;
        if ((*(uint *)(&DAT_18329e51c + lVar23) & 0x800) == 0) {
          *(undefined4 *)((longlong)&DAT_18329e354 + lVar23) = 0;
        }
        else if ((0 < *(int *)((longlong)&DAT_18329e354 + lVar23)) &&
                (iVar17 = *(int *)((longlong)&DAT_18329e354 + lVar23) + 1,
                *(int *)((longlong)&DAT_18329e354 + lVar23) = iVar17,
                (int)(SQRT(*(float *)(&DAT_18329e394 + lVar23) * *(float *)(&DAT_18329e394 + lVar23)
                           + *(float *)(&DAT_18329e398 + lVar23) *
                             *(float *)(&DAT_18329e398 + lVar23) +
                           *(float *)(&DAT_18329e39c + lVar23) * *(float *)(&DAT_18329e39c + lVar23)
                          ) * DAT_14027880c + fVar44) + 0x1e <= iVar17)) {
          *(undefined4 *)((longlong)&DAT_18329e330 + lVar23) = 0xffffffff;
          *local_328 = *(float *)((longlong)&DAT_18329e3a4 + lVar23);
          *(undefined4 *)((longlong)&DAT_18329e450 + lVar23) =
               *(undefined4 *)((longlong)&DAT_18329e3e0 + lVar23);
          iVar17 = *(int *)((longlong)&DAT_15f2d9204 + lVar22);
          *local_310 = 0.0;
          *(undefined4 *)(&DAT_15f2dc820 + lVar22) = 4;
          *(undefined4 *)((longlong)&DAT_18329e354 + lVar23) = 0;
          if (*(int *)(&DAT_192e9a684 + (longlong)iVar17 * 0x185c0) == 0) {
            iVar17 = 0;
            uVar16 = (ulonglong)local_344;
            pfVar7 = (float *)((longlong)&DAT_18329e534 + lVar23);
            lVar20 = 0;
            do {
              if (((iVar17 != 0xc) && (iVar17 != 0xf)) &&
                 (iVar4 = FUN_1400dc050((longlong)&DAT_15f2d922c + lVar22,
                                        (longlong)&DAT_18329e52c + uVar16 * 0x6ff8 + lVar20,0),
                 iVar4 != 0)) {
                fVar35 = DAT_151a84890 * fVar46 + DAT_151a84884;
                pfVar7[-2] = DAT_151a8488c * fVar46 + DAT_151a84880;
                fVar27 = DAT_151a84894 * fVar46;
                pfVar7[-1] = fVar35;
                *pfVar7 = fVar27 + DAT_151a84888;
              }
              iVar17 = iVar17 + 1;
              lVar20 = lVar20 + 0x138;
              pfVar7 = pfVar7 + 0x4e;
              lVar23 = local_2d0;
            } while (iVar17 < 0x10);
          }
        }
        if ((*(int *)((longlong)&DAT_18329e344 + lVar23) < 1) ||
           (*(int *)((longlong)&DAT_1832a5058 + lVar23) < 0x32)) {
          *(undefined4 *)((longlong)&DAT_18329e330 + lVar23) = 0xffffffff;
          *local_310 = *(float *)((longlong)&DAT_18329e3a0 + lVar23);
          *local_328 = *(float *)((longlong)&DAT_18329e3a4 + lVar23);
          *(undefined4 *)(&DAT_15f2dc820 + lVar22) = 4;
        }
        uVar16 = (ulonglong)local_344;
        if (((*(uint *)(&DAT_18329e51c + lVar23) & 0x800) != 0) &&
           ((*(uint *)(&DAT_18329e520 + lVar23) & 0x800) == 0)) {
          *(undefined4 *)((longlong)&DAT_18329e354 + lVar23) = 1;
        }
      }
      if (*(int *)((longlong)&DAT_18329e344 + lVar23) < 1) {
        lVar20 = 7;
        puVar13 = (uint *)((longlong)&DAT_1832a4ddc + lVar23);
        do {
          if (0 < (int)puVar13[-1]) {
            lVar15 = (longlong)(int)*puVar13;
            lVar10 = (longlong)(int)(&DAT_182bbb1d8)[lVar15 * 0x6e0];
            (&DAT_144981704)[lVar10 * 0x2f] = *(undefined4 *)((longlong)&DAT_18329e544 + lVar23);
            (&DAT_144981708)[lVar10 * 0x2f] = *(undefined4 *)((longlong)&DAT_18329e548 + lVar23);
            (&DAT_14498170c)[lVar10 * 0x2f] = *(undefined4 *)((longlong)&DAT_18329e54c + lVar23);
            FUN_1400a56b0(&local_218);
            *(undefined8 *)(&DAT_182bbb188 + lVar15 * 0x6e0) = 0;
            lVar10 = (longlong)(int)(&DAT_182bbb1d8)[lVar15 * 0x6e0];
            (&DAT_144981704)[lVar10 * 0x2f] = local_218 + (float)(&DAT_144981704)[lVar10 * 0x2f];
            (&DAT_144981708)[lVar10 * 0x2f] = local_214 + (float)(&DAT_144981708)[lVar10 * 0x2f];
            (&DAT_14498170c)[lVar10 * 0x2f] = local_210 + (float)(&DAT_14498170c)[lVar10 * 0x2f];
            lVar10 = (longlong)(int)*puVar13;
            if (*puVar13 < 0x400) {
              if ((&DAT_182bbb1a8)[lVar10 * 0x6e0] == -1) {
                if ((&DAT_182bbb1a4)[lVar10 * 0x6e0] == -1) goto LAB_1400c1445;
                FUN_1400ca7c0(lVar10,(&DAT_182bbb1a4)[lVar10 * 0x6e0],
                              (&DAT_182bbb1ac)[lVar10 * 0x6e0]);
              }
              else {
                FUN_1400ca9b0();
              }
              if (DAT_1ad04adc0 != 0) {
                (&DAT_18329b1e0)[lVar10] = (&DAT_18329b1e0)[lVar10] + 1;
              }
            }
          }
LAB_1400c1445:
          puVar13 = puVar13 + 10;
          lVar20 = lVar20 + -1;
        } while (lVar20 != 0);
      }
      else {
        FUN_1400b62e0(uVar16);
        FUN_1400a87a0(uVar16);
      }
      lVar20 = 0x10;
      puVar25 = (undefined4 *)((longlong)&DAT_18329e570 + lVar23);
      do {
        lVar23 = (longlong)(int)puVar25[-0x12];
        puVar25[-0x11] = (&DAT_1449816f8)[lVar23 * 0x2f];
        puVar25[-0x10] = (&DAT_1449816fc)[lVar23 * 0x2f];
        puVar25[-0xf] = (&DAT_144981700)[lVar23 * 0x2f];
        puVar25[-0xb] = (&DAT_144981704)[lVar23 * 0x2f];
        puVar25[-10] = (&DAT_144981708)[lVar23 * 0x2f];
        puVar25[-9] = (&DAT_14498170c)[lVar23 * 0x2f];
        puVar25[-5] = (&DAT_14498171c)[lVar23 * 0x2f];
        puVar25[-4] = (&DAT_144981720)[lVar23 * 0x2f];
        puVar25[-3] = (&DAT_144981724)[lVar23 * 0x2f];
        puVar25[-2] = (&DAT_144981728)[lVar23 * 0x2f];
        puVar25[-1] = (&DAT_14498172c)[lVar23 * 0x2f];
        *puVar25 = (&DAT_144981730)[lVar23 * 0x2f];
        puVar25[1] = (&DAT_144981734)[lVar23 * 0x2f];
        puVar25[2] = (&DAT_144981738)[lVar23 * 0x2f];
        puVar25[3] = (&DAT_14498173c)[lVar23 * 0x2f];
        puVar25[4] = (&DAT_14498174c)[lVar23 * 0x2f];
        puVar25[5] = (&DAT_144981750)[lVar23 * 0x2f];
        puVar25[6] = (&DAT_144981754)[lVar23 * 0x2f];
        lVar20 = lVar20 + -1;
        puVar25 = puVar25 + 0x4e;
      } while (lVar20 != 0);
      FUN_1400ad2b0(local_344);
      lVar20 = local_2d0;
      lVar23 = local_2d8;
      if (*(float *)((longlong)&DAT_18329e56c + local_2d0) <= DAT_14027838c &&
          DAT_14027838c != *(float *)((longlong)&DAT_18329e56c + local_2d0)) {
        *(undefined4 *)((longlong)&DAT_1832a4a3c + local_2d0) = 0;
      }
      if (*(int *)((longlong)&DAT_18329e330 + local_2d0) == -1) {
        uVar42 = *(uint *)((longlong)&DAT_18329e360 + local_2d0);
        if (uVar42 != 4) goto LAB_1400c15f0;
        *(undefined4 *)((longlong)&DAT_18329e360 + local_2d0) = 1;
        uVar42 = 1;
        *(undefined4 *)((longlong)&DAT_1832a4bbc + local_2d0) = 0;
LAB_1400c163c:
        if ((*(uint *)(&DAT_18329e51c + local_2d0) & 0x80000) != 0) goto LAB_1400c164a;
LAB_1400c1660:
        if (((uVar42 & 0xfffffffa) == 0) && (uVar42 != 4)) {
          FUN_1400bca30();
        }
        else if (uVar42 == 2) {
          FUN_1400ba210();
        }
        else if (uVar42 == 4) {
          FUN_1400b9d90();
        }
        else if (uVar42 == 3) {
          FUN_1400b78f0();
        }
      }
      else {
        *(undefined4 *)((longlong)&DAT_18329e360 + local_2d0) = 4;
        *(undefined4 *)((longlong)&DAT_1832a4c14 + local_2d0) = 0;
        *(undefined4 *)((longlong)&DAT_1832a4cf0 + local_2d0) = 0;
        uVar42 = *(uint *)((longlong)&DAT_18329e360 + local_2d0);
LAB_1400c15f0:
        if (uVar42 != 2) {
          if (uVar42 != 3) goto LAB_1400c163c;
          goto LAB_1400c1660;
        }
        if ((*(uint *)(&DAT_18329e51c + local_2d0) & 0x80000) == 0) {
          *(undefined4 *)((longlong)&DAT_18329e360 + local_2d0) = 0;
          uVar42 = 0;
          goto LAB_1400c163c;
        }
LAB_1400c164a:
        *(undefined4 *)((longlong)&DAT_18329e360 + local_2d0) = 2;
        FUN_1400ba210();
      }
      uVar42 = local_344;
      if ((*(int *)((longlong)&DAT_18329e344 + lVar20) < 1) ||
         (*(int *)((longlong)&DAT_1832a5058 + lVar20) < 0x32)) {
        piVar12 = (int *)(&DAT_18329e780 + lVar20);
        puVar25 = &DAT_18399df44;
        iVar17 = 1;
        do {
          lVar23 = (longlong)*piVar12;
          uVar26 = *puVar25;
          *(undefined8 *)(&DAT_1b4037c50 + lVar23 * 0x24) = 0;
          (&DAT_1b4037c58)[lVar23 * 0x24] = 0;
          (&DAT_1b4037c8c)[lVar23 * 0x24] = 0;
          *(undefined8 *)(&DAT_1b4037c90 + lVar23 * 0x24) = 0;
          (&DAT_1b4037c98)[lVar23 * 0x24] = 0;
          FUN_1400a9ef0(uVar42,uVar26,iVar17);
          if (fVar43 < SQRT((float)(&DAT_1b4037c90)[lVar23 * 0x24] *
                            (float)(&DAT_1b4037c90)[lVar23 * 0x24] +
                            (float)(&DAT_1b4037c94)[lVar23 * 0x24] *
                            (float)(&DAT_1b4037c94)[lVar23 * 0x24] +
                            (float)(&DAT_1b4037c98)[lVar23 * 0x24] *
                            (float)(&DAT_1b4037c98)[lVar23 * 0x24])) {
            (&DAT_1b4037c8c)[lVar23 * 0x24] = 1;
          }
          iVar17 = iVar17 + 1;
          piVar12 = piVar12 + 0x4e;
          puVar25 = puVar25 + 0x19;
          (&DAT_1b4287d08)[lVar23 * 0x3d] = 0x39800000;
          lVar23 = local_2d8;
          lVar20 = local_2d0;
        } while (iVar17 < 0x10);
      }
      *(undefined4 *)((longlong)&DAT_18329e388 + lVar20) =
           *(undefined4 *)((longlong)&DAT_18329e52c + lVar20);
      *(undefined4 *)((longlong)&DAT_18329e38c + lVar20) =
           *(undefined4 *)((longlong)&DAT_18329e530 + lVar20);
      *(undefined4 *)((longlong)&DAT_18329e390 + lVar20) =
           *(undefined4 *)((longlong)&DAT_18329e534 + lVar20);
      *(undefined4 *)(&DAT_18329e30c + lVar20) = 1;
      if (((local_32c != -NAN) &&
          (*(int *)(&DAT_192e9a684 + (longlong)*(int *)((longlong)&DAT_15f2d9204 + lVar23) * 0x185c0
                   ) == 0)) && (*(int *)((longlong)&DAT_18329e354 + lVar20) == 0)) {
        uVar26 = *(undefined4 *)(&DAT_18329e30c + lVar20);
        if (local_334 == 0.0) {
          uVar26 = 0;
        }
        *(undefined4 *)(&DAT_18329e30c + lVar20) = uVar26;
      }
      if (*(float *)((longlong)&DAT_18329e530 + lVar20) <= DAT_140278d24 &&
          DAT_140278d24 != *(float *)((longlong)&DAT_18329e530 + lVar20)) {
        *(undefined4 *)((longlong)&DAT_18329e344 + lVar20) = 0xffffff9c;
      }
      if (*(int *)((longlong)&DAT_18329e330 + lVar20) == -1) {
        FUN_1400b2e70();
      }
      iVar17 = DAT_183ebfaac;
      if (*(int *)((longlong)&DAT_18329e344 + lVar20) < 1) {
        iVar5 = 0xd98;
        if ((DAT_183ebfaac == 7) && (iVar5 = 0xd98, DAT_183f7a5f8 != 0)) {
          iVar5 = 0xce4;
        }
        iVar4 = *(int *)((longlong)&DAT_18329e340 + lVar20);
        if (iVar4 < iVar5) {
          uVar42 = *(uint *)((longlong)&DAT_18329e310 + lVar20);
          if (uVar42 == 0xffffffff) {
            iVar5 = *(int *)((longlong)&DAT_18329e314 + lVar20);
            if (iVar5 != -1) {
              if ((-1 < iVar5) && (iVar5 < DAT_160361344)) {
                iVar6 = (&DAT_160361384)[(longlong)iVar5 * 0x1c] + -10000;
                if (0 < iVar6) {
                  (&DAT_160361384)[(longlong)iVar5 * 0x1c] =
                       (&DAT_160361384)[(longlong)iVar5 * 0x1c] - (int)((float)iVar6 * local_304);
                }
              }
              *(undefined4 *)((longlong)&DAT_18329e314 + lVar20) = 0xffffffff;
            }
          }
          else {
            if ((DAT_183ebfaac == 4) && (uVar42 < 0x100)) {
              FUN_14011af80(uVar42,(&DAT_151620cec)[(longlong)(int)uVar42 * 0xe0d]);
LAB_1400c1901:
              lVar23 = (longlong)(int)uVar42;
              iVar4 = (&DAT_151620cac)[lVar23 * 0xe0d] + -10000;
              if (0 < iVar4) {
                (&DAT_151620cac)[lVar23 * 0xe0d] =
                     (&DAT_151620cac)[lVar23 * 0xe0d] - (int)((float)iVar4 * local_304);
              }
              iVar4 = (&DAT_151620ce4)[lVar23 * 0xe0d];
              if ((iVar4 != -1) && (iVar4 < 6)) {
                iVar5 = (&DAT_151620cec)[lVar23 * 0xe0d];
                iVar6 = (int)(((float)iVar5 * (float)(&DAT_19021f0c4)[(longlong)iVar4 * 6] -
                              _DAT_140278abc) / (float)(&DAT_19021f0c4)[(longlong)iVar4 * 6]);
                if (0 < iVar6) {
                  iVar6 = iVar6 / 0x14;
                  (&DAT_19021f0c0)[(longlong)iVar4 * 6] =
                       (&DAT_19021f0c0)[(longlong)iVar4 * 6] - iVar6;
                  (&DAT_151620cec)[lVar23 * 0xe0d] = iVar5 - iVar6;
                }
              }
              FUN_140051f50(uVar42);
            }
            else if (uVar42 < 0x100) goto LAB_1400c1901;
            if (iVar17 == 4) {
              if (DAT_183f7a5f4 == 0) {
                FUN_140138430(uVar42,0x11);
                iVar17 = DAT_183ebfaac;
              }
              uVar42 = *(uint *)((longlong)&DAT_18329e310 + lVar20);
              (&DAT_151620cf8)[(longlong)(int)uVar42 * 0xe0d] =
                   ((&DAT_151620cbc)[(longlong)(int)uVar42 * 0xe0d] + 0x28) * 0x1e;
            }
            if (iVar17 == 5) {
              if (uVar42 < 0x100) {
                iVar4 = DAT_183f7a31c / 3;
                FUN_140158ab0(local_1d8,"%s has died",&DAT_151620c64 + (longlong)(int)uVar42 * 0xe0d
                             );
                uVar14 = DAT_189c1dc64;
                uVar42 = DAT_183ebfd34;
                if (DAT_1ad04adc0 != 0) {
                  lVar23 = -1;
                  do {
                    lVar15 = lVar23 + 1;
                    lVar10 = lVar23 + 1;
                    lVar23 = lVar15;
                  } while (local_1d8[lVar10] != '\0');
                  lVar23 = (longlong)(int)DAT_189c1dc64;
                  iVar17 = (int)lVar15;
                  if (0x3f < iVar17) {
                    iVar17 = 0x3f;
                  }
                  lVar10 = lVar23 * 0x80;
                  (&DAT_1873de460)[lVar23 * 0x20] = 2;
                  (&DAT_1873de464)[lVar23 * 0x20] = uVar42;
                  FUN_1401fc920(&DAT_1873de4a0 + lVar10,local_1d8,(longlong)iVar17);
                  (&DAT_1873de4a0)[iVar17 + lVar10] = 0;
                  (&DAT_1873de480)[lVar23 * 0x20] = iVar17;
                  (&DAT_1873de484)[lVar23 * 0x20] = 3;
                  DAT_189c1dc64._0_2_ = (short)uVar14 + 1;
                  *(undefined4 *)(&DAT_1873de488 + lVar10) = 0xffffffff;
                  DAT_189c1dc64 = (uint)(ushort)DAT_189c1dc64;
                  *(undefined4 *)(&DAT_1873de48c + lVar10) = 0;
                }
                iVar17 = DAT_183ebfaac;
                if (DAT_183ebfcd4 < 0xc4e1) {
                  if (0 < iVar4) {
                    DAT_183ebfcd4 = DAT_183ebfcd4 + (int)(18000 / (longlong)iVar4);
                  }
                  if (0xc4e0 < DAT_183ebfcd4) {
                    DAT_183ebfcd4 = 0xc4e0;
                  }
                }
                goto LAB_1400c1b38;
              }
            }
            else {
LAB_1400c1b38:
              if (iVar17 == 7) {
                lVar23 = (longlong)*(int *)((longlong)&DAT_18329e310 + lVar20);
                (&DAT_151622454)[lVar23 * 0xe0d] = 0;
                (&DAT_1516224b8)[lVar23 * 0xe0d] = 0;
                (&DAT_15162251c)[lVar23 * 0xe0d] = 0;
                (&DAT_151622580)[lVar23 * 0xe0d] = 0;
                (&DAT_1516225e4)[lVar23 * 0xe0d] = 0;
                (&DAT_151622648)[lVar23 * 0xe0d] = 0;
                (&DAT_1516226ac)[lVar23 * 0xe0d] = 0;
              }
            }
            (&DAT_151620cfc)[(longlong)*(int *)((longlong)&DAT_18329e310 + lVar20) * 0xe0d] =
                 0xffffffff;
            FUN_140051dc0();
            iVar4 = *(int *)((longlong)&DAT_18329e340 + lVar20);
            *(undefined8 *)((longlong)&DAT_18329e310 + lVar20) = 0xffffffffffffffff;
          }
        }
        iVar4 = iVar4 + -1;
        if (((iVar17 - 3U & 0xfffffffd) == 0) && (iVar4 < 4)) {
          iVar4 = 4;
        }
LAB_1400c1c4d:
        *(int *)((longlong)&DAT_18329e340 + lVar20) = iVar4;
        if (iVar4 < 1) {
          FUN_14007f590();
        }
      }
      else {
        if (*(int *)((longlong)&DAT_18329e310 + lVar20) == -1) {
          iVar4 = *(int *)((longlong)&DAT_18329e340 + lVar20) + -1;
          goto LAB_1400c1c4d;
        }
        *(undefined4 *)((longlong)&DAT_18329e340 + lVar20) = 0xe10;
      }
      pfVar7 = (float *)((longlong)&DAT_18329e74c + lVar20);
      *(undefined4 *)(&DAT_18329e520 + lVar20) = *(undefined4 *)(&DAT_18329e51c + lVar20);
      piVar12 = &DAT_18399df44;
      do {
        local_33c = pfVar7[-0x2e];
        local_32c = pfVar7[-0x2d];
        local_2e0 = CONCAT44(local_2e0._4_4_,pfVar7[-0x2c]);
        local_334 = pfVar7[-0x2a];
        local_2d0 = CONCAT44(local_2d0._4_4_,pfVar7[-0x27]);
        local_310 = (float *)CONCAT44(local_310._4_4_,pfVar7[-0x26]);
        lVar23 = (longlong)*piVar12 * 0x138 + lVar20;
        local_338 = pfVar7[-0x2b];
        fVar35 = local_33c * *(float *)((longlong)&DAT_18329e55c + lVar23) +
                 local_32c * *(float *)((longlong)&DAT_18329e560 + lVar23) +
                 pfVar7[-0x2c] * *(float *)((longlong)&DAT_18329e564 + lVar23);
        local_340 = pfVar7[-0x29];
        fVar43 = local_338 * *(float *)((longlong)&DAT_18329e55c + lVar23) +
                 local_334 * *(float *)((longlong)&DAT_18329e560 + lVar23) +
                 local_340 * *(float *)((longlong)&DAT_18329e564 + lVar23);
        local_2d8 = CONCAT44(local_2d8._4_4_,pfVar7[-0x28]);
        fVar27 = (float)FUN_14023f704();
        local_218 = SQRT(fVar43 * fVar43 + fVar35 * fVar35);
        fVar43 = (float)FUN_14023f704();
        uVar29 = FUN_1401f8ac0(fVar27);
        local_214 = (float)uVar29;
        local_210 = (float)((ulonglong)uVar29 >> 0x20);
        fVar35 = (float)FUN_14023f704();
        pfVar7[-6] = fVar35;
        pfVar7[-7] = fVar43;
        pfVar7[-8] = fVar27;
        fVar27 = *(float *)((longlong)&DAT_18329e55c + lVar23);
        fVar43 = *(float *)((longlong)&DAT_18329e560 + lVar23);
        fVar35 = *(float *)((longlong)&DAT_18329e564 + lVar23);
        fVar33 = *(float *)((longlong)&DAT_18329e56c + lVar23);
        fVar39 = *(float *)((longlong)&DAT_18329e568 + lVar23);
        fVar46 = *(float *)((longlong)&DAT_18329e570 + lVar23);
        fVar44 = *(float *)((longlong)&DAT_18329e578 + lVar23);
        fVar32 = *(float *)((longlong)&DAT_18329e574 + lVar23);
        fVar30 = *(float *)((longlong)&DAT_18329e57c + lVar23);
        local_328 = (float *)CONCAT44(local_328._4_4_,fVar27);
        piVar12 = piVar12 + 0x19;
        pfVar7[-5] = fVar43 * local_32c + local_33c * fVar27 + fVar35 * (float)local_2e0;
        pfVar7[-4] = fVar33 * local_32c + local_33c * fVar39 + fVar46 * (float)local_2e0;
        pfVar7[-3] = fVar44 * local_32c + local_33c * fVar32 + fVar30 * (float)local_2e0;
        pfVar7[-2] = fVar27 * local_338 + local_334 * fVar43 + fVar35 * local_340;
        pfVar7[-1] = fVar39 * local_338 + local_334 * fVar33 + fVar46 * local_340;
        *pfVar7 = fVar32 * local_338 + local_334 * fVar44 + fVar30 * local_340;
        pfVar7[1] = fVar27 * (float)local_2d8 + (float)local_2d0 * fVar43 + local_310._0_4_ * fVar35
        ;
        pfVar7[2] = fVar39 * (float)local_2d8 + (float)local_2d0 * fVar33 + local_310._0_4_ * fVar46
        ;
        pfVar7[3] = fVar32 * (float)local_2d8 + (float)local_2d0 * fVar44 + local_310._0_4_ * fVar30
        ;
        pfVar7 = pfVar7 + 0x4e;
      } while ((longlong)piVar12 < 0x18399e520);
      uVar40 = (undefined4)local_238;
      uVar41 = (undefined4)((ulonglong)local_238 >> 0x20);
      uVar26 = (undefined4)local_230;
      uVar38 = (undefined4)((ulonglong)local_230 >> 0x20);
      uVar24 = (ulonglong)local_298;
      fVar27 = DAT_140278c40;
      fVar35 = local_330;
      fVar33 = local_308;
      uVar42 = local_2a8;
      fVar43 = local_348;
      fVar39 = DAT_140278280;
      fVar46 = DAT_1402781bc;
      fVar44 = local_2e8;
      uVar14 = local_344;
    }
    local_344 = uVar14 + 1;
    uVar16 = (ulonglong)local_344;
    local_248 = local_248 + 1;
    if (0xff < (int)local_344) {
      return;
    }
  } while( true );
}



===== FUN_140001330 @ 140001330 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Removing unreachable block (ram,0x000140001485) */
/* WARNING: Removing unreachable block (ram,0x00014000147b) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_140001330(int param_1,longlong param_2)

{
  char cVar1;
  int *piVar2;
  BOOL BVar3;
  int iVar4;
  undefined4 uVar5;
  longlong lVar6;
  undefined2 *puVar7;
  undefined4 *puVar8;
  longlong lVar9;
  char *pcVar10;
  undefined *puVar11;
  undefined4 *puVar12;
  longlong lVar13;
  char *pcVar14;
  undefined1 auStack_258 [32];
  int local_238;
  undefined4 local_230;
  LARGE_INTEGER local_228 [2];
  char local_218 [512];
  ulonglong local_18;
  
  local_18 = DAT_1403020a0 ^ (ulonglong)auStack_258;
  if (1 < (longlong)param_1) {
    lVar13 = 1;
    do {
      lVar9 = *(longlong *)(param_2 + lVar13 * 8);
      lVar6 = 0;
      do {
        pcVar14 = "-test1" + lVar6;
        lVar6 = lVar6 + 1;
        if (*pcVar14 != *(char *)(lVar9 + -1 + lVar6)) goto LAB_1400013ad;
      } while (lVar6 != 7);
      DAT_183f7cbf0 = 1;
      lVar9 = *(longlong *)(param_2 + lVar13 * 8);
LAB_1400013ad:
      lVar6 = 0;
      do {
        pcVar14 = &DAT_140277f70 + lVar6;
        lVar6 = lVar6 + 1;
        if (*pcVar14 != *(char *)(lVar9 + -1 + lVar6)) break;
      } while (lVar6 != 7);
      lVar13 = lVar13 + 1;
    } while (lVar13 < param_1);
  }
  DAT_183f7cbf4 = 1;
  _DAT_16b2a21c8 = 0x7478742e676f6c;
  DAT_182a7d548.QuadPart = 1000000000;
  BVar3 = QueryPerformanceFrequency(local_228);
  if (BVar3 != 0) {
    DAT_182a7d548 = local_228[0];
  }
  if (DAT_182a7d548.QuadPart == 0) {
    _DAT_182a7d550 = 0.0;
  }
  else if (DAT_182a7d548.QuadPart < 0) {
    _DAT_182a7d550 = DAT_1402786a0 / (double)(ulonglong)DAT_182a7d548.QuadPart;
  }
  else {
    _DAT_182a7d550 = DAT_1402786a0 / (double)DAT_182a7d548.QuadPart;
  }
  piVar2 = (int *)cpuid_Version_info(1);
  if ((*piVar2 < 1) || (lVar13 = cpuid_Version_info(1), (*(uint *)(lVar13 + 0xc) >> 0x13 & 1) == 0))
  {
    DAT_182a7d558 = 0;
  }
  else {
    DAT_182a7d558 = 1;
  }
  SetProcessDPIAware();
  _DAT_16b097e5c = _DAT_140279110;
  uRam000000016b097e64 = _UNK_140279118;
  DAT_1862ae008 = fread;
  _DAT_16b097e7c = _DAT_140279130;
  uRam000000016b097e84 = _UNK_140279138;
  _DAT_16b097eb0 = 0x40;
  _DAT_16b097e04 = _DAT_140279140;
  uRam000000016b097e0c = _UNK_140279148;
  _DAT_16b097eb8 = 0x41;
  _DAT_16b097e6c = _DAT_140279120;
  uRam000000016b097e74 = _UNK_140279128;
  _DAT_16b097eb4 = 0x42;
  _DAT_16b097e2c = _DAT_140279160;
  uRam000000016b097e34 = _UNK_140279168;
  _DAT_16b097ebc = 0x43;
  _DAT_16b097ec0 = 0x44;
  _DAT_16b097e58 = 0x45;
  _DAT_16b097e94 = 0x46;
  _DAT_16b097ea4 = 0x47;
  _DAT_16b097ea8 = 0x48;
  _DAT_16b097eac = 0x49;
  _DAT_16b097e98 = 0x4a;
  _DAT_16b097e9c = 0x4b;
  _DAT_16b097ea0 = 0x4c;
  _DAT_16b097ec4 = 0x4d;
  _DAT_16b097e8c = 0x5a;
  _DAT_16b097e90 = 0x5b;
  _DAT_16b097ed0 = 0x5c;
  _DAT_16b097e14 = 0x61;
  _DAT_16b097e18 = 0x62;
  _DAT_16b097e20 = 99;
  _DAT_16b097e24 = 100;
  _DAT_16b097e28 = 0x65;
  _DAT_16b097e1c = 0x66;
  _DAT_16b097e3c = _DAT_140279170;
  uRam000000016b097e44 = _UNK_140279178;
  _DAT_16b097e4c = 0x6f;
  _DAT_16b097e50 = 0x70;
  _DAT_16b097e54 = 0x71;
  _DAT_16b097ec8 = 0x72;
  _DAT_16b097ecc = 0x73;
  DAT_16b097e00 = 0x74;
  DAT_1862ae010 = 0;
  DAT_1862ae000 = fwrite;
  _getcwd(&DAT_182a7d140,0x200);
  SHGetSpecialFolderPathA((HWND)0x0,&DAT_182a7d340,5,0);
  _chdir(&DAT_182a7d340);
  iVar4 = _chdir(s_Sub_Rosa_1402b2bd8);
  if (iVar4 == -1) {
    _mkdir(s_Sub_Rosa_1402b2bd8);
    _chdir(s_Sub_Rosa_1402b2bd8);
  }
  puVar7 = (undefined2 *)&DAT_182a7d33f;
  do {
    pcVar14 = (char *)((longlong)puVar7 + 1);
    puVar7 = (undefined2 *)((longlong)puVar7 + 1);
  } while (*pcVar14 != '\0');
  puVar11 = &DAT_182a7d33f;
  *puVar7 = DAT_14027803c;
  do {
    pcVar14 = puVar11 + 1;
    puVar11 = puVar11 + 1;
  } while (*pcVar14 != '\0');
  lVar13 = 0;
  do {
    cVar1 = s_Sub_Rosa_1402b2bd8[lVar13];
    puVar11[lVar13] = cVar1;
    lVar13 = lVar13 + 1;
  } while (cVar1 != '\0');
  _chdir(&DAT_182a7d140);
  FUN_1400eaa00(0);
  DAT_1829f8bc0 = FUN_140198bd0(&DAT_183f7cb80);
  DAT_182a7d020 = 1;
  SDL_Init(0x2231);
  SDL_ShowCursor(0);
  DAT_18329b1c4 = DAT_182a7d008;
  DAT_18329b1bc = DAT_182a7d00c;
  DAT_18329b1c0 = DAT_182a7d010;
  _DAT_160fc4808 = DAT_182a7d00c;
  _DAT_160fc480c = DAT_182a7d010;
  DAT_18329b1a0 = DAT_182a7d000;
  DAT_18329b1a4 = DAT_182a7d004;
  DAT_18329b1c8 = DAT_182a7d014;
  _DAT_160fc4814 = (float)DAT_182a7d004 / (float)DAT_182a7d000;
  DAT_160fc47d8 = DAT_182a7d000;
  DAT_160fc47dc = DAT_182a7d004;
  DAT_160fc4804 = DAT_182a7d014;
  DAT_160fc47e8 = DAT_182a7d000;
  DAT_160fc47ec = DAT_182a7d004;
  DAT_182a7d55c = DAT_182a7d000;
  DAT_182a7d560 = DAT_182a7d004;
  _DAT_18329b1a8 = _DAT_160fc4814;
  SDL_GL_SetAttribute(0,8);
  SDL_GL_SetAttribute(1,8);
  SDL_GL_SetAttribute(2);
  SDL_GL_SetAttribute(3);
  SDL_GL_SetAttribute(6,DAT_18329b1bc);
  SDL_GL_SetAttribute(7,DAT_18329b1c0);
  SDL_GL_SetAttribute(5,1);
  SDL_GL_SetAttribute(0x14);
  SDL_GL_SetAttribute(0x15,1);
  SDL_GL_SetAttribute(0x11);
  SDL_GL_SetAttribute(0x12);
  if (DAT_18329b1c8 == 0) {
    local_230 = 0x22;
    local_238 = DAT_18329b1a4;
    DAT_160fc47c8 = SDL_CreateWindow("Sub Rosa",0x10,0x10,DAT_18329b1a0);
  }
  else {
    local_230 = 0x1023;
    local_238 = DAT_18329b1a4;
    DAT_160fc47c8 = SDL_CreateWindow("Sub Rosa",0x10,0x10,DAT_18329b1a0);
    SDL_GetWindowSize(DAT_160fc47c8,&DAT_160fc47d8,&DAT_160fc47dc);
    DAT_160fc47e8 = DAT_160fc47d8;
    DAT_160fc47ec = DAT_160fc47dc;
  }
  if (DAT_160fc47c8 == 0) {
    pcVar14 = "Couldn\'t create window";
    pcVar10 = "Error";
    goto LAB_140001b6f;
  }
  _DAT_160fc47d0 = SDL_GL_CreateContext(DAT_160fc47c8);
  if (_DAT_160fc47d0 == 0) {
    pcVar14 = "Couldn\'t create OpenGL context";
    pcVar10 = "Error";
    goto LAB_140001b6f;
  }
  DAT_144980d88 = LoadLibraryW(L"opengl32.dll");
  if ((DAT_144980d88 == (HMODULE)0x0) ||
     (DAT_144980d90 = GetProcAddress(DAT_144980d88,"wglGetProcAddress"),
     DAT_144980d90 == (FARPROC)0x0)) {
LAB_140001b61:
    pcVar14 = "Unable to load OpenGL";
  }
  else {
    iVar4 = FUN_1400a6700(FUN_14009e190);
    if (DAT_144980d88 != (HMODULE)0x0) {
      FreeLibrary(DAT_144980d88);
      DAT_144980d88 = (HMODULE)0x0;
    }
    if (iVar4 == 0) goto LAB_140001b61;
    if ((2 < DAT_140404a68) && ((DAT_140404a68 != 3 || (2 < DAT_140404a6c)))) {
      uVar5 = DAT_151e461d8;
      if (DAT_18329b1c8 == 0) {
        uVar5 = 0;
      }
      SDL_GL_SetSwapInterval(uVar5);
      BVar3 = QueryPerformanceFrequency((LARGE_INTEGER *)&DAT_160fc4830);
      if (BVar3 == 1) {
        QueryPerformanceCounter((LARGE_INTEGER *)&DAT_160fc4838);
        DAT_160fc4828 = 1;
      }
      FUN_140077710();
      puVar12 = &DAT_1a8572bc4;
      lVar13 = 0x800;
      do {
        (*DAT_140404060)(1,puVar12);
        puVar12 = puVar12 + 0x2a;
        lVar13 = lVar13 + -1;
      } while (lVar13 != 0);
      puVar8 = &DAT_1a8572c6c;
      puVar12 = &DAT_183f7ccdc;
      do {
        puVar12[-0x2c] = puVar8[-0x2a];
        uVar5 = *puVar8;
        puVar8 = puVar8 + 0x54;
        *puVar12 = uVar5;
        puVar12 = puVar12 + 0x58;
      } while ((longlong)puVar8 < 0x1a85c6c6c);
      DAT_182a7cfe8 = 4;
      _DAT_182a7cfe0 = 5;
      FUN_140078610(0,&DAT_140277ff8,0);
      FUN_140078610(1,"osd-white",2);
      FUN_140078610(2,"rockwell");
      FUN_140078610(3,"fixedsys",1);
      FUN_140078610(DAT_182a7cfe8,"overpass",0);
      DAT_1a8bf79c4 = DAT_140278a1c;
      DAT_1a8bf79c8 = DAT_140278998;
      FUN_140144700();
      FUN_140069630(0);
      WSAStartup(0x101,(LPWSADATA)&DAT_15f1d9040);
      FUN_140096440();
      FUN_1400eaa00(1);
      if (0 < DAT_1404c4a98) {
        SDL_CloseAudioDevice();
      }
      if (0 < DAT_140404a88) {
        SDL_CloseAudioDevice();
      }
      WSACleanup();
      SDL_Quit();
      FUN_140198e20();
      return 0;
    }
    FUN_140158ab0(local_218,"Version 3.3 or greater required\nVersion: %d.%d",DAT_140404a68);
    pcVar14 = local_218;
  }
  pcVar10 = "OpenGL Error";
LAB_140001b6f:
  SDL_ShowSimpleMessageBox(0x10,pcVar10,pcVar14);
  return 1;
}



===== FUN_1400fb0a0 @ 1400fb0a0 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_1400fb0a0(void)

{
  char *pcVar1;
  char cVar2;
  undefined4 uVar3;
  int iVar4;
  ulong netlong;
  __time64_t _Var5;
  ulonglong uVar6;
  ulonglong uVar7;
  undefined8 *puVar8;
  undefined1 auStack_2c8 [32];
  undefined4 local_2a8;
  undefined4 local_2a0;
  undefined4 local_298;
  undefined4 local_290;
  undefined4 local_288;
  undefined1 local_268 [64];
  char local_228 [63];
  undefined1 local_1e9;
  ulonglong local_28;
  
  local_28 = DAT_1403020a0 ^ (ulonglong)auStack_2c8;
  SDL_GetVersion();
  _DAT_16b097ed4 = 0x27;
  _Var5 = _time64((__time64_t *)0x0);
  FUN_14023b1dc(_Var5);
  uVar7 = 0;
  _DAT_183f7c2f8 = 0;
  (*DAT_144980d30)(DAT_1402b2be8,DAT_1402b2bec,DAT_1402b2bf0,0);
  (*DAT_144980d28)(0x4100);
  FUN_14007bb00();
  uVar3 = DAT_1402783f4;
  local_288 = DAT_1402783f4;
  local_290 = DAT_1402783f4;
  local_298 = DAT_1402783f4;
  local_2a0 = DAT_1402783f4;
  local_2a8 = 1;
  FUN_14006d930("generating",DAT_140278964,DAT_140278888,DAT_140278798);
  SDL_GL_SwapWindow(DAT_160fc47c8);
  FUN_140075650();
  DAT_150f610e0 = _DAT_140279780;
  DAT_150f610e4 = _UNK_140279784;
  DAT_150f610e8 = _UNK_140279788;
  DAT_150f610ec = _UNK_14027978c;
  FUN_140139e90();
  _DAT_175fd13a0 = _DAT_140279810;
  uRam0000000175fd13a8 = _UNK_140279818;
  _DAT_175fd13e4 = DAT_1402783a0;
  _DAT_175fd13e0 = DAT_140278814;
  _DAT_175fd13b0 = _DAT_140279710;
  uRam0000000175fd13b8 = _UNK_140279718;
  _DAT_175fd13c0 = _DAT_140279490;
  uRam0000000175fd13c4 = _UNK_140279494;
  uRam0000000175fd13c8 = _UNK_140279498;
  uRam0000000175fd13cc = _UNK_14027949c;
  _DAT_175fd13d0 = _DAT_140279490;
  uRam0000000175fd13d4 = _UNK_140279494;
  uRam0000000175fd13d8 = _UNK_140279498;
  uRam0000000175fd13dc = _UNK_14027949c;
  FUN_14007b2a0(_DAT_140279490,&DAT_175fd13bc,DAT_1402784b0);
  DAT_16e486868 = 3;
  _DAT_16e48686c = 3;
  _DAT_16e486848 = 0xffffffffffffffff;
  _DAT_16e486864 = 0xffffffff;
  FUN_14013cdf0();
  (*DAT_144980d30)(DAT_1402b2be8,DAT_1402b2bec,DAT_1402b2bf0,0);
  (*DAT_144980d28)(0x4100);
  FUN_14007bb00();
  local_288 = uVar3;
  local_290 = uVar3;
  local_298 = uVar3;
  local_2a0 = uVar3;
  local_2a8 = 1;
  FUN_14006d930("connecting",DAT_140278964,DAT_140278888,DAT_140278798);
  SDL_GL_SwapWindow(DAT_160fc47c8);
  iVar4 = FUN_1400a3f30();
  if (iVar4 == 0) {
    netlong = inet_addr("66.226.72.227");
    DAT_18329c1e0 = ntohl(netlong);
    DAT_18329c1e4 = 0x6bc8;
  }
  FUN_1400e5f10();
  iVar4 = FUN_140198af0(local_228);
  if (iVar4 != 0) {
    local_1e9 = 0;
    uVar6 = uVar7;
    do {
      cVar2 = local_228[uVar6];
      (&DAT_151e4594c)[uVar6] = cVar2;
      uVar6 = uVar6 + 1;
    } while (cVar2 != '\0');
    DAT_151e4596b = 0;
  }
  DAT_1829f8bc0 = FUN_140198a50(&DAT_1829f8bc8);
  DAT_1829f8fdc = FUN_1401988c0(4);
  uVar6 = uVar7;
  if (0 < DAT_1829f8fdc) {
    do {
      iVar4 = (int)uVar6;
      FUN_140198820(&DAT_1829f8fe0 + (longlong)iVar4 * 0x42,&DAT_1829f8fec + (longlong)iVar4 * 0x210
                    ,uVar6,4);
      uVar6 = (ulonglong)(iVar4 + 1U);
    } while ((int)(iVar4 + 1U) < DAT_1829f8fdc);
  }
  DAT_1602e12e0 = 0;
  _chdir(&DAT_182a7d340);
  FUN_140158ab0(local_268,"client2.csk");
  _chdir(&DAT_182a7d140);
  FUN_14008ead0(1);
  DAT_18539d3a0 = 1;
  _DAT_16b165f44 = SDL_GetTicks();
  _DAT_16b165f44 = _DAT_16b165f44 + -1000;
  DAT_183ebfaac = 0;
  DAT_183ebfce0 = 0x6270;
  do {
    pcVar1 = &DAT_151e45b4c + uVar7;
    (&DAT_1ad04add4)[uVar7] = *pcVar1;
    uVar7 = uVar7 + 1;
  } while (*pcVar1 != '\0');
  _DAT_1ad04b1f4 = 1;
  DAT_1ad04adc0 = 1;
  _DAT_151e4614c = 0;
  FUN_140096440();
  closesocket((longlong)DAT_18539d3c8);
  _DAT_18539d3a8 = 0;
  FUN_1401e0f20(DAT_187bde460);
  puVar8 = &DAT_187bde660;
  do {
    FUN_1401e2c30(*puVar8);
    puVar8 = puVar8 + 1;
  } while ((longlong)puVar8 < 0x187bde6a0);
  return;
}



===== FUN_1400c8d20 @ 1400c8d20 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */

void FUN_1400c8d20(undefined4 param_1)

{
  char *pcVar1;
  char cVar2;
  undefined1 *puVar3;
  longlong lVar4;
  longlong lVar5;
  undefined1 auStack_848 [31];
  undefined1 uStack_829;
  char local_828 [1024];
  char local_428 [1024];
  ulonglong local_28;
  
  local_28 = DAT_1403020a0 ^ (ulonglong)auStack_848;
  local_828[0] = '\0';
  lVar4 = 0x17;
  do {
    FUN_140158ab0(local_428,&DAT_140276290);
    puVar3 = &uStack_829;
    do {
      pcVar1 = puVar3 + 1;
      puVar3 = puVar3 + 1;
    } while (*pcVar1 != '\0');
    lVar5 = 0;
    do {
      cVar2 = local_428[lVar5];
      puVar3[lVar5] = cVar2;
      lVar5 = lVar5 + 1;
    } while (cVar2 != '\0');
    lVar4 = lVar4 + -1;
  } while (lVar4 != 0);
  FUN_1400584b0(param_1,local_828);
  return;
}



===== FUN_1400c8500 @ 1400c8500 root=false =====

void FUN_1400c8500(uint param_1)

{
  bool bVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  longlong lVar5;
  int *piVar6;
  
  lVar5 = (longlong)(int)param_1 * 0x1b80;
  iVar3 = *(int *)(&DAT_182bbc7d8 + lVar5);
  if ((iVar3 != -1) && (*(int *)(&DAT_182bbb4b4 + lVar5) != -1)) {
    if (*(int *)(&DAT_182bbc7e4 + lVar5) < 1) {
      if (((DAT_183ebfd34 ^ param_1) & 0xf) == 0) {
        iVar3 = *(int *)(&DAT_182bbc7e8 + lVar5);
        if (iVar3 == 0) {
          FUN_1400c7890(param_1);
          iVar3 = *(int *)(&DAT_182bbc7e8 + lVar5);
        }
        if (iVar3 == 1) {
          FUN_1400c7fc0(param_1);
          iVar3 = *(int *)(&DAT_182bbc7e8 + lVar5);
        }
        if (iVar3 == 2) {
          FUN_1400c86d0(param_1);
        }
      }
    }
    else {
      uVar2 = *(int *)(&DAT_182bbc7e4 + lVar5) - 1;
      *(uint *)(&DAT_182bbc7e4 + lVar5) = uVar2;
      if ((*(int *)(&DAT_182bbc7e0 + lVar5) == 1) && ((uVar2 & 0xf) == 0)) {
        FUN_1400c86d0(param_1);
        uVar2 = *(uint *)(&DAT_182bbc7e4 + lVar5);
      }
      if (uVar2 == 0) {
        if (*(int *)(&DAT_182bbc7e0 + lVar5) == 0) {
          FUN_1400c7890(param_1);
          return;
        }
        if (*(int *)(&DAT_182bbc7e0 + lVar5) == 1) {
          bVar1 = false;
          iVar4 = 0;
          piVar6 = &DAT_16b2cca30;
          *(undefined4 *)(&DAT_182bbc7e8 + lVar5) = 0;
          do {
            if (*(int *)(&DAT_181fefbd0 +
                        (longlong)*(int *)(&DAT_182bbb4b4 + lVar5) * 0x2828 +
                        (longlong)
                        *(int *)(&DAT_182bbc800 +
                                ((longlong)*(int *)(&DAT_182bbc7f4 + lVar5) +
                                (longlong)(int)param_1 * 0x6e0) * 4) * 0x18) == *piVar6) {
              FUN_140195fb0(iVar4,iVar3);
              bVar1 = true;
              *(int *)(&DAT_182bbc7ec + lVar5) = iVar4;
              *(undefined4 *)(&DAT_182bbc7e8 + lVar5) = 1;
              *(undefined4 *)(&DAT_182bbc7f0 + lVar5) = 0;
            }
            iVar4 = iVar4 + 1;
            piVar6 = piVar6 + 0x875d;
          } while (iVar4 < 7);
          if (!bVar1) {
            FUN_1400c7890(param_1);
          }
          if (*(int *)(&DAT_182bbc7e8 + lVar5) == 1) {
            FUN_1400c7fc0(param_1);
            return;
          }
        }
      }
    }
  }
  return;
}



===== FUN_140151190 @ 140151190 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8
FUN_140151190(float *param_1,float *param_2,float *param_3,int param_4,float *param_5,float param_6)

{
  float fVar1;
  float *pfVar2;
  float *pfVar3;
  uint uVar4;
  uint uVar5;
  undefined4 uVar6;
  int iVar7;
  longlong lVar8;
  uint uVar9;
  uint uVar10;
  undefined *puVar11;
  int iVar12;
  int iVar13;
  longlong lVar14;
  longlong lVar15;
  uint uVar16;
  longlong lVar17;
  float fVar18;
  float fVar19;
  float fVar20;
  float fVar21;
  undefined4 uVar22;
  float fVar23;
  float fVar24;
  float fVar25;
  undefined4 uVar26;
  float fVar27;
  undefined4 uVar28;
  float fVar29;
  float fVar30;
  float fVar31;
  undefined1 auStack_228 [32];
  float *local_208;
  uint *local_200;
  float *local_1f8;
  float local_1f0;
  float local_1e8 [2];
  float local_1e0;
  float local_1dc;
  float local_1d8;
  float local_1d0;
  float local_1cc;
  float local_1c8;
  float local_1c0;
  int local_1bc;
  uint local_1b8;
  longlong local_1b0;
  float local_1a8;
  float local_1a4;
  float local_1a0;
  float *local_198;
  longlong local_190;
  float *local_188;
  float *local_180;
  uint local_178;
  uint local_174;
  uint local_170;
  int local_168;
  uint local_160;
  int local_15c;
  int local_158;
  uint local_150;
  int local_14c;
  uint local_148;
  int local_144;
  float *local_140;
  float local_138;
  float local_134;
  float local_130;
  float local_128;
  float local_124;
  float local_120;
  undefined1 local_118 [8];
  undefined8 uStack_110;
  undefined1 local_108 [8];
  undefined8 uStack_100;
  float local_f8;
  ulonglong local_f0;
  
  local_f0 = DAT_1403020a0 ^ (ulonglong)auStack_228;
  lVar14 = (longlong)param_4;
  *param_3 = 65536.0;
  local_1a8 = *param_5;
  lVar17 = lVar14 * 0x100d70;
  if (((((*(float *)(&DAT_15ada9290 + lVar17) <= local_1a8 + param_6) &&
        (local_1a4 = param_5[1], *(float *)(&DAT_15ada9294 + lVar17) <= local_1a4 + param_6)) &&
       (local_1a0 = param_5[2], *(float *)(&DAT_15ada9298 + lVar17) <= local_1a0 + param_6)) &&
      ((local_1a8 - param_6 < *(float *)(&DAT_15ada929c + lVar17) ||
        local_1a8 - param_6 == *(float *)(&DAT_15ada929c + lVar17) &&
       (local_1a4 - param_6 < *(float *)(&DAT_15ada92a0 + lVar17) ||
        local_1a4 - param_6 == *(float *)(&DAT_15ada92a0 + lVar17))))) &&
     (local_1a0 - param_6 < *(float *)(&DAT_15ada92a4 + lVar17) ||
      local_1a0 - param_6 == *(float *)(&DAT_15ada92a4 + lVar17))) {
    local_1a8 = local_1a8 - *(float *)(&DAT_15ada9244 + lVar17);
    fVar21 = (float)(&DAT_15ada9284)[lVar14 * 0x4035c];
    local_1a4 = local_1a4 - *(float *)(&DAT_15ada9248 + lVar17);
    local_1a0 = local_1a0 - *(float *)(&DAT_15ada924c + lVar17);
    local_198 = (float *)(&DAT_15ada9250 + lVar17);
    local_128 = local_1a8 * *local_198 + local_1a4 * *(float *)(&DAT_15ada9254 + lVar17) +
                local_1a0 * *(float *)(&DAT_15ada9258 + lVar17);
    local_124 = local_1a8 * *(float *)(&DAT_15ada925c + lVar17) +
                local_1a4 * *(float *)(&DAT_15ada9260 + lVar17) +
                local_1a0 * *(float *)(&DAT_15ada9264 + lVar17);
    local_120 = local_1a8 * *(float *)(&DAT_15ada9268 + lVar17) +
                local_1a4 * *(float *)(&DAT_15ada926c + lVar17) +
                local_1a0 * *(float *)(&DAT_15ada9270 + lVar17);
    uVar4 = (uint)((local_128 - param_6) * fVar21);
    uVar9 = (uint)((local_120 - param_6) * fVar21);
    local_1bc = (int)((param_6 + local_1a0 * *(float *)(&DAT_15ada9258 + lVar17) +
                      local_1a8 * *local_198 + local_1a4 * *(float *)(&DAT_15ada9254 + lVar17)) *
                     fVar21);
    uVar10 = (uint)((local_124 - param_6) * fVar21);
    iVar12 = (int)((param_6 + local_1a0 * *(float *)(&DAT_15ada9264 + lVar17) +
                   local_1a8 * *(float *)(&DAT_15ada925c + lVar17) +
                   local_1a4 * *(float *)(&DAT_15ada9260 + lVar17)) * fVar21);
    iVar7 = (int)((param_6 + local_1a0 * *(float *)(&DAT_15ada9270 + lVar17) +
                  local_1a8 * *(float *)(&DAT_15ada9268 + lVar17) +
                  local_1a4 * *(float *)(&DAT_15ada926c + lVar17)) * fVar21);
    lVar15 = lVar14;
    fVar21 = DAT_140278338;
    uVar26 = DAT_140278654;
    uVar28 = DAT_1402786b8;
    uVar6 = DAT_1402784b0;
    local_190 = lVar14;
    local_188 = param_1;
    local_180 = param_2;
    local_168 = param_4;
    local_150 = uVar4;
    local_14c = iVar7;
    local_148 = uVar9;
    local_144 = iVar12;
    local_140 = param_3;
    if ((int)uVar10 <= iVar12) {
      do {
        iVar13 = local_1bc;
        uVar16 = uVar9;
        local_1b8 = uVar10;
        local_174 = uVar10;
        if ((int)uVar9 <= iVar7) {
          do {
            uVar9 = uVar4;
            local_170 = uVar16;
            if ((int)uVar4 <= iVar13) {
              do {
                if ((((-1 < (int)uVar4) &&
                     ((int)uVar4 < (int)((&DAT_15ada9274)[lVar14 * 0x4035c] << 6))) &&
                    ((-1 < (int)uVar10 &&
                     ((((int)uVar10 < (int)((&DAT_15ada9278)[lVar14 * 0x4035c] << 6) &&
                       (-1 < (int)uVar16)) &&
                      ((int)uVar16 < (int)((&DAT_15ada927c)[lVar14 * 0x4035c] << 6))))))) &&
                   ((iVar12 = *(int *)((&DAT_15ada9288)[lVar14 * 0x201ae] +
                                      (longlong)
                                      ((((int)uVar10 >> 6) * (&DAT_15ada927c)[lVar14 * 0x4035c] +
                                       ((int)uVar16 >> 6)) * (&DAT_15ada9274)[lVar14 * 0x4035c] +
                                      ((int)uVar4 >> 6)) * 4), iVar12 != -1 &&
                    (*(int *)(&DAT_15ada97b0 +
                             ((longlong)
                              (int)(((int)uVar4 >> 3 & 7U) +
                                   (((int)uVar16 >> 3 & 7U) + ((int)uVar10 >> 3 & 7U) * 8) * 8) +
                              (longlong)iVar12 * 0x201 + lVar15 * 0x4035c) * 4) != -1)))) {
                  local_1b0 = (ulonglong)((uVar4 & 7) + ((uVar16 & 7) + (uVar10 & 7) * 8) * 8) +
                              (longlong)
                              *(int *)(&DAT_15ada97b0 +
                                      ((longlong)
                                       (int)(((int)uVar4 >> 3 & 7U) +
                                            (((int)uVar16 >> 3 & 7U) + ((int)uVar10 >> 3 & 7U) * 8)
                                            * 8) + (longlong)iVar12 * 0x201 + lVar15 * 0x4035c) * 4)
                              * 0x1b12;
                  uVar9 = *(uint *)(&DAT_154166248 + local_1b0 * 4);
                  local_178 = uVar4;
                  if (uVar9 != 0) {
                    fVar27 = *(float *)(&DAT_15ada9280 + lVar17);
                    iVar12 = 0;
                    lVar15 = (ulonglong)(uVar9 & 0x3ff) * 0xed0;
                    fVar25 = ((float)(int)uVar4 + fVar21) * fVar27;
                    fVar29 = (float)(int)uVar10 * fVar27;
                    fVar27 = ((float)(int)uVar16 + fVar21) * fVar27;
                    param_3 = local_140;
                    uVar26 = DAT_140278654;
                    uVar28 = DAT_1402786b8;
                    uVar6 = DAT_1402784b0;
                    local_1a8 = fVar25;
                    local_1a4 = fVar29;
                    local_1a0 = fVar27;
                    if (0 < *(int *)(&DAT_1812c20cc + lVar15)) {
                      puVar11 = &DAT_1812c2134 + lVar15;
                      fVar30 = (float)((double)(uVar9 >> 0x18 & 3) * DAT_1402785a0);
                      do {
                        uVar6 = *(undefined4 *)(puVar11 + -0x24);
                        local_f8 = 1.0;
                        uStack_110 = _UNK_140278d38;
                        local_118 = (undefined1  [8])_DAT_140278d30;
                        uStack_100 = _UNK_140278d38;
                        local_108 = (undefined1  [8])_DAT_140278d30;
                        FUN_14007b2a0(local_118,&DAT_1402f6188,fVar30);
                        fVar21 = *(float *)(puVar11 + -0x20);
                        fVar20 = *(float *)(puVar11 + -0x1c);
                        fVar1 = *(float *)(puVar11 + -0x18);
                        local_138 = (float)local_118._0_4_ * fVar21 + fVar25 +
                                    uStack_110._4_4_ * fVar20 + (float)uStack_100 * fVar1;
                        fVar18 = (float)local_108._4_4_ * fVar20;
                        local_134 = (float)local_118._4_4_ * fVar21 + fVar29 +
                                    (float)local_108._0_4_ * fVar20 + uStack_100._4_4_ * fVar1;
                        fVar21 = (float)uStack_110 * fVar21;
                        _local_118 = *(undefined1 (*) [16])(puVar11 + -0x14);
                        _local_108 = *(undefined1 (*) [16])(puVar11 + -4);
                        local_130 = fVar21 + fVar27 + fVar18 + local_f8 * fVar1;
                        local_f8 = *(float *)(puVar11 + 0xc);
                        FUN_14007b2a0(local_118,&DAT_1402f6188,fVar30);
                        local_200 = (uint *)local_118;
                        local_208 = &local_138;
                        local_1f8 = &local_128;
                        local_1f0 = param_6;
                        iVar7 = FUN_140153850(&local_1e0,&local_1d0,local_1e8,uVar6);
                        if (iVar7 != 0) {
                          *local_188 = local_1e0;
                          local_188[1] = local_1dc;
                          local_188[2] = local_1d8;
                          *local_180 = local_1d0;
                          local_180[1] = local_1cc;
                          local_180[2] = local_1c8;
                          *local_140 = local_1e8[0];
                          DAT_151a848d8 = 0xffffffff;
                          return 1;
                        }
                        iVar12 = iVar12 + 1;
                        puVar11 = puVar11 + 0x74;
                        param_3 = local_140;
                        fVar21 = DAT_140278338;
                        uVar26 = DAT_140278654;
                        uVar28 = DAT_1402786b8;
                        uVar6 = DAT_1402784b0;
                      } while (iVar12 < *(int *)(&DAT_1812c20cc + lVar15));
                    }
                  }
                  lVar15 = local_1b0;
                  uVar10 = *(uint *)(&DAT_154165a48 + local_1b0 * 4);
                  if (0 < (int)uVar10) {
                    lVar8 = (ulonglong)(uVar10 & 0x7f) * 0x2418;
                    local_1a8 = *(float *)(&DAT_1a7600b8c + lVar8);
                    local_1a4 = *(float *)(&DAT_1a7600b90 + lVar8);
                    local_1a0 = *(float *)(&DAT_1a7600b94 + lVar8);
                    if ((uVar10 & 0xc00) == 0x400) {
                      FUN_14007b4d0(&local_1a8,&DAT_1402f6188,uVar6);
                    }
                    else {
                      uVar22 = uVar26;
                      if (((uVar10 & 0xc00) == 0x800) ||
                         (uVar22 = uVar28, (uVar10 & 0xc00) == 0xc00)) {
                        FUN_14007b4d0(&local_1a8,&DAT_1402f6188,uVar22);
                      }
                    }
                    uVar9 = uVar10 & 0xc00;
                    fVar27 = *(float *)(&DAT_15ada9280 + lVar17);
                    local_f8 = 1.0;
                    local_1a8 = local_1a8 + ((float)(int)uVar4 + fVar21) * fVar27;
                    local_1a4 = local_1a4 + (float)(int)local_1b8 * fVar27;
                    local_1a0 = local_1a0 + ((float)(int)uVar16 + fVar21) * fVar27;
                    uStack_110 = _UNK_140278d38;
                    local_118 = (undefined1  [8])_DAT_140278d30;
                    _local_108 = _local_118;
                    if (((uVar9 == 0x400) || (uVar6 = uVar26, uVar9 == 0x800)) ||
                       (uVar6 = uVar28, uVar9 == 0xc00)) {
                      FUN_14007b2a0(local_118,&DAT_1402f6188,uVar6);
                    }
                    local_200 = (uint *)local_118;
                    local_208 = &local_1a8;
                    local_1f8 = &local_128;
                    local_1f0 = param_6;
                    iVar12 = FUN_140152750(&local_1e0,&local_1d0,local_1e8,uVar10 & 0x7f);
                    pfVar2 = local_188;
                    if (iVar12 != 0) {
                      FUN_14007b0f0(local_188,local_188,local_198);
                      pfVar3 = local_180;
                      *pfVar2 = *(float *)(&DAT_15ada9244 + lVar17) + *pfVar2;
                      pfVar2[1] = *(float *)(&DAT_15ada9248 + lVar17) + pfVar2[1];
                      pfVar2[2] = *(float *)(&DAT_15ada924c + lVar17) + pfVar2[2];
                      FUN_14007b0f0(local_180,local_180,local_198);
                      *pfVar2 = local_1e0;
                      pfVar2[1] = local_1dc;
                      pfVar2[2] = local_1d8;
                      *pfVar3 = local_1d0;
                      pfVar3[1] = local_1cc;
                      pfVar3[2] = local_1c8;
                      *param_3 = local_1e8[0];
                      DAT_151a848d8 = 0xffffffff;
                      return 1;
                    }
                  }
                  uVar10 = local_1b8;
                  uVar9 = *(uint *)(&DAT_154161248 + lVar15 * 4);
                  uVar5 = uVar9 & 0xe0000000;
                  if (uVar5 == 0x40000000) {
                    local_1f0 = *(float *)(&DAT_15ada9280 + lVar17);
                    local_200 = &local_178;
                    local_1f8 = (float *)CONCAT44(local_1f8._4_4_,uVar9);
                    local_208 = (float *)CONCAT44(local_208._4_4_,param_6);
                    iVar12 = FUN_1401543c0(&local_1e0,&local_1d0,local_1e8,&local_128);
                    uVar10 = local_1b8;
                    if ((iVar12 != 0) && (local_1e8[0] < *param_3)) {
                      fVar21 = local_198[1];
                      fVar27 = *local_198;
                      fVar25 = local_198[2];
                      fVar29 = local_198[3];
                      fVar30 = local_198[6];
                      fVar20 = local_198[7];
                      fVar1 = local_198[8];
                      fVar18 = local_198[4];
                      fVar24 = fVar21 * local_1e0;
                      fVar23 = fVar25 * local_1e0;
                      fVar19 = fVar20 * local_1d8;
                      local_1e0 = fVar30 * local_1d8 + fVar27 * local_1e0 +
                                  fVar29 * local_1dc + *(float *)(&DAT_15ada9244 + lVar17);
                      local_1d8 = fVar1 * local_1d8 + fVar23 +
                                  local_198[5] * local_1dc + *(float *)(&DAT_15ada924c + lVar17);
                      local_1dc = fVar18 * local_1dc + *(float *)(&DAT_15ada9248 + lVar17) +
                                  fVar19 + fVar24;
                      fVar19 = local_198[5];
                      *local_188 = local_1e0;
                      local_188[1] = local_1dc;
                      local_188[2] = local_1d8;
                      fVar25 = local_1d0 * fVar25;
                      fVar21 = local_1d0 * fVar21 + fVar18 * local_1cc + fVar20 * local_1c8;
                      local_180[1] = fVar21;
                      local_1d0 = local_1d0 * fVar27 + fVar29 * local_1cc + fVar30 * local_1c8;
                      local_1c8 = fVar25 + local_1cc * fVar19 + fVar1 * local_1c8;
                      *local_180 = local_1d0;
                      local_180[2] = local_1c8;
                      *param_3 = local_1e8[0];
                      local_1cc = fVar21;
                      local_1c0 = local_1e0;
                    }
                  }
                  else if (uVar5 == 0x80000000) {
                    local_1f0 = *(float *)(&DAT_15ada9280 + lVar17);
                    local_200 = &local_178;
                    local_1f8 = (float *)CONCAT44(local_1f8._4_4_,uVar9);
                    local_208 = (float *)CONCAT44(local_208._4_4_,param_6);
                    iVar12 = FUN_1401564a0(&local_1e0,&local_1d0,local_1e8,&local_128);
                    uVar10 = local_1b8;
                    if ((iVar12 != 0) && (local_1e8[0] < *param_3)) {
                      local_1c0 = *local_198;
                      fVar21 = local_198[1];
                      fVar27 = local_198[4];
                      fVar25 = local_198[6];
                      fVar29 = local_198[2];
                      fVar30 = local_198[7];
                      fVar20 = local_198[3];
                      fVar1 = local_198[8];
                      fVar18 = local_198[5];
                      fVar23 = fVar29 * local_1e0;
                      local_1b0 = CONCAT44(local_1b0._4_4_,fVar21);
                      fVar24 = fVar21 * local_1e0;
                      fVar31 = fVar18 * local_1dc;
                      local_1e0 = fVar25 * local_1d8 + local_1c0 * local_1e0 +
                                  fVar20 * local_1dc + *(float *)(&DAT_15ada9244 + lVar17);
                      fVar19 = *(float *)(&DAT_15ada924c + lVar17);
                      local_1dc = fVar27 * local_1dc + *(float *)(&DAT_15ada9248 + lVar17) +
                                  fVar30 * local_1d8 + fVar24;
                      *local_188 = local_1e0;
                      local_188[1] = local_1dc;
                      local_1d8 = fVar1 * local_1d8 + fVar23 + fVar31 + fVar19;
                      fVar29 = fVar29 * local_1d0;
                      local_188[2] = local_1d8;
                      fVar21 = fVar21 * local_1d0 + fVar27 * local_1cc + fVar30 * local_1c8;
                      local_180[1] = fVar21;
                      local_1d0 = local_1c0 * local_1d0 + fVar20 * local_1cc + fVar25 * local_1c8;
                      local_1c8 = fVar29 + fVar18 * local_1cc + fVar1 * local_1c8;
                      *local_180 = local_1d0;
                      local_180[2] = local_1c8;
                      *param_3 = local_1e8[0];
                      local_1cc = fVar21;
                    }
                  }
                  else if (uVar5 == 0xc0000000) {
                    local_160 = uVar4 - (uVar9 & 0xff);
                    local_15c = local_1b8 - (uVar9 >> 0x10 & 0xff);
                    local_158 = uVar16 - (uVar9 >> 8 & 0xff);
                    uVar6 = FUN_1400129d0(local_168);
                    local_1f0 = *(float *)(&DAT_15ada9280 + lVar17);
                    local_1f8 = (float *)CONCAT44(local_1f8._4_4_,uVar6);
                    local_200 = &local_160;
                    local_208 = (float *)CONCAT44(local_208._4_4_,param_6);
                    iVar12 = FUN_1401564a0(&local_1e0,&local_1d0,local_1e8,&local_128);
                    if ((iVar12 != 0) && (local_1e8[0] < *param_3)) {
                      fVar21 = *local_198;
                      local_1c0 = local_198[1];
                      fVar27 = local_198[4];
                      fVar25 = local_198[6];
                      fVar29 = local_198[2];
                      fVar30 = local_198[7];
                      fVar20 = local_198[3];
                      fVar1 = local_198[8];
                      fVar18 = local_198[5];
                      fVar23 = fVar29 * local_1e0;
                      local_1b0 = CONCAT44(local_1b0._4_4_,fVar21);
                      fVar24 = local_1c0 * local_1e0;
                      fVar31 = fVar18 * local_1dc;
                      local_1e0 = fVar25 * local_1d8 + fVar21 * local_1e0 +
                                  fVar20 * local_1dc + *(float *)(&DAT_15ada9244 + lVar17);
                      fVar19 = *(float *)(&DAT_15ada924c + lVar17);
                      local_1dc = fVar27 * local_1dc + *(float *)(&DAT_15ada9248 + lVar17) +
                                  fVar30 * local_1d8 + fVar24;
                      *local_188 = local_1e0;
                      local_188[1] = local_1dc;
                      local_1d8 = fVar1 * local_1d8 + fVar23 + fVar31 + fVar19;
                      local_188[2] = local_1d8;
                      fVar25 = fVar25 * local_1c8;
                      fVar27 = local_1c0 * local_1d0 + fVar27 * local_1cc + fVar30 * local_1c8;
                      local_1c8 = fVar18 * local_1cc + fVar29 * local_1d0 + fVar1 * local_1c8;
                      local_180[1] = fVar27;
                      local_180[2] = local_1c8;
                      local_1d0 = fVar21 * local_1d0 + fVar20 * local_1cc + fVar25;
                      *local_180 = local_1d0;
                      *param_3 = local_1e8[0];
                      local_1cc = fVar27;
                    }
                  }
                  pfVar2 = local_198;
                  uVar9 = (&DAT_154164248)[lVar15];
                  uVar5 = uVar9 & 0xe0000000;
                  if (uVar5 == 0x40000000) {
                    local_1f0 = *(float *)(&DAT_15ada9280 + lVar17);
                    local_200 = &local_178;
                    local_1f8 = (float *)CONCAT44(local_1f8._4_4_,uVar9);
                    local_208 = (float *)CONCAT44(local_208._4_4_,param_6);
                    iVar12 = FUN_1401543c0(&local_1e0,&local_1d0,local_1e8,&local_128);
                    lVar15 = local_190;
                    fVar21 = DAT_140278338;
                    iVar13 = local_1bc;
                    uVar26 = DAT_140278654;
                    uVar28 = DAT_1402786b8;
                    uVar6 = DAT_1402784b0;
                    if ((iVar12 != 0) && (local_1e8[0] < *param_3)) {
                      local_1c0 = pfVar2[3];
                      fVar21 = *pfVar2;
                      fVar27 = pfVar2[6];
                      fVar25 = pfVar2[1];
                      fVar29 = pfVar2[2];
                      fVar30 = pfVar2[7];
                      fVar20 = pfVar2[8];
                      fVar1 = pfVar2[4];
                      fVar23 = fVar25 * local_1e0;
                      fVar19 = fVar29 * local_1e0;
                      fVar24 = pfVar2[5] * local_1dc;
                      fVar18 = *(float *)(&DAT_15ada924c + lVar17);
                      local_1e0 = fVar27 * local_1d8 + fVar21 * local_1e0 +
                                  local_1c0 * local_1dc + *(float *)(&DAT_15ada9244 + lVar17);
                      fVar31 = pfVar2[5] * local_1cc;
                      local_1dc = fVar1 * local_1dc + *(float *)(&DAT_15ada9248 + lVar17) +
                                  fVar30 * local_1d8 + fVar23;
                      *local_188 = local_1e0;
                      local_188[1] = local_1dc;
                      local_1d8 = fVar20 * local_1d8 + fVar19 + fVar24 + fVar18;
                      local_188[2] = local_1d8;
                      fVar27 = local_1c0 * local_1cc + fVar21 * local_1d0 + fVar27 * local_1c8;
                      *local_180 = fVar27;
                      local_1cc = fVar1 * local_1cc + fVar25 * local_1d0 + fVar30 * local_1c8;
                      local_1c8 = fVar31 + fVar29 * local_1d0 + fVar20 * local_1c8;
                      local_180[1] = local_1cc;
                      local_180[2] = local_1c8;
                      *param_3 = local_1e8[0];
                      fVar21 = DAT_140278338;
                      uVar26 = DAT_140278654;
                      uVar28 = DAT_1402786b8;
                      uVar6 = DAT_1402784b0;
                      local_1d0 = fVar27;
                    }
                  }
                  else if (uVar5 == 0x80000000) {
                    local_1f0 = *(float *)(&DAT_15ada9280 + lVar17);
                    local_200 = &local_178;
                    local_1f8 = (float *)CONCAT44(local_1f8._4_4_,uVar9);
                    local_208 = (float *)CONCAT44(local_208._4_4_,param_6);
                    iVar12 = FUN_1401564a0(&local_1e0,&local_1d0,local_1e8,&local_128);
                    lVar15 = local_190;
                    fVar21 = DAT_140278338;
                    iVar13 = local_1bc;
                    uVar26 = DAT_140278654;
                    uVar28 = DAT_1402786b8;
                    uVar6 = DAT_1402784b0;
                    if ((iVar12 != 0) && (local_1e8[0] < *param_3)) {
                      fVar21 = local_1e0 * pfVar2[2];
                      fVar27 = local_1e0 * pfVar2[1];
                      local_1e0 = local_1d8 * pfVar2[6] + local_1e0 * *pfVar2 +
                                  local_1dc * pfVar2[3] + *(float *)(&DAT_15ada9244 + lVar17);
                      local_1c0 = local_1d8 * pfVar2[8] + fVar21 +
                                  local_1dc * pfVar2[5] + *(float *)(&DAT_15ada924c + lVar17);
                      local_1dc = local_1dc * pfVar2[4] + *(float *)(&DAT_15ada9248 + lVar17) +
                                  local_1d8 * pfVar2[7] + fVar27;
                      fVar25 = local_1cc * pfVar2[5];
                      fVar27 = local_1cc * pfVar2[3] + local_1d0 * *pfVar2;
                      fVar21 = local_1d0 * pfVar2[2];
LAB_140152313:
                      fVar20 = local_1d0 * pfVar2[1];
                      fVar29 = pfVar2[4];
                      local_1d0 = fVar27 + local_1c8 * pfVar2[6];
                      fVar27 = pfVar2[7];
                      fVar30 = pfVar2[8];
                      local_188[1] = local_1dc;
                      local_1cc = local_1cc * fVar29 + fVar20 + local_1c8 * fVar27;
                      local_188[2] = local_1c0;
                      local_1c8 = fVar25 + fVar21 + local_1c8 * fVar30;
                      *local_188 = local_1e0;
                      local_180[1] = local_1cc;
                      *local_180 = local_1d0;
                      local_180[2] = local_1c8;
                      *param_3 = local_1e8[0];
                      lVar15 = local_190;
                      fVar21 = DAT_140278338;
                      iVar13 = local_1bc;
                      uVar26 = DAT_140278654;
                      uVar28 = DAT_1402786b8;
                      uVar6 = DAT_1402784b0;
                      local_1d8 = local_1c0;
                    }
                  }
                  else {
                    lVar15 = local_190;
                    fVar21 = DAT_140278338;
                    iVar13 = local_1bc;
                    uVar26 = DAT_140278654;
                    uVar28 = DAT_1402786b8;
                    uVar6 = DAT_1402784b0;
                    if (uVar5 == 0xc0000000) {
                      local_160 = uVar4 - (uVar9 & 0xff);
                      local_15c = uVar10 - (uVar9 >> 0x10 & 0xff);
                      local_158 = uVar16 - (uVar9 >> 8 & 0xff);
                      uVar6 = FUN_140016450(local_168);
                      local_1f0 = *(float *)(&DAT_15ada9280 + lVar17);
                      local_1f8 = (float *)CONCAT44(local_1f8._4_4_,uVar6);
                      local_200 = &local_160;
                      local_208 = (float *)CONCAT44(local_208._4_4_,param_6);
                      iVar12 = FUN_1401564a0(&local_1e0,&local_1d0,local_1e8,&local_128);
                      lVar15 = local_190;
                      fVar21 = DAT_140278338;
                      iVar13 = local_1bc;
                      uVar26 = DAT_140278654;
                      uVar28 = DAT_1402786b8;
                      uVar6 = DAT_1402784b0;
                      if ((iVar12 != 0) && (local_1e8[0] < *param_3)) {
                        fVar21 = local_1e0 * pfVar2[2];
                        fVar27 = local_1e0 * pfVar2[1];
                        local_1e0 = local_1d8 * pfVar2[6] + local_1e0 * *pfVar2 +
                                    local_1dc * pfVar2[3] + *(float *)(&DAT_15ada9244 + lVar17);
                        local_1c0 = local_1d8 * pfVar2[8] + fVar21 +
                                    local_1dc * pfVar2[5] + *(float *)(&DAT_15ada924c + lVar17);
                        local_1dc = local_1dc * pfVar2[4] + *(float *)(&DAT_15ada9248 + lVar17) +
                                    local_1d8 * pfVar2[7] + fVar27;
                        fVar21 = local_1cc * pfVar2[5];
                        fVar27 = local_1d0 * *pfVar2 + local_1cc * pfVar2[3];
                        fVar25 = local_1d0 * pfVar2[2];
                        goto LAB_140152313;
                      }
                    }
                  }
                }
                uVar4 = uVar4 + 1;
                iVar7 = local_14c;
                uVar9 = local_150;
              } while ((int)uVar4 <= iVar13);
            }
            uVar4 = uVar9;
            uVar16 = uVar16 + 1;
            uVar9 = local_148;
            iVar12 = local_144;
          } while ((int)uVar16 <= iVar7);
        }
        uVar10 = uVar10 + 1;
      } while ((int)uVar10 <= iVar12);
      if (*param_3 <= DAT_140278adc && DAT_140278adc != *param_3) {
        return 1;
      }
    }
  }
  return 0;
}



===== FUN_140139e90 @ 140139e90 root=false =====

/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_140139e90(void)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined8 uVar5;
  __time64_t _Var6;
  longlong lVar7;
  ulonglong uVar8;
  uint uVar9;
  int iVar10;
  int *piVar11;
  int iVar12;
  int *piVar13;
  ulonglong uVar14;
  int iVar15;
  undefined4 *puVar16;
  undefined *puVar17;
  undefined8 *puVar18;
  longlong lVar19;
  int iVar20;
  ulonglong uVar21;
  undefined4 *puVar22;
  undefined1 auStack_208 [32];
  int local_1e8;
  undefined4 local_1e0;
  undefined4 local_1d8;
  undefined4 local_1d0;
  undefined8 local_1c8;
  undefined4 local_1b8;
  undefined4 uStack_1b4;
  undefined4 uStack_1b0;
  undefined1 local_1a8 [16];
  undefined1 local_198 [256];
  ulonglong local_98;
  
  local_98 = DAT_1403020a0 ^ (ulonglong)auStack_208;
  iVar20 = 1;
  puVar16 = &DAT_1515acfc4;
  _DAT_151e4618c = 1;
  do {
    uVar3 = (*DAT_140404208)();
    puVar16[-1] = uVar3;
    uVar3 = (*DAT_140404210)(0x8b31);
    *puVar16 = uVar3;
    uVar3 = (*DAT_140404210)(0x8b30);
    puVar16[1] = uVar3;
    uVar3 = (*DAT_140404210)(0x8dd9);
    puVar16[2] = uVar3;
    puVar16 = puVar16 + 0x3c;
  } while ((longlong)puVar16 < 0x1515aedc4);
  puVar17 = &DAT_183e9b0c4;
  lVar19 = 0x2000;
  do {
    (*DAT_140404180)(1,puVar17 + -4);
    (*DAT_140404180)(1,puVar17);
    puVar17 = puVar17 + 8;
    lVar19 = lVar19 + -1;
  } while (lVar19 != 0);
  puVar17 = &DAT_183e990c4;
  lVar19 = 0x40;
  do {
    (*DAT_140404700)(1,puVar17 + -4);
    (*DAT_1404046d0)(1,puVar17);
    puVar17 = puVar17 + 8;
    lVar19 = lVar19 + -1;
  } while (lVar19 != 0);
  puVar16 = &DAT_144960ac8;
  uVar21 = 0;
  do {
    puVar16[-6] = 1;
    *puVar16 = 0x40c00000;
    puVar16[-5] = 0x40000;
    FUN_14023ace4(*(undefined8 *)(puVar16 + -4));
    uVar5 = _malloc_base(0x100000);
    *(undefined8 *)(puVar16 + -4) = uVar5;
    FUN_1401fcd30(uVar5,0,0x100000);
    lVar19 = 0x180;
    *(undefined8 *)(puVar16 + -2) = 0;
    uVar8 = uVar21;
    do {
      *(undefined4 *)(*(longlong *)(puVar16 + -4) + uVar8 * 4) = 0;
      uVar9 = puVar16[-2] + 1 & 0x3ffff;
      puVar16[-2] = uVar9;
      *(undefined4 *)(*(longlong *)(puVar16 + -4) + (ulonglong)uVar9 * 4) = 0;
      uVar9 = puVar16[-2] + 1 & 0x3ffff;
      puVar16[-2] = uVar9;
      *(undefined4 *)(*(longlong *)(puVar16 + -4) + (ulonglong)uVar9 * 4) = 0;
      uVar9 = puVar16[-2] + 1 & 0x3ffff;
      puVar16[-2] = uVar9;
      *(undefined4 *)(*(longlong *)(puVar16 + -4) + (ulonglong)uVar9 * 4) = 0;
      uVar9 = puVar16[-2] + 1 & 0x3ffff;
      puVar16[-2] = uVar9;
      *(undefined4 *)(*(longlong *)(puVar16 + -4) + (ulonglong)uVar9 * 4) = 0;
      uVar9 = puVar16[-2] + 1 & 0x3ffff;
      puVar16[-2] = uVar9;
      *(undefined4 *)(*(longlong *)(puVar16 + -4) + (ulonglong)uVar9 * 4) = 0;
      uVar9 = puVar16[-2] + 1 & 0x3ffff;
      puVar16[-2] = uVar9;
      *(undefined4 *)(*(longlong *)(puVar16 + -4) + (ulonglong)uVar9 * 4) = 0;
      uVar9 = puVar16[-2] + 1 & 0x3ffff;
      puVar16[-2] = uVar9;
      *(undefined4 *)(*(longlong *)(puVar16 + -4) + (ulonglong)uVar9 * 4) = 0;
      uVar9 = puVar16[-2] + 1 & 0x3ffff;
      puVar16[-2] = uVar9;
      *(undefined4 *)(*(longlong *)(puVar16 + -4) + (ulonglong)uVar9 * 4) = 0;
      uVar9 = puVar16[-2] + 1 & 0x3ffff;
      puVar16[-2] = uVar9;
      *(undefined4 *)(*(longlong *)(puVar16 + -4) + (ulonglong)uVar9 * 4) = 0;
      uVar9 = puVar16[-2] + 1 & 0x3ffff;
      uVar8 = (ulonglong)uVar9;
      puVar16[-2] = uVar9;
      lVar19 = lVar19 + -1;
    } while (lVar19 != 0);
    puVar16 = puVar16 + 8;
  } while ((longlong)puVar16 < 0x144960bc8);
  DAT_187bde460 = FUN_1401e0760(48000,1,0x800,local_1a8);
  FUN_1401e0f40(DAT_187bde460,0xfa2,16000);
  puVar18 = &DAT_187bde660;
  do {
    uVar5 = FUN_1401e22f0(48000,1,local_1a8);
    *puVar18 = uVar5;
    puVar18 = puVar18 + 1;
  } while ((longlong)puVar18 < 0x187bde6a0);
  _Var6 = _time64((__time64_t *)0x0);
  DAT_144af96e0 = (undefined4)_Var6;
  DAT_14030186c = 1;
  do {
    lVar19 = (longlong)DAT_14030186c;
    iVar12 = ((uint)(&DAT_144af96e0)[DAT_14030186c + -1] >> 0x1e ^
             (&DAT_144af96e0)[DAT_14030186c + -1]) * 0x6c078965 + DAT_14030186c;
    DAT_14030186c = DAT_14030186c + 1;
    (&DAT_144af96e0)[lVar19] = iVar12;
  } while (DAT_14030186c < 0x270);
  FUN_14014b2a0();
  piVar11 = &DAT_183e977c4;
  piVar13 = &DAT_183e987c4;
  _DAT_183e977a4 = _DAT_140278f50;
  _DAT_183e977ac = _UNK_140278f58;
  DAT_183e977a0 = 4;
  do {
    *piVar11 = DAT_183e977a0;
    piVar11 = piVar11 + 1;
    DAT_183e98c4c = DAT_183e977a0 + 1;
    DAT_183e977a0 = DAT_183e98c4c;
  } while ((longlong)piVar11 < 0x183e987c4);
  piVar11 = &DAT_183e98bc4;
  do {
    DAT_183e977a0 = DAT_183e98c4c;
    *piVar13 = DAT_183e98c4c;
    piVar13 = piVar13 + 1;
    DAT_183e98c4c = DAT_183e977a0 + 1;
  } while ((longlong)piVar13 < 0x183e98bc4);
  piVar13 = &DAT_183e98c04;
  do {
    DAT_183e977a0 = DAT_183e98c4c;
    *piVar11 = DAT_183e98c4c;
    piVar11 = piVar11 + 1;
    DAT_183e98c4c = DAT_183e977a0 + 1;
  } while ((longlong)piVar11 < 0x183e98c04);
  do {
    DAT_183e977a0 = DAT_183e98c4c;
    *piVar13 = DAT_183e98c4c;
    piVar13 = piVar13 + 1;
    DAT_183e98c4c = DAT_183e977a0 + 1;
  } while ((longlong)piVar13 < 0x183e98c44);
  piVar11 = &DAT_183e98c8c;
  DAT_183e98c50 = DAT_183e977a0 + 2;
  _DAT_183e98c54 = DAT_183e977a0 + 3;
  DAT_183e98c58 = DAT_183e977a0 + 4;
  _DAT_183e98c5c = DAT_183e977a0 + 5;
  _DAT_183e98c60 = DAT_183e977a0 + 6;
  _DAT_183e98c64 = DAT_183e977a0 + 7;
  _DAT_183e98c68 = DAT_183e977a0 + 8;
  DAT_183e9908c = DAT_183e977a0 + 9;
  do {
    DAT_183e977a0 = DAT_183e9908c;
    *piVar11 = DAT_183e9908c;
    piVar11 = piVar11 + 1;
    DAT_183e9908c = DAT_183e977a0 + 1;
  } while ((longlong)piVar11 < 0x183e98d8c);
  piVar11 = &DAT_1810ff788;
  DAT_1810ff788 = 0x40;
  DAT_1810ff78c = 0x4309;
  DAT_183e99090 = DAT_183e977a0 + 2;
  DAT_183e99094 = DAT_183e977a0 + 3;
  DAT_1810ff790 = 0x648d8;
  DAT_1811177a4 = 0x1189;
  DAT_1811177a0 = 0x80;
  DAT_183e99098 = DAT_183e977a0 + 4;
  DAT_1811177a8 = 0x1a4d8;
  DAT_183e9909c = DAT_183e977a0 + 5;
  DAT_18112f7bc = 0x4c9;
  DAT_183e990a0 = DAT_183e977a0 + 6;
  DAT_18112f7b8 = 0x80;
  DAT_1811477d0 = 0x200;
  DAT_18115f7e8 = 0x400;
  DAT_18112f7c0 = 0x72d8;
  DAT_181177800 = 0x800;
  DAT_1811477d4 = 0x169;
  DAT_1811477d8 = 0x21d8;
  DAT_18115f7ec = 0x79;
  DAT_18115f7f0 = 0xb58;
  DAT_181177804 = 0x31;
  iVar12 = 1;
  DAT_181177808 = 0x498;
  DAT_183e990a4 = DAT_183e977a0 + 7;
  DAT_18118f818 = 0x1000;
  DAT_183e97744 = 0;
  DAT_18118f81c = 0x19;
  _DAT_183e97748 = 1;
  DAT_183e9774c = 2;
  DAT_183e97790 = 3;
  DAT_18118f820 = 600;
  DAT_183e98c48 = DAT_183e977a0 + 8;
  _DAT_183e97794 = 4;
  DAT_183e98c44 = DAT_183e977a0 + 9;
  DAT_183e977a0 = DAT_183e977a0 + 10;
  _DAT_183e97750 = _DAT_140278fd0;
  uRam0000000183e97758 = _UNK_140278fd8;
  _DAT_183e97770 = 0xd;
  _DAT_183e97760 = _DAT_140279010;
  uRam0000000183e97768 = _UNK_140279018;
  _DAT_183e97774 = 0xe;
  DAT_183e97798 = 0xf;
  _DAT_183e97740 = 0x10;
  FUN_1400c2db0(0x40,0);
  FUN_14014cbe0();
  FUN_14013dcd0();
  (*DAT_140404170)(0x8892,*(undefined4 *)(&DAT_183e9b0c0 + (longlong)DAT_183e98c48 * 8));
  (*DAT_140404190)(0x8892,0x180000,0);
  (*DAT_140404170)(0x8892,*(undefined4 *)(&DAT_183e9b0c0 + (longlong)DAT_183e98c44 * 8));
  (*DAT_140404190)(0x8892,0x60000,0);
  piVar13 = &DAT_183e9908c;
  do {
    (*DAT_140404170)(0x8892,*(undefined4 *)(&DAT_183e9b0c0 + (longlong)*piVar13 * 8));
    (*DAT_140404190)(0x8892,(longlong)(piVar11[2] * *piVar11),0);
    piVar13 = piVar13 + 1;
    piVar11 = piVar11 + 0x6006;
  } while ((longlong)piVar13 < 0x183e990a5);
  (*DAT_140404170)(0x8892,*(undefined4 *)(&DAT_183e9b0c0 + (longlong)DAT_183e98bc4 * 8));
  (*DAT_140404190)(0x8892,0x200000,0);
  (*DAT_140404170)(0x8892,*(undefined4 *)(&DAT_183e9b0c0 + (longlong)DAT_183e98bc8 * 8));
  (*DAT_140404190)(0x8892,0x100000,0);
  piVar11 = &DAT_183ebbbc4;
  do {
    (*DAT_140404170)(0x8892,*(undefined4 *)
                             (&DAT_183e9b0c0 + (longlong)(int)(&DAT_183e977c4)[*piVar11] * 8));
    (*DAT_140404190)(0x8892,0x30000,0);
    piVar11 = piVar11 + 1;
  } while ((longlong)piVar11 < 0x183ebbfc4);
  puVar16 = &DAT_183ebb1c4;
  piVar11 = (int *)&DAT_192e9a680;
  puVar22 = &DAT_183ebb2c4;
  uVar8 = uVar21;
  do {
    iVar15 = (int)uVar8;
    if (iVar15 == 0xc) {
      FUN_140102ed0(uVar8,puVar16[-0x40],"data/helitest.tst");
      FUN_140102ed0(uVar8,*puVar16,"data/helitest.tst");
    }
    else if (iVar15 == 8) {
      FUN_140102ed0(uVar8,puVar16[-0x40],"data/van.tst");
      FUN_140102ed0(uVar8,*puVar16,"data/van.tst");
    }
    else {
      if (iVar15 == 0x11) {
        FUN_1400ff660(0x11,puVar16[-0x40]);
        FUN_1400ff660(0x11,*puVar16);
        FUN_1400ff3c0(&DAT_1905a2e60,*puVar22);
        break;
      }
      if (*piVar11 == 0) {
        FUN_140061a60();
        FUN_1400636e0(*puVar16,uVar8);
      }
      else {
        FUN_140064ff0(puVar16[-0x40],uVar8);
        FUN_140064ff0(*puVar16,uVar8);
      }
    }
    uVar8 = (ulonglong)(iVar15 + 1U);
    puVar16 = puVar16 + 1;
    puVar22 = puVar22 + 4;
    piVar11 = piVar11 + 0x6170;
  } while ((int)(iVar15 + 1U) < 0x12);
  FUN_1400e9a60(DAT_183ebb6c8,0xffffffff,&DAT_140274f80);
  FUN_1400e9a60(DAT_183ebb6d0,0xffffffff,&DAT_140274f88);
  FUN_1400e9a60(DAT_183ebb6e0,0xffffffff,&DAT_140274f8c);
  FUN_1400e9a60(DAT_183ebb6cc,0xffffffff,"ak47_magazine");
  FUN_1400e9a60(DAT_183ebb6d4,0xffffffff,"m16_magazine");
  FUN_1400e9a60(DAT_183ebb6e4,0xffffffff,"mp5_magazine");
  FUN_1400e9a60(DAT_183ebb6f4,0xffffffff,"9mm_magazine");
  FUN_14004eb60(DAT_183ebb6dc,3);
  FUN_140052240(DAT_183ebb6d8,5);
  FUN_1400e9a60(DAT_183ebb6f0,0xffffffff,&DAT_140274ba0);
  FUN_14004e6e0(DAT_183ebb700);
  FUN_14004e6e0(DAT_183ebb704);
  FUN_140066ee0(DAT_183ebbac4);
  FUN_140066ee0(DAT_183ebbac8);
  FUN_140066ee0(DAT_183ebbacc);
  FUN_140066ee0(DAT_183ebbad0);
  FUN_140050280(DAT_183ebb710);
  FUN_140050280(DAT_183ebb714);
  FUN_140050280(DAT_183ebb718);
  FUN_140050280(DAT_183ebb71c);
  FUN_140050280(DAT_183ebb720);
  FUN_140050280(DAT_183ebb724);
  uVar3 = DAT_140278224;
  FUN_140050280(DAT_183ebb6fc);
  FUN_1400561c0(DAT_183ebb730);
  FUN_140050280(DAT_183ebb754);
  FUN_140050280(DAT_183ebb734);
  FUN_14013fcd0(0x27,DAT_183ebb75c._4_4_);
  FUN_14013fcd0(0x27,DAT_183ebb764);
  FUN_140050280(DAT_183ebb758);
  FUN_140050280((undefined4)DAT_183ebb75c);
  local_1e8 = DAT_140278338;
  FUN_1400555c0(DAT_183ebb774,0x2c,uVar3,DAT_1402781e4);
  uVar1 = DAT_183ebb768;
  uVar3 = DAT_1402783f4;
  DAT_16a7dbda0 = 0;
  DAT_16a91bda8 = 0;
  DAT_16ac43db0 = 0;
  DAT_16ad03db4 = 0;
  local_1b8 = 0;
  uStack_1b4 = 0x3ee00000;
  uStack_1b0 = 0;
  FUN_140002d00(&local_1b8);
  uStack_1b4 = DAT_140278b7c;
  uVar8 = uVar21;
  do {
    uVar9 = (uint)uVar8;
    if ((uVar9 == 0) || (local_1b8 = 0x3f700000, uVar9 == 3)) {
      local_1b8 = 0xbf700000;
    }
    uStack_1b0 = 0xbee00000;
    if (1 < uVar9) {
      uStack_1b0 = 0x3ee00000;
    }
    FUN_140002d00(&local_1b8);
    uVar8 = (ulonglong)(uVar9 + 1);
  } while ((int)(uVar9 + 1) < 4);
  lVar19 = 0x16ab13db4;
  if (0 < DAT_16a91bda8) {
    lVar7 = 0x16ab13db4;
    uVar8 = uVar21;
    do {
      *(undefined8 *)(lVar7 + -4) = 0;
      uVar9 = (int)uVar8 + 1;
      uVar8 = (ulonglong)uVar9;
      *(undefined8 *)(lVar7 + 4) = 0;
      *(undefined8 *)(lVar7 + 0xc) = 0;
      lVar7 = lVar7 + 0x18;
    } while ((int)uVar9 < DAT_16a91bda8);
  }
  FUN_1401449c0(uVar1,0);
  FUN_14013fcd0(0x2a,DAT_183ebb76c);
  FUN_14013fcd0(0x2b,DAT_183ebb770);
  FUN_1400ffae0(DAT_183ebb708);
  FUN_1400ffae0(DAT_183ebb70c);
  FUN_140050280(DAT_183ebb738);
  FUN_140050280(DAT_183ebb74c);
  uVar1 = DAT_183ebc3dc;
  uStack_1b0 = DAT_140278cec;
  DAT_16a7dbda0 = 0;
  DAT_16a91bda8 = 0;
  DAT_16ac43db0 = 0;
  DAT_16ad03db4 = 0;
  local_1b8 = 0;
  uStack_1b4 = 0;
  FUN_140002d00(&local_1b8);
  if (0 < DAT_16a91bda8) {
    lVar7 = 0x16ab13db4;
    uVar8 = uVar21;
    do {
      *(undefined8 *)(lVar7 + -4) = 0;
      uVar9 = (int)uVar8 + 1;
      uVar8 = (ulonglong)uVar9;
      *(undefined8 *)(lVar7 + 4) = 0;
      *(undefined8 *)(lVar7 + 0xc) = 0;
      lVar7 = lVar7 + 0x18;
    } while ((int)uVar9 < DAT_16a91bda8);
  }
  FUN_1401449c0(uVar1,0);
  FUN_1400e9a60(DAT_183ebb728,0xffffffff,"cellphone");
  FUN_1400e9a60(DAT_183ebb72c,0xffffffff,"walkietalkie");
  FUN_1400e9a60(DAT_183ebb6f8,0xffffffff,"grenade");
  FUN_1400e9a60(DAT_183ebb750,0xffffffff,"soccerball");
  FUN_1400504c0(DAT_183ebb748);
  FUN_14004fdb0(DAT_183ebb73c);
  FUN_14018c340(DAT_183ebc3e4);
  if (0 < DAT_1812c2060) {
    puVar16 = &DAT_183ebb780;
    uVar8 = uVar21;
    do {
      FUN_14013f590(uVar8,*puVar16);
      uVar9 = (int)uVar8 + 1;
      uVar8 = (ulonglong)uVar9;
      puVar16 = puVar16 + 1;
    } while ((int)uVar9 < DAT_1812c2060);
  }
  FUN_14013fcd0(9,DAT_183ebb6e8);
  FUN_14013fcd0(10,DAT_183ebb6ec);
  FUN_14013fcd0(0x2d,DAT_183ebb778);
  FUN_1400e8580(0,"fcasual1");
  FUN_1400e8580(1,"fsuit1");
  FUN_1400e8580(2,"fsuit1");
  FUN_1400e8580(8,"mcasual1");
  FUN_1400e8580(9,"msuit1");
  FUN_1400e8580(10,"msuit1");
  FUN_1400e8580(0x10,"fnecktie1");
  FUN_1400e8580(0x12,"mnecktie1");
  FUN_1400e8580(0x14,"fnecklace1");
  FUN_1400e8580(0x15,"fnecklace4");
  FUN_1400e8580(0x16,"mnecklace1");
  FUN_1400e8580(0x17,"mnecklace4");
  DAT_16a7dbda0 = 0;
  puVar16 = &DAT_183ebc044;
  DAT_16a91bda8 = 0;
  DAT_16ac43db0 = 0;
  DAT_16ad03db4 = 0;
  uVar8 = uVar21;
  do {
    FUN_14004eb60(puVar16[-0x20],uVar8,0);
    FUN_14004eb60(*puVar16,uVar8);
    uVar9 = (int)uVar8 + 1;
    uVar8 = (ulonglong)uVar9;
    puVar16 = puVar16 + 1;
  } while ((int)uVar9 < 4);
  puVar16 = &DAT_183ebc0c8;
  do {
    FUN_14005b840(*puVar16,iVar12);
    iVar12 = iVar12 + 1;
    puVar16 = puVar16 + 1;
  } while (iVar12 < 7);
  FUN_1400e9a60(DAT_183ebc244,0xffffffff,"fhead1");
  FUN_1400e9a60(DAT_183ebc248,0xffffffff,"fhead2");
  FUN_1400e9a60(DAT_183ebc24c,0xffffffff,"fhead3");
  FUN_1400e9a60(DAT_183ebc250,0xffffffff,"fhead4");
  FUN_1400e9a60(DAT_183ebc254,0xffffffff,"fhead5");
  FUN_1400e9a60(DAT_183ebc2c4,0xffffffff,"fhair1");
  FUN_1400e9a60(DAT_183ebc2c8,0xffffffff,"fhair2");
  FUN_1400e9a60(DAT_183ebc2cc,0xffffffff,"fhair3");
  FUN_1400e9a60(DAT_183ebc2d0,0xffffffff,"fhair4");
  FUN_1400e9a60(DAT_183ebc2d4,0xffffffff,"fhair5");
  FUN_1400e9a60(DAT_183ebc2d8,0xffffffff,"fhair6");
  FUN_1400e9a60(DAT_183ebc2dc,0xffffffff,"fhair7");
  FUN_1400e9a60(DAT_183ebc2e0,0xffffffff,"fhair8");
  FUN_1400e9a60(DAT_183ebc2e4,0xffffffff,"fhair9");
  FUN_1400e9a60(DAT_183ebc280._4_4_,0xffffffff,"mhead1");
  FUN_1400e9a60(DAT_183ebc288,0xffffffff,"mhead2");
  FUN_1400e9a60(DAT_183ebc28c,0xffffffff,"mhead3");
  FUN_1400e9a60(DAT_183ebc290,0xffffffff,"mhead4");
  FUN_1400e9a60(DAT_183ebc294,0xffffffff,"mhead5");
  FUN_1400e9a60(DAT_183ebc300._4_4_,0xffffffff,"mhair1");
  FUN_1400e9a60(DAT_183ebc308,0xffffffff,"mhair2");
  FUN_1400e9a60(DAT_183ebc30c,0xffffffff,"mhair3");
  FUN_1400e9a60(DAT_183ebc310,0xffffffff,"mhair4");
  FUN_1400e9a60(DAT_183ebc314,0xffffffff,"mhair5");
  FUN_1400e9a60(DAT_183ebc318,0xffffffff,"mhair6");
  FUN_1400e9a60(DAT_183ebc31c,0xffffffff,"mhair7");
  FUN_1400e9a60(DAT_183ebc320,0xffffffff,"mhair8");
  FUN_1400e9a60(DAT_183ebc324,0xffffffff,"mhair9");
  uVar1 = DAT_183ebc350;
  DAT_16a7dbda0 = 0;
  DAT_16a91bda8 = 0;
  DAT_16ac43db0 = 0;
  DAT_16ad03db4 = 0;
  local_1b8 = 0;
  uStack_1b4 = 0;
  uStack_1b0 = 0;
  FUN_140002d00(&local_1b8);
  uVar8 = uVar21;
  if (0 < DAT_16a91bda8) {
    do {
      *(undefined8 *)(lVar19 + -4) = 0;
      uVar9 = (int)uVar8 + 1;
      uVar8 = (ulonglong)uVar9;
      *(undefined8 *)(lVar19 + 4) = 0;
      *(undefined8 *)(lVar19 + 0xc) = 0;
      lVar19 = lVar19 + 0x18;
    } while ((int)uVar9 < DAT_16a91bda8);
  }
  FUN_1401449c0(uVar1,0);
  uVar8 = uVar21;
  uVar14 = uVar21;
  iVar12 = DAT_1a4cff8d0;
  if (0 < DAT_1a4cff8d0) {
    do {
      iVar15 = (int)uVar14;
      if ((iVar15 != 1) && (iVar15 != DAT_1a4cff7e4)) {
        local_1e0 = 0x2703;
        local_1e8 = 0x2601;
        FUN_140099730(uVar14,1,0x2901);
        iVar12 = DAT_1a4cff8d0;
      }
      uVar14 = (ulonglong)(iVar15 + 1U);
    } while ((int)(iVar15 + 1U) < iVar12);
  }
  do {
    local_1d8 = 0x2703;
    local_1e0 = 0x2601;
    local_1e8 = 0x2901;
    FUN_1400990a0(1,uVar8,1,0x2901);
    uVar9 = (int)uVar8 + 1;
    uVar8 = (ulonglong)uVar9;
  } while ((int)uVar9 < 0xb);
  local_1e0 = 0x2600;
  local_1e8 = 0x2600;
  FUN_14009a5f0(DAT_183ebe438,1,0x812f);
  local_1e0 = 0x2600;
  local_1e8 = 0x2600;
  FUN_14009a5f0(DAT_183ebe43c,1,0x812f);
  local_1e0 = 0x2600;
  local_1e8 = 0x2600;
  FUN_14009a5f0(DAT_183ebf050,1,0x812f);
  local_1e0 = 0x2600;
  local_1e8 = 0x2600;
  FUN_14009a5f0(DAT_183ebf0f0,1,0x812f);
  puVar18 = &DAT_183ebf074;
  do {
    local_1e0 = 0x2600;
    local_1e8 = 0x2600;
    FUN_14009a5f0(*(undefined4 *)puVar18,1,0x812f);
    puVar18 = (undefined8 *)((longlong)puVar18 + 4);
  } while ((longlong)puVar18 < 0x183ebf08c);
  iVar12 = DAT_183ebf0f4;
  if (DAT_183ebf0f4 <= DAT_183ebf108) {
    do {
      local_1e0 = 0x2600;
      local_1e8 = 0x2600;
      FUN_14009a5f0(iVar12,1,0x812f);
      iVar12 = iVar12 + 1;
    } while (iVar12 <= DAT_183ebf108);
  }
  local_1d0 = 0;
  local_1d8 = 0x2601;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400eded0(DAT_183ebf10c,"data/model/tex_2.png",0,0x812f);
  local_1d0 = 0;
  local_1d8 = 0x2601;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400eded0(DAT_183ebf110,"data/model/walkie-talkie1.png",0,0x812f);
  local_1e0 = 0x2600;
  local_1e8 = 0x2600;
  FUN_14009a5f0(DAT_183ebf118,1,0x812f);
  iVar15 = DAT_1862ae010;
  iVar12 = DAT_183ebf16c;
  lVar19 = (longlong)DAT_183ebf16c;
  iVar10 = 0x80;
  iVar4 = 0x80;
  DAT_1b0037420 = 0x80;
  DAT_1b0037424 = 0x80;
  uVar8 = uVar21;
  do {
    uVar14 = uVar21;
    if (0 < iVar10) {
      do {
        iVar4 = (int)uVar8 * iVar10 + (int)uVar14;
        if (iVar15 == 0) {
          (&DAT_1b0037428)[iVar4] = 0x20ff00ff;
        }
        else {
          (&DAT_1b0037428)[iVar4] = 0xff00ff20;
        }
        uVar9 = (int)uVar14 + 1;
        uVar14 = (ulonglong)uVar9;
        iVar4 = DAT_1b0037424;
        iVar10 = DAT_1b0037420;
      } while ((int)uVar9 < DAT_1b0037420);
    }
    uVar9 = (int)uVar8 + 1;
    uVar8 = (ulonglong)uVar9;
  } while ((int)uVar9 < iVar4);
  if (iVar15 == 0) {
    DAT_1b0037428 = 0x20282060;
    DAT_1b003742c = 0x204d9fe6;
  }
  else {
    DAT_1b0037428 = 0x60202820;
    DAT_1b003742c = 0xe69f4d20;
  }
  lVar19 = lVar19 * 0xb0;
  *(int *)(&DAT_183f7cc00 + lVar19) = iVar10;
  *(int *)(&DAT_183f7cc04 + lVar19) = iVar4;
  *(undefined4 *)(&DAT_183f7cc08 + lVar19) = 1;
  *(undefined4 *)(&DAT_183f7cc0c + lVar19) = 0x1908;
  *(undefined4 *)(&DAT_183f7cc10 + lVar19) = 0x1908;
  *(undefined4 *)(&DAT_183f7cc28 + lVar19) = 0;
  *(undefined4 *)(&DAT_183f7cc14 + lVar19) = 0x812f;
  *(undefined4 *)(&DAT_183f7cc18 + lVar19) = 0x812f;
  *(undefined4 *)(&DAT_183f7cc1c + lVar19) = 0x2600;
  *(undefined4 *)(&DAT_183f7cc20 + lVar19) = 0x2600;
  FUN_14023ace4(*(undefined8 *)(&DAT_183f7cc30 + lVar19));
  uVar5 = _malloc_base((longlong)
                       (*(int *)(&DAT_183f7cc04 + lVar19) * *(int *)(&DAT_183f7cc00 + lVar19) * 4));
  *(undefined8 *)(&DAT_183f7cc30 + lVar19) = uVar5;
  uVar8 = uVar21;
  if (0 < *(int *)(&DAT_183f7cc04 + lVar19)) {
    do {
      iVar15 = (int)uVar8;
      uVar8 = uVar21;
      if (0 < *(int *)(&DAT_183f7cc00 + lVar19)) {
        do {
          iVar4 = (int)uVar8;
          uVar8 = (ulonglong)(iVar4 + 1U);
          *(undefined4 *)
           (*(longlong *)(&DAT_183f7cc30 + lVar19) +
           (longlong)(*(int *)(&DAT_183f7cc00 + lVar19) * iVar15 + iVar4) * 4) =
               (&DAT_1b0037428)[iVar15 * DAT_1b0037420 + iVar4];
        } while ((int)(iVar4 + 1U) < *(int *)(&DAT_183f7cc00 + lVar19));
      }
      uVar8 = (ulonglong)(iVar15 + 1U);
    } while ((int)(iVar15 + 1U) < *(int *)(&DAT_183f7cc04 + lVar19));
  }
  FUN_14014d3e0(iVar12,1);
  local_1e0 = 0x2703;
  local_1e8 = 0x2601;
  FUN_1400d4360(DAT_183ebf158,1,0x2901);
  local_1e0 = 0x2703;
  local_1e8 = 0x2601;
  FUN_1400d4360(DAT_183ebf15c,1,0x2901);
  local_1e0 = 0x2703;
  local_1e8 = 0x2601;
  FUN_1400d4360(DAT_183ebf160,1,0x2901);
  FUN_14009d7a0(DAT_183ebf130);
  local_1d8 = 0x2601;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400ed9d0(DAT_183ebf120,"texture/mic.png",0,0x812f);
  local_1d0 = 0;
  local_1d8 = 0x2601;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400eded0(DAT_183ebf134,"texture/cash_one.png",0,0x812f);
  local_1d0 = 0;
  local_1d8 = 0x2601;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400eded0(DAT_183ebf138,"texture/cash_five.png",0,0x812f);
  local_1d0 = 0;
  local_1d8 = 0x2601;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400eded0(DAT_183ebf13c,"texture/cash_ten.png",0,0x812f);
  local_1d0 = 0;
  local_1d8 = 0x2601;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400eded0(DAT_183ebf140,"texture/cash_twenty.png",0,0x812f);
  local_1d0 = 0;
  local_1d8 = 0x2601;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400eded0(DAT_183ebf144,"texture/cash_fifty.png",0,0x812f);
  local_1d0 = 0;
  local_1d8 = 0x2702;
  local_1e0 = 0x2600;
  local_1e8 = 0x812f;
  FUN_1400eded0(DAT_183ebf148,"texture/cash_hundred.png",1,0x812f);
  local_1d0 = 0;
  local_1d8 = 0x2703;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400eded0(DAT_183ebf14c,"texture/cash_thousand.png",1,0x812f);
  local_1d0 = 0;
  local_1d8 = 0x2601;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400eded0(DAT_183ebf174,"data/model/tex_1.png",0,0x812f);
  local_1d0 = 0xc0;
  local_1d8 = 0x2601;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400eded0(DAT_183ebf178,"data/model/gun_tex.png",0,0x812f);
  local_1d0 = 0;
  local_1d8 = 0x2600;
  local_1e0 = 0x2600;
  local_1e8 = 0x812f;
  FUN_1400eded0(DAT_183ebf17c,"data/model/tex_1.png",0,0x812f);
  local_1d0 = 0;
  local_1d8 = 0x2601;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400eded0(DAT_183ebf5b4,"data/model/grenade.png",1,0x812f);
  local_1d0 = 0;
  local_1d8 = 0x2601;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400eded0(DAT_183ebf60c,"data/model/soccerball.png",1,0x812f);
  local_1d0 = 0;
  local_1d8 = 0x2601;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400eded0(DAT_183ebf634,"data/model/watermelon.png",1,0x812f);
  FUN_14009c680(0xffffffff,DAT_183ebf57c);
  iVar12 = DAT_183ebf170;
  lVar19 = (longlong)DAT_183ebf170 * 0xb0;
  *(undefined4 *)(&DAT_183f7cc00 + lVar19) = 0x10;
  *(undefined4 *)(&DAT_183f7cc04 + lVar19) = 0x10;
  *(undefined4 *)(&DAT_183f7cc08 + lVar19) = 1;
  *(undefined4 *)(&DAT_183f7cc0c + lVar19) = 0x1908;
  *(undefined4 *)(&DAT_183f7cc10 + lVar19) = 0x1908;
  *(undefined4 *)(&DAT_183f7cc28 + lVar19) = 0;
  *(undefined4 *)(&DAT_183f7cc14 + lVar19) = 0x812f;
  *(undefined4 *)(&DAT_183f7cc18 + lVar19) = 0x812f;
  *(undefined4 *)(&DAT_183f7cc1c + lVar19) = 0x2600;
  *(undefined4 *)(&DAT_183f7cc20 + lVar19) = 0x2600;
  FUN_14023ace4(*(undefined8 *)(&DAT_183f7cc30 + lVar19));
  uVar5 = _malloc_base((longlong)
                       (*(int *)(&DAT_183f7cc04 + lVar19) * *(int *)(&DAT_183f7cc00 + lVar19) * 4));
  *(undefined8 *)(&DAT_183f7cc30 + lVar19) = uVar5;
  uVar8 = uVar21;
  if (0 < *(int *)(&DAT_183f7cc04 + lVar19)) {
    do {
      uVar14 = uVar21;
      if (0 < *(int *)(&DAT_183f7cc00 + lVar19)) {
        do {
          iVar15 = (int)uVar14;
          uVar9 = iVar15 + 1;
          uVar14 = (ulonglong)uVar9;
          *(undefined4 *)
           (*(longlong *)(&DAT_183f7cc30 + lVar19) +
           (longlong)(*(int *)(&DAT_183f7cc00 + lVar19) * (int)uVar8 + iVar15) * 4) = 0xffffffff;
        } while ((int)uVar9 < *(int *)(&DAT_183f7cc00 + lVar19));
      }
      uVar9 = (int)uVar8 + 1;
      uVar8 = (ulonglong)uVar9;
    } while ((int)uVar9 < *(int *)(&DAT_183f7cc04 + lVar19));
  }
  FUN_14014d3e0(iVar12);
  iVar12 = DAT_183ebf128;
  lVar19 = (longlong)DAT_183ebf128 * 0xb0;
  *(undefined4 *)(&DAT_183f7cc00 + lVar19) = 0x20;
  *(undefined4 *)(&DAT_183f7cc04 + lVar19) = 0x10;
  *(undefined4 *)(&DAT_183f7cc08 + lVar19) = 1;
  *(undefined4 *)(&DAT_183f7cc0c + lVar19) = 0x1908;
  *(undefined4 *)(&DAT_183f7cc10 + lVar19) = 0x1908;
  *(undefined4 *)(&DAT_183f7cc28 + lVar19) = 0;
  *(undefined4 *)(&DAT_183f7cc14 + lVar19) = 0x812f;
  *(undefined4 *)(&DAT_183f7cc18 + lVar19) = 0x812f;
  *(undefined4 *)(&DAT_183f7cc1c + lVar19) = 0x2600;
  *(undefined4 *)(&DAT_183f7cc20 + lVar19) = 0x2600;
  FUN_14023ace4(*(undefined8 *)(&DAT_183f7cc30 + lVar19));
  uVar5 = _malloc_base((longlong)
                       (*(int *)(&DAT_183f7cc04 + lVar19) * *(int *)(&DAT_183f7cc00 + lVar19) * 4));
  *(undefined8 *)(&DAT_183f7cc30 + lVar19) = uVar5;
  if (0 < *(int *)(&DAT_183f7cc04 + lVar19)) {
    piVar11 = &DAT_1402b3470;
    uVar8 = uVar21;
    do {
      iVar15 = *(int *)(&DAT_183f7cc00 + lVar19);
      uVar14 = uVar21;
      piVar13 = piVar11;
      if (0 < iVar15) {
        do {
          uVar9 = (int)uVar14 + 1;
          *(uint *)(*(longlong *)(&DAT_183f7cc30 + lVar19) +
                   (longlong)((int)uVar8 * iVar15 + (int)uVar14) * 4) = -(uint)(*piVar13 != 0);
          iVar15 = *(int *)(&DAT_183f7cc00 + lVar19);
          uVar14 = (ulonglong)uVar9;
          piVar13 = piVar13 + 1;
        } while ((int)uVar9 < iVar15);
      }
      uVar9 = (int)uVar8 + 1;
      uVar8 = (ulonglong)uVar9;
      piVar11 = piVar11 + -0x20;
    } while ((int)uVar9 < *(int *)(&DAT_183f7cc04 + lVar19));
  }
  FUN_14014d3e0(iVar12,1);
  FUN_14013d1b0();
  local_1d8 = 0x2601;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400ed9d0(DAT_183ebf980,"texture/title.png",0,0x812f);
  local_1d8 = 0x2601;
  local_1e0 = 0x2601;
  local_1e8 = 0x812f;
  FUN_1400ed9d0(DAT_183ebf984,"texture/box.png",0,0x812f);
  FUN_14009b1a0(DAT_183ebfa88);
  DAT_1a7971da0 = 0x800;
  DAT_1a7971da4 = 0x800;
  _DAT_1a7971dd0 = 0;
  FUN_14023ace4(DAT_1a7971dc8);
  DAT_1a7971dc8 = _malloc_base((longlong)(DAT_1a7971da4 * DAT_1a7971da0 * 4));
  FUN_1401fcd30(DAT_1a7971dc8,0xff,(longlong)(DAT_1a7971da4 * DAT_1a7971da0 * 4));
  (*DAT_140404060)(1,&DAT_1a7971dc0);
  (*DAT_140404050)(0xde1,DAT_1a7971dc0);
  (*DAT_144980d00)(0xde1,0x2802,0x812f);
  (*DAT_144980d00)(0xde1,0x2803,0x812f);
  (*DAT_144980d00)(0xde1,0x2800,0x2601);
  (*DAT_144980d00)(0xde1,0x2801,0x2601);
  local_1c8 = DAT_1a7971dc8;
  local_1d0 = 0x1401;
  local_1d8 = 0x1908;
  local_1e0 = 0;
  local_1e8 = DAT_1a7971da4;
  (*DAT_144980d18)(0xde1,0,0x1908,DAT_1a7971da0);
  _DAT_18399ebfc = FUN_140068fc0(0,"texture/icon-soccer_ball.png");
  _DAT_18399ebc8 = FUN_140068fc0(0,"texture/icon-disk-white.png");
  _DAT_18399ebbc = FUN_140068fc0(0,"texture/icon-disk-black.png");
  _DAT_18399ebc0 = FUN_140068fc0(0,"texture/icon-disk-green.png");
  _DAT_18399ebc4 = FUN_140068fc0(0,"texture/icon-disk-blue.png");
  _DAT_18399ebcc = FUN_140068fc0(0,"texture/icon-disk-gold.png");
  _DAT_18399ebd0 = FUN_140068fc0(0,"texture/icon-disk-red.png");
  _DAT_18399ec0c = FUN_140068fc0(0,"texture/icon-keyboard.png");
  _DAT_18399ebac = FUN_140068fc0(0,"texture/icon-case-empty.png");
  _DAT_18399ebb0 = FUN_140068fc0(0,"texture/icon-case-empty.png");
  _DAT_18399ebb4 = FUN_140068fc0(0,"texture/icon-stack.png");
  _DAT_18399ebb8 = _DAT_18399ebb4;
  _DAT_18399eba8 = FUN_140068fc0(0,"texture/icon-bandage.png");
  _DAT_18399eb9c = FUN_140068fc0(0,"texture/icon-pistol.png");
  _DAT_18399eba0 = FUN_140068fc0(0,"texture/icon-clip-pistol.png");
  _DAT_18399ebd4 = FUN_140068fc0(0,"texture/icon-phone.png");
  _DAT_18399eb74 = FUN_140068fc0(0,"texture/icon-ak47.png");
  _DAT_18399eb78 = FUN_140068fc0(0,"texture/icon-clip-ak47.png");
  _DAT_18399eb7c = FUN_140068fc0(0,"texture/icon-m16.png");
  _DAT_18399eb80 = FUN_140068fc0(0,"texture/icon-clip-m16.png");
  _DAT_18399eb8c = FUN_140068fc0(0,"texture/icon-mp5.png");
  _DAT_18399eb90 = FUN_140068fc0(0,"texture/icon-clip-mp5.png");
  _DAT_18399eb94 = FUN_140068fc0(0,"texture/icon-uzi.png");
  _DAT_18399eb98 = FUN_140068fc0(0,"texture/icon-clip-uzi.png");
  _DAT_18399ebdc = FUN_140068fc0(0,"texture/icon-key.png");
  _DAT_18399eba4 = FUN_140068fc0(0,"texture/icon-grenade.png");
  DAT_192e8f444 = FUN_140068fc0(0,"texture/icon_speaker.png");
  DAT_192e8f448 = FUN_140068fc0(0,"texture/icon_talking.png");
  DAT_192e8f44c = FUN_140068fc0(0,"texture/icon_muted.png");
  uVar1 = DAT_140278730;
  puVar16 = &DAT_183e93778;
  iVar12 = 1;
  do {
    FUN_140158ab0(local_198,"ak47_fire%02d.wav",iVar12);
    FUN_1400ee400(*puVar16,local_198,uVar1);
    iVar12 = iVar12 + 1;
    puVar16 = puVar16 + 1;
  } while ((longlong)puVar16 < 0x183e93790);
  iVar12 = 1;
  puVar16 = &DAT_183e937f8;
  do {
    FUN_140158ab0(local_198,"m16_fire%02d.wav",iVar12);
    FUN_1400ee400(*puVar16,local_198,uVar1);
    iVar12 = iVar12 + 1;
    puVar16 = puVar16 + 1;
  } while ((longlong)puVar16 < 0x183e93810);
  iVar12 = 1;
  puVar16 = &DAT_183e938f8;
  do {
    FUN_140158ab0(local_198,"mp5_fire%02d.wav",iVar12);
    FUN_1400ee400(*puVar16,local_198,uVar1);
    iVar12 = iVar12 + 1;
    puVar16 = puVar16 + 1;
  } while ((longlong)puVar16 < 0x183e93910);
  iVar12 = 1;
  puVar16 = &DAT_183e93978;
  do {
    FUN_140158ab0(local_198,"uzi_fire%02d.wav",iVar12);
    FUN_1400ee400(*puVar16,local_198,uVar1);
    iVar12 = iVar12 + 1;
    puVar16 = puVar16 + 1;
  } while ((longlong)puVar16 < 0x183e93990);
  iVar12 = 1;
  puVar16 = &DAT_183e939f8;
  do {
    FUN_140158ab0(local_198,"pistol_fire%02d.wav",iVar12);
    FUN_1400ee400(*puVar16,local_198,uVar1);
    iVar12 = iVar12 + 1;
    puVar16 = puVar16 + 1;
  } while ((longlong)puVar16 < 0x183e93a10);
  FUN_1400ee400(DAT_183e935c4,"4cylinder.wav",uVar1);
  FUN_1400ee400(DAT_183e935d4,"tiresqueal.wav",uVar1);
  puVar16 = &DAT_183e935d8;
  do {
    FUN_140158ab0(local_198,"ricochet%02d.wav",iVar20);
    FUN_1400ee400(*puVar16,local_198,uVar1);
    uVar2 = DAT_1402787d4;
    iVar20 = iVar20 + 1;
    puVar16 = puVar16 + 1;
  } while ((longlong)puVar16 < 0x183e935f8);
  FUN_1400ee400(DAT_183e93618,"carcrash01.wav",DAT_1402787d4);
  FUN_1400ee400(DAT_183e9361c,"carcrash02.wav",uVar2);
  FUN_1400ee400(DAT_183e93628,"bullethitbody01.wav",uVar1);
  FUN_1400ee400(DAT_183e9362c,"bullethitbody02.wav",uVar1);
  FUN_1400ee400(DAT_183e93638,"bullethitmetal01.wav",uVar1);
  FUN_1400ee400(DAT_183e9363c,"bullethitmetal02.wav",uVar1);
  FUN_1400ee400(DAT_183e93658,"glassbreak01.wav",uVar1);
  FUN_1400ee400(DAT_183e93668,"phonering01.wav",uVar3);
  puVar16 = &DAT_183e9366c;
  do {
    FUN_140065ae0(*puVar16);
    puVar16 = puVar16 + 1;
  } while ((longlong)puVar16 < 0x183e93698);
  FUN_1400ee400(DAT_183e936ac,"reload01.wav",uVar3);
  FUN_1400ee400(DAT_183e936cc,"shell_hit_cement.wav",DAT_1402785b8);
  FUN_1400ee400(DAT_183e936d0,"gearshift01.wav",uVar3);
  FUN_1400ee400(DAT_183e936d4,"helicopter02.wav",uVar2);
  FUN_140065ae0(DAT_183e936d8);
  FUN_140065ae0(DAT_183e936dc);
  FUN_140065ae0(DAT_183e936e0);
  FUN_140065ae0(DAT_183e936e4);
  FUN_1400ee400(DAT_183e936e8,"factorywhistle.wav",DAT_140278864);
  FUN_1400ee400(DAT_183e936ec,"explosion01.wav",uVar2);
  FUN_1400ee400(DAT_183e936f0,"modem.wav",uVar3);
  FUN_1400ee400(DAT_183e936f4,"floppy.wav",uVar3);
  FUN_14013c920();
  _DAT_15414f280 = 0x41;
  _DAT_15414f290 = 0x42;
  _DAT_15414f2a0 = 0x43;
  _DAT_15414f2b0 = 0x44;
  _DAT_15414f2c0 = 0x45;
  _DAT_15414f2d0 = 0x46;
  _DAT_15414f2e0 = 0x47;
  _DAT_15414f2f0 = 0x48;
  _DAT_15414f300 = 0x49;
  _DAT_15414f310 = 0x4a;
  _DAT_15414f320 = 0x4b;
  _DAT_15414f330 = 0x4c;
  _DAT_15414f340 = 0x4d;
  _DAT_15414f350 = 0x4e;
  _DAT_15414f360 = 0x4f;
  _DAT_15414f370 = 0x50;
  _DAT_15414f380 = 0x51;
  _DAT_15414f390 = 0x52;
  _DAT_154150060 = 0x746c41;
  _DAT_15414f3a0 = 0x53;
  _DAT_15414f3b0 = 0x54;
  _DAT_15414f3c0 = 0x55;
  _DAT_15414f3d0 = 0x56;
  _DAT_15414f3e0 = 0x57;
  _DAT_15414f3f0 = 0x58;
  _DAT_15414f400 = 0x59;
  _DAT_15414f410 = 0x5a;
  _DAT_15414f420 = 0x31;
  _DAT_15414f430 = 0x32;
  _DAT_15414f440 = 0x33;
  _DAT_15414f450 = 0x34;
  _DAT_15414f460 = 0x35;
  _DAT_15414f470 = 0x36;
  _DAT_15414f480 = 0x37;
  _DAT_15414f490 = 0x38;
  _DAT_15414f4a0 = 0x39;
  _DAT_15414f4b0 = 0x30;
  _DAT_15414f740 = DAT_140275844;
  DAT_15414f744 = DAT_140275848;
  DAT_15414f730 = s_Right_14027584c[0];
  DAT_15414f730_1._0_1_ = s_Right_14027584c[1];
  DAT_15414f730_1._1_1_ = s_Right_14027584c[2];
  DAT_15414f730_1._2_1_ = s_Right_14027584c[3];
  DAT_15414f734 = s_Right_14027584c[4];
  DAT_15414f734_1 = s_Right_14027584c[5];
  _DAT_15414f760 = DAT_140275854;
  DAT_15414f762 = DAT_140275856;
  _DAT_15414f750 = DAT_140275858;
  DAT_15414f754 = DAT_14027585c;
  DAT_15414f500 = s_Space_140275860[0];
  DAT_15414f500_1._0_1_ = s_Space_140275860[1];
  DAT_15414f500_1._1_1_ = s_Space_140275860[2];
  DAT_15414f500_1._2_1_ = s_Space_140275860[3];
  DAT_15414f504 = s_Space_140275860[4];
  DAT_15414f504_1 = s_Space_140275860[5];
  DAT_15414f4c0 = s_Enter_140275868[0];
  DAT_15414f4c0_1._0_1_ = s_Enter_140275868[1];
  DAT_15414f4c0_1._1_1_ = s_Enter_140275868[2];
  DAT_15414f4c0_1._2_1_ = s_Enter_140275868[3];
  DAT_15414f4c4 = s_Enter_140275868[4];
  DAT_15414f4c4_1 = s_Enter_140275868[5];
  DAT_154150290 = s_Center_140275870[0];
  DAT_154150290_1._0_1_ = s_Center_140275870[1];
  DAT_154150290_1._1_1_ = s_Center_140275870[2];
  DAT_154150290_1._2_1_ = s_Center_140275870[3];
  DAT_154150294 = s_Center_140275870[4];
  DAT_154150294_1 = s_Center_140275870[5];
  DAT_154150296 = s_Center_140275870[6];
  _DAT_154150040 = DAT_140275878;
  DAT_154150044 = DAT_14027587c;
  DAT_154150050 = s_Shift_140275880[0];
  DAT_154150050_1._0_1_ = s_Shift_140275880[1];
  DAT_154150050_1._1_1_ = s_Shift_140275880[2];
  DAT_154150050_1._2_1_ = s_Shift_140275880[3];
  DAT_154150054 = s_Shift_140275880[4];
  DAT_154150054_1 = s_Shift_140275880[5];
  DAT_15414f5a0 = s_Comma_140275888[0];
  DAT_15414f5a0_1._0_1_ = s_Comma_140275888[1];
  DAT_15414f5a0_1._1_1_ = s_Comma_140275888[2];
  DAT_15414f5a0_1._2_1_ = s_Comma_140275888[3];
  DAT_15414f5a4 = s_Comma_140275888[4];
  DAT_15414f5a4_1 = s_Comma_140275888[5];
  DAT_15414f5b0 = s_Period_140275890[0];
  DAT_15414f5b0_1._0_1_ = s_Period_140275890[1];
  DAT_15414f5b0_1._1_1_ = s_Period_140275890[2];
  DAT_15414f5b0_1._2_1_ = s_Period_140275890[3];
  DAT_15414f5b4 = s_Period_140275890[4];
  DAT_15414f5b4_1 = s_Period_140275890[5];
  DAT_15414f5b6 = s_Period_140275890[6];
  _DAT_15414f830 = DAT_140275898;
  DAT_15414f834 = DAT_14027589c;
  _DAT_1541502d0 = DAT_1402758a0;
  DAT_1541502d4 = DAT_1402758a4;
  _DAT_154150270 = DAT_1402758a8;
  DAT_154150274 = DAT_1402758ac;
  _DAT_154150320 = DAT_1402758b0;
  DAT_154150324 = DAT_1402758b4;
  DAT_154150310 = s_Minus_1402758b8[0];
  DAT_154150310_1._0_1_ = s_Minus_1402758b8[1];
  DAT_154150310_1._1_1_ = s_Minus_1402758b8[2];
  DAT_154150310_1._2_1_ = s_Minus_1402758b8[3];
  DAT_154150314 = s_Minus_1402758b8[4];
  DAT_154150314_1 = s_Minus_1402758b8[5];
  _DAT_15414f240 = DAT_1402758c0;
  DAT_15414f244 = DAT_1402758c4;
  _DAT_154150250 = 0x646e45;
  _DAT_154150240 = 0x736e49;
  _DAT_1541502e0 = 0x6c6544;
  return;
}



===== FUN_14013dcd0 @ 14013dcd0 root=false =====

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_14013dcd0(void)

{
  float fVar1;
  float fVar2;
  longlong lVar3;
  undefined4 *puVar4;
  undefined8 uVar5;
  int *piVar6;
  int *piVar7;
  int iVar8;
  int iVar9;
  longlong *plVar10;
  char *pcVar11;
  int *piVar12;
  float fVar13;
  
  uVar5 = 0x8400000;
  if (DAT_183f7cbf0 != 0) {
    uVar5 = 0x21000000;
  }
  DAT_1a4cf0928 = _malloc_base(uVar5);
  if (DAT_1a4cf0928 == 0) {
    SDL_ShowSimpleMessageBox(0x10,"Error","Colgrid malloc failed",0);
    DAT_160fc47c0 = 1;
    return;
  }
  iVar9 = 0;
  plVar10 = &DAT_1811bf858;
  iVar8 = iVar9;
  do {
    lVar3 = _malloc_base(0x1004004);
    *plVar10 = lVar3;
    if (lVar3 == 0) {
      pcVar11 = "Land malloc failed";
      goto LAB_14013ec19;
    }
    iVar8 = iVar8 + 1;
    plVar10 = plVar10 + 0x684;
  } while (iVar8 < 0x40);
  DAT_181290050 = _malloc_base(0x200000);
  if (DAT_181290050 == 0) {
    pcVar11 = "Landmask malloc failed";
  }
  else {
    DAT_16b27ecf4 = 1;
    DAT_16b27ecc4 = 1;
    DAT_144cbfaa0 = 0x400000;
    DAT_144cbfab8 = _malloc_base(0x400000);
    if (DAT_144cbfab8 != 0) {
      piVar6 = &DAT_183ebb0c4;
      _DAT_183ebfab0 = _DAT_140274da0;
      _DAT_183ebfab4 = DAT_140274da4;
      DAT_183ebb0c0 = 0;
      do {
        *piVar6 = DAT_183ebb0c0;
        piVar6 = piVar6 + 1;
        DAT_183ebb0c0 = DAT_183ebb0c0 + 1;
      } while ((longlong)piVar6 < 0x183ebb144);
      piVar6 = &DAT_183ebb1c4;
      do {
        *piVar6 = DAT_183ebb0c0;
        piVar6 = piVar6 + 1;
        DAT_183ebb0c0 = DAT_183ebb0c0 + 1;
      } while ((longlong)piVar6 < 0x183ebb244);
      piVar6 = &DAT_183ebb2c8;
      do {
        piVar6[-1] = DAT_183ebb0c0;
        DAT_183ebb0c0 = DAT_183ebb0c0 + 1;
        *piVar6 = DAT_183ebb0c0;
        DAT_183ebb0c0 = DAT_183ebb0c0 + 1;
        piVar6[1] = DAT_183ebb0c0;
        DAT_183ebb0c0 = DAT_183ebb0c0 + 1;
        piVar6[2] = DAT_183ebb0c0;
        piVar6 = piVar6 + 4;
        DAT_183ebb0c0 = DAT_183ebb0c0 + 1;
      } while ((longlong)piVar6 < 0x183ebb4c8);
      piVar7 = &DAT_183ebb6c4;
      piVar6 = &DAT_183ebbac4;
      do {
        *piVar7 = DAT_183ebb0c0;
        piVar7 = piVar7 + 1;
        DAT_183ebb0c0 = DAT_183ebb0c0 + 1;
      } while ((longlong)piVar7 < 0x183ebbac4);
      do {
        *piVar6 = DAT_183ebb0c0;
        piVar6 = piVar6 + 1;
        DAT_183ebb0c0 = DAT_183ebb0c0 + 1;
      } while ((longlong)piVar6 < 0x183ebbb44);
      piVar6 = &DAT_183ebbbc4;
      do {
        *piVar6 = DAT_183ebb0c0;
        piVar6 = piVar6 + 1;
        DAT_183ebb0c0 = DAT_183ebb0c0 + 1;
      } while ((longlong)piVar6 < 0x183ebbfc4);
      piVar7 = &DAT_183ebc144;
      piVar6 = &DAT_183ebc244;
      do {
        *piVar7 = DAT_183ebb0c0;
        piVar7 = piVar7 + 1;
        DAT_183ebb0c0 = DAT_183ebb0c0 + 1;
      } while ((longlong)piVar7 < 0x183ebc244);
      piVar7 = &DAT_183ebc044;
      piVar12 = &DAT_183ebc0c4;
      do {
        piVar7[-0x20] = DAT_183ebb0c0;
        DAT_183ebb0c0 = DAT_183ebb0c0 + 1;
        *piVar7 = DAT_183ebb0c0;
        piVar7 = piVar7 + 1;
        DAT_183ebb0c0 = DAT_183ebb0c0 + 1;
        DAT_183ebc3cc = DAT_183ebb0c0;
      } while ((longlong)piVar7 < 0x183ebc0c4);
      do {
        DAT_183ebb0c0 = DAT_183ebc3cc;
        *piVar12 = DAT_183ebb0c0;
        piVar12 = piVar12 + 1;
        DAT_183ebc3cc = DAT_183ebb0c0 + 1;
      } while ((longlong)piVar12 < 0x183ebc144);
      piVar7 = &DAT_183ebc2c4;
      DAT_183ebc340._4_4_ = DAT_183ebb0c0 + 2;
      do {
        DAT_183ebb0c0 = DAT_183ebc340._4_4_;
        *piVar6 = DAT_183ebc340._4_4_;
        piVar6 = piVar6 + 1;
        DAT_183ebc340._4_4_ = DAT_183ebb0c0 + 1;
      } while ((longlong)piVar6 < 0x183ebc2c4);
      do {
        DAT_183ebb0c0 = DAT_183ebc340._4_4_;
        *piVar7 = DAT_183ebc340._4_4_;
        piVar7 = piVar7 + 1;
        DAT_183ebc340._4_4_ = DAT_183ebb0c0 + 1;
      } while ((longlong)piVar7 < 0x183ebc344);
      piVar6 = &DAT_183ebc34c;
      _DAT_183ebc348 = DAT_183ebb0c0 + 2;
      DAT_183ebc3dc = DAT_183ebb0c0 + 3;
      do {
        DAT_183ebb0c0 = DAT_183ebc3dc;
        *piVar6 = DAT_183ebc3dc;
        piVar6 = piVar6 + 1;
        DAT_183ebc3dc = DAT_183ebb0c0 + 1;
      } while ((longlong)piVar6 < 0x183ebc3cc);
      piVar6 = &DAT_183ebc408;
      _DAT_183ebc3e0 = DAT_183ebb0c0 + 2;
      DAT_183ebc3e4 = DAT_183ebb0c0 + 3;
      DAT_183ebb0c0 = DAT_183ebb0c0 + 4;
      DAT_183ebc400 = 0;
      DAT_183ebe404 = DAT_183ebc400;
      do {
        DAT_183ebc400 = DAT_183ebe404;
        piVar6[-1] = DAT_183ebc400;
        DAT_183ebc400 = DAT_183ebc400 + 1;
        *piVar6 = DAT_183ebc400;
        DAT_183ebc400 = DAT_183ebc400 + 1;
        piVar6[1] = DAT_183ebc400;
        DAT_183ebc400 = DAT_183ebc400 + 1;
        piVar6[2] = DAT_183ebc400;
        piVar6 = piVar6 + 4;
        DAT_183ebe404 = DAT_183ebc400 + 1;
      } while ((longlong)piVar6 < 0x183ebd408);
      piVar6 = &DAT_183ebe850;
      DAT_183ebe408 = DAT_183ebc400 + 2;
      _DAT_183ebe40c = DAT_183ebc400 + 3;
      _DAT_183ebe410 = DAT_183ebc400 + 4;
      DAT_183ebe414 = DAT_183ebc400 + 5;
      DAT_183ebe418 = DAT_183ebc400 + 6;
      DAT_183ebe41c = DAT_183ebc400 + 7;
      DAT_183ebe420 = DAT_183ebc400 + 8;
      DAT_183ebe424 = DAT_183ebc400 + 9;
      DAT_183ebe428 = DAT_183ebc400 + 10;
      DAT_183ebe42c = DAT_183ebc400 + 0xb;
      DAT_183ebe430 = DAT_183ebc400 + 0xc;
      DAT_183ebe438 = DAT_183ebc400 + 0xd;
      DAT_183ebe43c = DAT_183ebc400 + 0xe;
      DAT_183ebe434 = DAT_183ebc400 + 0xf;
      DAT_183ebf050 = DAT_183ebc400 + 0x10;
      DAT_183ebf054 = DAT_183ebc400 + 0x11;
      DAT_183ebf058 = DAT_183ebc400 + 0x12;
      DAT_183ebf05c = DAT_183ebc400 + 0x13;
      DAT_183ebf060 = DAT_183ebc400 + 0x14;
      DAT_183ebf064 = DAT_183ebc400 + 0x15;
      _DAT_183ebf068 = DAT_183ebc400 + 0x16;
      DAT_183ebf06c = DAT_183ebc400 + 0x17;
      DAT_183ebf0f0 = DAT_183ebc400 + 0x18;
      do {
        DAT_183ebc400 = DAT_183ebf0f0;
        *piVar6 = DAT_183ebf0f0;
        piVar6 = piVar6 + 1;
        DAT_183ebf0f0 = DAT_183ebc400 + 1;
      } while ((longlong)piVar6 < 0x183ebec50);
      piVar6 = &DAT_183ebf070;
      DAT_183ebf134 = DAT_183ebc400 + 2;
      DAT_183ebf138 = DAT_183ebc400 + 3;
      DAT_183ebf13c = DAT_183ebc400 + 4;
      DAT_183ebf140 = DAT_183ebc400 + 5;
      DAT_183ebf144 = DAT_183ebc400 + 6;
      DAT_183ebf148 = DAT_183ebc400 + 7;
      DAT_183ebf14c = DAT_183ebc400 + 8;
      _DAT_183ebf150 = DAT_183ebc400 + 9;
      DAT_183ebf0f4 = DAT_183ebc400 + 10;
      do {
        DAT_183ebc400 = DAT_183ebf0f4;
        *piVar6 = DAT_183ebf0f4;
        piVar6 = piVar6 + 1;
        DAT_183ebf0f4 = DAT_183ebc400 + 1;
      } while ((longlong)piVar6 < 0x183ebf0f0);
      piVar7 = &DAT_183ebf180;
      DAT_183ebf0f8 = DAT_183ebc400 + 2;
      piVar6 = &DAT_183ebf580;
      DAT_183ebf0fc = DAT_183ebc400 + 3;
      DAT_183ebf100 = DAT_183ebc400 + 4;
      DAT_183ebf104 = DAT_183ebc400 + 5;
      DAT_183ebf108 = DAT_183ebc400 + 6;
      DAT_183ebf10c = DAT_183ebc400 + 7;
      DAT_183ebf110 = DAT_183ebc400 + 8;
      DAT_183ebf114 = DAT_183ebc400 + 9;
      DAT_183ebf118 = DAT_183ebc400 + 10;
      DAT_183ebf11c = DAT_183ebc400 + 0xb;
      DAT_183ebf120 = DAT_183ebc400 + 0xc;
      _DAT_183ebf124 = DAT_183ebc400 + 0xd;
      DAT_183ebf128 = DAT_183ebc400 + 0xe;
      _DAT_183ebf12c = DAT_183ebc400 + 0xf;
      DAT_183ebf130 = DAT_183ebc400 + 0x10;
      DAT_183ebf154 = DAT_183ebc400 + 0x11;
      DAT_183ebf158 = DAT_183ebc400 + 0x12;
      DAT_183ebf15c = DAT_183ebc400 + 0x13;
      DAT_183ebf160 = DAT_183ebc400 + 0x14;
      DAT_183ebf164 = DAT_183ebc400 + 0x15;
      DAT_183ebf168 = DAT_183ebc400 + 0x16;
      DAT_183ebf16c = DAT_183ebc400 + 0x17;
      DAT_183ebf170 = DAT_183ebc400 + 0x18;
      DAT_183ebf174 = DAT_183ebc400 + 0x19;
      DAT_183ebf178 = DAT_183ebc400 + 0x1a;
      DAT_183ebf17c = DAT_183ebc400 + 0x1b;
      DAT_183ebf980 = DAT_183ebc400 + 0x1c;
      do {
        DAT_183ebc400 = DAT_183ebf980;
        *piVar7 = DAT_183ebf980;
        piVar7 = piVar7 + 1;
        DAT_183ebf980 = DAT_183ebc400 + 1;
      } while ((longlong)piVar7 < 0x183ebf580);
      do {
        DAT_183ebc400 = DAT_183ebf980;
        *piVar6 = DAT_183ebf980;
        piVar6 = piVar6 + 1;
        DAT_183ebf980 = DAT_183ebc400 + 1;
      } while ((longlong)piVar6 < 0x183ebf780);
      piVar6 = &DAT_183ebf988;
      DAT_183ebf984 = DAT_183ebc400 + 2;
      DAT_183ebfa88 = DAT_183ebc400 + 3;
      do {
        DAT_183ebc400 = DAT_183ebfa88;
        *piVar6 = DAT_183ebfa88;
        piVar6 = piVar6 + 1;
        DAT_183ebfa88 = DAT_183ebc400 + 1;
      } while ((longlong)piVar6 < 0x183ebfa88);
      DAT_183ebc400 = DAT_183ebc400 + 2;
      DAT_1a4cffd00 = s_concrete_140274f48[8];
      DAT_1a4cffcf8 = s_concrete_140274f48[0];
      DAT_1a4cffcf9 = s_concrete_140274f48[1];
      DAT_1a4cffcf8_1._1_1_ = s_concrete_140274f48[2];
      DAT_1a4cffcf8_1._2_1_ = s_concrete_140274f48[3];
      DAT_1a4cffcf8_1._3_1_ = s_concrete_140274f48[4];
      DAT_1a4cffcf8_1._4_1_ = s_concrete_140274f48[5];
      DAT_1a4cffcf8_1._5_1_ = s_concrete_140274f48[6];
      DAT_1a4cffcf8_1._6_1_ = s_concrete_140274f48[7];
      DAT_1a4cff7e4 = 3;
      DAT_1a4cff560 = 4;
      DAT_1a4cff8d0 = 4;
      FUN_140138770();
      DAT_1a8a873c0 = DAT_14027812c;
      _DAT_1a8a873c4 = DAT_1402780e0;
      _DAT_1a8a873e0 = DAT_1402780f4;
      _DAT_1a8a873e4 = _DAT_140279270;
      uRam00000001a8a873ec = _UNK_140279278;
      _DAT_1a8a87418 = 0;
      _DAT_1a8a873f8 = DAT_140278124;
      _DAT_1a8a873c8 = DAT_140278114;
      _DAT_1a8a873fc = _DAT_140279280;
      uRam00000001a8a87404 = _UNK_140279288;
      _DAT_1a8a873cc = _DAT_140279260;
      uRam00000001a8a873d4 = _UNK_140279268;
      _DAT_1a8a87410 = DAT_140278134;
      _DAT_1a8a873dc = DAT_1402780d0;
      _DAT_1a8a87414 = DAT_14027817c;
      _DAT_1a8a873f4 = DAT_14027811c;
      _DAT_1a8a8741c = DAT_140278478;
      _DAT_1a8a8740c = DAT_1402780f8;
      FUN_1401402c0();
      piVar6 = &DAT_183e936f8;
      _DAT_183e935a4 = _DAT_140278f50;
      _DAT_183e935ac = _UNK_140278f58;
      DAT_183e935c4 = 8;
      _DAT_183e935d4 = _DAT_140279030;
      uRam0000000183e935dc = _UNK_140279038;
      _DAT_183e935c8 = 9;
      _DAT_183e93668 = _DAT_1402790a0;
      _DAT_183e93670 = _UNK_1402790a8;
      _DAT_183e935f4 = 0x12;
      _DAT_183e935b4 = _DAT_140278fb0;
      uRam0000000183e935bc = _UNK_140278fb8;
      DAT_183e93618 = 0x13;
      _DAT_183e93688 = _DAT_1402790c0;
      uRam0000000183e93690 = _UNK_1402790c8;
      DAT_183e9361c = 0x14;
      _DAT_183e935e4 = _DAT_140279050;
      uRam0000000183e935ec = _UNK_140279058;
      DAT_183e93628 = 0x15;
      _DAT_183e936dc = _DAT_1402790e0;
      _DAT_183e936e4 = _UNK_1402790e8;
      DAT_183e9362c = 0x16;
      _DAT_183e93678 = _DAT_1402790b0;
      uRam0000000183e93680 = _UNK_1402790b8;
      DAT_183e93638 = 0x17;
      _DAT_183e93648 = _DAT_140279100;
      uRam0000000183e93650 = _UNK_140279108;
      DAT_183e9363c = 0x18;
      DAT_183e93658 = 0x19;
      _DAT_183e9365c = 0x1a;
      DAT_183e936ac = 0x27;
      _DAT_183e936cc = _DAT_1402790d0;
      _DAT_183e936d4 = _UNK_1402790d8;
      DAT_183e936ec = 0x30;
      DAT_183e936f0 = 0x31;
      DAT_183e936f4 = 0x32;
      DAT_183e935a0 = 0x37;
      DAT_183e93778 = DAT_183e935a0;
      do {
        DAT_183e935a0 = DAT_183e93778;
        *piVar6 = DAT_183e935a0;
        piVar6 = piVar6 + 1;
        DAT_183e93778 = DAT_183e935a0 + 1;
      } while ((longlong)piVar6 < 0x183e93738);
      _DAT_183e9377c = DAT_183e935a0 + 2;
      _DAT_183e93780 = DAT_183e935a0 + 3;
      _DAT_183e93784 = DAT_183e935a0 + 4;
      _DAT_183e93788 = DAT_183e935a0 + 5;
      _DAT_183e9378c = DAT_183e935a0 + 6;
      DAT_183e937f8 = DAT_183e935a0 + 7;
      _DAT_183e937fc = DAT_183e935a0 + 8;
      _DAT_183e93800 = DAT_183e935a0 + 9;
      _DAT_183e93804 = DAT_183e935a0 + 10;
      _DAT_183e93808 = DAT_183e935a0 + 0xb;
      _DAT_183e9380c = DAT_183e935a0 + 0xc;
      DAT_183e938f8 = DAT_183e935a0 + 0xd;
      _DAT_183e938fc = DAT_183e935a0 + 0xe;
      _DAT_183e93900 = DAT_183e935a0 + 0xf;
      _DAT_183e93904 = DAT_183e935a0 + 0x10;
      _DAT_183e93908 = DAT_183e935a0 + 0x11;
      _DAT_183e9390c = DAT_183e935a0 + 0x12;
      DAT_183e93978 = DAT_183e935a0 + 0x13;
      _DAT_183e9397c = DAT_183e935a0 + 0x14;
      _DAT_183e93980 = DAT_183e935a0 + 0x15;
      _DAT_183e93984 = DAT_183e935a0 + 0x16;
      _DAT_183e93988 = DAT_183e935a0 + 0x17;
      _DAT_183e9398c = DAT_183e935a0 + 0x18;
      DAT_183e939f8 = DAT_183e935a0 + 0x19;
      _DAT_183e939fc = DAT_183e935a0 + 0x1a;
      _DAT_183e93a00 = DAT_183e935a0 + 0x1b;
      _DAT_183e93a04 = DAT_183e935a0 + 0x1c;
      _DAT_183e93a08 = DAT_183e935a0 + 0x1d;
      _DAT_183e93a0c = DAT_183e935a0 + 0x1e;
      DAT_183e935a0 = DAT_183e935a0 + 0x1f;
      FUN_140145bb0();
      FUN_14003fb90(6);
      _DAT_1a760c010 = DAT_140278674;
      FUN_14003fb90(1);
      FUN_14003fb90(1);
      FUN_14003fb90(1);
      FUN_14003fb90(1);
      _DAT_1a7602fa8 = DAT_140278658;
      _DAT_1a7602fac = DAT_140278c08;
      _DAT_1a7602fa4 = 0;
      _DAT_1a7600b98 = 0x40400000;
      FUN_14003fb90(4);
      FUN_14013ec80();
      puVar4 = &DAT_1a4cffce4;
      do {
        *puVar4 = 0x3e800000;
        puVar4[1] = 0x3e800000;
        puVar4[2] = 0x3f800000;
        puVar4[3] = 0x3f99999a;
        fVar2 = DAT_140278aac;
        fVar1 = DAT_140278a9c;
        puVar4 = puVar4 + 0x2e;
      } while ((longlong)puVar4 < 0x1a4d0b4e4);
      _DAT_181290040 = 0xc5800000;
      _DAT_181290044 = 0;
      _DAT_181290048 = 0xc5800000;
      *(undefined4 *)(&DAT_1a4cffcf4 + (longlong)DAT_1a4cff7e4 * 0xb8) = 1;
      piVar6 = &DAT_1811bf850;
      iVar8 = iVar9;
      do {
        *piVar6 = iVar8;
        piVar6[-1] = 0;
        piVar6[-4] = -0x3a800000;
        piVar6[-3] = 0;
        fVar13 = (float)iVar8 * fVar1 - fVar2;
        piVar6[-2] = (int)fVar13;
        piVar6[0xd08] = iVar8;
        piVar6[0xd07] = 1;
        piVar6[0xd06] = (int)fVar13;
        piVar6[0xd04] = -0x3b000000;
        piVar6[0xd05] = 0;
        piVar6[0x1a10] = iVar8;
        piVar6[0x1a0f] = 2;
        piVar6[0x1a0e] = (int)fVar13;
        piVar6[0x1a0c] = 0;
        piVar6[0x1a0d] = 0;
        piVar6[0x2718] = iVar8;
        piVar6[0x2717] = 3;
        piVar6[0x2716] = (int)fVar13;
        piVar6[0x2714] = 0x45000000;
        piVar6[0x2715] = 0;
        piVar6[0x3420] = iVar8;
        piVar6[0x341f] = 4;
        piVar6[0x341e] = (int)fVar13;
        piVar6[0x341c] = 0x45800000;
        piVar6[0x341d] = 0;
        piVar6[0x4128] = iVar8;
        piVar6[0x4127] = 5;
        piVar6[0x4126] = (int)fVar13;
        piVar6[0x4124] = 0x45c00000;
        piVar6[0x4125] = 0;
        piVar6[0x4e30] = iVar8;
        piVar6[0x4e2f] = 6;
        piVar6[0x4e2e] = (int)fVar13;
        piVar6[0x4e2c] = 0x46000000;
        piVar6[0x4e2d] = 0;
        piVar6[0x5b38] = iVar8;
        iVar8 = iVar8 + 1;
        piVar6[0x5b37] = 7;
        piVar6[0x5b36] = (int)fVar13;
        piVar6[0x5b34] = 0x46200000;
        piVar6[0x5b35] = 0;
        piVar6 = piVar6 + 0x6840;
      } while (iVar8 < 8);
      piVar6 = &DAT_1811bf870;
      iVar8 = iVar9;
      piVar7 = piVar6;
      do {
        do {
          *piVar6 = iVar8;
          piVar6[0xd] = iVar8;
          piVar6[0x1a] = iVar8;
          piVar6[0x27] = iVar8;
          piVar6[0x34] = iVar8;
          piVar6[0x41] = iVar8;
          piVar6[0x4e] = iVar8;
          piVar6[0x5b] = iVar8;
          piVar6[0x68] = iVar8;
          piVar6[0x75] = iVar8;
          piVar6[0x82] = iVar8;
          piVar6[0x8f] = iVar8;
          piVar6[0x9c] = iVar8;
          piVar6[0xa9] = iVar8;
          piVar6[0xb6] = iVar8;
          piVar6[0xc3] = iVar8;
          iVar8 = iVar8 + 1;
          piVar6[-1] = 0;
          piVar6[0xc] = 1;
          piVar6[0x19] = 2;
          piVar6[0x26] = 3;
          piVar6[0x33] = 4;
          piVar6[0x40] = 5;
          piVar6[0x4d] = 6;
          piVar6[0x5a] = 7;
          piVar6[0x67] = 8;
          piVar6[0x74] = 9;
          piVar6[0x81] = 10;
          piVar6[0x8e] = 0xb;
          piVar6[0x9b] = 0xc;
          piVar6[0xa8] = 0xd;
          piVar6[0xb5] = 0xe;
          piVar6[0xc2] = 0xf;
          piVar6 = piVar6 + 0xd0;
        } while (iVar8 < 0x10);
        piVar6 = piVar7 + 0xd08;
        iVar8 = iVar9;
        piVar7 = piVar6;
      } while ((longlong)piVar6 < 0x181290070);
      FUN_1400d3190();
      return;
    }
    pcVar11 = "Replay malloc failed";
    DAT_144cbfab8 = 0;
  }
LAB_14013ec19:
  SDL_ShowSimpleMessageBox(0x10,"Error",pcVar11);
  DAT_160fc47c0 = 1;
  return;
}


