// Decompiled from acclient.exe — chunk 0x00410000 // Ghidra 12.0.4 + pyghidra headless // --- FUN_00410220 at 0x00410220 (size: 122) --- int FUN_00410220(char *param_1) { char cVar1; char *pcVar2; int iVar3; int iVar4; iVar3 = 0; cVar1 = *param_1; pcVar2 = param_1; do { if (cVar1 == '\0') { if (*param_1 != '\0') { iVar4 = 0; pcVar2 = param_1; do { pcVar2 = pcVar2 + 1; iVar4 = iVar4 + 1; } while (*pcVar2 != '\0'); if (iVar4 != 0) { printf("%0.*s",iVar4,param_1); iVar3 = iVar3 + iVar4; } } return iVar3; } if (*pcVar2 == '\x1b') { iVar4 = (int)pcVar2 - (int)param_1; if (iVar4 != 0) { printf("%0.*s",iVar4,param_1); iVar3 = iVar3 + iVar4; } iVar4 = FUN_0040ff80(pcVar2); if (iVar4 == 0) goto LAB_00410261; param_1 = pcVar2 + iVar4; pcVar2 = param_1; } else { LAB_00410261: pcVar2 = pcVar2 + 1; } cVar1 = *pcVar2; } while( true ); } // --- FUN_004102a0 at 0x004102A0 (size: 97) --- int FUN_004102a0(undefined4 param_1) { undefined *puVar1; int iVar2; LONG LVar3; puVar1 = PTR_DAT_00818344; InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10)); iVar2 = FUN_00402390(param_1,&stack0x00000008); if (-1 < iVar2) { iVar2 = FUN_00410220(puVar1); } LVar3 = InterlockedDecrement((LONG *)(puVar1 + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar1 + -0x14))(1); } return iVar2; } // --- FUN_00410310 at 0x00410310 (size: 49) --- void FUN_00410310(undefined4 *param_1,int param_2) { undefined4 *puVar1; FUN_0040ad10(4); puVar1 = (undefined4 *)FUN_0040acf0(4); if (puVar1 != (undefined4 *)0x0) { if ((*(byte *)(param_2 + 4) & 1) != 0) { *puVar1 = *param_1; return; } *param_1 = *puVar1; } return; } // --- FUN_00410350 at 0x00410350 (size: 89) --- void __fastcall FUN_00410350(int *param_1) { int iVar1; int iVar2; param_1[2] = 0; if ((param_1[1] & 0x80000000U) != 0x80000000) { if (*param_1 != 0) { iVar2 = (param_1[1] & 0x7fffffffU) - 1; while (-1 < iVar2) { iVar1 = *param_1; iVar2 = iVar2 + -1; *(undefined4 *)(iVar1 + 8 + iVar2 * 8) = 0; *(undefined4 *)(iVar1 + 0xc + iVar2 * 8) = 0; } } return; } operator_delete__((void *)*param_1); *param_1 = 0; param_1[1] = 0; return; } // --- FUN_004103f0 at 0x004103F0 (size: 164) --- undefined4 __thiscall FUN_004103f0(int *param_1,uint param_2) { int iVar1; int iVar2; int iVar3; if (param_2 < (uint)param_1[2]) { return 0; } if ((param_1[1] & 0x7fffffffU) < param_2) { if (param_2 != 0) { iVar2 = thunk_FUN_005df0f5(param_2 * 8); if (iVar2 == 0) { return 0; } if (*param_1 != 0) { iVar3 = param_1[2] + -1; while (-1 < iVar3) { iVar3 = iVar3 + -1; iVar1 = *param_1; *(undefined4 *)(iVar2 + 8 + iVar3 * 8) = *(undefined4 *)(iVar1 + 8 + iVar3 * 8); *(undefined4 *)(iVar2 + 0xc + iVar3 * 8) = *(undefined4 *)(iVar1 + 0xc + iVar3 * 8); } if ((param_1[1] & 0x80000000U) == 0x80000000) { operator_delete__((void *)*param_1); } } *param_1 = iVar2; param_1[1] = param_2 | 0x80000000; return 1; } FUN_00410350(); } return 1; } // --- FUN_004104a0 at 0x004104A0 (size: 93) --- undefined1 __thiscall FUN_004104a0(int *param_1,uint param_2,char param_3) { int iVar1; char cVar2; uint uVar3; if ((param_1[1] & 0x7fffffffU) < param_2) { uVar3 = param_2; if (param_3 == '\0') { uVar3 = FUN_004077f0(param_2); } cVar2 = FUN_004103f0(uVar3); if (cVar2 == '\0') { return 0; } } else { uVar3 = param_2; if (param_2 < (uint)param_1[2]) { do { iVar1 = *param_1; *(undefined4 *)(iVar1 + uVar3 * 8) = 0; *(undefined4 *)(iVar1 + 4 + uVar3 * 8) = 0; uVar3 = uVar3 + 1; } while (uVar3 < (uint)param_1[2]); } } param_1[2] = param_2; return 1; } // --- FUN_00410500 at 0x00410500 (size: 132) --- bool __thiscall FUN_00410500(int param_1,int param_2,int param_3) { uint uVar1; char cVar2; uint uVar3; undefined4 uVar4; int *piVar5; uVar1 = *(uint *)(param_1 + 0xc); uVar3 = 0; if (uVar1 != 0) { piVar5 = *(int **)(param_1 + 4); do { if (*piVar5 == param_2) { if (uVar3 != 0xffffffff) { return (*(int **)(param_1 + 4))[uVar3 * 2 + 1] == param_3; } break; } uVar3 = uVar3 + 1; piVar5 = piVar5 + 2; } while (uVar3 < uVar1); } uVar3 = *(int *)(param_1 + 0xc) + 1; if ((*(uint *)(param_1 + 8) & 0x7fffffff) < uVar3) { uVar4 = FUN_004077f0(uVar3); cVar2 = FUN_004103f0(uVar4); if (cVar2 == '\0') goto LAB_00410557; } *(uint *)(param_1 + 0xc) = uVar3; LAB_00410557: *(int *)(*(int *)(param_1 + 4) + uVar1 * 8) = param_2; *(int *)(*(int *)(param_1 + 4) + 4 + uVar1 * 8) = param_3; return true; } // --- FUN_00410590 at 0x00410590 (size: 157) --- void __thiscall FUN_00410590(int param_1,int param_2) { undefined4 *puVar1; undefined4 *puVar2; undefined4 uVar3; int iVar4; uVar3 = *(undefined4 *)(param_1 + 0xc); FUN_0040ad10(4); puVar1 = (undefined4 *)FUN_0040acf0(4); if (puVar1 != (undefined4 *)0x0) { if ((*(byte *)(param_2 + 4) & 1) == 0) { uVar3 = *puVar1; } else { *puVar1 = uVar3; } } if ((*(uint *)(param_2 + 4) >> 2 & 1) == 0) { if ((~*(byte *)(param_2 + 4) & 1) != 0) { FUN_004104a0(uVar3,1); } iVar4 = *(int *)(param_1 + 0xc); while (iVar4 != 0) { iVar4 = iVar4 + -1; puVar1 = (undefined4 *)(*(int *)(param_1 + 4) + iVar4 * 8); FUN_0040ad10(8); puVar2 = (undefined4 *)FUN_0040acf0(8); if (puVar2 != (undefined4 *)0x0) { if ((*(byte *)(param_2 + 4) & 1) == 0) { *puVar1 = *puVar2; puVar1[1] = puVar2[1]; } else { *puVar2 = *puVar1; puVar2[1] = puVar1[1]; } } } } return; } // --- FUN_00410630 at 0x00410630 (size: 188) --- undefined4 FUN_00410630(int param_1) { char cVar1; undefined4 uVar2; uint *puVar3; undefined4 uVar4; uint uVar5; uVar2 = 0xffffffff; if ((~(byte)(*(uint *)(param_1 + 4) >> 2) & 1) != 0) { uVar2 = FUN_0040a8d0(); uVar5 = 0x4d676963; FUN_0040ad10(4); puVar3 = (uint *)FUN_0040acf0(4); if (puVar3 != (uint *)0x0) { if ((*(byte *)(param_1 + 4) & 1) == 0) { uVar5 = *puVar3; } else { *puVar3 = 0x4d676963; } } if ((~*(byte *)(param_1 + 4) & 1) != 0) { if ((int)uVar5 < 0) { uVar4 = FUN_0040a8d0(); FUN_0040a8e0(uVar5 & 0x3fffffff); FUN_00410590(param_1); FUN_0040a8e0(uVar4); return uVar2; } cVar1 = FUN_00410500(0x436f7265,uVar5 & 0x3fffffff); if (cVar1 == '\0') { FUN_0040aa50(); } } } return uVar2; } // --- FUN_004106f0 at 0x004106F0 (size: 294) --- uint __thiscall FUN_004106f0(int param_1,uint param_2,int param_3) { int iVar1; int iVar2; byte bVar3; uint *puVar4; uint uVar5; uint uVar6; iVar2 = param_3; bVar3 = ~(byte)(*(uint *)(param_3 + 4) >> 2); uVar6 = CONCAT31((uint3)(*(uint *)(param_3 + 4) >> 10),bVar3); if (((bVar3 & 1) == 0) || (uVar6 = param_2, param_2 == 0xffffffff)) { return uVar6 & 0xffffff00; } puVar4 = (uint *)FUN_0040ac70(param_2,4); if (puVar4 == (uint *)0x0) goto LAB_00410786; if ((~*(byte *)(iVar2 + 4) & 1) == 0) { if (*puVar4 == 0x4d676963) { iVar1 = *(int *)(param_1 + 0xc); if ((iVar1 != 0) && ((iVar1 != 1 || (**(int **)(param_1 + 4) == 0x436f7265)))) { if (iVar1 == 1) { *puVar4 = 0xd676963; *puVar4 = *(uint *)(*(int *)(param_1 + 4) + 4) & 0x3fffffff; return ~(*(uint *)(iVar2 + 4) >> 2) & 1; } *puVar4 = 0x8d676963; uVar6 = FUN_0040a8d0(); *puVar4 = *puVar4 ^ (*puVar4 ^ uVar6) & 0x3fffffff; FUN_00410590(iVar2); return ~(*(uint *)(iVar2 + 4) >> 2) & 1; } } } else { uVar6 = *puVar4; if (-1 < (int)uVar6) goto LAB_00410786; uVar5 = FUN_0040a8d0(); if (uVar5 == (uVar6 & 0x3fffffff)) { FUN_00410310(¶m_3,iVar2); FUN_0040acf0(param_3 * 8); return ~(*(uint *)(iVar2 + 4) >> 2) & 1; } if (-1 < (int)uVar6) goto LAB_00410786; } FUN_0040aa50(); LAB_00410786: return ~(*(uint *)(iVar2 + 4) >> 2) & 1; } // --- FUN_00410820 at 0x00410820 (size: 81) --- void __thiscall FUN_00410820(int *param_1,int *param_2,int *param_3) { if (param_3 == (int *)0x0) { *param_2 = *param_1; if (*param_1 != 0) { *(int **)(*param_1 + 4) = param_2; *param_1 = (int)param_2; param_2[1] = 0; return; } param_1[1] = (int)param_2; *param_1 = (int)param_2; param_2[1] = 0; return; } *param_2 = *param_3; if (*param_3 != 0) { *(int **)(*param_3 + 4) = param_2; *param_3 = (int)param_2; param_2[1] = (int)param_3; return; } param_1[1] = (int)param_2; *param_3 = (int)param_2; param_2[1] = (int)param_3; return; } // --- FUN_00410880 at 0x00410880 (size: 80) --- void __thiscall FUN_00410880(int *param_1,int *param_2) { int iVar1; undefined4 *puVar2; if ((int *)param_2[1] == (int *)0x0) { iVar1 = *(int *)*param_1; *param_1 = iVar1; if (iVar1 != 0) { *(undefined4 *)(iVar1 + 4) = 0; } } else { *(int *)param_2[1] = *param_2; } if (*param_2 != 0) { *(int *)(*param_2 + 4) = param_2[1]; *param_2 = 0; param_2[1] = 0; return; } puVar2 = *(undefined4 **)(param_1[1] + 4); param_1[1] = (int)puVar2; if (puVar2 != (undefined4 *)0x0) { *puVar2 = 0; } *param_2 = 0; param_2[1] = 0; return; } // --- FUN_004108d0 at 0x004108D0 (size: 149) --- void __thiscall FUN_004108d0(int param_1,undefined4 *param_2,int *param_3,int *param_4) { undefined4 *puVar1; int *piVar2; undefined4 **ppuVar3; undefined4 *local_18; undefined4 *local_14 [5]; piVar2 = &DAT_00795700; local_18 = &DAT_00795700; local_14[0] = (undefined4 *)0x0; local_14[1] = &DAT_00795710; local_14[2] = (undefined4 *)0x0; local_14[3] = (undefined4 *)0x0; local_14[4] = (undefined4 *)0x0; ppuVar3 = &local_18; while ((((*piVar2 != *param_3 || (piVar2[1] != param_3[1])) || (piVar2[2] != param_3[2])) || (piVar2[3] != param_3[3]))) { piVar2 = ppuVar3[2]; ppuVar3 = ppuVar3 + 2; if (piVar2 == (int *)0x0) { *param_2 = 0x80004002; return; } } if (param_4 != (int *)0x0) { puVar1 = ppuVar3[1]; (**(code **)(*(int *)((int)puVar1 + param_1) + 0x10))(); *param_4 = (int)puVar1 + param_1; } *param_2 = 0; return; } // --- FUN_00410a00 at 0x00410A00 (size: 133) --- int * __thiscall FUN_00410a00(int *param_1,int *param_2) { undefined4 *puVar1; int iVar2; char cVar3; undefined4 *puVar4; uint uVar5; undefined4 *puVar6; if ((param_1[1] & 0x7fffffffU) < (param_2[1] & 0x7fffffffU)) { param_1[2] = 0; cVar3 = FUN_004103f0(param_2[1] & 0x7fffffff); if (cVar3 == '\0') { return param_1; } } puVar4 = (undefined4 *)*param_2; puVar1 = puVar4 + param_2[2] * 2; puVar6 = (undefined4 *)*param_1; for (; puVar4 < puVar1; puVar4 = puVar4 + 2) { *puVar6 = *puVar4; puVar6[1] = puVar4[1]; puVar6 = puVar6 + 2; } uVar5 = param_2[2]; if (uVar5 < (uint)param_1[2]) { do { iVar2 = *param_1; *(undefined4 *)(iVar2 + uVar5 * 8) = 0; *(undefined4 *)(iVar2 + 4 + uVar5 * 8) = 0; uVar5 = uVar5 + 1; } while (uVar5 < (uint)param_1[2]); } param_1[2] = param_2[2]; return param_1; } // --- FUN_00410a90 at 0x00410A90 (size: 82) --- void __fastcall FUN_00410a90(int param_1) { undefined *puVar1; undefined4 *puVar2; uint local_8; undefined4 local_4; puVar1 = PTR_DAT_00818558; local_4 = *(undefined4 *)(param_1 + 0x68); local_8 = local_8 & 0xffffff00; puVar2 = (undefined4 *)FUN_004064a0(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,local_8,0); if ((puVar2 != (undefined4 *)puVar1) || (puVar2 = puVar2 + -1, puVar2 != (undefined4 *)puVar1)) { puVar2 = puVar2 + 1; } FUN_00410b30(*puVar2); return; } // --- FUN_00410af0 at 0x00410AF0 (size: 58) --- int __thiscall FUN_00410af0(int param_1,uint param_2,undefined4 *param_3) { uint *puVar1; uint3 uVar2; puVar1 = *(uint **)(*(int *)(param_1 + 0x6c) + (param_2 % *(uint *)(param_1 + 0x74)) * 4); uVar2 = (uint3)((uint)*(int *)(param_1 + 0x6c) >> 8); do { if (puVar1 == (uint *)0x0) { LAB_00410b11: return (uint)uVar2 << 8; } if (*puVar1 == param_2) { if (puVar1 != (uint *)0x0) { *param_3 = puVar1 + 4; return CONCAT31(uVar2,1); } goto LAB_00410b11; } puVar1 = (uint *)puVar1[1]; } while( true ); } // --- FUN_00410b30 at 0x00410B30 (size: 234) --- undefined4 __thiscall FUN_00410b30(int param_1,int param_2) { int iVar1; uint *puVar2; int *piVar3; undefined4 *puVar4; uint uVar5; uint *puVar6; if (param_2 == *(int *)(param_1 + 0x68)) { return 0; } iVar1 = *(int *)(param_1 + 0x6c); puVar2 = (uint *)0x0; do { if (iVar1 == 0) { if (*(void **)(param_1 + 0x60) != (void *)(param_1 + 4)) { operator_delete__(*(void **)(param_1 + 0x60)); } *(undefined4 *)(param_1 + 0x60) = 0; *(undefined4 *)(param_1 + 100) = 0; *(undefined4 *)(param_1 + 0x68) = 0; *(undefined4 *)(param_1 + 0x6c) = 0; FUN_0065ec90(param_2); while (puVar2 != (uint *)0x0) { puVar6 = (uint *)puVar2[1]; if (*(int *)(param_1 + 0x68) * 2 < *(int *)(param_1 + 0x6c) + 1) { FUN_00410a90(); } uVar5 = *puVar2 % *(uint *)(param_1 + 0x68); iVar1 = *(int *)(param_1 + 0x60); puVar2[1] = *(uint *)(iVar1 + uVar5 * 4); *(uint **)(iVar1 + uVar5 * 4) = puVar2; uVar5 = iVar1 + uVar5 * 4; if (uVar5 < *(uint *)(param_1 + 100)) { *(uint *)(param_1 + 100) = uVar5; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1; puVar2 = puVar6; } return 1; } piVar3 = *(int **)(param_1 + 100); while (piVar3 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) { if (**(int **)(param_1 + 100) != 0) { puVar4 = *(undefined4 **)(param_1 + 100); puVar6 = (uint *)*puVar4; goto LAB_00410b7e; } piVar3 = *(int **)(param_1 + 100) + 1; *(int **)(param_1 + 100) = piVar3; } puVar4 = (undefined4 *)0x0; puVar6 = (uint *)0x0; LAB_00410b7e: FUN_00410d00(param_1,puVar4,puVar6); puVar6[1] = (uint)puVar2; iVar1 = *(int *)(param_1 + 0x6c); puVar2 = puVar6; } while( true ); } // --- FUN_00410c20 at 0x00410C20 (size: 117) --- uint __thiscall FUN_00410c20(int param_1,uint *param_2) { uint *puVar1; int iVar2; uint uVar3; puVar1 = *(uint **)(*(uint *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4); do { if (puVar1 == (uint *)0x0) { LAB_00410c4b: if ((int)(*(uint *)(param_1 + 0x68) * 2) < *(int *)(param_1 + 0x6c) + 1) { FUN_00410a90(); } uVar3 = *param_2 % *(uint *)(param_1 + 0x68); iVar2 = *(int *)(param_1 + 0x60); param_2[1] = *(uint *)(iVar2 + uVar3 * 4); *(uint **)(iVar2 + uVar3 * 4) = param_2; uVar3 = iVar2 + uVar3 * 4; if (uVar3 < *(uint *)(param_1 + 100)) { *(uint *)(param_1 + 100) = uVar3; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1; return CONCAT31((int3)(uVar3 >> 8),1); } if (*puVar1 == *param_2) { if (puVar1 != (uint *)0x0) { return *(uint *)(param_1 + 0x60) & 0xffffff00; } goto LAB_00410c4b; } puVar1 = (uint *)puVar1[1]; } while( true ); } // --- FUN_00410ca0 at 0x00410CA0 (size: 82) --- undefined4 __thiscall FUN_00410ca0(int param_1,uint *param_2) { uint *puVar1; puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4); do { if (puVar1 == (uint *)0x0) { LAB_00410ccb: FUN_00410c20(param_2); FUN_00410820(param_2 + 2,*(undefined4 *)(param_1 + 0x74)); return 1; } if (*puVar1 == *param_2) { if (puVar1 != (uint *)0x0) { return 0; } goto LAB_00410ccb; } puVar1 = (uint *)puVar1[1]; } while( true ); } // --- FUN_00410d00 at 0x00410D00 (size: 58) --- void __thiscall FUN_00410d00(int param_1,undefined4 param_2,int *param_3,int param_4) { int iVar1; int iVar2; iVar2 = *param_3; if (iVar2 != param_4) { do { iVar1 = iVar2; iVar2 = *(int *)(iVar1 + 4); } while (iVar2 != param_4); if (iVar1 != 0) { *(undefined4 *)(iVar1 + 4) = *(undefined4 *)(iVar2 + 4); *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1; return; } } *param_3 = *(int *)(iVar2 + 4); *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1; return; } // --- FUN_00410d40 at 0x00410D40 (size: 146) --- void __thiscall FUN_00410d40(int param_1,undefined4 *param_2) { undefined4 uVar1; undefined4 *puVar2; *(int *)(param_1 + 0xe4) = *(int *)(param_1 + 0xe4) + 2; uVar1 = *(undefined4 *)(param_1 + 0xe4); if (*(int *)(param_1 + 0x78) == 0) { *(undefined4 *)(param_1 + 0x84) = uVar1; FUN_00410ca0((undefined4 *)(param_1 + 0x84)); *param_2 = uVar1; return; } puVar2 = (undefined4 *)FUN_005df0f5(0x60); if (puVar2 != (undefined4 *)0x0) { *puVar2 = uVar1; puVar2[1] = 0; puVar2[2] = 0; puVar2[3] = 0; puVar2[4] = &PTR_LAB_00795430; puVar2[5] = puVar2 + 8; puVar2[6] = 8; puVar2[7] = 0; FUN_00410ca0(puVar2); *param_2 = uVar1; return; } FUN_00410ca0(0); *param_2 = uVar1; return; } // --- FUN_00410de0 at 0x00410DE0 (size: 136) --- void __thiscall FUN_00410de0(int param_1,undefined4 *param_2,int param_3) { undefined4 uVar1; undefined4 *puVar2; undefined4 *puVar3; *(int *)(param_1 + 0xe4) = *(int *)(param_1 + 0xe4) + 2; uVar1 = *(undefined4 *)(param_1 + 0xe4); if (*(int *)(param_1 + 0x78) == 0) { *(undefined4 *)(param_1 + 0x84) = uVar1; puVar3 = (undefined4 *)(param_1 + 0x84); } else { puVar2 = (undefined4 *)FUN_005df0f5(0x60); puVar3 = (undefined4 *)0x0; if (puVar2 != (undefined4 *)0x0) { puVar2[1] = 0; *puVar2 = uVar1; puVar2[2] = 0; puVar2[3] = 0; puVar2[4] = &PTR_LAB_00795430; puVar2[7] = 0; puVar2[5] = puVar2 + 8; puVar2[6] = 8; puVar3 = puVar2; } } FUN_00410a00(param_3 + 4); FUN_00410ca0(puVar3); *param_2 = uVar1; return; } // --- FUN_00410e70 at 0x00410E70 (size: 81) --- uint * __thiscall FUN_00410e70(int param_1,uint *param_2) { uint *puVar1; uint uVar2; uVar2 = *param_2 % *(uint *)(param_1 + 0x68); puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + uVar2 * 4); while( true ) { if (puVar1 == (uint *)0x0) { return (uint *)0x0; } if (*puVar1 == *param_2) break; puVar1 = (uint *)puVar1[1]; } if (puVar1 == (uint *)0x0) { return (uint *)0x0; } FUN_00410d00(param_1,*(int *)(param_1 + 0x60) + uVar2 * 4,puVar1); return puVar1; } // --- FUN_00410ed0 at 0x00410ED0 (size: 83) --- uint * __thiscall FUN_00410ed0(int param_1,uint *param_2) { uint *puVar1; puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4); if (puVar1 != (uint *)0x0) { while (*puVar1 != *param_2) { puVar1 = (uint *)puVar1[1]; if (puVar1 == (uint *)0x0) { return (uint *)0x0; } } if (puVar1 != (uint *)0x0) { FUN_00410880(puVar1 + 2); FUN_00410e70(param_2); } } return puVar1; } // --- FUN_00410f30 at 0x00410F30 (size: 85) --- undefined4 __fastcall FUN_00410f30(int param_1) { void *pvVar1; pvVar1 = (void *)FUN_00410ed0(&stack0x00000004); if (pvVar1 != (void *)0x0) { if (pvVar1 != (void *)(param_1 + 0x84)) { if ((*(uint *)((int)pvVar1 + 0x18) & 0x80000000) == 0x80000000) { operator_delete__(*(void **)((int)pvVar1 + 0x14)); } operator_delete(pvVar1); } return 1; } return 0; } // --- FUN_00410f90 at 0x00410F90 (size: 289) --- void __fastcall FUN_00410f90(int param_1) { int iVar1; undefined4 *puVar2; uint *puVar3; uint *puVar4; uint *puVar5; uint *puVar6; uint uVar7; uint *local_8; if ((*(int *)(param_1 + 0x78) != 0) && (*(int *)(param_1 + 0x7c) != 0)) { local_8 = (uint *)(*(int *)(param_1 + 0x7c) + -8); joined_r0x00410fb1: puVar4 = local_8; if (puVar4 != (uint *)0x0) { puVar6 = puVar4 + 2; if (puVar4[2] == 0) { local_8 = (uint *)0x0; } else { local_8 = (uint *)(puVar4[2] - 8); } if ((uint *)puVar4[3] == (uint *)0x0) { iVar1 = **(int **)(param_1 + 0x7c); *(int *)(param_1 + 0x7c) = iVar1; if (iVar1 != 0) { *(undefined4 *)(iVar1 + 4) = 0; } } else { *(uint *)puVar4[3] = *puVar6; } if (*puVar6 == 0) { puVar2 = *(undefined4 **)(*(int *)(param_1 + 0x80) + 4); *(undefined4 **)(param_1 + 0x80) = puVar2; if (puVar2 != (undefined4 *)0x0) { *puVar2 = 0; } } else { *(uint *)(*puVar6 + 4) = puVar4[3]; } *puVar6 = 0; puVar4[3] = 0; uVar7 = *puVar4 % *(uint *)(param_1 + 0x74); puVar6 = *(uint **)(*(int *)(param_1 + 0x6c) + uVar7 * 4); for (puVar3 = puVar6; puVar3 != (uint *)0x0; puVar3 = (uint *)puVar3[1]) { if (*puVar3 == *puVar4) { if (puVar3 != (uint *)0x0) { if (puVar6 != puVar3) goto LAB_00411050; goto LAB_0041105d; } break; } } goto LAB_0041106e; } } return; LAB_00411050: do { puVar5 = puVar6; puVar6 = (uint *)puVar5[1]; } while (puVar6 != puVar3); if (puVar5 == (uint *)0x0) { LAB_0041105d: *(uint *)(*(int *)(param_1 + 0x6c) + uVar7 * 4) = puVar6[1]; } else { puVar5[1] = puVar6[1]; } *(int *)(param_1 + 0x78) = *(int *)(param_1 + 0x78) + -1; LAB_0041106e: if (puVar4 != (uint *)(param_1 + 0x84)) { if ((puVar4[6] & 0x80000000) == 0x80000000) { operator_delete__((void *)puVar4[5]); } operator_delete(puVar4); } goto joined_r0x00410fb1; } // --- FUN_004110c0 at 0x004110C0 (size: 96) --- void __fastcall FUN_004110c0(undefined4 *param_1) { *param_1 = &PTR_LAB_00795434; FUN_00410f90(); if ((param_1[0x27] & 0x80000000) == 0x80000000) { operator_delete__((void *)param_1[0x26]); } param_1[3] = &PTR_FUN_0079542c; if ((undefined4 *)param_1[0x1b] != param_1 + 4) { operator_delete__((undefined4 *)param_1[0x1b]); } param_1[0x1b] = 0; param_1[0x1c] = 0; param_1[0x1d] = 0; param_1[0x1e] = 0; param_1[1] = &PTR_LAB_00793b6c; return; } // --- FUN_00411120 at 0x00411120 (size: 25) --- PVOID __fastcall FUN_00411120(LPCVOID param_1) { _MEMORY_BASIC_INFORMATION local_1c; VirtualQuery(param_1,&local_1c,0x1c); return local_1c.AllocationBase; } // --- FUN_00411140 at 0x00411140 (size: 73) --- void __fastcall FUN_00411140(LONG *param_1) { int iVar1; uint uVar2; uVar2 = 0; iVar1 = InterlockedExchange(param_1,1); while (iVar1 != 0) { iVar1 = *param_1; while (iVar1 != 0) { uVar2 = uVar2 + 1; if (0x1ff < uVar2) { Sleep(0); uVar2 = 0; } iVar1 = *param_1; } iVar1 = InterlockedExchange(param_1,1); } return; } // --- FUN_00411190 at 0x00411190 (size: 17) --- void __fastcall FUN_00411190(int param_1) { *(undefined4 *)(param_1 + 0x40) = 0; *(undefined4 *)(param_1 + 0x44) = 0; *(undefined4 *)(param_1 + 0x48) = 0; *(undefined4 *)(param_1 + 0x20) = 0; return; } // --- FUN_004111b0 at 0x004111B0 (size: 203) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __fastcall FUN_004111b0(double *param_1) { undefined4 uVar1; undefined4 uVar2; BOOL BVar3; DWORD DVar4; double dVar5; LARGE_INTEGER local_8; BVar3 = QueryPerformanceFrequency(&local_8); uVar2 = local_8.s.HighPart; uVar1 = local_8.s.LowPart; if (BVar3 != 0) { dVar5 = (double)__alldiv(local_8.s.LowPart,local_8.s.HighPart,1000,0); param_1[1] = dVar5; dVar5 = (double)__alldiv(uVar1,uVar2,2,0); *param_1 = (double)CONCAT44(local_8.s.HighPart,local_8.s.LowPart); param_1[2] = dVar5; QueryPerformanceCounter(&local_8); } FUN_00411140(); dVar5 = _DAT_00795610; if (((ulonglong)param_1[4] & 1) == 0) { *(DWORD *)(param_1 + 7) = local_8.s.LowPart; *(LONG *)((int)param_1 + 0x3c) = local_8.s.HighPart; param_1[3] = dVar5; param_1[5] = _DAT_00795610; DVar4 = timeGetTime(); *(DWORD *)(param_1 + 6) = DVar4; if (BVar3 != 0) { *(uint *)(param_1 + 4) = *(uint *)(param_1 + 4) & 0xfffffffd; } else { *(uint *)(param_1 + 4) = *(uint *)(param_1 + 4) | 2; } *(uint *)(param_1 + 4) = *(uint *)(param_1 + 4) | 1; } InterlockedExchange((LONG *)(param_1 + 8),0); return; } // --- FUN_00411280 at 0x00411280 (size: 489) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ float10 __thiscall FUN_00411280(double *param_1,char param_2) { double dVar1; DWORD DVar2; int iVar3; uint uVar4; uint uVar5; uint uVar6; double *pdVar7; double *pdVar8; uint uVar9; double *pdVar10; undefined8 uVar11; LARGE_INTEGER local_38; double local_30; uint local_28; double local_20; DWORD local_18; uint local_10; int local_c; FUN_00411140(); pdVar10 = param_1 + 3; pdVar7 = pdVar10; pdVar8 = &local_30; for (iVar3 = 10; iVar3 != 0; iVar3 = iVar3 + -1) { *(undefined4 *)pdVar8 = *(undefined4 *)pdVar7; pdVar7 = (double *)((int)pdVar7 + 4); pdVar8 = (double *)((int)pdVar8 + 4); } InterlockedExchange((LONG *)(param_1 + 8),0); if ((local_28 & 1) != 0) { DVar2 = timeGetTime(); uVar4 = DVar2 - local_18; if ((local_28 & 2) == 0) { QueryPerformanceCounter(&local_38); uVar9 = local_38.s.LowPart - local_10; uVar6 = (local_38.s.HighPart - local_c) - (uint)(local_38.s.LowPart < local_10); uVar11 = __allmul(*(undefined4 *)(param_1 + 1),*(undefined4 *)((int)param_1 + 0xc),uVar4,0); uVar5 = (int)((ulonglong)uVar11 >> 0x20) + *(int *)((int)param_1 + 0x14) + (uint)CARRY4((uint)uVar11,*(uint *)(param_1 + 2)); if ((uVar5 < uVar6) || ((uVar5 <= uVar6 && ((uint)uVar11 + *(int *)(param_1 + 2) <= uVar9)))) { dVar1 = (double)(int)uVar4; local_28 = local_28 | 2; if ((int)uVar4 < 0) { dVar1 = dVar1 + _DAT_00795518; } dVar1 = dVar1 * _DAT_00795720 + local_20; if (DAT_008379dd == '\0') { DAT_008379dd = '\x01'; } if ((param_2 != '\0') && (DAT_008379dc == '\0')) { DAT_008379dc = '\x01'; } } else { dVar1 = (-(double)(longlong)(((ulonglong)uVar6 & 0x80000000) << 0x20) + (double)(CONCAT44(uVar6,uVar9) & 0x7fffffffffffffff)) / *param_1 + local_20; } } else { dVar1 = (double)(int)uVar4; if ((int)uVar4 < 0) { dVar1 = dVar1 + _DAT_00795518; } dVar1 = dVar1 * _DAT_00795720 + local_20; } if ((local_30 < dVar1) && (local_30 = dVar1, 9999 < uVar4)) { local_10 = local_38.s.LowPart; local_c = local_38.s.HighPart; local_20 = dVar1; local_18 = DVar2; } FUN_00411140(); if (local_30 <= *pdVar10) { local_30 = *pdVar10; } else if (param_2 == '\0') { *pdVar10 = local_30; } else { pdVar7 = &local_30; for (iVar3 = 10; iVar3 != 0; iVar3 = iVar3 + -1) { *(undefined4 *)pdVar10 = *(undefined4 *)pdVar7; pdVar7 = (double *)((int)pdVar7 + 4); pdVar10 = (double *)((int)pdVar10 + 4); } } InterlockedExchange((LONG *)(param_1 + 8),0); return (float10)local_30; } return (float10)_DAT_00795610; } // --- FUN_00411470 at 0x00411470 (size: 25) --- void __fastcall FUN_00411470(undefined4 *param_1) { *param_1 = &PTR_FUN_00795824; if (DAT_00837ff4 != (int *)0x0) { (**(code **)(*DAT_00837ff4 + 0x3c))(param_1); } return; } // --- FUN_00411490 at 0x00411490 (size: 47) --- undefined4 * __thiscall FUN_00411490(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00795824; if (DAT_00837ff4 != (int *)0x0) { (**(code **)(*DAT_00837ff4 + 0x3c))(param_1); } if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_004114c0 at 0x004114C0 (size: 6) --- undefined4 FUN_004114c0(void) { return DAT_008379e4; } // --- FUN_004114d0 at 0x004114D0 (size: 143) --- void __fastcall FUN_004114d0(int param_1) { if (*(int **)(param_1 + 0xb0) != (int *)0x0) { (**(code **)(**(int **)(param_1 + 0xb0) + 0x14))(); *(undefined4 *)(param_1 + 0xb0) = 0; } if (DAT_0083e03c != 0) { FUN_0045f200(); FUN_00459310(); } if (*(int **)(param_1 + 0x118) != (int *)0x0) { (**(code **)(**(int **)(param_1 + 0x118) + 0x1c))(); if (*(int **)(param_1 + 0x118) != (int *)0x0) { (**(code **)(**(int **)(param_1 + 0x118) + 0x14))(); *(undefined4 *)(param_1 + 0x118) = 0; } } if (*(int *)(param_1 + 0x120) != 0) { FUN_004538e0(*(int *)(param_1 + 0x120)); } if (DAT_00837ff4 != (int *)0x0) { (**(code **)(*DAT_00837ff4 + 0x3c))(param_1 + 0x24); } FUN_0043a370(); FUN_00557ba0(); /* WARNING: Could not recover jumptable at 0x00411559. Too many branches */ /* WARNING: Treating indirect jump as call */ CoUninitialize(); return; } // --- FUN_00411560 at 0x00411560 (size: 30) --- void __fastcall FUN_00411560(int param_1) { if (*(int **)(param_1 + 0xac) != (int *)0x0) { (**(code **)(**(int **)(param_1 + 0xac) + 0x14))(); *(undefined4 *)(param_1 + 0xac) = 0; } return; } // --- FUN_004115d0 at 0x004115D0 (size: 24) --- undefined4 __fastcall FUN_004115d0(int param_1) { FUN_00541640(1,param_1 + 0x74,0,0); return 1; } // --- FUN_004115f0 at 0x004115F0 (size: 50) --- undefined4 __fastcall FUN_004115f0(int param_1) { undefined4 in_EAX; undefined3 uVar1; undefined3 extraout_var; uVar1 = (undefined3)((uint)in_EAX >> 8); if (*(char *)(param_1 + 0xb4) != '\0') { if (*(int *)(param_1 + 0x100) != 0) { FUN_00544ab0(); } (**(code **)(**(int **)(param_1 + 0xac) + 0x20))(); *(undefined1 *)(param_1 + 0xb4) = 0; uVar1 = extraout_var; } return CONCAT31(uVar1,1); } // --- FUN_00411630 at 0x00411630 (size: 107) --- void __fastcall FUN_00411630(int param_1) { char cVar1; FUN_0040fbd0(); cVar1 = FUN_00439e50(); if (cVar1 != '\0') { FUN_00543fc0(); return; } FUN_00543440(); (**(code **)(*(int *)(*(int *)(param_1 + 0xac) + 4) + 0x48))(); FUN_0045d0b0(); FUN_004554b0(); FUN_0043e690(); thunk_FUN_0043dc70(); FUN_00455610(); FUN_0043fcd0(1); FUN_004392b0(); return; } // --- FUN_004116d0 at 0x004116D0 (size: 4) --- float10 __fastcall FUN_004116d0(int param_1) { return (float10)*(float *)(param_1 + 0x1c); } // --- FUN_004116e0 at 0x004116E0 (size: 69) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ float10 __thiscall FUN_004116e0(int param_1,uint *param_2) { uint uVar1; float10 fVar2; uVar1 = (uint)(*(int *)(param_1 + 8) == 3); *param_2 = uVar1; if (uVar1 == 0) { fVar2 = (float10)_DAT_00795610; } else { fVar2 = (float10)_DAT_008379a8 - (float10)*(double *)(param_1 + 0x10); } if ((*(int *)(param_1 + 0x2c) != 0) && ((float10)_DAT_00795870 < fVar2)) { fVar2 = (float10)_DAT_00795870; } return fVar2; } // --- FUN_00411760 at 0x00411760 (size: 67) --- uint FUN_00411760(undefined4 param_1) { int *piVar1; undefined *puVar2; undefined4 uVar3; uint *puVar4; uint local_8; int local_4; puVar4 = &local_8; uVar3 = 0; puVar2 = &DAT_00795814; piVar1 = &local_4; local_8 = 0; FUN_00406d10(piVar1,param_1,&DAT_00795814,0,&local_8); FUN_00406650(piVar1,param_1,puVar2,uVar3,puVar4); return (local_4 < 0) - 1 & local_8; } // --- FUN_004117b0 at 0x004117B0 (size: 68) --- void __thiscall FUN_004117b0(int *param_1,int *param_2,uint param_3) { int iVar1; uint uVar2; uVar2 = (**(code **)(*param_1 + 8))(); if ((uVar2 <= param_3) && (3 < param_3)) { *(int *)*param_2 = param_1[1]; iVar1 = *param_2; *param_2 = iVar1 + 4; if (3 < param_3 - 4) { *(int *)(iVar1 + 4) = param_1[2]; *param_2 = *param_2 + 4; } } (**(code **)(*param_1 + 8))(); return; } // --- FUN_00411800 at 0x00411800 (size: 70) --- undefined4 __thiscall FUN_00411800(int *param_1,int *param_2,uint param_3) { int iVar1; uint uVar2; uVar2 = (**(code **)(*param_1 + 8))(); if (param_3 < uVar2) { return 0; } if (3 < param_3) { param_1[1] = *(int *)*param_2; iVar1 = *param_2; *param_2 = iVar1 + 4; if (3 < param_3 - 4) { param_1[2] = *(int *)(iVar1 + 4); *param_2 = *param_2 + 4; } } return 1; } // --- FUN_00411850 at 0x00411850 (size: 26) --- int * __fastcall FUN_00411850(int *param_1) { LONG *lpAddend; lpAddend = (LONG *)(DAT_008ef11c + 4); *param_1 = DAT_008ef11c; InterlockedIncrement(lpAddend); return param_1; } // --- FUN_00411870 at 0x00411870 (size: 90) --- void __fastcall FUN_00411870(int *param_1) { undefined4 *puVar1; LONG LVar2; uint uVar3; uint uVar4; undefined4 *puVar5; undefined4 *puVar6; puVar1 = (undefined4 *)*param_1; if (puVar1[1] == 1) { puVar1[4] = 0xffffffff; return; } FUN_00403560(puVar1[2] + -1); uVar4 = *(uint *)(*param_1 + 8); puVar5 = puVar1 + 5; puVar6 = (undefined4 *)(*param_1 + 0x14); for (uVar3 = uVar4 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) { *puVar6 = *puVar5; puVar5 = puVar5 + 1; puVar6 = puVar6 + 1; } for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { *(undefined1 *)puVar6 = *(undefined1 *)puVar5; puVar5 = (undefined4 *)((int)puVar5 + 1); puVar6 = (undefined4 *)((int)puVar6 + 1); } LVar2 = InterlockedDecrement(puVar1 + 1); if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } return; } // --- FUN_004118d0 at 0x004118D0 (size: 163) --- void __fastcall FUN_004118d0(int *param_1) { void *pvVar1; (**(code **)(*param_1 + 0x28))(); FUN_00557170(); (**(code **)(*param_1 + 0x8c))(); FUN_00422210(); (**(code **)(*param_1 + 0x84))(); (**(code **)(*param_1 + 0x6c))(); if ((undefined4 *)param_1[0x42] != (undefined4 *)0x0) { (*(code *)**(undefined4 **)param_1[0x42])(1); } param_1[0x42] = 0; if ((undefined4 *)param_1[0x41] != (undefined4 *)0x0) { (*(code *)**(undefined4 **)param_1[0x41])(1); } param_1[0x41] = 0; FUN_00406d10(); pvVar1 = DAT_00837740; if (DAT_00837740 != (void *)0x0) { FUN_00406bf0(); operator_delete(pvVar1); DAT_00837740 = (void *)0x0; DAT_00837744 = 1; } (**(code **)(*param_1 + 0x88))(); thunk_FUN_00550ec0(); return; } // --- FUN_00411aa0 at 0x00411AA0 (size: 102) --- undefined4 __thiscall FUN_00411aa0(int param_1,undefined4 param_2) { undefined4 *puVar1; int iVar2; puVar1 = (undefined4 *)FUN_005df0f5(8); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { *puVar1 = 0; puVar1[1] = 0; } iVar2 = (short)param_2 * 4; *(undefined4 **)(iVar2 + *(int *)(param_1 + 300)) = puVar1; iVar2 = *(int *)(iVar2 + *(int *)(param_1 + 300)); if (iVar2 != 0) { iVar2 = FUN_00541780(param_2,iVar2); if (iVar2 != 0) { return 1; } } return 0; } // --- FUN_00411b50 at 0x00411B50 (size: 77) --- void __thiscall FUN_00411b50(int param_1,int *param_2) { int iVar1; LONG LVar2; iVar1 = *(int *)(param_1 + 0x88); if (iVar1 != *param_2) { LVar2 = InterlockedDecrement((LONG *)(iVar1 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(iVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iVar1 + -0x14))(1); } iVar1 = *param_2; *(int *)(param_1 + 0x88) = iVar1; /* WARNING: Could not recover jumptable at 0x00411b92. Too many branches */ /* WARNING: Treating indirect jump as call */ InterlockedIncrement((LONG *)(iVar1 + -0x10)); return; } return; } // --- FUN_00411c20 at 0x00411C20 (size: 156) --- void __fastcall FUN_00411c20(int param_1) { int *piVar1; int iVar2; undefined4 *puVar3; int *piVar4; LONG LVar5; undefined4 *puVar6; piVar1 = *(int **)(param_1 + 0x124); if (piVar1 != (int *)0x0) { iVar2 = *piVar1; while (iVar2 != 0) { puVar3 = (undefined4 *)*piVar1; if (puVar3 == (undefined4 *)0x0) { puVar6 = (undefined4 *)0x0; } else { iVar2 = puVar3[1]; *piVar1 = iVar2; if (iVar2 == 0) { piVar1[1] = 0; } puVar6 = (undefined4 *)*puVar3; operator_delete(puVar3); } piVar1 = (int *)puVar6[0xb]; if (((piVar1 != (int *)0x0) && (3 < (uint)puVar6[0xc])) && (*piVar1 == 0xf7de)) { iVar2 = piVar1[1]; FUN_00556f40(); piVar4 = (int *)FUN_00557440(); if (piVar4 != (int *)0x0) { (**(code **)(*piVar4 + 0xc))(piVar4,iVar2,piVar1 + 2); } } LVar5 = InterlockedDecrement(puVar6 + 1); if (LVar5 == 0) { (**(code **)*puVar6)(1); } piVar1 = *(int **)(param_1 + 0x124); iVar2 = *piVar1; } } return; } // --- FUN_00411d90 at 0x00411D90 (size: 126) --- void __thiscall FUN_00411d90(int param_1,int *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5, undefined4 param_6,undefined4 param_7) { int *piVar1; char cVar2; int iVar3; piVar1 = param_2; if (param_1 != 0) { FUN_004369a0(param_1,2,param_2,param_3,param_4,param_5,param_6,param_7); } if (DAT_008380c8 == 0) { iVar3 = FUN_005df0f5(0x8100); if (iVar3 == 0) { DAT_008380c8 = 0; } else { DAT_008380c8 = FUN_00433d20(); } } cVar2 = FUN_00433710(piVar1,¶m_2); if ((cVar2 != '\0') && (iVar3 = (**(code **)(*param_2 + 0x44))(), iVar3 != 0)) { *(undefined1 *)(iVar3 + 0x28) = 1; } return; } // --- FUN_00411e10 at 0x00411E10 (size: 106) --- void __fastcall FUN_00411e10(undefined4 *param_1) { undefined4 *puVar1; LONG LVar2; operator_delete__((void *)param_1[0xf]); param_1[0xf] = 0; operator_delete__((void *)param_1[0xc]); param_1[0xc] = 0; puVar1 = (undefined4 *)param_1[8]; LVar2 = InterlockedDecrement(puVar1 + 1); if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } puVar1 = (undefined4 *)param_1[4]; LVar2 = InterlockedDecrement(puVar1 + 1); if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } *param_1 = &PTR_FUN_0079385c; return; } // --- FUN_00411fa0 at 0x00411FA0 (size: 126) --- undefined4 __fastcall FUN_00411fa0(int param_1) { char cVar1; FUN_0040fbd0(); cVar1 = FUN_00439e50(); if (cVar1 != '\0') { return 0; } FUN_00543440(); FUN_00411c20(); FUN_00541cb0(); (**(code **)(*(int *)(*(int *)(param_1 + 0xac) + 4) + 0x48))(); FUN_0045d0b0(); FUN_004554b0(); FUN_0043e690(); thunk_FUN_0043dc70(); FUN_00455610(); FUN_0043fcd0(1); FUN_004392b0(); return 1; } // --- FUN_00412020 at 0x00412020 (size: 51) --- undefined4 * __thiscall FUN_00412020(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00795538; if (param_1[1] != 0) { FUN_0040e340(param_1); param_1[1] = 0; } if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00412180 at 0x00412180 (size: 288) --- bool __thiscall FUN_00412180(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) { char cVar1; BOOL BVar2; HMODULE hLibModule; int iVar3; undefined4 extraout_ECX; undefined4 extraout_ECX_00; undefined4 extraout_ECX_01; _OSVERSIONINFOA *p_Var4; undefined4 uVar5; undefined4 uVar6; undefined4 uVar7; _OSVERSIONINFOA _Stack_a0; _set_new_handler((_func_int_uint *)&LAB_00411580); cVar1 = (**(code **)(*param_1 + 0x80))(); if (cVar1 == '\0') { p_Var4 = &_Stack_a0; for (iVar3 = 0x25; iVar3 != 0; iVar3 = iVar3 + -1) { p_Var4->dwOSVersionInfoSize = 0; p_Var4 = (_OSVERSIONINFOA *)&p_Var4->dwMajorVersion; } _Stack_a0.dwOSVersionInfoSize = 0x94; BVar2 = GetVersionExA(&_Stack_a0); if ((BVar2 == 0) || (_Stack_a0.dwPlatformId == 1)) { hLibModule = LoadLibraryA("unicows.dll"); if (hLibModule == (HMODULE)0x0) { uVar7 = extraout_ECX; FUN_00402730(&DAT_00795320); uVar6 = extraout_ECX_00; FUN_00402730(&DAT_00795320); uVar5 = extraout_ECX_01; FUN_00402730(L"UnicoWS.dll"); FUN_0043d090(0x6d,uVar5,uVar6,uVar7,hLibModule); return false; } FreeLibrary(hLibModule); } FUN_0040fcd0(); FUN_0042c800(); iVar3 = FUN_0054bb50(); param_1[0x41] = iVar3; if (iVar3 != 0) { iVar3 = FUN_0054bb70(); param_1[0x42] = iVar3; if (iVar3 != 0) { (**(code **)(*param_1 + 0x68))(); cVar1 = (**(code **)(*param_1 + 0x70))(); if (((cVar1 != '\0') && (cVar1 = (**(code **)(*param_1 + 0x74))(param_3,param_4,param_1[0x1c] != 0), cVar1 != '\0')) && (cVar1 = FUN_004221c0(), cVar1 != '\0')) { cVar1 = (**(code **)(*param_1 + 0x7c))(param_2); return cVar1 != '\0'; } } } } return false; } // --- FUN_00412310 at 0x00412310 (size: 259) --- undefined4 __fastcall FUN_00412310(int param_1) { LONG LVar1; undefined4 *puVar2; int local_4; local_4 = param_1; FUN_00438fe0(0,param_1 + 100); FUN_00438940(); FUN_00401340("Network Bind Interface"); FUN_004020e0(&DAT_00837a10,&local_4,0,0,0,0); puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340("Flag to compute a unique port"); FUN_00411d90(&DAT_00837a14,&local_4,0,0,0,0); puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340("The user specified port"); FUN_00402160(&DAT_00837a18,&local_4,0,0,0,0); puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00430d80(); return 1; } // --- FUN_00412420 at 0x00412420 (size: 1070) --- void __thiscall FUN_00412420(int param_1,int param_2) { LONG LVar1; undefined4 *puVar2; int local_8; int local_4; FUN_00401340(": Specifies the account name to logon with."); FUN_00401340("account"); FUN_00402660(2,0x61,&local_8,&local_4,0,0,0); LVar1 = InterlockedDecrement((LONG *)(local_8 + -0x10)); if ((LVar1 == 0) && ((undefined4 *)(local_8 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_8 + -0x14))(1); } puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340("<32 bitfield>: Controls what kinds of debug outputs are enabled."); FUN_00401340("debug"); FUN_00402660(2,0,¶m_2,&local_4,0,0,0); puVar2 = (undefined4 *)(param_2 + -0x14); LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340("[host/IP]:Specifies where to find the server to talk to."); FUN_00401340(&DAT_00795b68); FUN_00402660(0x32,0x68,¶m_2,&local_4,param_1 + 0x88,0,0); puVar2 = (undefined4 *)(param_2 + -0x14); LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340(": Language to run the client in."); FUN_00401340("language"); FUN_00402660(0x32,0,¶m_2,&local_4,param_1 + 0x84,0,0); puVar2 = (undefined4 *)(param_2 + -0x14); LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340("<1-65535>: Specify the outgoing network port to use."); FUN_00401340("outport"); FUN_00402660(0x22,0x71,¶m_2,&local_4,param_1 + 0x94,0,0); puVar2 = (undefined4 *)(param_2 + -0x14); LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340("<1-65535>: Specify the server port to contact. See \'host\'"); FUN_00401340(&DAT_00795aac); FUN_00402660(0x22,0x70,¶m_2,&local_4,param_1 + 0x90,0,0); puVar2 = (undefined4 *)(param_2 + -0x14); LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340(": Specify the preferences file to use."); FUN_00401340("prefs"); FUN_00402660(0x32,0,¶m_2,&local_4,param_1 + 0x60,0,0); puVar2 = (undefined4 *)(param_2 + -0x14); LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340("Opens the DAT files readonly"); FUN_00401340("rodat"); FUN_00402660(3,0,¶m_2,&local_4,0,0,0); puVar2 = (undefined4 *)(param_2 + -0x14); LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340("Enables the use of the memory manager."); FUN_00401340("usemem"); FUN_00402660(0x11,0,¶m_2,&local_4,param_1 + 0x68,1,0); puVar2 = (undefined4 *)(param_2 + -0x14); LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && ((undefined4 *)(local_4 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_4 + -0x14))(1); } return; } // --- FUN_00412850 at 0x00412850 (size: 546) --- char __thiscall FUN_00412850(int *param_1,undefined4 param_2,int *param_3) { char *_Str; char cVar1; char cVar2; char cVar3; LONG LVar4; int *piVar5; ulong uVar6; undefined4 *puVar7; int local_4; cVar1 = FUN_004083f0(param_2,param_3); cVar2 = '\0'; if (cVar1 != '\0') { FUN_00401340("account"); cVar2 = FUN_00401920(&local_4); puVar7 = (undefined4 *)(local_4 + -0x14); LVar4 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar4 == 0) && (puVar7 != (undefined4 *)0x0)) { (**(code **)*puVar7)(1); } if (cVar2 != '\0') { FUN_004034c0(*param_3); FUN_00411870(); _strlwr((char *)(param_1[0x1c] + 0x14)); return cVar1; } FUN_00401340("debug"); cVar2 = FUN_00401920(&local_4); puVar7 = (undefined4 *)(local_4 + -0x14); LVar4 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar4 == 0) && (puVar7 != (undefined4 *)0x0)) { (**(code **)*puVar7)(1); } if (cVar2 != '\0') { _Str = (char *)*param_3; piVar5 = _errno(); *piVar5 = 0; uVar6 = strtoul(_Str,(char **)0x0,0); FUN_00405e60(uVar6,1); FUN_00405e60(~uVar6,0); return cVar1; } FUN_00401340("logfile"); cVar3 = FUN_00401920(&local_4); LVar4 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(local_4 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_4 + -0x14))(1); } cVar2 = cVar1; if (cVar3 == '\0') { FUN_00401340("outport"); cVar1 = FUN_00401920(&local_4); FUN_004011b0(); if (cVar1 == '\0') { FUN_00401340("rodat"); cVar1 = FUN_00401920(&local_4); FUN_004011b0(); if (cVar1 != '\0') { param_1[0x1b] = (uint)(*(int *)(*param_3 + -4) == 1); } } else if ((param_1[0x25] < 1) || (0xffff < param_1[0x25])) { FUN_00401340("Client port must be between 1 and 65535\n"); (**(code **)(*param_1 + 0x20))(¶m_3); FUN_004011b0(); return '\0'; } } } return cVar2; } // --- FUN_00412ae0 at 0x00412AE0 (size: 120) --- undefined4 __thiscall FUN_00412ae0(int param_1,undefined4 param_2) { if ((*(int *)(param_1 + 4) != 0) && (*(int *)(param_1 + 8) != 0)) { FUN_0042dc80(); FUN_0042c9c0(*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 8)); FUN_0042e740(param_2,1); FUN_0042e590(); return param_2; } FUN_00402730(L"unknown"); return param_2; } // --- FUN_00412b70 at 0x00412B70 (size: 515) --- void __fastcall FUN_00412b70(undefined4 *param_1) { int iVar1; LONG LVar2; uint uVar3; undefined4 *puVar4; param_1[-7] = &PTR_LAB_00795d48; param_1[-6] = &PTR_LAB_00795cf8; *param_1 = &PTR_FUN_00795ce8; param_1[2] = &PTR_LAB_00795cdc; param_1[3] = &PTR_LAB_00795ccc; DAT_008379e4 = 0; if ((HANDLE)param_1[0x45] != (HANDLE)0x0) { CloseHandle((HANDLE)param_1[0x45]); param_1[0x45] = 0; } puVar4 = (undefined4 *)(param_1[0x3c] + -0x14); LVar2 = InterlockedDecrement((LONG *)(param_1[0x3c] + -0x10)); if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } FUN_00411e10(); puVar4 = (undefined4 *)(param_1[0x23] + -0x14); LVar2 = InterlockedDecrement((LONG *)(param_1[0x23] + -0x10)); if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } puVar4 = (undefined4 *)(param_1[0x1c] + -0x14); LVar2 = InterlockedDecrement((LONG *)(param_1[0x1c] + -0x10)); if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } puVar4 = (undefined4 *)(param_1[0x1b] + -0x14); LVar2 = InterlockedDecrement((LONG *)(param_1[0x1b] + -0x10)); if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } puVar4 = (undefined4 *)(param_1[0x1a] + -0x14); LVar2 = InterlockedDecrement((LONG *)(param_1[0x1a] + -0x10)); if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } puVar4 = (undefined4 *)param_1[0x16]; LVar2 = InterlockedDecrement(puVar4 + 1); if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } puVar4 = (undefined4 *)(param_1[0x12] + -0x14); LVar2 = InterlockedDecrement((LONG *)(param_1[0x12] + -0x10)); if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } puVar4 = (undefined4 *)(param_1[0x11] + -0x14); LVar2 = InterlockedDecrement((LONG *)(param_1[0x11] + -0x10)); if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } puVar4 = (undefined4 *)(-(uint)(param_1 != (undefined4 *)0x1c) & (uint)(param_1 + 3)); param_1[0xf] = &PTR_LAB_00793b6c; puVar4[8] = &PTR_FUN_0079385c; *puVar4 = &PTR_FUN_00795538; if (puVar4[1] != 0) { FUN_0040e340(puVar4); puVar4[1] = 0; } puVar4 = (undefined4 *)(-(uint)(param_1 != (undefined4 *)0x1c) & (uint)(param_1 + 2)); *puVar4 = &PTR_FUN_00795824; if (DAT_00837ff4 != (int *)0x0) { (**(code **)(*DAT_00837ff4 + 0x3c))(puVar4); } puVar4 = (undefined4 *)(-(uint)(param_1 != (undefined4 *)0x1c) & (uint)param_1); *puVar4 = &PTR_FUN_00795538; if (puVar4[1] != 0) { FUN_0040e340(puVar4); puVar4[1] = 0; } uVar3 = -(uint)(param_1 != (undefined4 *)0x1c) & (uint)(param_1 + -6); iVar1 = *(int *)(uVar3 + 8); puVar4 = (undefined4 *)(iVar1 + -0x14); LVar2 = InterlockedDecrement((LONG *)(iVar1 + -0x10)); if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } iVar1 = *(int *)(uVar3 + 4); puVar4 = (undefined4 *)(iVar1 + -0x14); LVar2 = InterlockedDecrement((LONG *)(iVar1 + -0x10)); if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } return; } // --- FUN_00412e10 at 0x00412E10 (size: 58) --- undefined4 * __thiscall FUN_00412e10(undefined4 *param_1,byte param_2) { param_1[8] = &PTR_FUN_0079385c; *param_1 = &PTR_FUN_00795538; if (param_1[1] != 0) { FUN_0040e340(param_1); param_1[1] = 0; } if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00412e50 at 0x00412E50 (size: 494) --- undefined4 * __fastcall FUN_00412e50(undefined4 *param_1) { LONG *pLVar1; param_1[1] = &PTR_LAB_00795c80; pLVar1 = (LONG *)(PTR_DAT_00818344 + -0x10); param_1[2] = PTR_DAT_00818344; InterlockedIncrement(pLVar1); FUN_00401340(&DAT_00795c7c); param_1[7] = &PTR_FUN_007959a8; param_1[8] = 0; param_1[9] = &PTR_FUN_00795824; param_1[0xb] = 0; param_1[10] = &PTR_FUN_00795dd8; param_1[0xc] = 0; param_1[0xe] = 0; param_1[0xf] = 0; param_1[0x10] = 0; param_1[0x11] = 0x3f800000; param_1[0x12] = &PTR_FUN_00795878; param_1[0x15] = 0; *param_1 = &PTR_LAB_00795d48; param_1[1] = &PTR_LAB_00795cf8; param_1[7] = &PTR_FUN_00795ce8; param_1[9] = &PTR_LAB_00795cdc; param_1[10] = &PTR_LAB_00795ccc; param_1[0x17] = 1; param_1[0x16] = &PTR_LAB_00793b6c; pLVar1 = (LONG *)(PTR_DAT_00818344 + -0x10); param_1[0x18] = PTR_DAT_00818344; InterlockedIncrement(pLVar1); pLVar1 = (LONG *)(PTR_DAT_00818344 + -0x10); param_1[0x19] = PTR_DAT_00818344; InterlockedIncrement(pLVar1); param_1[0x1a] = 1; param_1[0x1b] = 0; param_1[0x1c] = 1; pLVar1 = (LONG *)(DAT_008ef11c + 4); param_1[0x1d] = DAT_008ef11c; InterlockedIncrement(pLVar1); param_1[0x1e] = 0; param_1[0x1f] = 0; param_1[0x20] = 0; pLVar1 = (LONG *)(PTR_DAT_00818344 + -0x10); param_1[0x21] = PTR_DAT_00818344; InterlockedIncrement(pLVar1); pLVar1 = (LONG *)(PTR_DAT_00818344 + -0x10); param_1[0x22] = PTR_DAT_00818344; InterlockedIncrement(pLVar1); pLVar1 = (LONG *)(PTR_DAT_00818344 + -0x10); param_1[0x23] = PTR_DAT_00818344; InterlockedIncrement(pLVar1); param_1[0x24] = 0; param_1[0x25] = 0x1c88; param_1[0x26] = 0; param_1[0x27] = 0; param_1[0x28] = 0; param_1[0x29] = 1; pLVar1 = (LONG *)(PTR_DAT_00818340 + -0x10); param_1[0x2a] = PTR_DAT_00818340; InterlockedIncrement(pLVar1); param_1[0x2b] = 0; param_1[0x2c] = 0; *(undefined1 *)(param_1 + 0x2d) = 0; FUN_005414a0(); param_1[0x40] = 0; param_1[0x41] = 0; param_1[0x42] = 0; pLVar1 = (LONG *)(PTR_DAT_00818344 + -0x10); param_1[0x43] = PTR_DAT_00818344; InterlockedIncrement(pLVar1); *(undefined1 *)(param_1 + 0x44) = 0; param_1[0x45] = 0; param_1[0x46] = 0; param_1[0x48] = 0; param_1[0x49] = 0; param_1[0x4a] = 0; param_1[0x4b] = 0; param_1[0x4c] = 0; DAT_008379e4 = param_1; FUN_00556eb0(); FUN_00405e60(0x100,1); return param_1; } // --- FUN_00413040 at 0x00413040 (size: 34) --- int __thiscall FUN_00413040(int param_1,byte param_2) { FUN_00412b70(); if ((param_2 & 1) != 0) { operator_delete((void *)(param_1 + -0x1c)); } return param_1 + -0x1c; } // --- FUN_00413180 at 0x00413180 (size: 714) --- undefined4 * __thiscall FUN_00413180(int *param_1,undefined4 *param_2) { int iVar1; undefined *puVar2; HMODULE pHVar3; LONG LVar4; undefined4 *puVar5; int iStack_1fc; undefined *puStack_1f8; undefined **ppuStack_1f4; int iStack_1f0; int iStack_1ec; int iStack_1e8; undefined4 uStack_1e4; undefined4 uStack_1e0; undefined4 uStack_1dc; undefined4 uStack_1d8; undefined4 uStack_1d4; undefined4 *puStack_1d0; int iStack_1cc; uint uStack_1c8; undefined1 auStack_1c4 [24]; undefined4 uStack_1ac; undefined4 uStack_1a8; undefined1 auStack_120 [144]; undefined1 auStack_90 [144]; (**(code **)(*param_1 + 0x78))(); iStack_1cc = param_1[0x26]; iStack_1fc = param_1[0x25]; iVar1 = param_1[0x23]; if (iStack_1cc == 0) { iStack_1cc = param_1[0x45]; } FUN_0040e4e0(param_1 + 10); puStack_1d0 = DAT_008ef11c; uStack_1e4 = 0; uStack_1e0 = 0; uStack_1dc = 0; uStack_1d8 = 0; uStack_1d4 = 0; InterlockedIncrement(DAT_008ef11c + 1); uStack_1c8 = (uint)*(byte *)(param_1 + 0x44); FUN_004034c0(param_1[0x43]); pHVar3 = LoadLibraryA("acpl.dll"); if ((pHVar3 != (HMODULE)0x0) || (pHVar3 = LoadLibraryA("pl.dll"), pHVar3 != (HMODULE)0x0)) { puVar2 = PTR_FUN_00837388; iStack_1ec = (*(code *)PTR_FUN_00837388)(pHVar3,"LogWireDataReceived"); uStack_1e0 = (*(code *)puVar2)(pHVar3,"LogWireDataSent"); } FUN_00413980(); FUN_00545bd0(&ppuStack_1f4,iStack_1fc,iVar1,auStack_1c4,param_1 + 0x2e,&uStack_1e4); if (iStack_1f0 == DAT_00822344) { if (iStack_1ec == DAT_00822348) { iVar1 = param_1[0xc]; while (iVar1 < 3) { FUN_00411630(); iVar1 = param_1[0xc]; } iStack_1f0 = param_1[0x13]; iStack_1ec = param_1[0x14]; } if ((iStack_1f0 == DAT_00822344) && (iStack_1ec == DAT_00822348)) { *(undefined1 *)(param_1 + 0x2d) = 1; goto LAB_004133fd; } } FUN_0042dc80(); FUN_0042c9c0(iStack_1f0,iStack_1ec); FUN_0042e510(auStack_120); FUN_0042e590(); FUN_0042e510(auStack_90); FUN_0042e590(); FUN_00412ae0(&iStack_1fc); FUN_00408fd0(&iStack_1e8,0); puVar5 = (undefined4 *)(iStack_1fc + -0x14); LVar4 = InterlockedDecrement((LONG *)(iStack_1fc + -0x10)); if ((LVar4 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } puStack_1f8 = PTR_DAT_00818344; InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10)); FUN_00402710(&puStack_1f8,"Failed to establish connection to the server: %s (%8X:%08X)",iStack_1e8 ,uStack_1a8,uStack_1ac); FUN_00555860(puStack_1f8); puVar5 = (undefined4 *)(puStack_1f8 + -0x14); LVar4 = InterlockedDecrement((LONG *)(puStack_1f8 + -0x10)); if ((LVar4 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } LVar4 = InterlockedDecrement((LONG *)(iStack_1e8 + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(iStack_1e8 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iStack_1e8 + -0x14))(1); } FUN_0042e590(); LAB_004133fd: param_2[2] = iStack_1ec; *param_2 = &PTR_FUN_00795878; param_2[1] = iStack_1f0; ppuStack_1f4 = &PTR_FUN_0079385c; FUN_00695670(); puVar5 = puStack_1d0; LVar4 = InterlockedDecrement(puStack_1d0 + 1); if ((LVar4 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } return param_2; } // --- FUN_00413470 at 0x00413470 (size: 64) --- undefined4 * __thiscall FUN_00413470(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00795ef8; if ((undefined4 *)param_1[0x18] != param_1 + 1) { operator_delete__((undefined4 *)param_1[0x18]); } param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_004134b0 at 0x004134B0 (size: 25) --- void __fastcall FUN_004134b0(int *param_1) { int iVar1; undefined4 uVar2; iVar1 = *param_1; if (*(int *)(iVar1 + -8) == -1) { uVar2 = FUN_004016b0(iVar1); *(undefined4 *)(iVar1 + -8) = uVar2; } return; } // --- FUN_004134d0 at 0x004134D0 (size: 16) --- int FUN_004134d0(int *param_1,int *param_2) { return *param_2 - *param_1 >> 2; } // --- FUN_004134e0 at 0x004134E0 (size: 18) --- void FUN_004134e0(int *param_1,int param_2) { *param_1 = *param_1 + param_2 * 4; return; } // --- FUN_00413500 at 0x00413500 (size: 102) --- undefined4 * FUN_00413500(undefined4 *param_1,undefined4 param_2) { LONG LVar1; undefined4 *puVar2; undefined *local_4; local_4 = PTR_DAT_00818344; InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10)); FUN_00402710(&local_4,"\'\' (did=0x%08X)",param_2); *param_1 = local_4; InterlockedIncrement((LONG *)(local_4 + -0x10)); puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } return param_1; } // --- FUN_00413570 at 0x00413570 (size: 213) --- void FUN_00413570(undefined4 param_1,undefined4 param_2) { LONG LVar1; undefined4 *puVar2; undefined *local_c; undefined *local_8; int local_4; FUN_00413500(&local_4,param_1); local_8 = PTR_DAT_00818344; InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10)); FUN_00402390(param_2,&stack0x0000000c); local_c = PTR_DAT_00818344; InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10)); FUN_00402710(&local_c,"Error in file \"%s\": %s\n",local_4,local_8); FUN_0065af70(&local_c); puVar2 = (undefined4 *)(local_c + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_c + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(local_8 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_8 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && ((undefined4 *)(local_4 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_4 + -0x14))(1); } return; } // --- FUN_00413650 at 0x00413650 (size: 143) --- undefined4 * __thiscall FUN_00413650(undefined4 *param_1,undefined4 param_2) { undefined *puVar1; uint *puVar2; undefined4 uVar3; uint uVar4; int iVar5; undefined4 *puVar6; param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; *param_1 = &PTR_FUN_00795ef8; puVar1 = PTR_DAT_00818558; puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0); if (puVar2 == (uint *)puVar1) { puVar2 = puVar2 + -1; } uVar4 = *puVar2; param_1[0x1a] = uVar4; if (uVar4 < 0x18) { param_1[0x18] = param_1 + 1; } else { uVar3 = thunk_FUN_005df0f5(uVar4 << 2); param_1[0x18] = uVar3; } param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a]; puVar6 = (undefined4 *)param_1[0x18]; for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) { *puVar6 = 0; puVar6 = puVar6 + 1; } for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) { *(undefined1 *)puVar6 = 0; puVar6 = (undefined4 *)((int)puVar6 + 1); } return param_1; } // --- FUN_004136e0 at 0x004136E0 (size: 58) --- void __fastcall FUN_004136e0(undefined4 *param_1) { *param_1 = &PTR_FUN_00795f38; FUN_00433a10(); param_1[1] = &PTR_FUN_00795ef8; if ((undefined4 *)param_1[0x19] != param_1 + 2) { operator_delete__((undefined4 *)param_1[0x19]); } param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x1c] = 0; return; } // --- FUN_00413720 at 0x00413720 (size: 82) --- undefined4 * __thiscall FUN_00413720(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00795f38; FUN_00433a10(); param_1[1] = &PTR_FUN_00795ef8; if ((undefined4 *)param_1[0x19] != param_1 + 2) { operator_delete__((undefined4 *)param_1[0x19]); } param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x1c] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_004137f0 at 0x004137F0 (size: 95) --- undefined4 * FUN_004137f0(void) { undefined4 *puVar1; if (DAT_00837b9c == (undefined4 *)0x0) { puVar1 = (undefined4 *)FUN_005df0f5(0x80); if (puVar1 == (undefined4 *)0x0) { DAT_00837b9c = (undefined4 *)0x0; } else { puVar1[1] = 1; *puVar1 = &PTR_FUN_00795f3c; *(undefined1 *)(puVar1 + 2) = 0; *(undefined1 *)((int)puVar1 + 9) = 0; puVar1[3] = &PTR_FUN_00795f38; FUN_00413650(0x17); DAT_00837b9c = puVar1; } } InterlockedIncrement(DAT_00837b9c + 1); return DAT_00837b9c; } // --- FUN_00413850 at 0x00413850 (size: 210) --- void FUN_00413850(int param_1,int *param_2) { undefined4 *puVar1; LONG LVar2; int iVar3; undefined4 uVar4; puVar1 = (undefined4 *)FUN_0040f4c0(); FUN_0065af30(puVar1); LVar2 = InterlockedDecrement(puVar1 + 1); if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } if (param_1 != 0) { if (param_1 == 1) { puVar1 = (undefined4 *)FUN_0040eb60(); } else { if (param_1 != 2) { return; } puVar1 = (undefined4 *)FUN_0040eb40(); } FUN_0065af30(puVar1); LVar2 = InterlockedDecrement(puVar1 + 1); if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } return; } if (*(int *)(*param_2 + -4) == 1) { uVar4 = FUN_004137f0(); FUN_0065af30(uVar4); FUN_00405f70(); return; } iVar3 = FUN_005df0f5(0x18); if (iVar3 == 0) { FUN_0065af30(0); FUN_00405f70(); return; } uVar4 = FUN_0040f020(*param_2); FUN_0065af30(uVar4); FUN_00405f70(); return; } // --- FUN_00413930 at 0x00413930 (size: 39) --- undefined4 * __thiscall FUN_00413930(undefined4 *param_1,byte param_2) { FUN_004136e0(); *param_1 = &PTR_FUN_007952f4; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00413960 at 0x00413960 (size: 19) --- void __fastcall FUN_00413960(undefined4 *param_1) { *param_1 = 0; param_1[1] = 0; param_1[2] = 0; param_1[3] = 0; param_1[4] = 0; return; } // --- FUN_00413980 at 0x00413980 (size: 21) --- void __fastcall FUN_00413980(undefined4 *param_1) { *param_1 = 0; param_1[1] = 0; param_1[2] = 0; param_1[3] = 0; param_1[4] = 0; return; } // --- FUN_004139a0 at 0x004139A0 (size: 45) --- void __thiscall FUN_004139a0(undefined4 *param_1,undefined4 *param_2) { *param_1 = *param_2; param_1[1] = param_2[1]; param_1[2] = param_2[2]; param_1[3] = param_2[3]; param_1[4] = param_2[4]; return; } // --- FUN_004139d0 at 0x004139D0 (size: 46) --- void __fastcall FUN_004139d0(int param_1) { if (DAT_00837bac != 0) { (**(code **)(*(int *)(DAT_00837bac + 4) + 0x34))(DAT_00818684); } DAT_00818684 = DAT_00837c20; /* WARNING: Could not recover jumptable at 0x004139fb. Too many branches */ /* WARNING: Treating indirect jump as call */ (**(code **)(*(int *)(param_1 + 4) + 0x58))(); return; } // --- FUN_00413a00 at 0x00413A00 (size: 34) --- undefined4 FUN_00413a00(undefined4 param_1,undefined4 param_2,undefined4 param_3) { undefined4 uVar1; if (DAT_00837bac != (int *)0x0) { uVar1 = (**(code **)(*DAT_00837bac + 0x24))(param_1,param_2,param_3); return uVar1; } return 0; } // --- FUN_00413a30 at 0x00413A30 (size: 24) --- undefined4 FUN_00413a30(undefined4 param_1) { undefined4 uVar1; if (DAT_00837bac != (int *)0x0) { uVar1 = (**(code **)(*DAT_00837bac + 0x2c))(param_1); return uVar1; } return 0; } // --- FUN_00413a50 at 0x00413A50 (size: 27) --- undefined4 FUN_00413a50(undefined4 *param_1) { undefined4 uVar1; if (DAT_00837bac != 0) { uVar1 = *(undefined4 *)(DAT_00837bac + 0x120); *param_1 = uVar1; return CONCAT31((int3)((uint)uVar1 >> 8),1); } return 0; } // --- FUN_00413a70 at 0x00413A70 (size: 19) --- undefined4 FUN_00413a70(void) { if (DAT_00837bac != 0) { return CONCAT31((int3)((uint)DAT_00837bac >> 8),*(undefined1 *)(DAT_00837bac + 0x128)); } return 0; } // --- FUN_00413a90 at 0x00413A90 (size: 19) --- undefined4 FUN_00413a90(void) { if (DAT_00837bac != 0) { return CONCAT31((int3)((uint)DAT_00837bac >> 8),*(undefined1 *)(DAT_00837bac + 0x129)); } return 0; } // --- FUN_00413ab0 at 0x00413AB0 (size: 19) --- undefined4 FUN_00413ab0(void) { if (DAT_00837bac != 0) { return CONCAT31((int3)((uint)DAT_00837bac >> 8),*(undefined1 *)(DAT_00837bac + 0x12a)); } return 0; } // --- FUN_00413ad0 at 0x00413AD0 (size: 15) --- undefined4 __thiscall FUN_00413ad0(int param_1,undefined4 param_2) { *(undefined4 *)(param_1 + 0x120) = param_2; return 1; } // --- FUN_00413ae0 at 0x00413AE0 (size: 29) --- uint FUN_00413ae0(undefined4 param_1,undefined4 param_2) { uint in_EAX; uint uVar1; if (DAT_00837bac != (int *)0x0) { uVar1 = (**(code **)(*DAT_00837bac + 0x4c))(param_1,param_2); return uVar1; } return in_EAX & 0xffffff00; } // --- FUN_00413b00 at 0x00413B00 (size: 19) --- undefined4 FUN_00413b00(void) { if (DAT_00837bac != 0) { return *(undefined4 *)(DAT_00837bac + 0x124); } return 0; } // --- FUN_00413b30 at 0x00413B30 (size: 47) --- undefined4 * __thiscall FUN_00413b30(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00795f70; if ((void *)param_1[1] != (void *)0x0) { operator_delete__((void *)param_1[1]); } if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00413b60 at 0x00413B60 (size: 25) --- void __thiscall FUN_00413b60(int param_1,undefined4 *param_2,undefined4 param_3) { undefined4 uVar1; uVar1 = *(undefined4 *)(param_1 + 0x11c); *(undefined4 *)(param_1 + 0x11c) = param_3; *param_2 = uVar1; return; } // --- FUN_00413b80 at 0x00413B80 (size: 49) --- void FUN_00413b80(undefined4 param_1,undefined4 param_2) { undefined4 *puVar1; undefined4 uVar2; puVar1 = *(undefined4 **)(DAT_00837bac + 4); uVar2 = FUN_004220b0(param_1,param_2); (*(code *)*puVar1)(2,uVar2); return; } // --- FUN_00413bc0 at 0x00413BC0 (size: 48) --- undefined4 * FUN_00413bc0(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { if (DAT_00837bac != (int *)0x0) { (**(code **)(*DAT_00837bac + 0x28))(param_1,param_2,param_3); return param_1; } *param_1 = DAT_00837bb0; return param_1; } // --- FUN_00413d20 at 0x00413D20 (size: 185) --- char __thiscall FUN_00413d20(int param_1,undefined4 param_2,undefined4 param_3) { char cVar1; char cVar2; int *piVar3; int *piVar4; char unaff_BP; undefined4 unaff_ESI; undefined1 local_8 [4]; char cStack_4; FUN_004220b0(param_2,param_3); piVar3 = (int *)(**(code **)(*(int *)(param_1 + 4) + 0x38))(local_8); if (piVar3 == (int *)0x0) { return '\0'; } piVar4 = (int *)(**(code **)(*(int *)(param_1 + 4) + 0x84))(&stack0xfffffff4,piVar3); if (piVar4 == (int *)0x0) { return '\0'; } cStack_4 = (char)piVar4[2]; if (cStack_4 != '\0') { (**(code **)(*piVar4 + 0x2c))(); } (**(code **)(*piVar4 + 0x3c))(); cVar1 = (**(code **)(*(int *)(param_1 + 4) + 0x7c))(piVar4,&stack0xffffffec,piVar3); cVar2 = '\0'; if ((cVar1 != '\0') && (cVar2 = (**(code **)(*piVar4 + 0x24))(), cVar2 != '\0')) { if (unaff_BP != '\0') { cVar2 = (**(code **)(*piVar4 + 0x28))(); } if (cVar2 != '\0') goto LAB_00413dc6; } (**(code **)(*piVar3 + 0x1c))(unaff_ESI); LAB_00413dc6: (**(code **)(*piVar4 + 0x14))(); return cVar2; } // --- FUN_00413de0 at 0x00413DE0 (size: 108) --- void FUN_00413de0(int *param_1) { char cVar1; undefined4 uVar2; if (DAT_00837bac != 0) { if ((param_1[10] != DAT_00837bb0) && (*(int *)(DAT_00837bac + 300) != 0)) { uVar2 = (**(code **)(*param_1 + 0x48))(); cVar1 = FUN_0041c4a0(uVar2); if (cVar1 == '\0') { uVar2 = (**(code **)(*param_1 + 0x48))(); switch(uVar2) { case 0x15: case 0x1c: case 0x24: case 0x26: case 0x28: case 0x2d: break; default: (**(code **)(*param_1 + 0x40))(*(undefined4 *)(DAT_00837bac + 300)); } } } } return; } // --- FUN_00413e70 at 0x00413E70 (size: 64) --- undefined4 * __thiscall FUN_00413e70(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00795f84; if ((undefined4 *)param_1[0x18] != param_1 + 1) { operator_delete__((undefined4 *)param_1[0x18]); } param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00413eb0 at 0x00413EB0 (size: 64) --- undefined4 * __thiscall FUN_00413eb0(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00795f88; if ((undefined4 *)param_1[0x18] != param_1 + 1) { operator_delete__((undefined4 *)param_1[0x18]); } param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00413ef0 at 0x00413EF0 (size: 64) --- undefined4 * __thiscall FUN_00413ef0(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00795f8c; if ((undefined4 *)param_1[0x18] != param_1 + 1) { operator_delete__((undefined4 *)param_1[0x18]); } param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00413f30 at 0x00413F30 (size: 64) --- undefined4 * __thiscall FUN_00413f30(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00795f90; if ((undefined4 *)param_1[0x18] != param_1 + 1) { operator_delete__((undefined4 *)param_1[0x18]); } param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00413f70 at 0x00413F70 (size: 64) --- undefined4 * __thiscall FUN_00413f70(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00795f94; if ((undefined4 *)param_1[0x18] != param_1 + 1) { operator_delete__((undefined4 *)param_1[0x18]); } param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00413fb0 at 0x00413FB0 (size: 160) --- int __thiscall FUN_00413fb0(int param_1,undefined4 *param_2) { int iVar1; uint uVar2; uint uVar3; if (*(int *)(param_1 + 0x10) == *(int *)(param_1 + 0x14)) { iVar1 = thunk_FUN_005df0f5((*(int *)(param_1 + 0x18) + *(int *)(param_1 + 0x14)) * 4); if (*(int *)(param_1 + 4) != 0) { uVar3 = *(uint *)(param_1 + 8); uVar2 = 0; if (*(int *)(param_1 + 0x10) != 0) { do { *(undefined4 *)(iVar1 + uVar2 * 4) = *(undefined4 *)(*(int *)(param_1 + 4) + uVar3 * 4); uVar3 = (uVar3 + 1) % *(uint *)(param_1 + 0x14); uVar2 = uVar2 + 1; } while (uVar2 < *(uint *)(param_1 + 0x10)); } operator_delete__(*(void **)(param_1 + 4)); } *(int *)(param_1 + 4) = iVar1; *(undefined4 *)(param_1 + 8) = 0; *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_1 + 0x10); *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + *(int *)(param_1 + 0x18); } *(undefined4 *)(*(int *)(param_1 + 4) + *(int *)(param_1 + 0xc) * 4) = *param_2; *(uint *)(param_1 + 0xc) = (*(int *)(param_1 + 0xc) + 1U) % *(uint *)(param_1 + 0x14); iVar1 = *(int *)(param_1 + 0x10); *(int *)(param_1 + 0x10) = iVar1 + 1; return iVar1; } // --- FUN_00414050 at 0x00414050 (size: 130) --- uint __thiscall FUN_00414050(int param_1,int param_2) { uint uVar1; uint uVar2; uint uVar3; int iVar4; *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1; uVar1 = *(uint *)(param_1 + 0x14); if (param_2 == 0) { uVar2 = *(int *)(param_1 + 8) + 1; *(uint *)(param_1 + 8) = uVar2 % uVar1; return uVar2 / uVar1; } uVar2 = (uVar1 - 1) + *(int *)(param_1 + 0xc); uVar3 = uVar2 / uVar1; *(uint *)(param_1 + 0xc) = uVar2 % uVar1; if (param_2 != *(int *)(param_1 + 0x10)) { uVar1 = *(uint *)(param_1 + 8); uVar2 = (uVar1 + param_2) % *(uint *)(param_1 + 0x14); if ((*(uint *)(param_1 + 0xc) < uVar1) && (uVar1 < uVar2)) { iVar4 = *(uint *)(param_1 + 0x14) - 1; FUN_004140e0(uVar2,uVar2 + 1,iVar4 - uVar2); (*(undefined4 **)(param_1 + 4))[iVar4] = **(undefined4 **)(param_1 + 4); uVar2 = 0; } uVar3 = FUN_004140e0(uVar2,uVar2 + 1,*(int *)(param_1 + 0xc) - uVar2); } return uVar3; } // --- FUN_004140e0 at 0x004140E0 (size: 120) --- void __thiscall FUN_004140e0(int param_1,uint param_2,uint param_3,int param_4) { int iVar1; int iVar2; if (param_4 != 0) { if (param_2 < param_3) { if (param_4 != 0) { iVar2 = param_2 * 4; iVar1 = param_3 * 4; do { *(undefined4 *)(iVar2 + *(int *)(param_1 + 4)) = *(undefined4 *)(iVar1 + *(int *)(param_1 + 4)); iVar1 = iVar1 + 4; iVar2 = iVar2 + 4; param_4 = param_4 + -1; } while (param_4 != 0); return; } } else if (param_4 != 0) { iVar1 = ((param_2 - 1) + param_4) * 4; iVar2 = ((param_3 - 1) + param_4) * 4; do { *(undefined4 *)(iVar1 + *(int *)(param_1 + 4)) = *(undefined4 *)(iVar2 + *(int *)(param_1 + 4)); iVar2 = iVar2 + -4; iVar1 = iVar1 + -4; param_4 = param_4 + -1; } while (param_4 != 0); } } return; } // --- FUN_00414190 at 0x00414190 (size: 66) --- void __thiscall FUN_00414190(int param_1,int *param_2,int *param_3) { undefined4 *puVar1; int *piVar2; puVar1 = (undefined4 *) (*(int *)(param_1 + 0x60) + ((uint)(*param_3 + param_3[1]) % *(uint *)(param_1 + 0x68)) * 4); for (piVar2 = (int *)*puVar1; (piVar2 != (int *)0x0 && ((*piVar2 != *param_3 || (piVar2[1] != param_3[1])))); piVar2 = (int *)piVar2[2]) { } param_2[1] = (int)puVar1; *param_2 = param_1; param_2[2] = (int)piVar2; return; } // --- FUN_004141e0 at 0x004141E0 (size: 424) --- undefined1 FUN_004141e0(void) { char cVar1; undefined4 *puVar2; LONG LVar3; int *piVar4; int *piVar5; int local_10; int local_c; int local_8; int iStack_4; if (DAT_00837c68 == 0) { puVar2 = (undefined4 *)FUN_005df0f5(4); if (puVar2 == (undefined4 *)0x0) { puVar2 = (undefined4 *)0x0; } else { *puVar2 = &PTR_FUN_00795f5c; } cVar1 = FUN_0041c220(puVar2); if (cVar1 == '\0') { return 0; } } piVar5 = &local_10; FUN_00401340(&DAT_007954ac); piVar4 = &local_c; FUN_00423430(&local_8,&DAT_00837be4,&local_10,piVar4); FUN_0040bbc0(piVar5,piVar4); puVar2 = (undefined4 *)(local_8 + -0x14); LVar3 = InterlockedDecrement((LONG *)(local_8 + -0x10)); if ((LVar3 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(local_c + -0x14); LVar3 = InterlockedDecrement((LONG *)(local_c + -0x10)); if ((LVar3 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_0041c2e0(&local_10); FUN_00401340(&DAT_007954ac); piVar4 = &local_c; piVar5 = &local_8; FUN_00423430(&iStack_4,&DAT_00837be8,piVar5,piVar4); piVar4 = (int *)FUN_0040bbc0(piVar5,piVar4); if (local_10 != *piVar4) { LVar3 = InterlockedDecrement((LONG *)(local_10 + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(local_10 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_10 + -0x14))(1); } local_10 = *piVar4; InterlockedIncrement((LONG *)(local_10 + -0x10)); } LVar3 = InterlockedDecrement((LONG *)(local_8 + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(local_8 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_8 + -0x14))(1); } LVar3 = InterlockedDecrement((LONG *)(iStack_4 + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(iStack_4 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iStack_4 + -0x14))(1); } LVar3 = InterlockedDecrement((LONG *)(local_c + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(local_c + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_c + -0x14))(1); } FUN_0041c330(&local_10); puVar2 = (undefined4 *)(local_10 + -0x14); LVar3 = InterlockedDecrement((LONG *)(local_10 + -0x10)); if ((LVar3 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } return 1; } // --- FUN_00414390 at 0x00414390 (size: 92) --- void FUN_00414390(void) { int iVar1; int *piVar2; int iVar3; undefined1 auStack_c [12]; FUN_00417710(); piVar2 = (int *)FUN_0052dcf0(auStack_c); iVar3 = piVar2[2]; iVar1 = *piVar2; piVar2 = (int *)piVar2[1]; do { if (iVar3 == 0) { return; } do { if (*(int *)(iVar3 + 8) != 0) { FUN_00416ac0(); } iVar3 = *(int *)(iVar3 + 4); } while (iVar3 != 0); do { piVar2 = piVar2 + 1; if (piVar2 == (int *)(*(int *)(iVar1 + 0x60) + *(int *)(iVar1 + 0x68) * 4)) { return; } iVar3 = *piVar2; } while (iVar3 == 0); } while( true ); } // --- FUN_004144e0 at 0x004144E0 (size: 82) --- void FUN_004144e0(uint param_1) { int iVar1; uint *puVar2; int *piVar3; int iVar4; undefined1 auStack_c [12]; if (param_1 == 0) { piVar3 = (int *)FUN_0052dcf0(auStack_c); iVar4 = piVar3[2]; iVar1 = *piVar3; piVar3 = (int *)piVar3[1]; while (iVar4 != 0) { do { if (*(int **)(iVar4 + 8) != (int *)0x0) { (**(code **)(**(int **)(iVar4 + 8) + 0x28))(); } iVar4 = *(int *)(iVar4 + 4); } while (iVar4 != 0); do { piVar3 = piVar3 + 1; if (piVar3 == (int *)(*(int *)(iVar1 + 0x60) + *(int *)(iVar1 + 0x68) * 4)) { return; } iVar4 = *piVar3; } while (iVar4 == 0); } } else { puVar2 = *(uint **)(DAT_0081866c + (param_1 % DAT_00818674) * 4); if (puVar2 != (uint *)0x0) { while (*puVar2 != param_1) { puVar2 = (uint *)puVar2[1]; if (puVar2 == (uint *)0x0) { return; } } if ((puVar2 != (uint *)0x0) && (puVar2 + 2 != (uint *)0x0)) { (**(code **)(*(int *)puVar2[2] + 0x28))(); return; } } } return; } // --- FUN_00414532 at 0x00414532 (size: 90) --- void FUN_00414532(void) { int iVar1; int *piVar2; int iVar3; piVar2 = (int *)FUN_0052dcf0(&stack0x00000000); iVar3 = piVar2[2]; iVar1 = *piVar2; piVar2 = (int *)piVar2[1]; do { if (iVar3 == 0) { return; } do { if (*(int **)(iVar3 + 8) != (int *)0x0) { (**(code **)(**(int **)(iVar3 + 8) + 0x28))(); } iVar3 = *(int *)(iVar3 + 4); } while (iVar3 != 0); do { piVar2 = piVar2 + 1; if (piVar2 == (int *)(*(int *)(iVar1 + 0x60) + *(int *)(iVar1 + 0x68) * 4)) { return; } iVar3 = *piVar2; } while (iVar3 == 0); } while( true ); } // --- FUN_00414590 at 0x00414590 (size: 61) --- uint FUN_00414590(uint param_1) { uint *puVar1; puVar1 = *(uint **)(DAT_0081866c + (param_1 % DAT_00818674) * 4); if (puVar1 != (uint *)0x0) { while (*puVar1 != param_1) { puVar1 = (uint *)puVar1[1]; if (puVar1 == (uint *)0x0) { return 0; } } if ((puVar1 != (uint *)0x0) && (puVar1 + 2 != (uint *)0x0)) { return puVar1[2]; } } return 0; } // --- FUN_004145d0 at 0x004145D0 (size: 73) --- void __fastcall FUN_004145d0(int param_1) { undefined *puVar1; undefined4 *puVar2; undefined4 local_4; puVar1 = PTR_DAT_00818558; local_4 = *(undefined4 *)(param_1 + 0x68); puVar2 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,local_4,0); if ((puVar2 != (undefined4 *)puVar1) || (puVar2 = puVar2 + -1, puVar2 != (undefined4 *)puVar1)) { puVar2 = puVar2 + 1; } FUN_004148b0(*puVar2); return; } // --- FUN_00414620 at 0x00414620 (size: 143) --- undefined4 FUN_00414620(undefined4 param_1,int param_2) { int iVar1; int *piVar2; int iVar3; undefined1 local_c [12]; if (param_2 == 0) { piVar2 = (int *)FUN_0052dcf0(local_c); iVar3 = piVar2[2]; iVar1 = *piVar2; piVar2 = (int *)piVar2[1]; while (iVar3 != 0) { do { if (*(int *)(iVar3 + 8) != 0) { FUN_00416970(param_1); } iVar3 = *(int *)(iVar3 + 4); } while (iVar3 != 0); do { piVar2 = piVar2 + 1; if (piVar2 == (int *)(*(int *)(iVar1 + 0x60) + *(int *)(iVar1 + 0x68) * 4)) { return 1; } iVar3 = *piVar2; } while (iVar3 == 0); } } else { iVar1 = FUN_00414590(param_2); if (iVar1 != 0) { FUN_00416970(param_1); return 1; } } return 1; } // --- FUN_00414700 at 0x00414700 (size: 143) --- undefined4 * __thiscall FUN_00414700(undefined4 *param_1,undefined4 param_2) { undefined *puVar1; uint *puVar2; undefined4 uVar3; uint uVar4; int iVar5; undefined4 *puVar6; param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; *param_1 = &PTR_FUN_00795f84; puVar1 = PTR_DAT_00818558; puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0); if (puVar2 == (uint *)puVar1) { puVar2 = puVar2 + -1; } uVar4 = *puVar2; param_1[0x1a] = uVar4; if (uVar4 < 0x18) { param_1[0x18] = param_1 + 1; } else { uVar3 = thunk_FUN_005df0f5(uVar4 << 2); param_1[0x18] = uVar3; } param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a]; puVar6 = (undefined4 *)param_1[0x18]; for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) { *puVar6 = 0; puVar6 = puVar6 + 1; } for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) { *(undefined1 *)puVar6 = 0; puVar6 = (undefined4 *)((int)puVar6 + 1); } return param_1; } // --- FUN_00414790 at 0x00414790 (size: 143) --- undefined4 * __thiscall FUN_00414790(undefined4 *param_1,undefined4 param_2) { undefined *puVar1; uint *puVar2; undefined4 uVar3; uint uVar4; int iVar5; undefined4 *puVar6; param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; *param_1 = &PTR_FUN_00795f90; puVar1 = PTR_DAT_00818558; puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0); if (puVar2 == (uint *)puVar1) { puVar2 = puVar2 + -1; } uVar4 = *puVar2; param_1[0x1a] = uVar4; if (uVar4 < 0x18) { param_1[0x18] = param_1 + 1; } else { uVar3 = thunk_FUN_005df0f5(uVar4 << 2); param_1[0x18] = uVar3; } param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a]; puVar6 = (undefined4 *)param_1[0x18]; for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) { *puVar6 = 0; puVar6 = puVar6 + 1; } for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) { *(undefined1 *)puVar6 = 0; puVar6 = (undefined4 *)((int)puVar6 + 1); } return param_1; } // --- FUN_00414820 at 0x00414820 (size: 143) --- undefined4 * __thiscall FUN_00414820(undefined4 *param_1,undefined4 param_2) { undefined *puVar1; uint *puVar2; undefined4 uVar3; uint uVar4; int iVar5; undefined4 *puVar6; param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; *param_1 = &PTR_FUN_00795f94; puVar1 = PTR_DAT_00818558; puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0); if (puVar2 == (uint *)puVar1) { puVar2 = puVar2 + -1; } uVar4 = *puVar2; param_1[0x1a] = uVar4; if (uVar4 < 0x18) { param_1[0x18] = param_1 + 1; } else { uVar3 = thunk_FUN_005df0f5(uVar4 << 2); param_1[0x18] = uVar3; } param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a]; puVar6 = (undefined4 *)param_1[0x18]; for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) { *puVar6 = 0; puVar6 = puVar6 + 1; } for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) { *(undefined1 *)puVar6 = 0; puVar6 = (undefined4 *)((int)puVar6 + 1); } return param_1; } // --- FUN_004148b0 at 0x004148B0 (size: 319) --- undefined4 __thiscall FUN_004148b0(int param_1,int param_2) { int iVar1; int iVar2; int *piVar3; undefined4 *puVar4; int *piVar5; int *piVar6; undefined4 *puVar7; int *piVar8; uint uVar9; int *piVar10; iVar2 = param_2; if (param_2 == *(int *)(param_1 + 0x68)) { return 0; } iVar1 = *(int *)(param_1 + 0x6c); piVar3 = (int *)0x0; do { if (iVar1 == 0) { if (*(void **)(param_1 + 0x60) != (void *)(param_1 + 4)) { operator_delete__(*(void **)(param_1 + 0x60)); } *(undefined4 *)(param_1 + 0x60) = 0; *(undefined4 *)(param_1 + 100) = 0; *(undefined4 *)(param_1 + 0x68) = 0; *(undefined4 *)(param_1 + 0x6c) = 0; FUN_00693b20(iVar2); puVar4 = (undefined4 *)PTR_DAT_00818558; while (piVar3 != (int *)0x0) { param_2 = *(int *)(param_1 + 0x68); piVar10 = (int *)piVar3[2]; PTR_DAT_00818558 = (undefined *)puVar4; if (param_2 * 2 < *(int *)(param_1 + 0x6c) + 1) { puVar7 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,puVar4,¶m_2,param_2,0); if ((puVar7 != puVar4) || (puVar7 = puVar7 + -1, puVar7 != puVar4)) { puVar7 = puVar7 + 1; } FUN_004148b0(*puVar7); } uVar9 = (uint)(piVar3[1] + *piVar3) % *(uint *)(param_1 + 0x68); iVar2 = *(int *)(param_1 + 0x60); piVar3[2] = *(int *)(iVar2 + uVar9 * 4); *(int **)(iVar2 + uVar9 * 4) = piVar3; uVar9 = iVar2 + uVar9 * 4; if (uVar9 < *(uint *)(param_1 + 100)) { *(uint *)(param_1 + 100) = uVar9; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1; puVar4 = (undefined4 *)PTR_DAT_00818558; piVar3 = piVar10; } PTR_DAT_00818558 = (undefined *)puVar4; return 1; } piVar10 = *(int **)(param_1 + 100); while (piVar10 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) { if (**(int **)(param_1 + 100) != 0) { piVar10 = *(int **)(param_1 + 100); piVar8 = (int *)*piVar10; goto LAB_004148ff; } piVar10 = *(int **)(param_1 + 100) + 1; *(int **)(param_1 + 100) = piVar10; } piVar10 = (int *)0x0; piVar8 = (int *)0x0; LAB_004148ff: piVar6 = (int *)*piVar10; if (piVar6 == piVar8) { LAB_00414912: *piVar10 = piVar6[2]; } else { do { piVar5 = piVar6; piVar6 = (int *)piVar5[2]; } while (piVar6 != piVar8); if (piVar5 == (int *)0x0) goto LAB_00414912; piVar5[2] = piVar6[2]; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1; piVar8[2] = (int)piVar3; iVar1 = *(int *)(param_1 + 0x6c); piVar3 = piVar8; } while( true ); } // --- FUN_004149f0 at 0x004149F0 (size: 52) --- undefined4 * __thiscall FUN_004149f0(undefined4 *param_1,undefined4 param_2) { FUN_00414700(param_2); *param_1 = &PTR_FUN_00795f98; param_1[0x1c] = 0; param_1[0x1d] = 0; param_1[0x1e] = 0; param_1[0x1f] = 0xffffffff; param_1[0x1e] = 0; param_1[0x1d] = 0; param_1[0x1c] = param_1; return param_1; } // --- FUN_00414a30 at 0x00414A30 (size: 30) --- void * __thiscall FUN_00414a30(void *param_1,byte param_2) { FUN_0041a410(); if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00414a50 at 0x00414A50 (size: 110) --- uint __thiscall FUN_00414a50(int param_1,int *param_2) { int iVar1; uint uVar2; undefined1 local_c [8]; uint local_4; FUN_00414190(local_c,param_2); if (local_4 != 0) { return local_4 & 0xffffff00; } if (*(int *)(param_1 + 0x68) * 2 < *(int *)(param_1 + 0x6c) + 1) { FUN_004145d0(); } uVar2 = (uint)(param_2[1] + *param_2) % *(uint *)(param_1 + 0x68); iVar1 = *(int *)(param_1 + 0x60); param_2[2] = *(int *)(iVar1 + uVar2 * 4); *(int **)(iVar1 + uVar2 * 4) = param_2; uVar2 = iVar1 + uVar2 * 4; if (uVar2 < *(uint *)(param_1 + 100)) { *(uint *)(param_1 + 100) = uVar2; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1; return CONCAT31((int3)(uVar2 >> 8),1); } // --- FUN_00414ac0 at 0x00414AC0 (size: 269) --- undefined4 __thiscall FUN_00414ac0(int param_1,int param_2) { int iVar1; int *piVar2; int *piVar3; int *piVar4; undefined4 uVar5; int *piVar6; uint uVar7; int *piVar8; if (param_2 == *(int *)(param_1 + 0x68)) { return 0; } iVar1 = *(int *)(param_1 + 0x6c); piVar2 = (int *)0x0; do { if (iVar1 == 0) { if (*(void **)(param_1 + 0x60) != (void *)(param_1 + 4)) { operator_delete__(*(void **)(param_1 + 0x60)); } *(undefined4 *)(param_1 + 0x60) = 0; *(undefined4 *)(param_1 + 100) = 0; *(undefined4 *)(param_1 + 0x68) = 0; *(undefined4 *)(param_1 + 0x6c) = 0; FUN_00693b20(param_2); while (piVar2 != (int *)0x0) { piVar8 = (int *)piVar2[2]; if (*(int *)(param_1 + 0x68) * 2 < *(int *)(param_1 + 0x6c) + 1) { uVar5 = FUN_004184d0(*(int *)(param_1 + 0x68)); FUN_00414ac0(uVar5); } uVar7 = (uint)(piVar2[1] + *piVar2) % *(uint *)(param_1 + 0x68); iVar1 = *(int *)(param_1 + 0x60); piVar2[2] = *(int *)(iVar1 + uVar7 * 4); *(int **)(iVar1 + uVar7 * 4) = piVar2; uVar7 = iVar1 + uVar7 * 4; if (uVar7 < *(uint *)(param_1 + 100)) { *(uint *)(param_1 + 100) = uVar7; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1; piVar2 = piVar8; } return 1; } piVar8 = *(int **)(param_1 + 100); while (piVar8 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) { if (**(int **)(param_1 + 100) != 0) { piVar8 = *(int **)(param_1 + 100); piVar6 = (int *)*piVar8; goto LAB_00414b0e; } piVar8 = *(int **)(param_1 + 100) + 1; *(int **)(param_1 + 100) = piVar8; } piVar8 = (int *)0x0; piVar6 = (int *)0x0; LAB_00414b0e: piVar4 = (int *)*piVar8; if (piVar4 == piVar6) { LAB_00414b21: *piVar8 = piVar4[2]; } else { do { piVar3 = piVar4; piVar4 = (int *)piVar3[2]; } while (piVar4 != piVar6); if (piVar3 == (int *)0x0) goto LAB_00414b21; piVar3[2] = piVar4[2]; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1; piVar6[2] = (int)piVar2; iVar1 = *(int *)(param_1 + 0x6c); piVar2 = piVar6; } while( true ); } // --- FUN_00414bd0 at 0x00414BD0 (size: 264) --- undefined4 __thiscall FUN_00414bd0(int param_1,int param_2) { int iVar1; uint *puVar2; int *piVar3; uint *puVar4; uint *puVar5; undefined4 uVar6; uint *puVar7; uint uVar8; uint *puVar9; if (param_2 == *(int *)(param_1 + 0x68)) { return 0; } iVar1 = *(int *)(param_1 + 0x6c); puVar2 = (uint *)0x0; do { if (iVar1 == 0) { if (*(void **)(param_1 + 0x60) != (void *)(param_1 + 4)) { operator_delete__(*(void **)(param_1 + 0x60)); } *(undefined4 *)(param_1 + 0x60) = 0; *(undefined4 *)(param_1 + 100) = 0; *(undefined4 *)(param_1 + 0x68) = 0; *(undefined4 *)(param_1 + 0x6c) = 0; FUN_00693b20(param_2); while (puVar2 != (uint *)0x0) { puVar9 = (uint *)puVar2[1]; if (*(int *)(param_1 + 0x68) * 2 < *(int *)(param_1 + 0x6c) + 1) { uVar6 = FUN_004184d0(*(int *)(param_1 + 0x68)); FUN_00414bd0(uVar6); } uVar8 = *puVar2 % *(uint *)(param_1 + 0x68); iVar1 = *(int *)(param_1 + 0x60); puVar2[1] = *(uint *)(iVar1 + uVar8 * 4); *(uint **)(iVar1 + uVar8 * 4) = puVar2; uVar8 = iVar1 + uVar8 * 4; if (uVar8 < *(uint *)(param_1 + 100)) { *(uint *)(param_1 + 100) = uVar8; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1; puVar2 = puVar9; } return 1; } piVar3 = *(int **)(param_1 + 100); while (piVar3 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) { if (**(int **)(param_1 + 100) != 0) { puVar9 = *(uint **)(param_1 + 100); puVar7 = (uint *)*puVar9; goto LAB_00414c1e; } piVar3 = *(int **)(param_1 + 100) + 1; *(int **)(param_1 + 100) = piVar3; } puVar9 = (uint *)0x0; puVar7 = (uint *)0x0; LAB_00414c1e: puVar5 = (uint *)*puVar9; if (puVar5 == puVar7) { LAB_00414c31: *puVar9 = puVar5[1]; } else { do { puVar4 = puVar5; puVar5 = (uint *)puVar4[1]; } while (puVar5 != puVar7); if (puVar4 == (uint *)0x0) goto LAB_00414c31; puVar4[1] = puVar5[1]; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1; puVar7[1] = (uint)puVar2; iVar1 = *(int *)(param_1 + 0x6c); puVar2 = puVar7; } while( true ); } // --- FUN_00414ce0 at 0x00414CE0 (size: 73) --- void __fastcall FUN_00414ce0(int param_1) { undefined *puVar1; undefined4 *puVar2; undefined4 local_4; puVar1 = PTR_DAT_00818558; local_4 = *(undefined4 *)(param_1 + 0x68); puVar2 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,local_4,0); if ((puVar2 != (undefined4 *)puVar1) || (puVar2 = puVar2 + -1, puVar2 != (undefined4 *)puVar1)) { puVar2 = puVar2 + 1; } FUN_00414ac0(*puVar2); return; } // --- FUN_00414d30 at 0x00414D30 (size: 73) --- void __fastcall FUN_00414d30(int param_1) { undefined *puVar1; undefined4 *puVar2; undefined4 local_4; puVar1 = PTR_DAT_00818558; local_4 = *(undefined4 *)(param_1 + 0x68); puVar2 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,local_4,0); if ((puVar2 != (undefined4 *)puVar1) || (puVar2 = puVar2 + -1, puVar2 != (undefined4 *)puVar1)) { puVar2 = puVar2 + 1; } FUN_00414bd0(*puVar2); return; } // --- FUN_00414d80 at 0x00414D80 (size: 112) --- undefined4 FUN_00414d80(undefined4 *param_1) { undefined4 *puVar1; undefined1 local_c [8]; int local_4; FUN_00414190(local_c,param_1); if (local_4 != 0) { return 0; } puVar1 = (undefined4 *)FUN_005df0f5(0xc); if (puVar1 != (undefined4 *)0x0) { *puVar1 = *param_1; puVar1[1] = param_1[1]; puVar1[2] = 0; FUN_00414a50(puVar1); return 1; } FUN_00414a50(0); return 1; } // --- FUN_00414df0 at 0x00414DF0 (size: 82) --- undefined4 * __thiscall FUN_00414df0(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00795fa0; FUN_0041a390(); param_1[1] = &PTR_FUN_00795f94; if ((undefined4 *)param_1[0x19] != param_1 + 2) { operator_delete__((undefined4 *)param_1[0x19]); } param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x1c] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00414e90 at 0x00414E90 (size: 160) --- void __thiscall FUN_00414e90(int param_1,undefined4 param_2) { int iVar1; int iVar2; undefined4 *puVar3; undefined1 local_90 [4]; undefined1 local_8c [12]; undefined1 local_80 [128]; iVar2 = FUN_00414190(local_8c,param_2); iVar1 = DAT_00837bac; if ((*(int *)(iVar2 + 8) == 0) && (DAT_00837bac != 0)) { if (DAT_00837c20 == *(int *)(param_1 + 4)) { puVar3 = (undefined4 *) (**(code **)(*(int *)(DAT_00837bac + 4) + 0x14))(local_90,3,param_2,param_1,0); *(undefined4 *)(param_1 + 4) = *puVar3; } else { FUN_004149f0(0x20); FUN_0041a4e0(param_2,0); (**(code **)(*(int *)(iVar1 + 4) + 0x30))(*(undefined4 *)(param_1 + 4),3,local_80); FUN_0041a410(); } FUN_00414d80(param_2); } return; } // --- FUN_00414f80 at 0x00414F80 (size: 85) --- int FUN_00414f80(undefined4 param_1) { undefined4 local_c; undefined4 local_8; int local_4; FUN_00414190(&local_c,param_1); if (local_4 != 0) { FUN_00540830(local_c,local_8,local_4); return local_4; } return 0; } // --- FUN_00415040 at 0x00415040 (size: 105) --- void __fastcall FUN_00415040(int *param_1) { int iVar1; int *piVar2; int iVar3; (**(code **)(*param_1 + 0x38))(1); piVar2 = (int *)FUN_0052dcf0(&stack0xfffffff0); iVar3 = piVar2[2]; iVar1 = *piVar2; piVar2 = (int *)piVar2[1]; while (iVar3 != 0) { do { if (*(undefined4 **)(iVar3 + 8) != (undefined4 *)0x0) { (**(code **)**(undefined4 **)(iVar3 + 8))(1); } iVar3 = *(int *)(iVar3 + 4); } while (iVar3 != 0); do { piVar2 = piVar2 + 1; if (piVar2 == (int *)(*(int *)(iVar1 + 0x60) + *(int *)(iVar1 + 0x68) * 4)) goto LAB_00415098; iVar3 = *piVar2; } while (iVar3 == 0); } LAB_00415098: FUN_005870f0(); return; } // --- FUN_004150b0 at 0x004150B0 (size: 82) --- undefined4 * __thiscall FUN_004150b0(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00795f9c; FUN_005870f0(); param_1[1] = &PTR_FUN_00795f90; if ((undefined4 *)param_1[0x19] != param_1 + 2) { operator_delete__((undefined4 *)param_1[0x19]); } param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x1c] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00415110 at 0x00415110 (size: 148) --- void __fastcall FUN_00415110(int param_1) { *(undefined ***)(param_1 + 0x94) = &PTR_FUN_007963a4; FUN_005870f0(); *(undefined ***)(param_1 + 0x98) = &PTR_FUN_00795f8c; if (*(void **)(param_1 + 0xf8) != (void *)(param_1 + 0x9c)) { operator_delete__(*(void **)(param_1 + 0xf8)); } *(undefined4 *)(param_1 + 0xf8) = 0; *(undefined4 *)(param_1 + 0xfc) = 0; *(undefined4 *)(param_1 + 0x100) = 0; *(undefined4 *)(param_1 + 0x104) = 0; *(undefined ***)(param_1 + 0x20) = &PTR_FUN_007963a8; FUN_0041a390(); *(undefined ***)(param_1 + 0x24) = &PTR_FUN_00795f88; if (*(void **)(param_1 + 0x84) != (void *)(param_1 + 0x28)) { operator_delete__(*(void **)(param_1 + 0x84)); } *(undefined4 *)(param_1 + 0x84) = 0; *(undefined4 *)(param_1 + 0x88) = 0; *(undefined4 *)(param_1 + 0x8c) = 0; *(undefined4 *)(param_1 + 0x90) = 0; *(undefined ***)(param_1 + 4) = &PTR_FUN_00795f70; if (*(void **)(param_1 + 8) != (void *)0x0) { operator_delete__(*(void **)(param_1 + 8)); } return; } // --- FUN_004151b0 at 0x004151B0 (size: 94) --- void __fastcall FUN_004151b0(undefined4 *param_1) { *param_1 = &PTR_LAB_00796058; param_1[1] = &PTR_FUN_00795fb0; FUN_0041c240(); if (DAT_00837bac != 0) { (**(code **)(*(int *)(DAT_00837bac + 4) + 0x34))(DAT_00818684); } DAT_00818684 = DAT_00837c20; DAT_00837bac = 0; DAT_00837ba8 = 0; param_1[0x45] = &PTR_LAB_00793b6c; FUN_00415110(); return; } // --- FUN_00415210 at 0x00415210 (size: 86) --- void __thiscall FUN_00415210(int *param_1,undefined4 *param_2,int *param_3,undefined4 *param_4) { if ((((*param_3 == -0x21524111) && (param_3[1] == DAT_00795f50)) && (param_3[2] == DAT_00795f54)) && ((param_3[3] == DAT_00795f58 && (param_1 != (int *)0x0)))) { *param_4 = param_1; (**(code **)(*param_1 + 0x10))(); *param_2 = 0; return; } *param_2 = 0x80004002; return; } // --- FUN_00415280 at 0x00415280 (size: 39) --- int __fastcall FUN_00415280(int *param_1) { int iVar1; iVar1 = FUN_00401ea0(); if ((iVar1 == 0) && (param_1 != (int *)0x0)) { (**(code **)(*param_1 + 0x18))(1); } return iVar1; } // --- FUN_00415320 at 0x00415320 (size: 123) --- undefined4 * __fastcall FUN_00415320(undefined4 *param_1) { FUN_0041a210(); *param_1 = &PTR_LAB_00796058; param_1[1] = &PTR_FUN_00795fb0; param_1[0x45] = &PTR_LAB_00793b6c; param_1[0x46] = 1; param_1[0x47] = DAT_00837bb0; param_1[0x48] = 0; param_1[0x49] = 0; *(undefined1 *)(param_1 + 0x4a) = 1; *(undefined1 *)((int)param_1 + 0x129) = 0; *(undefined1 *)((int)param_1 + 0x12a) = 0; param_1[0x4b] = 0; if (DAT_00837bac != (int *)0x0) { (**(code **)(*DAT_00837bac + 0x18))(1); } DAT_00837bac = param_1; return param_1; } // --- FUN_004153a0 at 0x004153A0 (size: 30) --- void * __thiscall FUN_004153a0(void *param_1,byte param_2) { FUN_004151b0(); if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_004153c0 at 0x004153C0 (size: 8) --- void __fastcall FUN_004153c0(undefined4 param_1) { FUN_00413de0(param_1); return; } // --- FUN_004153d0 at 0x004153D0 (size: 33) --- int __fastcall FUN_004153d0(int param_1) { int iVar1; if (*(int *)(param_1 + 0x20) != 0) { FUN_00416f40(*(undefined4 *)(param_1 + 0x28)); return *(int *)(param_1 + 0x24); } iVar1 = *(int *)(param_1 + 0x24) + 1; *(int *)(param_1 + 0x24) = iVar1; return iVar1; } // --- FUN_00415400 at 0x00415400 (size: 38) --- int __fastcall FUN_00415400(int *param_1) { int iVar1; if ((int *)param_1[8] != (int *)0x0) { iVar1 = (**(code **)(*(int *)param_1[8] + 0x14))(param_1[10]); return iVar1; } iVar1 = param_1[9] + -1; param_1[9] = iVar1; if (iVar1 == 0) { (**(code **)(*param_1 + 0x18))(1); iVar1 = 0; } return iVar1; } // --- FUN_00415430 at 0x00415430 (size: 27) --- undefined4 FUN_00415430(undefined4 param_1) { undefined4 uVar1; if (DAT_00837bac != 0) { uVar1 = (*(code *)**(undefined4 **)(DAT_00837bac + 4))(2,param_1); return uVar1; } return 0; } // --- thunk_FUN_00413a30 at 0x00415450 (size: 5) --- undefined4 thunk_FUN_00413a30(undefined4 param_1) { undefined4 uVar1; if (DAT_00837bac != (int *)0x0) { uVar1 = (**(code **)(*DAT_00837bac + 0x2c))(param_1); return uVar1; } return 0; } // --- FUN_00415460 at 0x00415460 (size: 52) --- void __thiscall FUN_00415460(undefined4 *param_1,undefined4 param_2) { param_1[1] = 0; *(undefined1 *)(param_1 + 2) = 0; param_1[4] = 0; param_1[5] = 0; param_1[6] = 0; param_1[7] = 0; param_1[8] = 0; *param_1 = &PTR_LAB_007961e0; param_1[9] = 1; param_1[10] = param_2; *(undefined1 *)(param_1 + 0xb) = 1; return; } // --- FUN_004154a0 at 0x004154A0 (size: 3) --- undefined1 FUN_004154a0(void) { return 1; } // --- FUN_004154b0 at 0x004154B0 (size: 7) --- void __fastcall FUN_004154b0(undefined4 *param_1) { *param_1 = &PTR_LAB_007961e0; return; } // --- FUN_00415520 at 0x00415520 (size: 45) --- undefined4 __fastcall FUN_00415520(int *param_1) { undefined4 uVar1; int *piVar2; if (param_1[10] != 0) { uVar1 = (**(code **)(*param_1 + 0x48))(); piVar2 = (int *)FUN_00414590(uVar1); if (piVar2 != (int *)0x0) { uVar1 = (**(code **)(*piVar2 + 0x30))(param_1[10]); return uVar1; } } return 0; } // --- FUN_00415550 at 0x00415550 (size: 51) --- undefined4 __thiscall FUN_00415550(int *param_1,undefined4 param_2) { undefined4 uVar1; int *piVar2; if (param_1[10] != 0) { uVar1 = (**(code **)(*param_1 + 0x48))(); piVar2 = (int *)FUN_00414590(uVar1); if (piVar2 != (int *)0x0) { uVar1 = (**(code **)(*piVar2 + 0x2c))(param_2,param_1); return uVar1; } } return 0; } // --- FUN_00415590 at 0x00415590 (size: 116) --- void __thiscall FUN_00415590(int *param_1,int param_2) { char cVar1; int *piVar2; undefined4 uVar3; FUN_0040ad10(4); piVar2 = (int *)FUN_0040acf0(4); if (piVar2 != (int *)0x0) { if ((*(byte *)(param_2 + 4) & 1) == 0) { param_1[10] = *piVar2; } else { *piVar2 = param_1[10]; } } uVar3 = (**(code **)(*param_1 + 0x48))(); cVar1 = FUN_0041c4e0(uVar3); if (cVar1 != '\0') { FUN_0040ad10(4); piVar2 = (int *)FUN_0040acf0(4); if (piVar2 != (int *)0x0) { if ((*(byte *)(param_2 + 4) & 1) != 0) { *piVar2 = param_1[1]; return; } param_1[1] = *piVar2; } } return; } // --- FUN_00415610 at 0x00415610 (size: 45) --- void FUN_00415610(int *param_1) { int iVar1; undefined4 uVar2; int *piVar3; iVar1 = (**(code **)(*param_1 + 0x48))(); if (iVar1 != 0) { uVar2 = (**(code **)(*param_1 + 0x48))(); piVar3 = (int *)FUN_00414590(uVar2); (**(code **)(*piVar3 + 0x1c))(param_1[10]); } return; } // --- FUN_00415640 at 0x00415640 (size: 28) --- undefined4 FUN_00415640(undefined4 param_1,undefined4 param_2,undefined4 param_3) { FUN_00413bc0(param_1,param_2,param_3); return param_1; } // --- FUN_00415660 at 0x00415660 (size: 55) --- void __fastcall FUN_00415660(int *param_1) { int iVar1; int iVar2; int *piVar3; iVar1 = *(int *)(param_1[2] + 8); param_1[2] = iVar1; if (iVar1 == 0) { iVar1 = *(int *)(*param_1 + 0x68); iVar2 = *(int *)(*param_1 + 0x60); do { piVar3 = (int *)(param_1[1] + 4); param_1[1] = (int)piVar3; if (piVar3 == (int *)(iVar2 + iVar1 * 4)) { return; } } while (*piVar3 == 0); param_1[2] = *piVar3; } return; } // --- FUN_004156a0 at 0x004156A0 (size: 112) --- undefined * __thiscall FUN_004156a0(int param_1,int param_2) { undefined4 *puVar1; undefined1 local_c [12]; if (param_2 == 0) { puVar1 = (undefined4 *)FUN_0052dcf0(local_c); *(undefined4 *)(param_1 + 0x70) = *puVar1; *(undefined4 *)(param_1 + 0x78) = puVar1[2]; *(undefined4 *)(param_1 + 0x74) = puVar1[1]; } else if (param_2 != *(int *)(param_1 + 0x7c)) { if ((*(int *)(param_1 + 0x78) == 0) || (param_2 != *(int *)(param_1 + 0x7c) + 1)) { FUN_0041a2a0(param_2); } else { FUN_00415660(); } } if (*(undefined **)(param_1 + 0x78) != (undefined *)0x0) { *(int *)(param_1 + 0x7c) = param_2; return *(undefined **)(param_1 + 0x78); } return &DAT_00837cbc; } // --- FUN_00415730 at 0x00415730 (size: 40) --- void FUN_00415730(undefined4 param_1,undefined4 param_2,undefined4 param_3) { undefined4 local_4; FUN_00413bc0(&local_4,param_1,param_2); FUN_00413b80(local_4,param_3); return; } // --- FUN_00415830 at 0x00415830 (size: 64) --- undefined4 * __thiscall FUN_00415830(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00796294; if ((undefined4 *)param_1[0x18] != param_1 + 1) { operator_delete__((undefined4 *)param_1[0x18]); } param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00415870 at 0x00415870 (size: 64) --- undefined4 * __thiscall FUN_00415870(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00796298; if ((undefined4 *)param_1[0x18] != param_1 + 1) { operator_delete__((undefined4 *)param_1[0x18]); } param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_004158b0 at 0x004158B0 (size: 93) --- void __fastcall FUN_004158b0(int *param_1) { int iVar1; param_1[2] = 0; if ((param_1[1] & 0x80000000U) == 0x80000000) { if (*param_1 != 0) { operator_delete__((void *)(*param_1 + -4)); } *param_1 = 0; param_1[1] = 0; return; } if (*param_1 != 0) { iVar1 = (param_1[1] & 0x7fffffffU) - 1; while (-1 < iVar1) { iVar1 = iVar1 + -1; *(int **)(*param_1 + 4 + iVar1 * 4) = param_1; } } return; } // --- FUN_00415910 at 0x00415910 (size: 184) --- undefined4 __thiscall FUN_00415910(int *param_1,uint param_2) { uint *puVar1; int iVar2; uint *puVar3; if ((uint)param_1[2] <= param_2) { if (param_2 <= (param_1[1] & 0x7fffffffU)) { return 1; } if (param_2 == 0) { FUN_004158b0(); return 1; } puVar3 = (uint *)thunk_FUN_005df0f5(param_2 * 4 + 4); if (puVar3 != (uint *)0x0) { puVar1 = puVar3 + 1; *puVar3 = param_2; FUN_00401000(puVar1,4,param_2,FUN_0050a140); if (puVar1 != (uint *)0x0) { if (*param_1 != 0) { iVar2 = param_1[2] + -1; while (-1 < iVar2) { puVar3[iVar2 + 1] = *(uint *)(*param_1 + 4 + (iVar2 + -1) * 4); iVar2 = iVar2 + -1; } if (((param_1[1] & 0x80000000U) == 0x80000000) && (*param_1 != 0)) { operator_delete__((void *)(*param_1 + -4)); } } *param_1 = (int)puVar1; param_1[1] = param_2 | 0x80000000; return 1; } } } return 0; } // --- FUN_004159d0 at 0x004159D0 (size: 291) --- undefined4 __thiscall FUN_004159d0(int param_1,undefined4 *param_2,undefined4 *param_3) { int *piVar1; int iVar2; int iVar3; undefined4 *puVar4; undefined1 local_c [12]; piVar1 = (int *)FUN_0052dcf0(local_c); puVar4 = (undefined4 *)piVar1[2]; iVar3 = *piVar1; piVar1 = (int *)piVar1[1]; while (puVar4 != (undefined4 *)0x0) { do { iVar2 = _stricmp((char *)*param_2,(char *)puVar4[2]); if (iVar2 == 0) { *param_3 = *puVar4; return 1; } puVar4 = (undefined4 *)puVar4[1]; } while (puVar4 != (undefined4 *)0x0); do { piVar1 = piVar1 + 1; if (piVar1 == (int *)(*(int *)(iVar3 + 0x60) + *(int *)(iVar3 + 0x68) * 4)) goto LAB_00415a33; puVar4 = (undefined4 *)*piVar1; } while (puVar4 == (undefined4 *)0x0); } LAB_00415a33: piVar1 = *(int **)(param_1 + 500); do { if (piVar1 == (int *)(*(int *)(param_1 + 0x1f0) + *(int *)(param_1 + 0x1f8) * 4)) { piVar1 = (int *)0x0; puVar4 = (undefined4 *)0x0; joined_r0x00415a8e: do { if (puVar4 == (undefined4 *)0x0) { return 0; } do { iVar3 = _stricmp((char *)*param_2,(char *)puVar4[2]); if (iVar3 == 0) { *param_3 = *puVar4; return 1; } puVar4 = (undefined4 *)puVar4[1]; } while (puVar4 != (undefined4 *)0x0); do { piVar1 = piVar1 + 1; if (piVar1 == (int *)(*(int *)(param_1 + 0x1f0) + *(int *)(param_1 + 0x1f8) * 4)) { return 0; } puVar4 = (undefined4 *)*piVar1; } while (puVar4 == (undefined4 *)0x0); } while( true ); } if (**(int **)(param_1 + 500) != 0) { piVar1 = *(int **)(param_1 + 500); puVar4 = (undefined4 *)*piVar1; goto joined_r0x00415a8e; } piVar1 = *(int **)(param_1 + 500) + 1; *(int **)(param_1 + 500) = piVar1; } while( true ); } // --- FUN_00415b00 at 0x00415B00 (size: 265) --- void __fastcall FUN_00415b00(int param_1) { int *piVar1; undefined4 uVar2; int iVar3; undefined4 uVar4; undefined1 local_20 [12]; int local_14; piVar1 = (int *)FUN_0052dcf0(local_20); iVar3 = piVar1[2]; local_14 = *piVar1; piVar1 = (int *)piVar1[1]; while (iVar3 != 0) { do { uVar4 = 0; uVar2 = FUN_004220b0(*(undefined4 *)(iVar3 + 8),0); FUN_0041a4e0(uVar2,uVar4); iVar3 = *(int *)(iVar3 + 4); } while (iVar3 != 0); do { piVar1 = piVar1 + 1; if (piVar1 == (int *)(*(int *)(local_14 + 0x60) + *(int *)(local_14 + 0x68) * 4)) goto LAB_00415b73; iVar3 = *piVar1; } while (iVar3 == 0); } LAB_00415b73: piVar1 = *(int **)(param_1 + 0x10c); do { if (piVar1 == (int *)(*(int *)(param_1 + 0x108) + *(int *)(param_1 + 0x110) * 4)) { piVar1 = (int *)0x0; iVar3 = 0; joined_r0x00415bba: do { if (iVar3 == 0) { return; } do { uVar4 = 2; uVar2 = FUN_004220b0(*(undefined4 *)(iVar3 + 8),0); FUN_0041a4e0(uVar2,uVar4); iVar3 = *(int *)(iVar3 + 4); } while (iVar3 != 0); do { piVar1 = piVar1 + 1; if (piVar1 == (int *)(*(int *)(param_1 + 0x108) + *(int *)(param_1 + 0x110) * 4)) { return; } iVar3 = *piVar1; } while (iVar3 == 0); } while( true ); } if (**(int **)(param_1 + 0x10c) != 0) { piVar1 = *(int **)(param_1 + 0x10c); iVar3 = *piVar1; goto joined_r0x00415bba; } piVar1 = *(int **)(param_1 + 0x10c) + 1; *(int **)(param_1 + 0x10c) = piVar1; } while( true ); } // --- FUN_00415c10 at 0x00415C10 (size: 119) --- undefined4 __thiscall FUN_00415c10(int param_1,uint param_2,uint *param_3) { uint *puVar1; puVar1 = *(uint **)(*(int *)(param_1 + 0x94) + (param_2 % *(uint *)(param_1 + 0x9c)) * 4); do { if (puVar1 == (uint *)0x0) { LAB_00415c41: puVar1 = *(uint **)(*(int *)(param_1 + 0x108) + (param_2 % *(uint *)(param_1 + 0x110)) * 4); while( true ) { if (puVar1 == (uint *)0x0) { return 0; } if (*puVar1 == param_2) break; puVar1 = (uint *)puVar1[1]; } if (puVar1 == (uint *)0x0) { return 0; } LAB_00415c75: *param_3 = puVar1[2]; return 1; } if (*puVar1 == param_2) { if (puVar1 != (uint *)0x0) goto LAB_00415c75; goto LAB_00415c41; } puVar1 = (uint *)puVar1[1]; } while( true ); } // --- FUN_00415c90 at 0x00415C90 (size: 67) --- undefined4 FUN_00415c90(undefined4 param_1,undefined4 param_2) { undefined4 uVar1; char cVar2; uVar1 = param_2; cVar2 = FUN_0041ae30(¶m_1,param_2); if (cVar2 == '\0') { cVar2 = FUN_0041ae30(¶m_1,uVar1); if (cVar2 == '\0') { return 0; } } return 1; } // --- FUN_00415ce0 at 0x00415CE0 (size: 68) --- undefined4 __thiscall FUN_00415ce0(int param_1,uint param_2,uint *param_3) { uint *puVar1; puVar1 = *(uint **)(*(int *)(param_1 + 0x264) + (param_2 % *(uint *)(param_1 + 0x26c)) * 4); while( true ) { if (puVar1 == (uint *)0x0) { return 0; } if (*puVar1 == param_2) break; puVar1 = (uint *)puVar1[1]; } if (puVar1 == (uint *)0x0) { return 0; } *param_3 = puVar1[2]; return CONCAT31((int3)((uint)puVar1 >> 8),1); } // --- FUN_00415d30 at 0x00415D30 (size: 143) --- undefined4 * __thiscall FUN_00415d30(undefined4 *param_1,undefined4 param_2) { undefined *puVar1; uint *puVar2; undefined4 uVar3; uint uVar4; int iVar5; undefined4 *puVar6; param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; *param_1 = &PTR_FUN_00796294; puVar1 = PTR_DAT_00818558; puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0); if (puVar2 == (uint *)puVar1) { puVar2 = puVar2 + -1; } uVar4 = *puVar2; param_1[0x1a] = uVar4; if (uVar4 < 0x18) { param_1[0x18] = param_1 + 1; } else { uVar3 = thunk_FUN_005df0f5(uVar4 << 2); param_1[0x18] = uVar3; } param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a]; puVar6 = (undefined4 *)param_1[0x18]; for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) { *puVar6 = 0; puVar6 = puVar6 + 1; } for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) { *(undefined1 *)puVar6 = 0; puVar6 = (undefined4 *)((int)puVar6 + 1); } return param_1; } // --- FUN_00415dc0 at 0x00415DC0 (size: 143) --- undefined4 * __thiscall FUN_00415dc0(undefined4 *param_1,undefined4 param_2) { undefined *puVar1; uint *puVar2; undefined4 uVar3; uint uVar4; int iVar5; undefined4 *puVar6; param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; *param_1 = &PTR_FUN_00796298; puVar1 = PTR_DAT_00818558; puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0); if (puVar2 == (uint *)puVar1) { puVar2 = puVar2 + -1; } uVar4 = *puVar2; param_1[0x1a] = uVar4; if (uVar4 < 0x18) { param_1[0x18] = param_1 + 1; } else { uVar3 = thunk_FUN_005df0f5(uVar4 << 2); param_1[0x18] = uVar3; } param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a]; puVar6 = (undefined4 *)param_1[0x18]; for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) { *puVar6 = 0; puVar6 = puVar6 + 1; } for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) { *(undefined1 *)puVar6 = 0; puVar6 = (undefined4 *)((int)puVar6 + 1); } return param_1; } // --- FUN_00415e50 at 0x00415E50 (size: 170) --- void __fastcall FUN_00415e50(int param_1) { int iVar1; void *pvVar2; void *pvVar3; LONG LVar4; int *piVar5; void *pvVar6; undefined4 *puVar7; iVar1 = *(int *)(param_1 + 0x6c); do { if (iVar1 == 0) { return; } piVar5 = *(int **)(param_1 + 100); while (piVar5 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) { if (**(int **)(param_1 + 100) != 0) { piVar5 = *(int **)(param_1 + 100); pvVar6 = (void *)*piVar5; goto LAB_00415e94; } piVar5 = *(int **)(param_1 + 100) + 1; *(int **)(param_1 + 100) = piVar5; } piVar5 = (int *)0x0; pvVar6 = (void *)0x0; LAB_00415e94: pvVar3 = (void *)*piVar5; if (pvVar3 == pvVar6) { LAB_00415ead: *piVar5 = *(int *)((int)pvVar3 + 4); } else { do { pvVar2 = pvVar3; pvVar3 = *(void **)((int)pvVar2 + 4); } while (pvVar3 != pvVar6); if (pvVar2 == (void *)0x0) goto LAB_00415ead; *(undefined4 *)((int)pvVar2 + 4) = *(undefined4 *)((int)pvVar3 + 4); } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1; if (pvVar6 != (void *)0x0) { puVar7 = (undefined4 *)(*(int *)((int)pvVar6 + 8) + -0x14); LVar4 = InterlockedDecrement((LONG *)(*(int *)((int)pvVar6 + 8) + -0x10)); if ((LVar4 == 0) && (puVar7 != (undefined4 *)0x0)) { (**(code **)*puVar7)(1); } operator_delete(pvVar6); } iVar1 = *(int *)(param_1 + 0x6c); } while( true ); } // --- FUN_00415f00 at 0x00415F00 (size: 581) --- void FUN_00415f00(undefined4 param_1,int param_2,uint param_3) { int iVar1; undefined *puVar2; undefined *puVar3; uint uVar4; char cVar5; undefined *puVar6; byte *pbVar7; int *piVar8; undefined4 *puVar9; undefined4 *puVar10; uint uVar11; undefined4 *puVar12; undefined1 local_c [12]; uVar4 = param_3; if ((~*(byte *)(param_3 + 4) & 1) != 0) { FUN_005c2c80(); } puVar3 = PTR_DAT_00818558; puVar2 = PTR_DAT_00818554; if (((byte)*(undefined4 *)(uVar4 + 4) & 5) == 1) { param_3 = *(uint *)(param_2 + 0x68); puVar6 = (undefined *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_3,param_3,0); if (puVar6 == puVar3) { puVar6 = puVar6 + -4; } uVar11 = (int)puVar6 - (int)puVar2 >> 2; } else { uVar11 = param_3 & 0xff; } FUN_0040ad10(1); pbVar7 = (byte *)FUN_0040acf0(1); if (pbVar7 != (byte *)0x0) { if ((*(byte *)(uVar4 + 4) & 1) == 0) { uVar11 = (uint)*pbVar7; } else { *pbVar7 = (byte)uVar11; } } if ((*(byte *)(uVar4 + 4) & 5) == 0) { if ((uVar11 & 0xff) < DAT_007956cc) { FUN_0042ab60(*(undefined4 *)(PTR_DAT_00818554 + (uVar11 & 0xff) * 4)); } else { FUN_0040aa50(); } } if (((byte)*(undefined4 *)(uVar4 + 4) & 5) == 1) { param_3 = *(uint *)(param_2 + 0x6c); } FUN_00401a80(¶m_3,¶m_3,uVar4); if (((byte)*(undefined4 *)(uVar4 + 4) & 5) == 1) { piVar8 = (int *)FUN_0052dcf0(local_c); iVar1 = *piVar8; puVar12 = (undefined4 *)piVar8[1]; puVar9 = (undefined4 *)piVar8[2]; LAB_00416006: puVar10 = puVar9; if (puVar9 != (undefined4 *)0x0) { do { FUN_0040ad10(4); puVar9 = (undefined4 *)FUN_0040acf0(4); if (puVar9 != (undefined4 *)0x0) { if ((*(byte *)(uVar4 + 4) & 1) == 0) { *puVar10 = *puVar9; } else { *puVar9 = *puVar10; } } FUN_0040ad10(4); puVar9 = (undefined4 *)FUN_0040acf0(4); if (puVar9 != (undefined4 *)0x0) { if ((*(byte *)(uVar4 + 4) & 1) == 0) { puVar10[2] = *puVar9; } else { *puVar9 = puVar10[2]; } } puVar10 = (undefined4 *)puVar10[1]; } while (puVar10 != (undefined4 *)0x0); do { puVar12 = puVar12 + 1; puVar9 = puVar10; if (puVar12 == (undefined4 *)(*(int *)(iVar1 + 0x60) + *(int *)(iVar1 + 0x68) * 4)) break; puVar9 = (undefined4 *)*puVar12; } while (puVar9 == (undefined4 *)0x0); goto LAB_00416006; } } if ((*(byte *)(uVar4 + 4) & 5) == 0) { uVar11 = FUN_0040a8f0(); if (uVar11 < param_3) { LAB_00416136: FUN_0040aa50(); } else { uVar11 = 0; puVar12 = (undefined4 *)0x0; if (param_3 != 0) { while( true ) { puVar10 = (undefined4 *)FUN_005df0f5(0xc); puVar9 = (undefined4 *)0x0; if (puVar10 != (undefined4 *)0x0) { puVar10[1] = 0; puVar9 = puVar10; } FUN_0040ad10(4); puVar10 = (undefined4 *)FUN_0040acf0(4); if (puVar10 != (undefined4 *)0x0) { if ((*(byte *)(uVar4 + 4) & 1) == 0) { *puVar9 = *puVar10; } else { *puVar10 = *puVar9; } } FUN_0040ad10(4); puVar10 = (undefined4 *)FUN_0040acf0(4); if (puVar10 != (undefined4 *)0x0) { if ((*(byte *)(uVar4 + 4) & 1) == 0) { puVar9[2] = *puVar10; } else { *puVar10 = puVar9[2]; } } if ((*(uint *)(uVar4 + 4) >> 2 & 1) != 0) break; cVar5 = FUN_00599310(puVar9,puVar12); if (cVar5 == '\0') goto LAB_00416136; uVar11 = uVar11 + 1; puVar12 = puVar9; if (param_3 <= uVar11) { return; } } } } } return; } // --- FUN_00416150 at 0x00416150 (size: 45) --- void FUN_00416150(void) { FUN_005870f0(); FUN_00415e50(); FUN_005870f0(); FUN_00415e50(); return; } // --- FUN_004163b0 at 0x004163B0 (size: 82) --- undefined4 * __thiscall FUN_004163b0(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_0079629c; FUN_00415e50(); param_1[1] = &PTR_FUN_00796294; if ((undefined4 *)param_1[0x19] != param_1 + 2) { operator_delete__((undefined4 *)param_1[0x19]); } param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x1c] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00416410 at 0x00416410 (size: 82) --- undefined4 * __thiscall FUN_00416410(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_007962a0; FUN_005870f0(); param_1[1] = &PTR_FUN_00796298; if ((undefined4 *)param_1[0x19] != param_1 + 2) { operator_delete__((undefined4 *)param_1[0x19]); } param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x1c] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00416470 at 0x00416470 (size: 542) --- void FUN_00416470(undefined4 param_1,int param_2,uint param_3) { int iVar1; undefined *puVar2; undefined *puVar3; uint uVar4; char cVar5; undefined *puVar6; byte *pbVar7; int *piVar8; undefined4 *puVar9; LONG *lpAddend; undefined4 *puVar10; uint uVar11; undefined4 *puVar12; undefined1 local_c [12]; uVar4 = param_3; if ((~*(byte *)(param_3 + 4) & 1) != 0) { FUN_005c2c80(); } puVar3 = PTR_DAT_00818558; puVar2 = PTR_DAT_00818554; if (((byte)*(undefined4 *)(uVar4 + 4) & 5) == 1) { param_3 = *(uint *)(param_2 + 0x68); puVar6 = (undefined *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_3,param_3,0); if (puVar6 == puVar3) { puVar6 = puVar6 + -4; } uVar11 = (int)puVar6 - (int)puVar2 >> 2; } else { uVar11 = param_3 & 0xff; } FUN_0040ad10(1); pbVar7 = (byte *)FUN_0040acf0(1); if (pbVar7 != (byte *)0x0) { if ((*(byte *)(uVar4 + 4) & 1) == 0) { uVar11 = (uint)*pbVar7; } else { *pbVar7 = (byte)uVar11; } } if ((*(byte *)(uVar4 + 4) & 5) == 0) { if ((uVar11 & 0xff) < DAT_007956cc) { FUN_0042ab60(*(undefined4 *)(PTR_DAT_00818554 + (uVar11 & 0xff) * 4)); } else { FUN_0040aa50(); } } if (((byte)*(undefined4 *)(uVar4 + 4) & 5) == 1) { param_3 = *(uint *)(param_2 + 0x6c); } FUN_00401a80(¶m_3,¶m_3,uVar4); if (((byte)*(undefined4 *)(uVar4 + 4) & 5) == 1) { piVar8 = (int *)FUN_0052dcf0(local_c); iVar1 = *piVar8; puVar12 = (undefined4 *)piVar8[1]; puVar9 = (undefined4 *)piVar8[2]; LAB_00416572: puVar10 = puVar9; if (puVar9 != (undefined4 *)0x0) { do { FUN_0040ad10(4); puVar9 = (undefined4 *)FUN_0040acf0(4); if (puVar9 != (undefined4 *)0x0) { if ((*(byte *)(uVar4 + 4) & 1) == 0) { *puVar10 = *puVar9; } else { *puVar9 = *puVar10; } } FUN_00402400(uVar4); puVar10 = (undefined4 *)puVar10[1]; } while (puVar10 != (undefined4 *)0x0); do { puVar12 = puVar12 + 1; puVar9 = puVar10; if (puVar12 == (undefined4 *)(*(int *)(iVar1 + 0x60) + *(int *)(iVar1 + 0x68) * 4)) break; puVar9 = (undefined4 *)*puVar12; } while (puVar9 == (undefined4 *)0x0); goto LAB_00416572; } } if ((*(byte *)(uVar4 + 4) & 5) == 0) { uVar11 = FUN_0040a8f0(); if (uVar11 < param_3) { LAB_0041667f: FUN_0040aa50(); } else { uVar11 = 0; puVar12 = (undefined4 *)0x0; if (param_3 != 0) { while( true ) { puVar9 = (undefined4 *)FUN_005df0f5(0xc); if (puVar9 == (undefined4 *)0x0) { puVar9 = (undefined4 *)0x0; } else { puVar9[1] = 0; lpAddend = (LONG *)(PTR_DAT_00818344 + -0x10); puVar9[2] = PTR_DAT_00818344; InterlockedIncrement(lpAddend); } FUN_0040ad10(4); puVar10 = (undefined4 *)FUN_0040acf0(4); if (puVar10 != (undefined4 *)0x0) { if ((*(byte *)(uVar4 + 4) & 1) == 0) { *puVar9 = *puVar10; } else { *puVar10 = *puVar9; } } FUN_00402400(uVar4); if ((*(uint *)(uVar4 + 4) >> 2 & 1) != 0) break; cVar5 = FUN_00599310(puVar9,puVar12); if (cVar5 == '\0') goto LAB_0041667f; uVar11 = uVar11 + 1; puVar12 = puVar9; if (param_3 <= uVar11) { return; } } } } } return; } // --- FUN_00416690 at 0x00416690 (size: 110) --- undefined4 * __fastcall FUN_00416690(undefined4 *param_1) { FUN_00415460(DAT_00837c40); *param_1 = &PTR_LAB_007962c8; param_1[0xc] = &PTR_FUN_007962a0; FUN_00415dc0(0x10); param_1[0x29] = &PTR_FUN_007962a0; FUN_00415dc0(0x10); param_1[0x46] = &PTR_FUN_0079629c; FUN_00415d30(0x10); param_1[99] = &PTR_FUN_0079629c; FUN_00415d30(0x10); return param_1; } // --- FUN_00416710 at 0x00416710 (size: 298) --- void __fastcall FUN_00416710(undefined4 *param_1) { *param_1 = &PTR_LAB_007962c8; FUN_005870f0(); FUN_00415e50(); FUN_005870f0(); FUN_00415e50(); param_1[99] = &PTR_FUN_0079629c; FUN_00415e50(); param_1[100] = &PTR_FUN_00796294; if ((undefined4 *)param_1[0x7c] != param_1 + 0x65) { operator_delete__((undefined4 *)param_1[0x7c]); } param_1[0x7c] = 0; param_1[0x7d] = 0; param_1[0x7e] = 0; param_1[0x7f] = 0; param_1[0x46] = &PTR_FUN_0079629c; FUN_00415e50(); param_1[0x47] = &PTR_FUN_00796294; if ((undefined4 *)param_1[0x5f] != param_1 + 0x48) { operator_delete__((undefined4 *)param_1[0x5f]); } param_1[0x5f] = 0; param_1[0x60] = 0; param_1[0x61] = 0; param_1[0x62] = 0; param_1[0x29] = &PTR_FUN_007962a0; FUN_005870f0(); param_1[0x2a] = &PTR_FUN_00796298; if ((undefined4 *)param_1[0x42] != param_1 + 0x2b) { operator_delete__((undefined4 *)param_1[0x42]); } param_1[0x42] = 0; param_1[0x43] = 0; param_1[0x44] = 0; param_1[0x45] = 0; param_1[0xc] = &PTR_FUN_007962a0; FUN_005870f0(); param_1[0xd] = &PTR_FUN_00796298; if ((undefined4 *)param_1[0x25] != param_1 + 0xe) { operator_delete__((undefined4 *)param_1[0x25]); } param_1[0x25] = 0; param_1[0x26] = 0; param_1[0x27] = 0; param_1[0x28] = 0; FUN_004154b0(); return; } // --- FUN_00416870 at 0x00416870 (size: 30) --- void * __thiscall FUN_00416870(void *param_1,byte param_2) { FUN_00416710(); if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00416890 at 0x00416890 (size: 177) --- void __thiscall FUN_00416890(int param_1,int param_2) { int iVar1; iVar1 = param_2; FUN_00415590(param_2); if ((~*(byte *)(iVar1 + 4) & 1) != 0) { FUN_005870f0(); } FUN_00415f00(¶m_2,param_1 + 0x34,iVar1); if ((~*(byte *)(iVar1 + 4) & 1) != 0) { FUN_00415e50(); } FUN_00416470(¶m_2,param_1 + 0x11c,iVar1); if ((~*(byte *)(iVar1 + 4) & 1) != 0) { FUN_005870f0(); } FUN_00415f00(¶m_2,param_1 + 0xa8,iVar1); if ((~*(byte *)(iVar1 + 4) & 1) != 0) { FUN_00415e50(); } FUN_00416470(¶m_2,param_1 + 400,iVar1); return; } // --- FUN_00416970 at 0x00416970 (size: 46) --- undefined4 __thiscall FUN_00416970(int *param_1,char param_2) { char cVar1; undefined4 in_EAX; undefined3 uVar2; undefined3 extraout_var; uVar2 = (undefined3)((uint)in_EAX >> 8); cVar1 = *(char *)((int)param_1 + 0xf1); if ((char)param_1[0x3c] != '\0') { *(char *)((int)param_1 + 0xf1) = param_2; if ((cVar1 != '\0') && (param_2 == '\0')) { (**(code **)(*param_1 + 0x28))(); uVar2 = extraout_var; } } return CONCAT31(uVar2,cVar1); } // --- FUN_004169a0 at 0x004169A0 (size: 76) --- void __thiscall FUN_004169a0(int *param_1,int *param_2) { if (param_2 != (int *)0x0) { (**(code **)(*param_2 + 0x2c))(); *(undefined1 *)(param_2 + 2) = 0; if ((*(char *)((int)param_1 + 0xf1) == '\0') || ((char)param_2[0xb] == '\0')) { (**(code **)(*param_1 + 0x44))(param_2); } else if (*(char *)((int)param_1 + 0xf2) != '\0') { (**(code **)(*param_1 + 0x48))(param_2); return; } } return; } // --- FUN_00416a70 at 0x00416A70 (size: 70) --- int * __fastcall FUN_00416a70(int *param_1) { int *piVar1; if (((char)param_1[0x3d] != '\0') && ((uint)param_1[0x3e] < (uint)param_1[0x42])) { piVar1 = (int *)(**(code **)(*param_1 + 0x50))(); if (piVar1 != (int *)0x0) { (**(code **)(*param_1 + 0x3c))(piVar1); (**(code **)(*piVar1 + 0x3c))(); return piVar1; } } piVar1 = (int *)(*(code *)param_1[0x44])(); return piVar1; } // --- FUN_00416ac0 at 0x00416AC0 (size: 69) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __fastcall FUN_00416ac0(int *param_1) { int iVar1; if ((((uint)param_1[0x3e] < (uint)param_1[0x42]) && (iVar1 = param_1[0x40], iVar1 != 0)) && (*(double *)(iVar1 + 0x10) + _DAT_00796330 < _DAT_008379a8)) { (**(code **)(*param_1 + 0x4c))(iVar1); (**(code **)(*param_1 + 0x44))(iVar1); } return; } // --- FUN_00416b10 at 0x00416B10 (size: 32) --- void __fastcall FUN_00416b10(int *param_1) { undefined4 uVar1; while (param_1[0x42] != 0) { uVar1 = (**(code **)(*param_1 + 0x50))(); (**(code **)(*param_1 + 0x44))(uVar1); } return; } // --- FUN_00416bd0 at 0x00416BD0 (size: 64) --- undefined4 * __thiscall FUN_00416bd0(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00796338; if ((undefined4 *)param_1[0x18] != param_1 + 1) { operator_delete__((undefined4 *)param_1[0x18]); } param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00416c10 at 0x00416C10 (size: 64) --- undefined4 * __thiscall FUN_00416c10(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_0079633c; if ((undefined4 *)param_1[0x18] != param_1 + 1) { operator_delete__((undefined4 *)param_1[0x18]); } param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00416c50 at 0x00416C50 (size: 44) --- undefined4 __thiscall FUN_00416c50(int param_1,uint param_2) { uint *puVar1; bool bVar2; puVar1 = *(uint **)(*(int *)(param_1 + 0x68) + (param_2 % *(uint *)(param_1 + 0x70)) * 4); bVar2 = puVar1 == (uint *)0x0; if (!bVar2) { do { if (*puVar1 == param_2) break; puVar1 = (uint *)puVar1[1]; } while (puVar1 != (uint *)0x0); bVar2 = puVar1 == (uint *)0x0; } return CONCAT31((int3)((uint)puVar1 >> 8),!bVar2); } // --- FUN_00416cd0 at 0x00416CD0 (size: 143) --- undefined4 * __thiscall FUN_00416cd0(undefined4 *param_1,undefined4 param_2) { undefined *puVar1; uint *puVar2; undefined4 uVar3; uint uVar4; int iVar5; undefined4 *puVar6; param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; *param_1 = &PTR_FUN_0079633c; puVar1 = PTR_DAT_00818558; puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0); if (puVar2 == (uint *)puVar1) { puVar2 = puVar2 + -1; } uVar4 = *puVar2; param_1[0x1a] = uVar4; if (uVar4 < 0x18) { param_1[0x18] = param_1 + 1; } else { uVar3 = thunk_FUN_005df0f5(uVar4 << 2); param_1[0x18] = uVar3; } param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a]; puVar6 = (undefined4 *)param_1[0x18]; for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) { *puVar6 = 0; puVar6 = puVar6 + 1; } for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) { *(undefined1 *)puVar6 = 0; puVar6 = (undefined4 *)((int)puVar6 + 1); } return param_1; } // --- FUN_00416d60 at 0x00416D60 (size: 143) --- undefined4 * __thiscall FUN_00416d60(undefined4 *param_1,undefined4 param_2) { undefined *puVar1; uint *puVar2; undefined4 uVar3; uint uVar4; int iVar5; undefined4 *puVar6; param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; *param_1 = &PTR_FUN_00796338; puVar1 = PTR_DAT_00818558; puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0); if (puVar2 == (uint *)puVar1) { puVar2 = puVar2 + -1; } uVar4 = *puVar2; param_1[0x1a] = uVar4; if (uVar4 < 0x18) { param_1[0x18] = param_1 + 1; } else { uVar3 = thunk_FUN_005df0f5(uVar4 << 2); param_1[0x18] = uVar3; } param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a]; puVar6 = (undefined4 *)param_1[0x18]; for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) { *puVar6 = 0; puVar6 = puVar6 + 1; } for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) { *(undefined1 *)puVar6 = 0; puVar6 = (undefined4 *)((int)puVar6 + 1); } return param_1; } // --- FUN_00416df0 at 0x00416DF0 (size: 73) --- void __fastcall FUN_00416df0(int param_1) { undefined *puVar1; undefined4 *puVar2; undefined4 local_4; puVar1 = PTR_DAT_00818558; local_4 = *(undefined4 *)(param_1 + 0x68); puVar2 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,local_4,0); if ((puVar2 != (undefined4 *)puVar1) || (puVar2 = puVar2 + -1, puVar2 != (undefined4 *)puVar1)) { puVar2 = puVar2 + 1; } FUN_00417020(*puVar2); return; } // --- FUN_00416e40 at 0x00416E40 (size: 100) --- bool __thiscall FUN_00416e40(int *param_1,uint param_2) { int *piVar1; uint *puVar2; int *piVar3; piVar3 = (int *)0x0; puVar2 = *(uint **)(param_1[0x1a] + (param_2 % (uint)param_1[0x1c]) * 4); if (puVar2 != (uint *)0x0) { while (*puVar2 != param_2) { puVar2 = (uint *)puVar2[1]; if (puVar2 == (uint *)0x0) { return false; } } if (puVar2 != (uint *)0x0) { piVar3 = (int *)puVar2[2]; (**(code **)(*param_1 + 0x4c))(piVar3); (**(code **)(*param_1 + 0x3c))(piVar3); piVar1 = piVar3 + 9; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { (**(code **)(*piVar3 + 0x18))(1); } } } return piVar3 != (int *)0x0; } // --- FUN_00416eb0 at 0x00416EB0 (size: 133) --- int * __thiscall FUN_00416eb0(int *param_1,uint param_2,char param_3) { uint *puVar1; int *piVar2; char cVar3; puVar1 = *(uint **)(param_1[0x1a] + (param_2 % (uint)param_1[0x1c]) * 4); while( true ) { if (puVar1 == (uint *)0x0) { return (int *)0x0; } if (*puVar1 == param_2) break; puVar1 = (uint *)puVar1[1]; } if (puVar1 == (uint *)0x0) { return (int *)0x0; } piVar2 = (int *)puVar1[2]; if ((piVar2 == (int *)0x0) || (piVar2[9] < 2)) { (**(code **)(*param_1 + 0x4c))(piVar2); } piVar2[9] = piVar2[9] + 1; if (((char)piVar2[2] == '\0') && (param_3 != '\0')) { cVar3 = (**(code **)(*piVar2 + 0x28))(); if (cVar3 == '\0') { (**(code **)(*piVar2 + 0x14))(); return (int *)0x0; } *(undefined1 *)(piVar2 + 2) = 1; } return piVar2; } // --- FUN_00416f40 at 0x00416F40 (size: 87) --- uint __thiscall FUN_00416f40(int param_1,uint param_2) { uint *puVar1; uint uVar2; puVar1 = *(uint **)(*(int *)(param_1 + 0x68) + (param_2 % *(uint *)(param_1 + 0x70)) * 4); while( true ) { if (puVar1 == (uint *)0x0) { return 0; } if (*puVar1 == param_2) break; puVar1 = (uint *)puVar1[1]; } if (puVar1 == (uint *)0x0) { return 0; } uVar2 = puVar1[2]; if ((uVar2 != 0) && (1 < *(int *)(uVar2 + 0x24))) { *(int *)(uVar2 + 0x24) = *(int *)(uVar2 + 0x24) + 1; return uVar2; } return 0; } // --- FUN_00417020 at 0x00417020 (size: 310) --- undefined4 __thiscall FUN_00417020(int param_1,int param_2) { int iVar1; int iVar2; uint *puVar3; undefined4 *puVar4; int *piVar5; uint *puVar6; uint *puVar7; undefined4 *puVar8; uint *puVar9; uint uVar10; uint *puVar11; iVar2 = param_2; if (param_2 == *(int *)(param_1 + 0x68)) { return 0; } iVar1 = *(int *)(param_1 + 0x6c); puVar3 = (uint *)0x0; do { if (iVar1 == 0) { if (*(void **)(param_1 + 0x60) != (void *)(param_1 + 4)) { operator_delete__(*(void **)(param_1 + 0x60)); } *(undefined4 *)(param_1 + 0x60) = 0; *(undefined4 *)(param_1 + 100) = 0; *(undefined4 *)(param_1 + 0x68) = 0; *(undefined4 *)(param_1 + 0x6c) = 0; FUN_00693b20(iVar2); puVar4 = (undefined4 *)PTR_DAT_00818558; while (puVar3 != (uint *)0x0) { param_2 = *(int *)(param_1 + 0x68); puVar11 = (uint *)puVar3[1]; PTR_DAT_00818558 = (undefined *)puVar4; if (param_2 * 2 < *(int *)(param_1 + 0x6c) + 1) { puVar8 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,puVar4,¶m_2,param_2,0); if ((puVar8 != puVar4) || (puVar8 = puVar8 + -1, puVar8 != puVar4)) { puVar8 = puVar8 + 1; } FUN_00417020(*puVar8); } uVar10 = *puVar3 % *(uint *)(param_1 + 0x68); iVar2 = *(int *)(param_1 + 0x60); puVar3[1] = *(uint *)(iVar2 + uVar10 * 4); *(uint **)(iVar2 + uVar10 * 4) = puVar3; uVar10 = iVar2 + uVar10 * 4; if (uVar10 < *(uint *)(param_1 + 100)) { *(uint *)(param_1 + 100) = uVar10; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1; puVar4 = (undefined4 *)PTR_DAT_00818558; puVar3 = puVar11; } PTR_DAT_00818558 = (undefined *)puVar4; return 1; } piVar5 = *(int **)(param_1 + 100); while (piVar5 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) { if (**(int **)(param_1 + 100) != 0) { puVar11 = *(uint **)(param_1 + 100); puVar9 = (uint *)*puVar11; goto LAB_0041706f; } piVar5 = *(int **)(param_1 + 100) + 1; *(int **)(param_1 + 100) = piVar5; } puVar11 = (uint *)0x0; puVar9 = (uint *)0x0; LAB_0041706f: puVar7 = (uint *)*puVar11; if (puVar7 == puVar9) { LAB_00417082: *puVar11 = puVar7[1]; } else { do { puVar6 = puVar7; puVar7 = (uint *)puVar6[1]; } while (puVar7 != puVar9); if (puVar6 == (uint *)0x0) goto LAB_00417082; puVar6[1] = puVar7[1]; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1; puVar9[1] = (uint)puVar3; iVar1 = *(int *)(param_1 + 0x6c); puVar3 = puVar9; } while( true ); } // --- FUN_00417160 at 0x00417160 (size: 120) --- uint __thiscall FUN_00417160(int param_1,uint *param_2) { uint *puVar1; int iVar2; uint uVar3; puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4); do { if (puVar1 == (uint *)0x0) { LAB_0041718b: if ((int)(*(uint *)(param_1 + 0x68) * 2) < *(int *)(param_1 + 0x6c) + 1) { FUN_00416df0(); } uVar3 = *param_2 % *(uint *)(param_1 + 0x68); iVar2 = *(int *)(param_1 + 0x60); param_2[1] = *(uint *)(iVar2 + uVar3 * 4); *(uint **)(iVar2 + uVar3 * 4) = param_2; uVar3 = iVar2 + uVar3 * 4; if (uVar3 < *(uint *)(param_1 + 100)) { *(uint *)(param_1 + 100) = uVar3; } iVar2 = *(int *)(param_1 + 0x6c) + 1; *(int *)(param_1 + 0x6c) = iVar2; return CONCAT31((int3)((uint)iVar2 >> 8),1); } if (*puVar1 == *param_2) { if (puVar1 != (uint *)0x0) { return (uint)puVar1 & 0xffffff00; } goto LAB_0041718b; } puVar1 = (uint *)puVar1[1]; } while( true ); } // --- FUN_004171e0 at 0x004171E0 (size: 81) --- uint * __thiscall FUN_004171e0(int param_1,uint *param_2) { uint *puVar1; uint uVar2; uVar2 = *param_2 % *(uint *)(param_1 + 0x68); puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + uVar2 * 4); while( true ) { if (puVar1 == (uint *)0x0) { return (uint *)0x0; } if (*puVar1 == *param_2) break; puVar1 = (uint *)puVar1[1]; } if (puVar1 == (uint *)0x0) { return (uint *)0x0; } FUN_00428ba0(param_1,*(int *)(param_1 + 0x60) + uVar2 * 4,puVar1); return puVar1; } // --- FUN_00417240 at 0x00417240 (size: 88) --- undefined4 FUN_00417240(undefined4 *param_1,undefined4 *param_2) { char cVar1; undefined4 *puVar2; puVar2 = (undefined4 *)FUN_005df0f5(0xc); if (puVar2 == (undefined4 *)0x0) { puVar2 = (undefined4 *)0x0; } else { *puVar2 = *param_1; puVar2[1] = 0; puVar2[2] = *param_2; } cVar1 = FUN_00417160(puVar2); if (cVar1 == '\0') { if (puVar2 != (undefined4 *)0x0) { operator_delete(puVar2); } return 0; } return 1; } // --- FUN_004172a0 at 0x004172A0 (size: 82) --- undefined4 * __thiscall FUN_004172a0(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00796348; FUN_005870f0(); param_1[1] = &PTR_FUN_00796338; if ((undefined4 *)param_1[0x19] != param_1 + 2) { operator_delete__((undefined4 *)param_1[0x19]); } param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x1c] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00417300 at 0x00417300 (size: 82) --- undefined4 * __thiscall FUN_00417300(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00796340; FUN_005870f0(); param_1[1] = &PTR_FUN_0079633c; if ((undefined4 *)param_1[0x19] != param_1 + 2) { operator_delete__((undefined4 *)param_1[0x19]); } param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x1c] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00417360 at 0x00417360 (size: 212) --- void __fastcall FUN_00417360(undefined4 *param_1) { int iVar1; int *piVar2; undefined4 *puVar3; undefined1 local_c [12]; *param_1 = &PTR_FUN_007c6a98; iVar1 = FUN_0052dcf0(local_c); puVar3 = *(undefined4 **)(iVar1 + 8); joined_r0x00417384: do { if (puVar3 == (undefined4 *)0x0) { param_1[0x1f] = &PTR_FUN_00796340; FUN_005870f0(); param_1[0x20] = &PTR_FUN_0079633c; if ((undefined4 *)param_1[0x38] != param_1 + 0x21) { operator_delete__((undefined4 *)param_1[0x38]); } param_1[0x38] = 0; param_1[0x39] = 0; param_1[0x3a] = 0; param_1[0x3b] = 0; param_1[1] = &PTR_FUN_00796348; FUN_005870f0(); param_1[2] = &PTR_FUN_00796338; if ((undefined4 *)param_1[0x1a] != param_1 + 3) { operator_delete__((undefined4 *)param_1[0x1a]); } param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x1c] = 0; param_1[0x1d] = 0; return; } FUN_00416e40(*puVar3); piVar2 = (int *)param_1[0x1b]; while (piVar2 != (int *)(param_1[0x1a] + param_1[0x1c] * 4)) { if (*(int *)param_1[0x1b] != 0) { puVar3 = *(undefined4 **)param_1[0x1b]; goto joined_r0x00417384; } piVar2 = (int *)param_1[0x1b] + 1; param_1[0x1b] = piVar2; } puVar3 = (undefined4 *)0x0; } while( true ); } // --- FUN_00417510 at 0x00417510 (size: 192) --- undefined4 * __thiscall FUN_00417510(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { undefined4 *puVar1; *param_1 = &PTR_FUN_007c6a98; param_1[1] = &PTR_FUN_00796348; FUN_00416d60(0x80); param_1[1] = &PTR_FUN_00796348; param_1[0x1e] = param_3; param_1[0x1f] = &PTR_FUN_00796340; FUN_00416cd0(0x17); *(undefined1 *)(param_1 + 0x3c) = 1; *(undefined1 *)((int)param_1 + 0xf1) = 1; *(undefined1 *)((int)param_1 + 0xf2) = 1; *(undefined1 *)(param_1 + 0x3d) = 0; *(undefined1 *)((int)param_1 + 0xf5) = 0; param_1[0x3e] = 0x10; param_1[0x3f] = 0x10; param_1[0x40] = 0; param_1[0x41] = 0; param_1[0x42] = 0; param_1[0x43] = 0; param_1[0x44] = param_2; puVar1 = (undefined4 *)FUN_0041c500(param_1[0x1e]); param_1[0x3d] = *puVar1; param_1[0x3e] = puVar1[1]; param_1[0x3f] = puVar1[2]; return param_1; } // --- FUN_004175d0 at 0x004175D0 (size: 30) --- void * __thiscall FUN_004175d0(void *param_1,byte param_2) { FUN_00417360(); if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00417600 at 0x00417600 (size: 28) --- undefined4 * __fastcall FUN_00417600(undefined4 *param_1) { *param_1 = 0; param_1[1] = 0; FUN_00406d60(); return param_1; } // --- FUN_00417620 at 0x00417620 (size: 27) --- int FUN_00417620(void) { int iVar1; FUN_004074b0(4,1); iVar1 = FUN_00406d80(); return iVar1 + 4; } // --- FUN_00417640 at 0x00417640 (size: 32) --- int FUN_00417640(void) { uint uVar1; int iVar2; uVar1 = FUN_00406db0(); if (4 < uVar1) { iVar2 = FUN_00406db0(); return iVar2 + -4; } return 0; } // --- FUN_00417660 at 0x00417660 (size: 19) --- void __thiscall FUN_00417660(int *param_1,int param_2) { (**(code **)(*param_1 + 0xc))(); param_1[9] = param_2; return; } // --- FUN_00417680 at 0x00417680 (size: 24) --- void __fastcall FUN_00417680(int param_1) { if (*(int **)(param_1 + 0x24) != (int *)0x0) { (**(code **)(**(int **)(param_1 + 0x24) + 0x14))(); *(undefined4 *)(param_1 + 0x24) = 0; } return; } // --- FUN_004176a0 at 0x004176A0 (size: 35) --- undefined4 * __thiscall FUN_004176a0(undefined4 *param_1,undefined4 *param_2) { *param_1 = *param_2; param_1[1] = param_2[1]; FUN_004070d0(param_2 + 2); return param_1; } // --- FUN_004176d0 at 0x004176D0 (size: 48) --- void __thiscall FUN_004176d0(int *param_1,int param_2) { int iVar1; iVar1 = *(int *)(param_2 + 0xc); if (iVar1 == 0) { /* WARNING: Could not recover jumptable at 0x004176fa. Too many branches */ /* WARNING: Treating indirect jump as call */ (**(code **)(*param_1 + 0x60))(); return; } if (iVar1 != 1) { if (iVar1 == 2) { /* WARNING: Could not recover jumptable at 0x004176e8. Too many branches */ /* WARNING: Treating indirect jump as call */ (**(code **)(*param_1 + 100))(); return; } return; } /* WARNING: Could not recover jumptable at 0x004176f1. Too many branches */ /* WARNING: Treating indirect jump as call */ (**(code **)(*param_1 + 0x68))(); return; } // --- FUN_00417710 at 0x00417710 (size: 5) --- void __fastcall FUN_00417710(int *param_1) { /* WARNING: Could not recover jumptable at 0x00417712. Too many branches */ /* WARNING: Treating indirect jump as call */ (**(code **)(*param_1 + 0x74))(); return; } // --- FUN_004178a0 at 0x004178A0 (size: 19) --- void FUN_004178a0(void) { FUN_00406f90(); FUN_00406f90(); return; } // --- FUN_004178c0 at 0x004178C0 (size: 79) --- undefined4 __fastcall FUN_004178c0(int param_1) { undefined4 *puVar1; uint uVar2; LONG LVar3; uint uVar4; uVar4 = 0; if (*(int *)(param_1 + 0x20) == 0) { *(undefined4 *)(param_1 + 0x20) = 0; return 1; } do { puVar1 = *(undefined4 **)(*(int *)(param_1 + 0x18) + uVar4 * 8); LVar3 = InterlockedDecrement(puVar1 + 1); if ((LVar3 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } uVar2 = *(uint *)(param_1 + 0x20); uVar4 = uVar4 + 1; } while (uVar4 < uVar2); *(undefined4 *)(param_1 + 0x20) = 0; return CONCAT31((int3)(uVar2 >> 8),1); } // --- FUN_00417910 at 0x00417910 (size: 78) --- void __fastcall FUN_00417910(int param_1) { char cVar1; undefined4 uVar2; int *piVar3; if (*(int **)(param_1 + 0x24) != (int *)0x0) { if ((*(byte *)(param_1 + 0x60) & 4) == 0) { cVar1 = (**(code **)(**(int **)(param_1 + 0x24) + 0x24))(); if (cVar1 == '\0') goto LAB_00417949; } uVar2 = (**(code **)(**(int **)(param_1 + 0x24) + 0x48))(); piVar3 = (int *)FUN_00414590(uVar2); if (piVar3 != (int *)0x0) { (**(code **)(*piVar3 + 0x18))(*(undefined4 *)(param_1 + 0x24)); } } LAB_00417949: if (*(int **)(param_1 + 0x24) != (int *)0x0) { (**(code **)(**(int **)(param_1 + 0x24) + 0x14))(); *(undefined4 *)(param_1 + 0x24) = 0; } return; } // --- FUN_00417960 at 0x00417960 (size: 202) --- void __thiscall FUN_00417960(int *param_1,int *param_2) { char cVar1; int iVar2; if (param_2[5] == DAT_00837c50) { param_2[2] = 3; } else { iVar2 = param_2[3]; if (iVar2 == 0) { iVar2 = (**(code **)*param_1)(param_2[10],param_2 + 4); (**(code **)(*param_2 + 0xc))(); param_2[9] = iVar2; param_2[2] = 3; if (iVar2 != 0) { param_2[2] = 1; param_2[0x18] = param_2[0x18] | 4; (**(code **)(*param_1 + 0x5c))(param_2); return; } } else { if (iVar2 == 1) { cVar1 = (**(code **)(*param_1 + 4))(param_2 + 4); param_2[2] = (-(uint)(cVar1 != '\0') & 0xfffffffe) + 3; (**(code **)(*param_1 + 0x5c))(param_2); return; } if (iVar2 == 2) { cVar1 = (**(code **)(*param_1 + 8))(param_2 + 4,param_2 + 10); param_2[2] = (-(uint)(cVar1 != '\0') & 0xfffffffe) + 3; (**(code **)(*param_1 + 0x5c))(param_2); return; } } } (**(code **)(*param_1 + 0x5c))(param_2); return; } // --- FUN_00417cf0 at 0x00417CF0 (size: 109) --- int * __thiscall FUN_00417cf0(int *param_1,int param_2,undefined4 param_3) { char cVar1; int *piVar2; piVar2 = (int *)0x0; if (*(int *)(param_2 + 4) != DAT_00837c50) { piVar2 = (int *)(**(code **)(*param_1 + 0x88))(param_2,param_3); } cVar1 = (**(code **)(*param_1 + 0x7c))(piVar2,param_2,param_3); if ((cVar1 != '\0') && (cVar1 = (**(code **)(*piVar2 + 0x24))(), cVar1 != '\0')) { (**(code **)(*param_1 + 0x94))(piVar2,param_3); return piVar2; } if (piVar2 == (int *)0x0) { return (int *)0x0; } (**(code **)(*piVar2 + 0x14))(); return (int *)0x0; } // --- FUN_00417d60 at 0x00417D60 (size: 80) --- void __fastcall FUN_00417d60(int *param_1) { int iVar1; int iVar2; param_1[2] = 0; if ((param_1[1] & 0x80000000U) == 0x80000000) { operator_delete__((void *)*param_1); *param_1 = 0; param_1[1] = 0; return; } if (*param_1 != 0) { iVar2 = (param_1[1] & 0x7fffffffU) - 1; while (-1 < iVar2) { iVar2 = iVar2 + -1; iVar1 = *param_1; *(undefined4 *)(iVar1 + 8 + iVar2 * 8) = 0; *(undefined4 *)(iVar1 + 0xc + iVar2 * 8) = 0; } } return; } // --- FUN_00417db0 at 0x00417DB0 (size: 124) --- undefined4 __thiscall FUN_00417db0(int param_1,undefined4 *param_2) { uint uVar1; int iVar2; int iVar3; uint uVar4; LONG LVar5; int *piVar6; uVar4 = 0; if (*(uint *)(param_1 + 0x20) != 0) { piVar6 = *(int **)(param_1 + 0x18); do { if ((undefined4 *)*piVar6 == param_2) { if (uVar4 < *(uint *)(param_1 + 0x20)) { uVar1 = *(uint *)(param_1 + 0x20) - 1; *(uint *)(param_1 + 0x20) = uVar1; if (uVar4 != uVar1) { iVar2 = *(int *)(param_1 + 0x18); *(undefined4 *)(iVar2 + uVar4 * 8) = *(undefined4 *)(iVar2 + uVar1 * 8); *(undefined4 *)(iVar2 + 4 + uVar4 * 8) = *(undefined4 *)(iVar2 + 4 + uVar1 * 8); iVar2 = *(int *)(param_1 + 0x20); iVar3 = *(int *)(param_1 + 0x18); *(undefined4 *)(iVar3 + iVar2 * 8) = 0; *(undefined4 *)(iVar3 + 4 + iVar2 * 8) = 0; } } LVar5 = InterlockedDecrement(param_2 + 1); if ((LVar5 == 0) && (param_2 != (undefined4 *)0x0)) { (**(code **)*param_2)(1); } return 1; } uVar4 = uVar4 + 1; piVar6 = piVar6 + 2; } while (uVar4 < *(uint *)(param_1 + 0x20)); } return 0; } // --- FUN_00417e30 at 0x00417E30 (size: 109) --- void __fastcall FUN_00417e30(int param_1) { undefined4 *puVar1; LONG LVar2; uint uVar3; uVar3 = 0; if (*(int *)(param_1 + 0x20) != 0) { do { FUN_00417db0(param_1); puVar1 = *(undefined4 **)(*(int *)(param_1 + 0x18) + uVar3 * 4); if (puVar1 != (undefined4 *)0x0) { LVar2 = InterlockedDecrement(puVar1 + 1); if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } *(undefined4 *)(*(int *)(param_1 + 0x18) + uVar3 * 4) = 0; } uVar3 = uVar3 + 1; } while (uVar3 < *(uint *)(param_1 + 0x20)); } *(undefined4 *)(param_1 + 0x20) = 0; *(undefined4 *)(param_1 + 0xc) = 0; *(undefined4 *)(param_1 + 0x24) = DAT_00837c54; return; } // --- FUN_00417ea0 at 0x00417EA0 (size: 185) --- void __thiscall FUN_00417ea0(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,uint param_5, undefined4 param_6) { uint uVar1; int iVar2; int *piVar3; undefined4 *puVar4; LONG LVar5; int *unaff_ESI; uint uVar6; uVar1 = param_1[5]; piVar3 = (int *)(**(code **)(*param_1 + 0x10))(¶m_6,param_3,param_4,param_5,param_6); iVar2 = *piVar3; *unaff_ESI = iVar2; if (((char)param_1[0x43] == '\0') && (uVar6 = param_1[5], uVar1 < uVar6)) { while (uVar6 = uVar6 - 1, *(int *)(*(int *)(param_1[2] + ((param_1[3] + uVar6) % (uint)param_1[6]) * 4) + 0x24) != iVar2) { if (uVar6 <= param_5) { return; } } puVar4 = (undefined4 *)(**(code **)(param_1[1] + 0xc))(uVar6); if (((undefined4 *)puVar4[3] != (undefined4 *)0x0) && (puVar4[9] != DAT_00837c54)) { (*(code *)**(undefined4 **)puVar4[3])(puVar4[9],puVar4[4],puVar4[5]); } LVar5 = InterlockedDecrement(puVar4 + 1); if (LVar5 == 0) { (**(code **)*puVar4)(1); } } return; } // --- FUN_00417ff0 at 0x00417FF0 (size: 172) --- undefined4 __thiscall FUN_00417ff0(int *param_1,uint param_2) { int iVar1; int iVar2; int iVar3; if (param_2 < (uint)param_1[2]) { return 0; } if ((param_1[1] & 0x7fffffffU) < param_2) { if (param_2 == 0) { FUN_00417d60(); return 1; } iVar2 = thunk_FUN_005df0f5(param_2 * 8); if (iVar2 == 0) { return 0; } FUN_00401000(iVar2,8,param_2,&LAB_004175f0); if (*param_1 != 0) { iVar3 = param_1[2] + -1; while (-1 < iVar3) { iVar3 = iVar3 + -1; iVar1 = *param_1; *(undefined4 *)(iVar2 + 8 + iVar3 * 8) = *(undefined4 *)(iVar1 + 8 + iVar3 * 8); *(undefined4 *)(iVar2 + 0xc + iVar3 * 8) = *(undefined4 *)(iVar1 + 0xc + iVar3 * 8); } if ((param_1[1] & 0x80000000U) == 0x80000000) { operator_delete__((void *)*param_1); } } *param_1 = iVar2; param_1[1] = param_2 | 0x80000000; } return 1; } // --- FUN_004180a0 at 0x004180A0 (size: 148) --- undefined4 __thiscall FUN_004180a0(int *param_1,uint param_2) { int iVar1; int iVar2; if (param_2 < (uint)param_1[2]) { return 0; } if ((param_1[1] & 0x7fffffffU) < param_2) { if (param_2 == 0) { FUN_0044dcb0(); return 1; } iVar1 = thunk_FUN_005df0f5(param_2 * 4); if (iVar1 == 0) { return 0; } if (*param_1 != 0) { iVar2 = param_1[2] + -1; while (-1 < iVar2) { iVar2 = iVar2 + -1; *(undefined4 *)(iVar1 + 4 + iVar2 * 4) = *(undefined4 *)(*param_1 + 4 + iVar2 * 4); } if ((param_1[1] & 0x80000000U) == 0x80000000) { operator_delete__((void *)*param_1); } } *param_1 = iVar1; param_1[1] = param_2 | 0x80000000; } return 1; } // --- FUN_00418150 at 0x00418150 (size: 65) --- void __fastcall FUN_00418150(undefined4 *param_1) { *param_1 = &PTR_FUN_00796360; if ((int *)param_1[9] != (int *)0x0) { (**(code **)(*(int *)param_1[9] + 0x14))(); param_1[9] = 0; } if ((param_1[7] & 0x80000000) == 0x80000000) { operator_delete__((void *)param_1[6]); } *param_1 = &PTR_FUN_007952f4; return; } // --- FUN_004181a0 at 0x004181A0 (size: 322) --- void __fastcall FUN_004181a0(undefined4 *param_1) { undefined4 *puVar1; char cVar2; LONG LVar3; undefined4 uVar4; int *piVar5; uint uVar6; uVar6 = 0; *param_1 = &PTR_FUN_00796374; if (param_1[0x10] != 0) { do { puVar1 = *(undefined4 **)(param_1[0xe] + uVar6 * 4); LVar3 = InterlockedDecrement(puVar1 + 1); if ((LVar3 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } uVar6 = uVar6 + 1; } while (uVar6 < (uint)param_1[0x10]); } uVar6 = 0; if (param_1[0xd] != 0) { do { puVar1 = *(undefined4 **)(param_1[0xb] + uVar6 * 4); LVar3 = InterlockedDecrement(puVar1 + 1); if ((LVar3 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } uVar6 = uVar6 + 1; } while (uVar6 < (uint)param_1[0xd]); } if (((int *)param_1[9] != (int *)0x0) && (((*(byte *)(param_1 + 0x18) & 4) != 0 || (cVar2 = (**(code **)(*(int *)param_1[9] + 0x24))(), cVar2 != '\0')))) { uVar4 = (**(code **)(*(int *)param_1[9] + 0x48))(); piVar5 = (int *)FUN_00414590(uVar4); if (piVar5 != (int *)0x0) { (**(code **)(*piVar5 + 0x18))(param_1[9]); } } if ((int *)param_1[9] != (int *)0x0) { (**(code **)(*(int *)param_1[9] + 0x14))(); param_1[9] = 0; } FUN_00406f90(); FUN_00406f90(); if ((param_1[0xf] & 0x80000000) == 0x80000000) { operator_delete__((void *)param_1[0xe]); } if ((param_1[0xc] & 0x80000000) == 0x80000000) { operator_delete__((void *)param_1[0xb]); } *param_1 = &PTR_FUN_00796360; if ((int *)param_1[9] != (int *)0x0) { (**(code **)(*(int *)param_1[9] + 0x14))(); param_1[9] = 0; } if ((param_1[7] & 0x80000000) == 0x80000000) { operator_delete__((void *)param_1[6]); } *param_1 = &PTR_FUN_007952f4; return; } // --- FUN_00418300 at 0x00418300 (size: 131) --- void __fastcall FUN_00418300(undefined4 *param_1) { undefined4 *puVar1; LONG LVar2; uint uVar3; uVar3 = 0; *param_1 = &PTR_FUN_00796370; if (param_1[8] != 0) { do { FUN_00417db0(param_1); puVar1 = *(undefined4 **)(param_1[6] + uVar3 * 4); if (puVar1 != (undefined4 *)0x0) { LVar2 = InterlockedDecrement(puVar1 + 1); if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } *(undefined4 *)(param_1[6] + uVar3 * 4) = 0; } uVar3 = uVar3 + 1; } while (uVar3 < (uint)param_1[8]); } if ((param_1[7] & 0x80000000) == 0x80000000) { operator_delete__((void *)param_1[6]); } *param_1 = &PTR_FUN_007952f4; return; } // --- FUN_00418390 at 0x00418390 (size: 85) --- undefined4 * __thiscall FUN_00418390(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00796360; if ((int *)param_1[9] != (int *)0x0) { (**(code **)(*(int *)param_1[9] + 0x14))(); param_1[9] = 0; } if ((param_1[7] & 0x80000000) == 0x80000000) { operator_delete__((void *)param_1[6]); } *param_1 = &PTR_FUN_007952f4; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_004183f0 at 0x004183F0 (size: 30) --- void * __thiscall FUN_004183f0(void *param_1,byte param_2) { FUN_00418300(); if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00418410 at 0x00418410 (size: 74) --- undefined4 * __fastcall FUN_00418410(undefined4 *param_1) { param_1[1] = 1; param_1[2] = 0; param_1[6] = 0; param_1[7] = 0; param_1[8] = 0; param_1[9] = 0; *param_1 = &PTR_FUN_00796374; param_1[0xb] = 0; param_1[0xc] = 0; param_1[0xd] = 0; param_1[0xe] = 0; param_1[0xf] = 0; param_1[0x10] = 0; param_1[0x11] = 0; param_1[0x12] = 0; FUN_00406d60(); param_1[0x18] = 0; return param_1; } // --- FUN_00418460 at 0x00418460 (size: 30) --- void * __thiscall FUN_00418460(void *param_1,byte param_2) { FUN_004181a0(); if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00418480 at 0x00418480 (size: 30) --- void * __thiscall FUN_00418480(void *param_1,byte param_2) { FUN_00418150(); if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_004184a0 at 0x004184A0 (size: 40) --- void * __thiscall FUN_004184a0(void *param_1,byte param_2) { FUN_004178a0(); FUN_00418150(); if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_004184d0 at 0x004184D0 (size: 61) --- undefined4 FUN_004184d0(undefined4 param_1) { undefined *puVar1; undefined4 *puVar2; bool bVar3; puVar1 = PTR_DAT_00818558; puVar2 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_1,param_1,0); bVar3 = false; if (puVar2 == (undefined4 *)puVar1) { puVar2 = puVar2 + -1; bVar3 = puVar2 == (undefined4 *)puVar1; } if (!bVar3) { return puVar2[1]; } return *puVar2; } // --- FUN_00418510 at 0x00418510 (size: 335) --- void __thiscall FUN_00418510(int param_1,int *param_2) { int *piVar1; int iVar2; uint *puVar3; int *piVar4; char cVar5; uint uVar6; piVar4 = param_2; if ((param_2[3] == 0) && (uVar6 = 0, param_2[8] != 0)) { do { piVar1 = (int *)(piVar4[6] + uVar6 * 8); iVar2 = *piVar1; if ((iVar2 != 0) && (*(char *)(iVar2 + 0x28) == '\0')) { piVar1 = piVar1 + 1; *piVar1 = *piVar1 + 1; if (*(int **)(iVar2 + 0xc) != (int *)0x0) { (**(code **)(**(int **)(iVar2 + 0xc) + 4)) (*(undefined4 *)(iVar2 + 0x24),piVar4[4],piVar4[5],piVar4[2], *(undefined4 *)(iVar2 + 0x14),*(undefined4 *)(piVar4[6] + 4 + uVar6 * 8),piVar4 ); } } uVar6 = uVar6 + 1; } while (uVar6 < (uint)piVar4[8]); } cVar5 = (**(code **)(*piVar4 + 4))(); if (cVar5 != '\0') { uVar6 = 0; if (piVar4[8] != 0) { do { param_2 = *(int **)(piVar4[6] + uVar6 * 8); if (param_2 != (int *)0x0) { param_2[2] = param_2[2] + -1; if (piVar4[2] == 1) { if (param_2[4] == 3) { param_2[4] = 2; } else if (param_2[4] == 0) { param_2[4] = 1; } } else if (param_2[4] == 1) { param_2[4] = 2; } else if (param_2[4] == 0) { param_2[4] = piVar4[2]; } if ((param_2[2] == 0) && ((char)param_2[10] == '\0')) { for (puVar3 = *(uint **)(*(int *)(param_1 + 0xf8) + ((uint)param_2[9] % *(uint *)(param_1 + 0x100)) * 4); puVar3 != (uint *)0x0; puVar3 = (uint *)puVar3[1]) { if (*puVar3 == param_2[9]) { if (puVar3 != (uint *)0x0) { InterlockedIncrement(param_2 + 1); *(undefined1 *)(param_2 + 10) = 1; (**(code **)(*(int *)(param_1 + 4) + 4))(¶m_2); } break; } } } } uVar6 = uVar6 + 1; } while (uVar6 < (uint)piVar4[8]); } FUN_004178c0(); } return; } // --- FUN_00418660 at 0x00418660 (size: 54) --- undefined4 FUN_00418660(undefined4 param_1,undefined4 *param_2) { undefined4 uVar1; undefined1 local_c [8]; int local_4; FUN_00414190(local_c,param_1); if (local_4 != 0) { uVar1 = *(undefined4 *)(local_4 + 0xc); *param_2 = uVar1; return CONCAT31((int3)((uint)uVar1 >> 8),1); } return 0; } // --- FUN_004186a0 at 0x004186A0 (size: 81) --- void __thiscall FUN_004186a0(int param_1,int param_2) { int iVar1; int iVar2; char cVar3; uint uVar4; undefined4 uVar5; InterlockedIncrement((LONG *)(param_2 + 4)); uVar4 = *(uint *)(param_1 + 0x1c) & 0x7fffffff; if (uVar4 <= *(uint *)(param_1 + 0x20)) { uVar5 = FUN_00453850(uVar4 + 1); cVar3 = FUN_00417ff0(uVar5); if (cVar3 == '\0') { return; } } iVar1 = *(int *)(param_1 + 0x20); iVar2 = *(int *)(param_1 + 0x18); *(int *)(iVar2 + iVar1 * 8) = param_2; *(undefined4 *)(iVar2 + 4 + iVar1 * 8) = 0; *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + 1; return; } // --- FUN_00418700 at 0x00418700 (size: 146) --- int __thiscall FUN_00418700(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4) { int iVar1; undefined4 uVar2; undefined1 local_c [8]; int local_4; FUN_00414190(local_c,param_4); if (local_4 != 0) { iVar1 = *(int *)(local_4 + 0xc); InterlockedIncrement((LONG *)(iVar1 + 4)); return iVar1; } iVar1 = FUN_005df0f5(100); if (iVar1 == 0) { iVar1 = 0; } else { iVar1 = FUN_00418410(); } uVar2 = (**(code **)(*param_1 + 0x38))(param_4); *(undefined4 *)(iVar1 + 0x5c) = uVar2; *(undefined4 *)(iVar1 + 0x28) = param_2; *(undefined4 *)(iVar1 + 0xc) = 0; *(undefined4 *)(iVar1 + 0x10) = *param_4; *(undefined4 *)(iVar1 + 0x14) = param_4[1]; *(undefined4 *)(iVar1 + 0x58) = 1; *(undefined4 *)(iVar1 + 8) = 0; return iVar1; } // --- FUN_004187a0 at 0x004187A0 (size: 152) --- void __thiscall FUN_004187a0(int *param_1,int param_2) { int iVar1; int iVar2; undefined1 local_c [8]; int local_4; FUN_00414190(local_c,param_2 + 0x10); if (((local_4 != 0) && (iVar1 = *(int *)(local_4 + 0xc), *(int *)(iVar1 + 8) == 0)) && ((*(byte *)(iVar1 + 0x60) & 2) == 0)) { *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(param_2 + 8); if (*(int *)(param_2 + 8) == 1) { iVar2 = FUN_00417620(); if ((iVar2 == 0) || (iVar2 = FUN_00417640(), iVar2 == 0)) { (**(code **)(*param_1 + 0x9c))(param_2 + 0x10,param_2 + 0x28,0,0); } FUN_004176a0(param_2 + 0x28); } (**(code **)(*param_1 + 0x60))(iVar1); } (**(code **)(*param_1 + 0x6c))(param_2); return; } // --- FUN_004188d0 at 0x004188D0 (size: 250) --- int * __thiscall FUN_004188d0(int *param_1,undefined4 param_2,int param_3) { char cVar1; int *piVar2; int *piVar3; int *piVar4; int unaff_EDI; bool bVar5; if (*(int *)(param_3 + 4) == DAT_00837c50) { return (int *)0x0; } piVar2 = (int *)(**(code **)(*param_1 + 0x38))(param_3); if (piVar2 == (int *)0x0) { return (int *)0x0; } piVar3 = (int *)(**(code **)(*param_1 + 0x84))(param_3,piVar2); bVar5 = false; piVar4 = piVar3; if (piVar3 == (int *)0x0) { cVar1 = FUN_00418660(param_3,&stack0xfffffffc); piVar4 = piRam00000024; if ((cVar1 == '\0') || (piVar3 = piRam00000024, piRam00000024 == (int *)0x0)) { piVar4 = piVar3; cVar1 = (**(code **)(*piVar2 + 0x20))(); if (cVar1 != '\0') { piVar4 = (int *)(**(code **)(*param_1 + 0x78))(param_3,piVar2); } } else { if (((uRam00000060 & 4) == 0) && (cVar1 = (**(code **)(*piRam00000024 + 0x24))(), cVar1 == '\0')) { return (int *)0x0; } uRam00000060 = uRam00000060 | 4; (**(code **)(*param_1 + 0x94))(piVar4,piVar2); (**(code **)(*piVar4 + 0x10))(); } bVar5 = piVar4 == (int *)0x0; } if (!bVar5) { if ((char)piVar4[2] != '\0') { return piVar4; } if (unaff_EDI == 1) { return piVar4; } cVar1 = (**(code **)(*piVar4 + 0x28))(); if (cVar1 != '\0') { *(undefined1 *)(piVar4 + 2) = 1; return piVar4; } } if (piVar4 != (int *)0x0) { (**(code **)(*piVar4 + 0x14))(); } return (int *)0x0; } // --- FUN_00418a10 at 0x00418A10 (size: 143) --- undefined4 * __thiscall FUN_00418a10(undefined4 *param_1,undefined4 param_2) { undefined *puVar1; uint *puVar2; undefined4 uVar3; uint uVar4; int iVar5; undefined4 *puVar6; param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; *param_1 = &PTR_FUN_00795f88; puVar1 = PTR_DAT_00818558; puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0); if (puVar2 == (uint *)puVar1) { puVar2 = puVar2 + -1; } uVar4 = *puVar2; param_1[0x1a] = uVar4; if (uVar4 < 0x18) { param_1[0x18] = param_1 + 1; } else { uVar3 = thunk_FUN_005df0f5(uVar4 << 2); param_1[0x18] = uVar3; } param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a]; puVar6 = (undefined4 *)param_1[0x18]; for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) { *puVar6 = 0; puVar6 = puVar6 + 1; } for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) { *(undefined1 *)puVar6 = 0; puVar6 = (undefined4 *)((int)puVar6 + 1); } return param_1; } // --- FUN_00418aa0 at 0x00418AA0 (size: 143) --- undefined4 * __thiscall FUN_00418aa0(undefined4 *param_1,undefined4 param_2) { undefined *puVar1; uint *puVar2; undefined4 uVar3; uint uVar4; int iVar5; undefined4 *puVar6; param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; *param_1 = &PTR_FUN_00795f8c; puVar1 = PTR_DAT_00818558; puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0); if (puVar2 == (uint *)puVar1) { puVar2 = puVar2 + -1; } uVar4 = *puVar2; param_1[0x1a] = uVar4; if (uVar4 < 0x18) { param_1[0x18] = param_1 + 1; } else { uVar3 = thunk_FUN_005df0f5(uVar4 << 2); param_1[0x18] = uVar3; } param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a]; puVar6 = (undefined4 *)param_1[0x18]; for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) { *puVar6 = 0; puVar6 = puVar6 + 1; } for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) { *(undefined1 *)puVar6 = 0; puVar6 = (undefined4 *)((int)puVar6 + 1); } return param_1; } // --- FUN_00418b30 at 0x00418B30 (size: 269) --- undefined4 __thiscall FUN_00418b30(int param_1,int param_2) { int iVar1; int *piVar2; int *piVar3; int *piVar4; undefined4 uVar5; int *piVar6; uint uVar7; int *piVar8; if (param_2 == *(int *)(param_1 + 0x68)) { return 0; } iVar1 = *(int *)(param_1 + 0x6c); piVar2 = (int *)0x0; do { if (iVar1 == 0) { if (*(void **)(param_1 + 0x60) != (void *)(param_1 + 4)) { operator_delete__(*(void **)(param_1 + 0x60)); } *(undefined4 *)(param_1 + 0x60) = 0; *(undefined4 *)(param_1 + 100) = 0; *(undefined4 *)(param_1 + 0x68) = 0; *(undefined4 *)(param_1 + 0x6c) = 0; FUN_00693b20(param_2); while (piVar2 != (int *)0x0) { piVar8 = (int *)piVar2[2]; if (*(int *)(param_1 + 0x68) * 2 < *(int *)(param_1 + 0x6c) + 1) { uVar5 = FUN_004184d0(*(int *)(param_1 + 0x68)); FUN_00418b30(uVar5); } uVar7 = (uint)(piVar2[1] + *piVar2) % *(uint *)(param_1 + 0x68); iVar1 = *(int *)(param_1 + 0x60); piVar2[2] = *(int *)(iVar1 + uVar7 * 4); *(int **)(iVar1 + uVar7 * 4) = piVar2; uVar7 = iVar1 + uVar7 * 4; if (uVar7 < *(uint *)(param_1 + 100)) { *(uint *)(param_1 + 100) = uVar7; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1; piVar2 = piVar8; } return 1; } piVar8 = *(int **)(param_1 + 100); while (piVar8 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) { if (**(int **)(param_1 + 100) != 0) { piVar8 = *(int **)(param_1 + 100); piVar6 = (int *)*piVar8; goto LAB_00418b7e; } piVar8 = *(int **)(param_1 + 100) + 1; *(int **)(param_1 + 100) = piVar8; } piVar8 = (int *)0x0; piVar6 = (int *)0x0; LAB_00418b7e: piVar4 = (int *)*piVar8; if (piVar4 == piVar6) { LAB_00418b91: *piVar8 = piVar4[2]; } else { do { piVar3 = piVar4; piVar4 = (int *)piVar3[2]; } while (piVar4 != piVar6); if (piVar3 == (int *)0x0) goto LAB_00418b91; piVar3[2] = piVar4[2]; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1; piVar6[2] = (int)piVar2; iVar1 = *(int *)(param_1 + 0x6c); piVar2 = piVar6; } while( true ); } // --- FUN_00418c40 at 0x00418C40 (size: 73) --- void __fastcall FUN_00418c40(int param_1) { undefined *puVar1; undefined4 *puVar2; undefined4 local_4; puVar1 = PTR_DAT_00818558; local_4 = *(undefined4 *)(param_1 + 0x68); puVar2 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,local_4,0); if ((puVar2 != (undefined4 *)puVar1) || (puVar2 = puVar2 + -1, puVar2 != (undefined4 *)puVar1)) { puVar2 = puVar2 + 1; } FUN_00418b30(*puVar2); return; } // --- FUN_00418c90 at 0x00418C90 (size: 83) --- void __thiscall FUN_00418c90(int param_1,int param_2) { char cVar1; uint uVar2; undefined4 uVar3; InterlockedIncrement((LONG *)(param_2 + 4)); uVar2 = *(uint *)(param_1 + 0x1c) & 0x7fffffff; if (uVar2 <= *(uint *)(param_1 + 0x20)) { uVar3 = FUN_00453850(uVar2 + 1); cVar1 = FUN_004180a0(uVar3); if (cVar1 == '\0') goto LAB_00418cd5; } *(int *)(*(int *)(param_1 + 0x18) + *(int *)(param_1 + 0x20) * 4) = param_2; *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + 1; LAB_00418cd5: FUN_004186a0(param_1); return; } // --- FUN_00419170 at 0x00419170 (size: 207) --- void FUN_00419170(undefined4 param_1,int param_2) { int iVar1; int iVar2; int *piVar3; int iVar4; int local_c; int *local_8; int local_4; FUN_0052dcf0(&local_c); joined_r0x00419187: do { if (local_4 == 0) { return; } do { if ((param_2 == 1) || ((param_2 != 2 && ((param_2 != 3 || ((~(byte)(*(uint *)(local_4 + 0xc) >> 3) & 1) == 0))))) ) { iVar2 = *(int *)(local_4 + 8); piVar3 = local_8; iVar4 = iVar2; if (iVar2 != 0) goto LAB_004191df; goto LAB_004191d0; } local_4 = *(int *)(local_4 + 8); } while (local_4 != 0); do { local_8 = local_8 + 1; if (local_8 == (int *)(*(int *)(local_c + 0x60) + *(int *)(local_c + 0x68) * 4)) { return; } local_4 = *local_8; } while (local_4 == 0); } while( true ); while (iVar4 = *piVar3, iVar4 == 0) { LAB_004191d0: piVar3 = piVar3 + 1; iVar4 = iVar2; if (piVar3 == (int *)(*(int *)(local_c + 0x60) + *(int *)(local_c + 0x68) * 4)) break; } LAB_004191df: iVar2 = *local_8; if (iVar2 != local_4) { do { iVar1 = iVar2; iVar2 = *(int *)(iVar1 + 8); } while (iVar2 != local_4); if (iVar1 != 0) { *(undefined4 *)(iVar1 + 8) = *(undefined4 *)(iVar2 + 8); *(int *)(local_c + 0x6c) = *(int *)(local_c + 0x6c) + -1; local_8 = piVar3; local_4 = iVar4; goto joined_r0x00419187; } } *local_8 = *(int *)(iVar2 + 8); *(int *)(local_c + 0x6c) = *(int *)(local_c + 0x6c) + -1; local_8 = piVar3; local_4 = iVar4; goto joined_r0x00419187; } // --- FUN_00419240 at 0x00419240 (size: 110) --- uint __thiscall FUN_00419240(int param_1,int *param_2) { int iVar1; uint uVar2; undefined1 local_c [8]; uint local_4; FUN_00414190(local_c,param_2); if (local_4 != 0) { return local_4 & 0xffffff00; } if (*(int *)(param_1 + 0x68) * 2 < *(int *)(param_1 + 0x6c) + 1) { FUN_00414ce0(); } uVar2 = (uint)(param_2[1] + *param_2) % *(uint *)(param_1 + 0x68); iVar1 = *(int *)(param_1 + 0x60); param_2[2] = *(int *)(iVar1 + uVar2 * 4); *(int **)(iVar1 + uVar2 * 4) = param_2; uVar2 = iVar1 + uVar2 * 4; if (uVar2 < *(uint *)(param_1 + 100)) { *(uint *)(param_1 + 100) = uVar2; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1; return CONCAT31((int3)(uVar2 >> 8),1); } // --- FUN_004192b0 at 0x004192B0 (size: 120) --- uint __thiscall FUN_004192b0(int param_1,uint *param_2) { uint *puVar1; int iVar2; uint uVar3; puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4); do { if (puVar1 == (uint *)0x0) { LAB_004192db: if ((int)(*(uint *)(param_1 + 0x68) * 2) < *(int *)(param_1 + 0x6c) + 1) { FUN_00414d30(); } uVar3 = *param_2 % *(uint *)(param_1 + 0x68); iVar2 = *(int *)(param_1 + 0x60); param_2[1] = *(uint *)(iVar2 + uVar3 * 4); *(uint **)(iVar2 + uVar3 * 4) = param_2; uVar3 = iVar2 + uVar3 * 4; if (uVar3 < *(uint *)(param_1 + 100)) { *(uint *)(param_1 + 100) = uVar3; } iVar2 = *(int *)(param_1 + 0x6c) + 1; *(int *)(param_1 + 0x6c) = iVar2; return CONCAT31((int3)((uint)iVar2 >> 8),1); } if (*puVar1 == *param_2) { if (puVar1 != (uint *)0x0) { return (uint)puVar1 & 0xffffff00; } goto LAB_004192db; } puVar1 = (uint *)puVar1[1]; } while( true ); } // --- FUN_00419470 at 0x00419470 (size: 94) --- undefined4 FUN_00419470(undefined4 *param_1,undefined4 *param_2) { char cVar1; undefined4 *puVar2; puVar2 = (undefined4 *)FUN_005df0f5(0x10); if (puVar2 == (undefined4 *)0x0) { puVar2 = (undefined4 *)0x0; } else { *puVar2 = *param_1; puVar2[1] = param_1[1]; puVar2[2] = 0; puVar2[3] = *param_2; } cVar1 = FUN_00419240(puVar2); if (cVar1 == '\0') { if (puVar2 != (undefined4 *)0x0) { operator_delete(puVar2); } return 0; } return 1; } // --- FUN_004194d0 at 0x004194D0 (size: 88) --- undefined4 FUN_004194d0(undefined4 *param_1,undefined4 *param_2) { char cVar1; undefined4 *puVar2; puVar2 = (undefined4 *)FUN_005df0f5(0xc); if (puVar2 == (undefined4 *)0x0) { puVar2 = (undefined4 *)0x0; } else { *puVar2 = *param_1; puVar2[1] = 0; puVar2[2] = *param_2; } cVar1 = FUN_004192b0(puVar2); if (cVar1 == '\0') { if (puVar2 != (undefined4 *)0x0) { operator_delete(puVar2); } return 0; } return 1; } // --- FUN_00419530 at 0x00419530 (size: 188) --- undefined4 * __thiscall FUN_00419530(int param_1,undefined4 *param_2,undefined4 param_3,int param_4) { int iVar1; int iVar2; undefined4 *puVar3; iVar2 = (int)param_2; if (param_2 != (undefined4 *)0x0) { if (*(int *)(param_1 + 0x108) == 0) { *(undefined4 *)(param_1 + 0x108) = 1; } iVar1 = *(int *)(param_1 + 0x108); *(int *)(param_1 + 0x108) = iVar1 + 1; puVar3 = (undefined4 *)FUN_005df0f5(0x2c); if (puVar3 == (undefined4 *)0x0) { puVar3 = (undefined4 *)0x0; } else { puVar3[1] = 1; *puVar3 = &PTR_FUN_00796370; puVar3[2] = 0; puVar3[3] = iVar2; puVar3[4] = 0; puVar3[5] = param_3; puVar3[6] = 0; puVar3[7] = 0; puVar3[8] = 0; puVar3[9] = iVar1; *(undefined1 *)(puVar3 + 10) = 0; } puVar3[2] = puVar3[2] + param_4; param_2 = puVar3; InterlockedIncrement(puVar3 + 1); param_3 = puVar3[9]; FUN_004194d0(¶m_3,¶m_2); return puVar3; } return (undefined4 *)0x0; } // --- FUN_00419aa0 at 0x00419AA0 (size: 69) --- void __thiscall FUN_00419aa0(int *param_1,int param_2) { uint uVar1; int iVar2; char cVar3; iVar2 = param_2; cVar3 = FUN_00419470(param_2 + 0x10,¶m_2); if (cVar3 != '\0') { InterlockedIncrement((LONG *)(iVar2 + 4)); uVar1 = *(uint *)(iVar2 + 0x60); *(uint *)(iVar2 + 0x60) = uVar1 | 1; *(uint *)(iVar2 + 0x60) = uVar1 | 3; (**(code **)(*param_1 + 0x50))(iVar2); } return; } // --- FUN_00419d10 at 0x00419D10 (size: 633) --- /* WARNING: Removing unreachable block (ram,0x00419edd) */ /* WARNING: Removing unreachable block (ram,0x00419e3a) */ /* WARNING: Removing unreachable block (ram,0x00419e56) */ /* WARNING: Removing unreachable block (ram,0x00419e5f) */ /* WARNING: Removing unreachable block (ram,0x00419e71) */ /* WARNING: Removing unreachable block (ram,0x00419e42) */ /* WARNING: Removing unreachable block (ram,0x00419e4b) */ /* WARNING: Removing unreachable block (ram,0x00419f3c) */ undefined4 FUN_00419d10(int param_1,int param_2) { int *piVar1; int iVar2; int iVar3; int *piVar4; char cVar5; undefined4 uVar6; uint uVar7; uint local_80; undefined1 local_6c [92]; undefined1 *local_10; uint local_8; FUN_00414820(0x17); uVar6 = FUN_00453850(1); cVar5 = FUN_004180a0(uVar6); if (cVar5 != '\0') { iRam00000000 = param_1; } local_80 = (uint)(cVar5 != '\0'); FUN_00414d80(param_1 + 0x10); do { do { if (local_80 == 0) { FUN_0041a390(); if (local_10 != local_6c) { operator_delete__(local_10); } return 0; } uVar7 = 0; local_80 = local_80 - 1; iVar2 = *(int *)(local_80 * 4); *(undefined4 *)(local_80 * 4) = 0; } while (*(int *)(iVar2 + 0x40) == 0); do { piVar1 = (int *)(*(int *)(iVar2 + 0x38) + uVar7 * 4); iVar3 = *piVar1; if ((iVar3 == param_2) || ((*(int *)(param_2 + 0x10) == *(int *)(iVar3 + 0x10) && (*(int *)(param_2 + 0x14) == *(int *)(iVar3 + 0x14))))) { FUN_0041a390(); if (local_10 != local_6c) { operator_delete__(local_10); } return 1; } for (piVar4 = *(int **)(local_10 + ((uint)(*(int *)(iVar3 + 0x10) + *(int *)(iVar3 + 0x14)) % local_8) * 4 ); piVar4 != (int *)0x0; piVar4 = (int *)piVar4[2]) { if ((*piVar4 == *(int *)(iVar3 + 0x10)) && (piVar4[1] == *(int *)(iVar3 + 0x14))) { if (piVar4 != (int *)0x0) goto LAB_00419eb1; break; } } cVar5 = FUN_004180a0(8); if (cVar5 != '\0') { *(int *)(local_80 * 4) = *piVar1; local_80 = local_80 + 1; } FUN_00414d80(*(int *)(*(int *)(iVar2 + 0x38) + uVar7 * 4) + 0x10); LAB_00419eb1: uVar7 = uVar7 + 1; } while (uVar7 < *(uint *)(iVar2 + 0x40)); } while( true ); } // --- FUN_00419f90 at 0x00419F90 (size: 82) --- undefined4 * __thiscall FUN_00419f90(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_007963a4; FUN_005870f0(); param_1[1] = &PTR_FUN_00795f8c; if ((undefined4 *)param_1[0x19] != param_1 + 2) { operator_delete__((undefined4 *)param_1[0x19]); } param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x1c] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_0041a1b0 at 0x0041A1B0 (size: 82) --- undefined4 * __thiscall FUN_0041a1b0(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_007963a8; FUN_0041a390(); param_1[1] = &PTR_FUN_00795f88; if ((undefined4 *)param_1[0x19] != param_1 + 2) { operator_delete__((undefined4 *)param_1[0x19]); } param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x1c] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_0041a210 at 0x0041A210 (size: 137) --- undefined4 * __fastcall FUN_0041a210(undefined4 *param_1) { undefined4 uVar1; *param_1 = &PTR_FUN_007963b0; param_1[1] = &PTR_FUN_00795f70; param_1[3] = 0; param_1[4] = 0; param_1[5] = 0; param_1[6] = 0; param_1[7] = 0x100; uVar1 = thunk_FUN_005df0f5(0x4000); param_1[2] = uVar1; param_1[6] = 0x1000; param_1[8] = &PTR_FUN_007963a8; FUN_00418a10(0); param_1[8] = &PTR_FUN_007963a8; param_1[0x25] = &PTR_FUN_007963a4; FUN_00418aa0(0); param_1[0x25] = &PTR_FUN_007963a4; *(undefined1 *)(param_1 + 0x43) = 0; param_1[0x42] = 1; return param_1; } // --- FUN_0041a2a0 at 0x0041A2A0 (size: 120) --- void __thiscall FUN_0041a2a0(int param_1,int param_2) { int iVar1; int iVar2; undefined4 *puVar3; int *piVar4; undefined1 local_c [12]; puVar3 = (undefined4 *)FUN_0052dcf0(local_c); *(undefined4 *)(param_1 + 0x70) = *puVar3; iVar1 = puVar3[2]; *(int *)(param_1 + 0x78) = iVar1; *(undefined4 *)(param_1 + 0x74) = puVar3[1]; do { if ((iVar1 == 0) || (param_2 == 0)) { return; } iVar1 = *(int *)(*(int *)(param_1 + 0x78) + 8); *(int *)(param_1 + 0x78) = iVar1; if (iVar1 == 0) { iVar1 = *(int *)(*(int *)(param_1 + 0x70) + 0x68); iVar2 = *(int *)(*(int *)(param_1 + 0x70) + 0x60); do { piVar4 = (int *)(*(int *)(param_1 + 0x74) + 4); *(int **)(param_1 + 0x74) = piVar4; if (piVar4 == (int *)(iVar2 + iVar1 * 4)) goto LAB_0041a307; } while (*piVar4 == 0); *(int *)(param_1 + 0x78) = *piVar4; } LAB_0041a307: iVar1 = *(int *)(param_1 + 0x78); param_2 = param_2 + -1; } while( true ); } // --- FUN_0041a320 at 0x0041A320 (size: 110) --- uint __thiscall FUN_0041a320(int param_1,int *param_2) { int iVar1; uint uVar2; undefined1 local_c [8]; uint local_4; FUN_00414190(local_c,param_2); if (local_4 != 0) { return local_4 & 0xffffff00; } if (*(int *)(param_1 + 0x68) * 2 < *(int *)(param_1 + 0x6c) + 1) { FUN_00418c40(); } uVar2 = (uint)(param_2[1] + *param_2) % *(uint *)(param_1 + 0x68); iVar1 = *(int *)(param_1 + 0x60); param_2[2] = *(int *)(iVar1 + uVar2 * 4); *(int **)(iVar1 + uVar2 * 4) = param_2; uVar2 = iVar1 + uVar2 * 4; if (uVar2 < *(uint *)(param_1 + 100)) { *(uint *)(param_1 + 100) = uVar2; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1; return CONCAT31((int3)(uVar2 >> 8),1); } // --- FUN_0041a390 at 0x0041A390 (size: 122) --- void __fastcall FUN_0041a390(int param_1) { int iVar1; void *pvVar2; void *pvVar3; void *pvVar4; int *piVar5; iVar1 = *(int *)(param_1 + 0x6c); do { if (iVar1 == 0) { return; } piVar5 = *(int **)(param_1 + 100); while (piVar5 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) { if (**(int **)(param_1 + 100) != 0) { piVar5 = *(int **)(param_1 + 100); pvVar4 = (void *)*piVar5; goto LAB_0041a3cf; } piVar5 = *(int **)(param_1 + 100) + 1; *(int **)(param_1 + 100) = piVar5; } piVar5 = (int *)0x0; pvVar4 = (void *)0x0; LAB_0041a3cf: pvVar3 = (void *)*piVar5; if (pvVar3 == pvVar4) { LAB_0041a3e2: *piVar5 = *(int *)((int)pvVar3 + 8); } else { do { pvVar2 = pvVar3; pvVar3 = *(void **)((int)pvVar2 + 8); } while (pvVar3 != pvVar4); if (pvVar2 == (void *)0x0) goto LAB_0041a3e2; *(undefined4 *)((int)pvVar2 + 8) = *(undefined4 *)((int)pvVar3 + 8); } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1; if (pvVar4 != (void *)0x0) { operator_delete(pvVar4); } iVar1 = *(int *)(param_1 + 0x6c); } while( true ); } // --- FUN_0041a410 at 0x0041A410 (size: 55) --- void __fastcall FUN_0041a410(undefined4 *param_1) { *param_1 = &PTR_FUN_00795f98; FUN_0041a390(); *param_1 = &PTR_FUN_00795f84; if ((undefined4 *)param_1[0x18] != param_1 + 1) { operator_delete__((undefined4 *)param_1[0x18]); } param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; return; } // --- FUN_0041a450 at 0x0041A450 (size: 131) --- char __thiscall FUN_0041a450(int param_1,void *param_2) { uint uVar1; char cVar2; uint uVar3; undefined1 local_c [8]; int local_4; cVar2 = '\0'; if ((*(int *)((int)param_2 + 4) == DAT_00837c5c) || (cVar2 = FUN_0041a320(param_2), cVar2 == '\0') ) { FUN_00414190(local_c,param_2); if (local_4 != 0) { uVar1 = *(uint *)(local_4 + 0xc); uVar3 = (uVar1 | *(uint *)((int)param_2 + 0xc)) & DAT_00837c58 | uVar1 & *(uint *)((int)param_2 + 0xc); cVar2 = uVar3 != uVar1; *(uint *)(local_4 + 0xc) = uVar3; } operator_delete(param_2); if (cVar2 == '\0') { return '\0'; } } *(int *)(param_1 + 0x70) = param_1; *(undefined4 *)(param_1 + 0x78) = 0; *(undefined4 *)(param_1 + 0x74) = 0; return cVar2; } // --- FUN_0041a4e0 at 0x0041A4E0 (size: 170) --- uint FUN_0041a4e0(undefined4 *param_1,uint param_2) { undefined4 uVar1; uint uVar2; undefined4 *puVar3; uint uVar4; undefined1 local_c [8]; int local_4; if (param_1[1] == DAT_00837c5c) { return param_1[1] & 0xffffff00; } FUN_00414190(local_c,param_1); if (local_4 != 0) { uVar4 = *(uint *)(local_4 + 0xc); uVar2 = (uVar4 | param_2) & DAT_00837c58 | uVar4 & param_2; *(uint *)(local_4 + 0xc) = uVar2; return CONCAT31((int3)(uVar2 >> 8),uVar2 != uVar4); } puVar3 = (undefined4 *)FUN_005df0f5(0x10); if (puVar3 != (undefined4 *)0x0) { *puVar3 = *param_1; uVar1 = param_1[1]; puVar3[3] = param_2; puVar3[1] = uVar1; puVar3[2] = 0; uVar4 = FUN_0041a450(puVar3); return uVar4; } uVar4 = FUN_0041a450(0); return uVar4; } // --- FUN_0041a590 at 0x0041A590 (size: 78) --- undefined4 FUN_0041a590(int *param_1,undefined4 param_2) { byte bVar1; undefined4 uVar2; uint uVar3; byte bVar4; uint uVar5; undefined4 uVar6; bVar4 = 0; uVar5 = 0; uVar3 = 0; if (param_1[2] != 0) { do { uVar6 = param_2; uVar2 = FUN_004220b0(*(undefined4 *)(*param_1 + uVar5 * 4),0); bVar1 = FUN_0041a4e0(uVar2,uVar6); bVar4 = bVar4 | bVar1; uVar3 = param_1[2]; uVar5 = uVar5 + 1; } while (uVar5 < uVar3); } return CONCAT31((int3)(uVar3 >> 8),bVar4); } // --- FUN_0041a5f0 at 0x0041A5F0 (size: 11) --- int FUN_0041a5f0(uint param_1) { return 2 - (uint)(param_1 < 2); } // --- FUN_0041a600 at 0x0041A600 (size: 64) --- undefined4 * __thiscall FUN_0041a600(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_0079645c; if ((undefined4 *)param_1[0x18] != param_1 + 1) { operator_delete__((undefined4 *)param_1[0x18]); } param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_0041a640 at 0x0041A640 (size: 143) --- undefined4 * __thiscall FUN_0041a640(undefined4 *param_1,undefined4 param_2) { undefined *puVar1; uint *puVar2; undefined4 uVar3; uint uVar4; int iVar5; undefined4 *puVar6; param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; *param_1 = &PTR_FUN_0079645c; puVar1 = PTR_DAT_00818558; puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0); if (puVar2 == (uint *)puVar1) { puVar2 = puVar2 + -1; } uVar4 = *puVar2; param_1[0x1a] = uVar4; if (uVar4 < 0x18) { param_1[0x18] = param_1 + 1; } else { uVar3 = thunk_FUN_005df0f5(uVar4 << 2); param_1[0x18] = uVar3; } param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a]; puVar6 = (undefined4 *)param_1[0x18]; for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) { *puVar6 = 0; puVar6 = puVar6 + 1; } for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) { *(undefined1 *)puVar6 = 0; puVar6 = (undefined4 *)((int)puVar6 + 1); } return param_1; } // --- FUN_0041a6d0 at 0x0041A6D0 (size: 156) --- void __fastcall FUN_0041a6d0(int param_1) { int iVar1; void *pvVar2; void *pvVar3; int *piVar4; void *pvVar5; iVar1 = *(int *)(param_1 + 0x6c); do { if (iVar1 == 0) { return; } piVar4 = *(int **)(param_1 + 100); while (piVar4 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) { if (**(int **)(param_1 + 100) != 0) { piVar4 = *(int **)(param_1 + 100); pvVar5 = (void *)*piVar4; goto LAB_0041a70f; } piVar4 = *(int **)(param_1 + 100) + 1; *(int **)(param_1 + 100) = piVar4; } piVar4 = (int *)0x0; pvVar5 = (void *)0x0; LAB_0041a70f: pvVar3 = (void *)*piVar4; if (pvVar3 == pvVar5) { LAB_0041a722: *piVar4 = *(int *)((int)pvVar3 + 4); } else { do { pvVar2 = pvVar3; pvVar3 = *(void **)((int)pvVar2 + 4); } while (pvVar3 != pvVar5); if (pvVar2 == (void *)0x0) goto LAB_0041a722; *(undefined4 *)((int)pvVar2 + 4) = *(undefined4 *)((int)pvVar3 + 4); } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1; if (pvVar5 != (void *)0x0) { if ((*(uint *)((int)pvVar5 + 0x10) & 0x80000000) == 0x80000000) { operator_delete__(*(void **)((int)pvVar5 + 0xc)); } operator_delete(pvVar5); } iVar1 = *(int *)(param_1 + 0x6c); } while( true ); } // --- FUN_0041a770 at 0x0041A770 (size: 150) --- undefined4 FUN_0041a770(undefined4 *param_1,int param_2) { char cVar1; undefined4 *puVar2; puVar2 = (undefined4 *)FUN_005df0f5(0x58); if (puVar2 == (undefined4 *)0x0) { puVar2 = (undefined4 *)0x0; } else { *puVar2 = *param_1; puVar2[1] = 0; puVar2[2] = &PTR_LAB_00795430; puVar2[3] = puVar2 + 6; puVar2[4] = 8; puVar2[5] = 0; FUN_00410a00(param_2 + 4); } cVar1 = FUN_0042bd40(puVar2); if (cVar1 == '\0') { if (puVar2 != (undefined4 *)0x0) { if ((puVar2[4] & 0x80000000) == 0x80000000) { operator_delete__((void *)puVar2[3]); } operator_delete(puVar2); } return 0; } return 1; } // --- FUN_0041a810 at 0x0041A810 (size: 247) --- uint * FUN_0041a810(uint param_1) { uint *puVar1; uint uVar2; uint *puVar3; undefined **local_50; undefined1 *local_4c; uint local_48; undefined4 local_44; undefined1 local_40 [64]; uVar2 = param_1; puVar3 = (uint *)0x0; for (puVar1 = *(uint **)(DAT_00818794 + (param_1 % DAT_0081879c) * 4); puVar1 != (uint *)0x0; puVar1 = (uint *)puVar1[1]) { if (*puVar1 == param_1) { if ((puVar1 != (uint *)0x0) && (puVar1 + 2 != (uint *)0x0)) { return puVar1 + 2; } break; } } local_4c = local_40; local_50 = &PTR_LAB_00795430; local_48 = 8; local_44 = 0; FUN_0041a770(¶m_1,&local_50); if ((local_48 & 0x80000000) == 0x80000000) { operator_delete__(local_4c); } puVar1 = *(uint **)(DAT_00818794 + (uVar2 % DAT_0081879c) * 4); do { if (puVar1 == (uint *)0x0) { LAB_0041a8ca: FUN_00410500(0x436f7265,2 - (uint)(uVar2 < 2)); FUN_00410500(0x444f626a,uVar2); FUN_00410500(0x55494c20,2 < uVar2); return puVar3; } if (*puVar1 == uVar2) { if (puVar1 != (uint *)0x0) { puVar3 = puVar1 + 2; } goto LAB_0041a8ca; } puVar1 = (uint *)puVar1[1]; } while( true ); } // --- FUN_0041a910 at 0x0041A910 (size: 82) --- undefined4 * __thiscall FUN_0041a910(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00796460; FUN_0041a6d0(); param_1[1] = &PTR_FUN_0079645c; if ((undefined4 *)param_1[0x19] != param_1 + 2) { operator_delete__((undefined4 *)param_1[0x19]); } param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x1c] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_0041a970 at 0x0041A970 (size: 26) --- undefined4 __fastcall FUN_0041a970(int param_1) { if (*(int **)(param_1 + 0x34) != (int *)0x0) { (**(code **)(**(int **)(param_1 + 0x34) + 0x14))(); *(undefined4 *)(param_1 + 0x34) = 0; } return 1; } // --- FUN_0041a9d0 at 0x0041A9D0 (size: 64) --- undefined4 * __thiscall FUN_0041a9d0(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00796464; if ((undefined4 *)param_1[0x18] != param_1 + 1) { operator_delete__((undefined4 *)param_1[0x18]); } param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_0041aa10 at 0x0041AA10 (size: 64) --- undefined4 * __thiscall FUN_0041aa10(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_00796468; if ((undefined4 *)param_1[0x18] != param_1 + 1) { operator_delete__((undefined4 *)param_1[0x18]); } param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_0041aa50 at 0x0041AA50 (size: 71) --- uint __fastcall FUN_0041aa50(undefined4 *param_1) { char *pcVar1; char cVar2; int iVar3; uint uVar4; char *pcVar5; pcVar5 = (char *)*param_1; uVar4 = 0; cVar2 = *pcVar5; while (cVar2 != '\0') { iVar3 = tolower((int)cVar2); uVar4 = uVar4 * 0x10 + (int)(char)iVar3; if ((uVar4 & 0xf0000000) != 0) { uVar4 = ((uVar4 & 0xf0000000) >> 0x18 ^ uVar4) & 0xfffffff; } pcVar1 = pcVar5 + 1; pcVar5 = pcVar5 + 1; cVar2 = *pcVar1; } return uVar4; } // --- FUN_0041aaa0 at 0x0041AAA0 (size: 42) --- void FUN_0041aaa0(undefined4 param_1,undefined4 param_2) { undefined4 uVar1; uVar1 = FUN_004220b0(param_1,0); FUN_0041a4e0(uVar1,param_2); return; } // --- FUN_0041ab00 at 0x0041AB00 (size: 72) --- bool __thiscall FUN_0041ab00(int *param_1,int *param_2) { if (*param_1 == 0) { return *param_2 != 0; } if ((*param_1 == *param_2) && (param_1[3] == param_2[3])) { return false; } return true; } // --- FUN_0041ab50 at 0x0041AB50 (size: 6) --- undefined4 __fastcall FUN_0041ab50(int param_1) { return **(undefined4 **)(param_1 + 0xc); } // --- FUN_0041ab60 at 0x0041AB60 (size: 29) --- int * __thiscall FUN_0041ab60(int param_1,int *param_2) { int iVar1; iVar1 = *(int *)(*(int *)(param_1 + 0xc) + 8); *param_2 = iVar1; InterlockedIncrement((LONG *)(iVar1 + -0x10)); return param_2; } // --- FUN_0041ab80 at 0x0041AB80 (size: 27) --- int * __thiscall FUN_0041ab80(int *param_1,int *param_2) { int iVar1; iVar1 = *param_2; *param_1 = iVar1; InterlockedIncrement((LONG *)(iVar1 + -0x10)); return param_1; } // --- FUN_0041aba0 at 0x0041ABA0 (size: 48) --- undefined4 * __thiscall FUN_0041aba0(undefined4 *param_1,undefined4 param_2) { undefined4 uVar1; *param_1 = 0; uVar1 = FUN_004220b0(param_2,0x24); uVar1 = FUN_00415430(uVar1); *param_1 = uVar1; return param_1; } // --- FUN_0041abd0 at 0x0041ABD0 (size: 48) --- undefined4 * __thiscall FUN_0041abd0(undefined4 *param_1,undefined4 param_2) { undefined4 uVar1; *param_1 = 0; uVar1 = FUN_004220b0(param_2,0x26); uVar1 = FUN_00415430(uVar1); *param_1 = uVar1; return param_1; } // --- FUN_0041ac00 at 0x0041AC00 (size: 48) --- undefined4 * __thiscall FUN_0041ac00(undefined4 *param_1,undefined4 param_2) { undefined4 uVar1; *param_1 = 0; uVar1 = FUN_004220b0(param_2,0x28); uVar1 = FUN_00415430(uVar1); *param_1 = uVar1; return param_1; } // --- FUN_0041ac30 at 0x0041AC30 (size: 47) --- undefined4 __thiscall FUN_0041ac30(int param_1,undefined4 param_2) { int local_c [3]; local_c[0] = param_1 + 0x3c; local_c[1] = 0; local_c[2] = 0; FUN_0041ac60(0,local_c); return param_2; } // --- FUN_0041ac60 at 0x0041AC60 (size: 157) --- int * __thiscall FUN_0041ac60(int *param_1,int param_2,int *param_3) { int iVar1; undefined4 uVar2; int local_38 [3]; undefined1 local_2c [16]; int local_1c; int local_18; int local_14; int local_4; *param_1 = param_2; param_1[1] = *param_3; param_1[2] = param_3[1]; param_1[3] = param_3[2]; iVar1 = *param_1; while( true ) { if (iVar1 == 0) { return param_1; } local_38[0] = *param_1 + 0x3c; local_38[1] = 0; local_38[2] = 0; FUN_0041ac60(0,local_38); if (param_1[3] != local_4) break; iVar1 = *(int *)(*param_1 + 0x34); *param_1 = iVar1; if (iVar1 != 0) { uVar2 = FUN_00429c70(local_2c); FUN_0041ac60(iVar1,uVar2); param_1[1] = local_1c; param_1[3] = local_14; param_1[2] = local_18; } iVar1 = *param_1; } return param_1; } // --- FUN_0041ad00 at 0x0041AD00 (size: 65) --- undefined4 __thiscall FUN_0041ad00(undefined4 param_1,undefined4 param_2) { undefined4 *puVar1; undefined4 local_18; undefined4 local_14; undefined4 local_10; undefined1 local_c [12]; puVar1 = (undefined4 *)FUN_0052dcf0(local_c); local_18 = *puVar1; local_14 = puVar1[1]; local_10 = puVar1[2]; FUN_0041ac60(param_1,&local_18); return param_2; } // --- FUN_0041ad50 at 0x0041AD50 (size: 212) --- int * __fastcall FUN_0041ad50(int *param_1) { int iVar1; int *piVar2; int local_38 [4]; undefined4 *local_28; undefined4 local_24; int local_1c; int local_18; int local_14; int local_4; FUN_0042cb20(local_38 + 3,0); if (*param_1 != 0) { local_38[1] = 0; local_38[2] = 0; do { local_38[0] = *param_1 + 0x3c; FUN_0041ac60(0,local_38); if (param_1[3] != local_4) { return param_1; } iVar1 = *(int *)(*param_1 + 0x34); *param_1 = iVar1; if (iVar1 != 0) { local_38[3] = iVar1 + 0x3c; piVar2 = *(int **)(iVar1 + 0xa0); while (piVar2 != (int *)(*(int *)(iVar1 + 0x9c) + *(int *)(iVar1 + 0xa4) * 4)) { if (**(int **)(iVar1 + 0xa0) != 0) { local_28 = *(undefined4 **)(iVar1 + 0xa0); local_24 = *local_28; goto LAB_0041ade3; } piVar2 = *(int **)(iVar1 + 0xa0) + 1; *(int **)(iVar1 + 0xa0) = piVar2; } local_28 = (undefined4 *)0x0; local_24 = 0; LAB_0041ade3: FUN_0041ac60(iVar1,local_38 + 3); param_1[1] = local_1c; param_1[3] = local_14; param_1[2] = local_18; } } while (*param_1 != 0); } return param_1; } // --- FUN_0041ae30 at 0x0041AE30 (size: 120) --- undefined4 __thiscall FUN_0041ae30(int param_1,uint *param_2,uint *param_3) { uint *puVar1; uint uVar2; LONG LVar3; puVar1 = *(uint **)(*(int *)(param_1 + 100) + (*param_2 % *(uint *)(param_1 + 0x6c)) * 4); while( true ) { if (puVar1 == (uint *)0x0) { return 0; } if (*puVar1 == *param_2) break; puVar1 = (uint *)puVar1[1]; } if (puVar1 == (uint *)0x0) { return 0; } uVar2 = *param_3; if (uVar2 != puVar1[2]) { LVar3 = InterlockedDecrement((LONG *)(uVar2 - 0x10)); if ((LVar3 == 0) && ((undefined4 *)(uVar2 - 0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(uVar2 - 0x14))(1); } uVar2 = puVar1[2]; *param_3 = uVar2; InterlockedIncrement((LONG *)(uVar2 - 0x10)); } return 1; } // --- FUN_0041aeb0 at 0x0041AEB0 (size: 93) --- void __thiscall FUN_0041aeb0(int param_1,int *param_2,undefined4 *param_3) { uint uVar1; int iVar2; undefined4 *puVar3; uint uVar4; int iVar5; uVar1 = *(uint *)(param_1 + 0x68); uVar4 = FUN_0041aa50(); uVar4 = uVar4 % uVar1; iVar2 = *(int *)(param_1 + 0x60); puVar3 = *(undefined4 **)(iVar2 + uVar4 * 4); while ((puVar3 != (undefined4 *)0x0 && (iVar5 = _stricmp((char *)*puVar3,(char *)*param_3), iVar5 != 0))) { puVar3 = (undefined4 *)puVar3[1]; } param_2[2] = (int)puVar3; *param_2 = param_1; param_2[1] = iVar2 + uVar4 * 4; return; } // --- FUN_0041af10 at 0x0041AF10 (size: 73) --- void __fastcall FUN_0041af10(int param_1) { undefined *puVar1; undefined4 *puVar2; undefined4 local_4; puVar1 = PTR_DAT_00818558; local_4 = *(undefined4 *)(param_1 + 0x68); puVar2 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,local_4,0); if ((puVar2 != (undefined4 *)puVar1) || (puVar2 = puVar2 + -1, puVar2 != (undefined4 *)puVar1)) { puVar2 = puVar2 + 1; } FUN_0041b570(*puVar2); return; } // --- FUN_0041af60 at 0x0041AF60 (size: 246) --- undefined1 __thiscall FUN_0041af60(int param_1,undefined4 param_2,int *param_3) { undefined *puVar1; int *piVar2; undefined *puVar3; char cVar4; undefined1 uVar5; LONG LVar6; undefined4 *puVar7; undefined *local_4; local_4 = PTR_DAT_00818344; InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10)); cVar4 = FUN_0041ae30(¶m_2,&local_4); puVar3 = local_4; piVar2 = param_3; if (cVar4 != '\0') { puVar1 = (undefined *)*param_3; if (puVar1 != local_4) { LVar6 = InterlockedDecrement((LONG *)(puVar1 + -0x10)); if ((LVar6 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar1 + -0x14))(1); } *piVar2 = (int)puVar3; InterlockedIncrement((LONG *)(puVar3 + -0x10)); } LVar6 = InterlockedDecrement((LONG *)(puVar3 + -0x10)); if ((LVar6 == 0) && ((undefined4 *)(puVar3 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar3 + -0x14))(1); } return 1; } if (*(int *)(param_1 + 0x34) != 0) { uVar5 = FUN_0041af60(param_2,param_3); puVar7 = (undefined4 *)(local_4 + -0x14); LVar6 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar6 == 0) && (puVar7 != (undefined4 *)0x0)) { (**(code **)*puVar7)(1); } return uVar5; } puVar7 = (undefined4 *)(local_4 + -0x14); LVar6 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar6 == 0) && (puVar7 != (undefined4 *)0x0)) { (**(code **)*puVar7)(1); } return 0; } // --- FUN_0041b060 at 0x0041B060 (size: 241) --- bool FUN_0041b060(undefined4 param_1,undefined4 param_2,undefined4 param_3) { char cVar1; int iVar2; uint local_8; int *local_4; FUN_00415640(&local_8,param_1,1); if (local_8 == DAT_00837c64) { return false; } iVar2 = FUN_0041c280(local_8); if (iVar2 == 0x24) { FUN_0041aba0(local_8); if (local_4 == (int *)0x0) { return false; } cVar1 = FUN_0041af60(param_2,param_3); } else { if (iVar2 == 0x26) { FUN_0041abd0(local_8); if (local_4 == (int *)0x0) { return false; } cVar1 = FUN_00415c90(param_2,param_3); (**(code **)(*local_4 + 0x14))(); return cVar1 != '\0'; } if (iVar2 != 0x28) { return false; } FUN_0041ac00(local_8); if (local_4 == (int *)0x0) { return false; } cVar1 = FUN_00415c90(param_2,param_3); } (**(code **)(*local_4 + 0x14))(); return cVar1 != '\0'; } // --- FUN_0041b160 at 0x0041B160 (size: 190) --- undefined1 FUN_0041b160(undefined4 param_1,undefined4 param_2,int *param_3) { int iVar1; undefined1 uVar2; int *piVar3; LONG LVar4; int local_8; int local_4; FUN_0040d810(&local_8,param_3); uVar2 = FUN_0041b060(param_1,param_2,&local_8); piVar3 = (int *)FUN_0040d200(&local_4,&local_8); iVar1 = *param_3; if (iVar1 != *piVar3) { LVar4 = InterlockedDecrement((LONG *)(iVar1 + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(iVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iVar1 + -0x14))(1); } iVar1 = *piVar3; *param_3 = iVar1; InterlockedIncrement((LONG *)(iVar1 + -0x10)); } LVar4 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(local_4 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_4 + -0x14))(1); } LVar4 = InterlockedDecrement((LONG *)(local_8 + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(local_8 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_8 + -0x14))(1); } return uVar2; } // --- FUN_0041b220 at 0x0041B220 (size: 150) --- bool FUN_0041b220(undefined4 param_1,undefined4 param_2,undefined4 param_3) { char cVar1; int iVar2; int *piVar3; undefined4 uVar4; iVar2 = FUN_0041c280(param_1); if (iVar2 == 0x24) { uVar4 = FUN_004220b0(param_1,0x24); piVar3 = (int *)FUN_00415430(uVar4); if (piVar3 == (int *)0x0) { return false; } cVar1 = FUN_0041af60(param_2,param_3); } else { if (iVar2 == 0x26) { uVar4 = 0x26; } else { if (iVar2 != 0x28) { return false; } uVar4 = 0x28; } uVar4 = FUN_004220b0(param_1,uVar4); piVar3 = (int *)FUN_00415430(uVar4); if (piVar3 == (int *)0x0) { return false; } cVar1 = FUN_00415c90(param_2,param_3); } (**(code **)(*piVar3 + 0x14))(); return cVar1 != '\0'; } // --- FUN_0041b2c0 at 0x0041B2C0 (size: 82) --- undefined4 * __thiscall FUN_0041b2c0(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_0079646c; FUN_00433a10(); param_1[1] = &PTR_FUN_00796468; if ((undefined4 *)param_1[0x19] != param_1 + 2) { operator_delete__((undefined4 *)param_1[0x19]); } param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x1c] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_0041b320 at 0x0041B320 (size: 143) --- undefined4 * __thiscall FUN_0041b320(undefined4 *param_1,undefined4 param_2) { undefined *puVar1; uint *puVar2; undefined4 uVar3; uint uVar4; int iVar5; undefined4 *puVar6; param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; *param_1 = &PTR_FUN_00796464; puVar1 = PTR_DAT_00818558; puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0); if (puVar2 == (uint *)puVar1) { puVar2 = puVar2 + -1; } uVar4 = *puVar2; param_1[0x1a] = uVar4; if (uVar4 < 0x18) { param_1[0x18] = param_1 + 1; } else { uVar3 = thunk_FUN_005df0f5(uVar4 << 2); param_1[0x18] = uVar3; } param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a]; puVar6 = (undefined4 *)param_1[0x18]; for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) { *puVar6 = 0; puVar6 = puVar6 + 1; } for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) { *(undefined1 *)puVar6 = 0; puVar6 = (undefined4 *)((int)puVar6 + 1); } return param_1; } // --- FUN_0041b3b0 at 0x0041B3B0 (size: 143) --- undefined4 * __thiscall FUN_0041b3b0(undefined4 *param_1,undefined4 param_2) { undefined *puVar1; uint *puVar2; undefined4 uVar3; uint uVar4; int iVar5; undefined4 *puVar6; param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; *param_1 = &PTR_FUN_00796468; puVar1 = PTR_DAT_00818558; puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0); if (puVar2 == (uint *)puVar1) { puVar2 = puVar2 + -1; } uVar4 = *puVar2; param_1[0x1a] = uVar4; if (uVar4 < 0x18) { param_1[0x18] = param_1 + 1; } else { uVar3 = thunk_FUN_005df0f5(uVar4 << 2); param_1[0x18] = uVar3; } param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a]; puVar6 = (undefined4 *)param_1[0x18]; for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) { *puVar6 = 0; puVar6 = puVar6 + 1; } for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) { *(undefined1 *)puVar6 = 0; puVar6 = (undefined4 *)((int)puVar6 + 1); } return param_1; } // --- FUN_0041b440 at 0x0041B440 (size: 77) --- void __thiscall FUN_0041b440(int param_1,int param_2) { uint uVar1; int iVar2; uint uVar3; if (*(int *)(param_1 + 0x68) * 2 < *(int *)(param_1 + 0x6c) + 1) { FUN_0041af10(); } uVar1 = *(uint *)(param_1 + 0x68); uVar3 = FUN_0041aa50(); uVar3 = uVar3 % uVar1; iVar2 = *(int *)(param_1 + 0x60); *(undefined4 *)(param_2 + 4) = *(undefined4 *)(iVar2 + uVar3 * 4); *(int *)(iVar2 + uVar3 * 4) = param_2; uVar1 = iVar2 + uVar3 * 4; if (uVar1 < *(uint *)(param_1 + 100)) { *(uint *)(param_1 + 100) = uVar1; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1; return; } // --- FUN_0041b490 at 0x0041B490 (size: 221) --- undefined4 __thiscall FUN_0041b490(int param_1,undefined4 *param_2) { LONG *lpAddend; undefined4 *puVar1; int iVar2; LONG LVar3; undefined4 uVar4; int iVar5; undefined1 local_c [8]; int local_4; iVar2 = (int)param_2; lpAddend = (LONG *)((int)param_2 + -0x10); InterlockedIncrement(lpAddend); FUN_0041aeb0(local_c,¶m_2); if (local_4 == 0) { param_2 = (undefined4 *)0x0; } else { param_2 = (undefined4 *)(local_4 + 8); } puVar1 = (undefined4 *)(iVar2 + -0x14); LVar3 = InterlockedDecrement((LONG *)(iVar2 + -0x10)); if ((LVar3 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } if (param_2 == (undefined4 *)0x0) { if (*(int *)(param_1 + 0x34) == 0) { LVar3 = InterlockedDecrement((LONG *)(iVar2 + -0x10)); if ((LVar3 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } return 0; } iVar5 = iVar2; InterlockedIncrement(lpAddend); uVar4 = FUN_0041b490(iVar5); } else { uVar4 = *param_2; } LVar3 = InterlockedDecrement((LONG *)(iVar2 + -0x10)); if ((LVar3 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } return uVar4; } // --- FUN_0041b570 at 0x0041B570 (size: 320) --- undefined4 __thiscall FUN_0041b570(int param_1,int param_2) { uint uVar1; int iVar2; int iVar3; undefined4 *puVar4; int iVar5; int iVar6; undefined4 *puVar7; uint uVar8; int iVar9; int *piVar10; iVar2 = param_2; if (param_2 == *(int *)(param_1 + 0x68)) { return 0; } iVar6 = *(int *)(param_1 + 0x6c); iVar3 = 0; do { if (iVar6 == 0) { if (*(void **)(param_1 + 0x60) != (void *)(param_1 + 4)) { operator_delete__(*(void **)(param_1 + 0x60)); } *(undefined4 *)(param_1 + 0x60) = 0; *(undefined4 *)(param_1 + 100) = 0; *(undefined4 *)(param_1 + 0x68) = 0; *(undefined4 *)(param_1 + 0x6c) = 0; FUN_00693b20(iVar2); puVar4 = (undefined4 *)PTR_DAT_00818558; iVar2 = param_2; while (iVar3 != 0) { param_2 = *(int *)(param_1 + 0x68); iVar6 = *(int *)(iVar3 + 4); PTR_DAT_00818558 = (undefined *)puVar4; if (param_2 * 2 < *(int *)(param_1 + 0x6c) + 1) { puVar7 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,puVar4,¶m_2,param_2,0); if ((puVar7 != puVar4) || (puVar7 = puVar7 + -1, puVar7 != puVar4)) { puVar7 = puVar7 + 1; } FUN_0041b570(*puVar7); iVar2 = param_2; } param_2 = iVar2; uVar1 = *(uint *)(param_1 + 0x68); uVar8 = FUN_0041aa50(); uVar8 = uVar8 % uVar1; iVar2 = *(int *)(param_1 + 0x60); *(undefined4 *)(iVar3 + 4) = *(undefined4 *)(iVar2 + uVar8 * 4); *(int *)(iVar2 + uVar8 * 4) = iVar3; uVar1 = iVar2 + uVar8 * 4; if (uVar1 < *(uint *)(param_1 + 100)) { *(uint *)(param_1 + 100) = uVar1; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1; puVar4 = (undefined4 *)PTR_DAT_00818558; iVar2 = param_2; iVar3 = iVar6; } PTR_DAT_00818558 = (undefined *)puVar4; return 1; } piVar10 = *(int **)(param_1 + 100); while (piVar10 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) { if (**(int **)(param_1 + 100) != 0) { piVar10 = *(int **)(param_1 + 100); iVar9 = *piVar10; goto LAB_0041b5bf; } piVar10 = *(int **)(param_1 + 100) + 1; *(int **)(param_1 + 100) = piVar10; } piVar10 = (int *)0x0; iVar9 = 0; LAB_0041b5bf: iVar6 = *piVar10; if (iVar6 == iVar9) { LAB_0041b5d2: *piVar10 = *(int *)(iVar6 + 4); } else { do { iVar5 = iVar6; iVar6 = *(int *)(iVar5 + 4); } while (iVar6 != iVar9); if (iVar5 == 0) goto LAB_0041b5d2; *(undefined4 *)(iVar5 + 4) = *(undefined4 *)(iVar6 + 4); } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1; *(int *)(iVar9 + 4) = iVar3; iVar6 = *(int *)(param_1 + 0x6c); iVar3 = iVar9; } while( true ); } // --- FUN_0041b6b0 at 0x0041B6B0 (size: 289) --- undefined4 __thiscall FUN_0041b6b0(int param_1,int param_2) { uint *puVar1; int iVar2; uint *puVar3; int *piVar4; undefined4 *puVar5; undefined4 *puVar6; uint *puVar7; if (param_2 == *(int *)(param_1 + 0x68)) { return 0; } iVar2 = *(int *)(param_1 + 0x6c); puVar3 = (uint *)0x0; do { if (iVar2 == 0) { if (*(void **)(param_1 + 0x60) != (void *)(param_1 + 4)) { operator_delete__(*(void **)(param_1 + 0x60)); } *(undefined4 *)(param_1 + 0x60) = 0; *(undefined4 *)(param_1 + 100) = 0; *(undefined4 *)(param_1 + 0x68) = 0; *(undefined4 *)(param_1 + 0x6c) = 0; FUN_00693b20(param_2); puVar6 = (undefined4 *)PTR_DAT_00818558; while (puVar3 != (uint *)0x0) { param_2 = *(int *)(param_1 + 0x68); puVar7 = (uint *)puVar3[1]; PTR_DAT_00818558 = (undefined *)puVar6; if (param_2 * 2 < *(int *)(param_1 + 0x6c) + 1) { puVar5 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,puVar6,¶m_2,param_2,0); if ((puVar5 != puVar6) || (puVar5 = puVar5 + -1, puVar5 != puVar6)) { puVar5 = puVar5 + 1; } FUN_0041b6b0(*puVar5); } puVar1 = (uint *)(*(int *)(param_1 + 0x60) + (*puVar3 % *(uint *)(param_1 + 0x68)) * 4); puVar3[1] = *puVar1; *puVar1 = (uint)puVar3; if (puVar1 < *(uint **)(param_1 + 100)) { *(uint **)(param_1 + 100) = puVar1; } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1; puVar6 = (undefined4 *)PTR_DAT_00818558; puVar3 = puVar7; } PTR_DAT_00818558 = (undefined *)puVar6; return 1; } piVar4 = *(int **)(param_1 + 100); while (piVar4 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) { if (**(int **)(param_1 + 100) != 0) { puVar6 = *(undefined4 **)(param_1 + 100); puVar7 = (uint *)*puVar6; goto LAB_0041b701; } piVar4 = *(int **)(param_1 + 100) + 1; *(int **)(param_1 + 100) = piVar4; } puVar6 = (undefined4 *)0x0; puVar7 = (uint *)0x0; LAB_0041b701: FUN_00428ba0(param_1,puVar6,puVar7); puVar7[1] = (uint)puVar3; iVar2 = *(int *)(param_1 + 0x6c); puVar3 = puVar7; } while( true ); } // --- FUN_0041b7e0 at 0x0041B7E0 (size: 259) --- uint __thiscall FUN_0041b7e0(int param_1,int param_2,undefined4 *param_3) { undefined4 *puVar1; int iVar2; undefined1 uVar3; LONG LVar4; int iVar5; undefined4 *puVar6; undefined1 local_c [8]; int local_4; iVar2 = param_2; puVar1 = (undefined4 *)(param_2 + -0x14); InterlockedIncrement((LONG *)(param_2 + -0x10)); FUN_0041aeb0(local_c,¶m_2); if (local_4 == 0) { param_2 = (uint)param_2._1_3_ << 8; } else { *param_3 = *(undefined4 *)(local_4 + 8); param_2 = CONCAT31(param_2._1_3_,1); } LVar4 = InterlockedDecrement((LONG *)(iVar2 + -0x10)); if ((LVar4 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } if ((char)param_2 != '\0') { LVar4 = InterlockedDecrement((LONG *)(iVar2 + -0x10)); if ((LVar4 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } return 1; } if (*(int *)(param_1 + 0x34) != 0) { iVar5 = iVar2; puVar6 = param_3; InterlockedIncrement((LONG *)(iVar2 + -0x10)); uVar3 = FUN_0041b7e0(iVar5,puVar6); param_3 = (undefined4 *)CONCAT31(param_3._1_3_,uVar3); LVar4 = InterlockedDecrement((LONG *)(iVar2 + -0x10)); if ((LVar4 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } return (uint)param_3 & 0xff; } LVar4 = InterlockedDecrement((LONG *)(iVar2 + -0x10)); if ((LVar4 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } return 0; } // --- FUN_0041b8f0 at 0x0041B8F0 (size: 320) --- bool FUN_0041b8f0(undefined4 param_1,int param_2,undefined4 param_3) { char cVar1; LONG LVar2; int iVar3; undefined4 *puVar4; bool bVar5; undefined4 uVar6; int local_8; int *local_4; bVar5 = false; FUN_00415640(&local_8,param_1,1); if (local_8 == DAT_00837c64) { puVar4 = (undefined4 *)(param_2 + -0x14); LVar2 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } return false; } iVar3 = FUN_0041c280(local_8); if (iVar3 == 0x24) { FUN_0041aba0(local_8); if (local_4 == (int *)0x0) goto LAB_0041ba07; iVar3 = param_2; uVar6 = param_3; InterlockedIncrement((LONG *)(param_2 + -0x10)); cVar1 = FUN_0041b7e0(iVar3,uVar6); } else { if (iVar3 != 0x26) { if ((iVar3 == 0x28) && (FUN_0041ac00(local_8), local_4 != (int *)0x0)) { cVar1 = FUN_004159d0(¶m_2,param_3); bVar5 = cVar1 != '\0'; (**(code **)(*local_4 + 0x14))(); } goto LAB_0041ba07; } FUN_0041abd0(local_8); if (local_4 == (int *)0x0) goto LAB_0041ba07; cVar1 = FUN_004159d0(¶m_2,param_3); } bVar5 = cVar1 != '\0'; (**(code **)(*local_4 + 0x14))(); LAB_0041ba07: puVar4 = (undefined4 *)(param_2 + -0x14); LVar2 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } return bVar5; } // --- FUN_0041ba30 at 0x0041BA30 (size: 136) --- undefined1 FUN_0041ba30(undefined4 param_1,int param_2,undefined4 param_3) { undefined1 uVar1; LONG LVar2; undefined4 *puVar3; int iVar4; undefined4 uVar5; int local_4; FUN_0040d810(&local_4,¶m_2); iVar4 = local_4; uVar5 = param_3; InterlockedIncrement((LONG *)(local_4 + -0x10)); uVar1 = FUN_0041b8f0(param_1,iVar4,uVar5); LVar2 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(local_4 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_4 + -0x14))(1); } puVar3 = (undefined4 *)(param_2 + -0x14); LVar2 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar2 == 0) && (puVar3 != (undefined4 *)0x0)) { (**(code **)*puVar3)(1); } return uVar1; } // --- FUN_0041bac0 at 0x0041BAC0 (size: 284) --- bool FUN_0041bac0(undefined4 param_1,int param_2,undefined4 param_3) { char cVar1; int iVar2; undefined4 uVar3; int *piVar4; LONG LVar5; undefined4 *puVar6; bool bVar7; bVar7 = false; iVar2 = FUN_0041c280(param_1); if (iVar2 == 0x24) { uVar3 = FUN_004220b0(param_1,0x24); piVar4 = (int *)FUN_00415430(uVar3); if (piVar4 != (int *)0x0) { iVar2 = param_2; uVar3 = param_3; InterlockedIncrement((LONG *)(param_2 + -0x10)); cVar1 = FUN_0041b7e0(iVar2,uVar3); bVar7 = cVar1 != '\0'; (**(code **)(*piVar4 + 0x14))(); } } else if (iVar2 == 0x26) { uVar3 = FUN_004220b0(param_1,0x26); piVar4 = (int *)FUN_00415430(uVar3); if (piVar4 != (int *)0x0) { cVar1 = FUN_004159d0(¶m_2,param_3); bVar7 = cVar1 != '\0'; (**(code **)(*piVar4 + 0x14))(); } } else if (iVar2 == 0x28) { uVar3 = FUN_004220b0(param_1,0x28); piVar4 = (int *)FUN_00415430(uVar3); if (piVar4 != (int *)0x0) { cVar1 = FUN_004159d0(¶m_2,param_3); bVar7 = cVar1 != '\0'; (**(code **)(*piVar4 + 0x14))(); } } puVar6 = (undefined4 *)(param_2 + -0x14); LVar5 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar5 == 0) && (puVar6 != (undefined4 *)0x0)) { (**(code **)*puVar6)(1); } return bVar7; } // --- FUN_0041bbe0 at 0x0041BBE0 (size: 143) --- undefined4 FUN_0041bbe0(int *param_1,int *param_2) { int iVar1; int *piVar2; undefined1 local_c [8]; int local_4; FUN_0041aeb0(local_c,param_1); if (local_4 != 0) { *(int *)(local_4 + 8) = *param_2; return 1; } piVar2 = (int *)FUN_005df0f5(0xc); if (piVar2 == (int *)0x0) { piVar2 = (int *)0x0; } else { iVar1 = *param_1; *piVar2 = iVar1; InterlockedIncrement((LONG *)(iVar1 + -0x10)); piVar2[1] = 0; piVar2[2] = *param_2; } FUN_0041aeb0(local_c,piVar2); if (local_4 == 0) { FUN_0041b440(piVar2); } return 1; } // --- FUN_0041bc70 at 0x0041BC70 (size: 67) --- void FUN_0041bc70(undefined4 param_1) { undefined *puVar1; undefined4 *puVar2; puVar1 = PTR_DAT_00818558; puVar2 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_1,param_1,0); if (puVar2 == (undefined4 *)puVar1) { puVar2 = puVar2 + -1; } FUN_0041b6b0(*puVar2); return; } // --- FUN_0041bcc0 at 0x0041BCC0 (size: 542) --- void FUN_0041bcc0(undefined4 param_1,int param_2,uint param_3) { int iVar1; undefined *puVar2; undefined *puVar3; uint uVar4; char cVar5; undefined *puVar6; byte *pbVar7; int *piVar8; undefined4 *puVar9; LONG *lpAddend; undefined4 *puVar10; uint uVar11; undefined4 *puVar12; undefined1 local_c [12]; uVar4 = param_3; if ((~*(byte *)(param_3 + 4) & 1) != 0) { FUN_005c2c80(); } puVar3 = PTR_DAT_00818558; puVar2 = PTR_DAT_00818554; if (((byte)*(undefined4 *)(uVar4 + 4) & 5) == 1) { param_3 = *(uint *)(param_2 + 0x68); puVar6 = (undefined *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_3,param_3,0); if (puVar6 == puVar3) { puVar6 = puVar6 + -4; } uVar11 = (int)puVar6 - (int)puVar2 >> 2; } else { uVar11 = param_3 & 0xff; } FUN_0040ad10(1); pbVar7 = (byte *)FUN_0040acf0(1); if (pbVar7 != (byte *)0x0) { if ((*(byte *)(uVar4 + 4) & 1) == 0) { uVar11 = (uint)*pbVar7; } else { *pbVar7 = (byte)uVar11; } } if ((*(byte *)(uVar4 + 4) & 5) == 0) { if ((uVar11 & 0xff) < DAT_007956cc) { FUN_0041bc70(*(undefined4 *)(PTR_DAT_00818554 + (uVar11 & 0xff) * 4)); } else { FUN_0040aa50(); } } if (((byte)*(undefined4 *)(uVar4 + 4) & 5) == 1) { param_3 = *(uint *)(param_2 + 0x6c); } FUN_00401a80(¶m_3,¶m_3,uVar4); if (((byte)*(undefined4 *)(uVar4 + 4) & 5) == 1) { piVar8 = (int *)FUN_0052dcf0(local_c); iVar1 = *piVar8; puVar12 = (undefined4 *)piVar8[1]; puVar9 = (undefined4 *)piVar8[2]; LAB_0041bdc2: puVar10 = puVar9; if (puVar9 != (undefined4 *)0x0) { do { FUN_0040ad10(4); puVar9 = (undefined4 *)FUN_0040acf0(4); if (puVar9 != (undefined4 *)0x0) { if ((*(byte *)(uVar4 + 4) & 1) == 0) { *puVar10 = *puVar9; } else { *puVar9 = *puVar10; } } FUN_00402400(uVar4); puVar10 = (undefined4 *)puVar10[1]; } while (puVar10 != (undefined4 *)0x0); do { puVar12 = puVar12 + 1; puVar9 = puVar10; if (puVar12 == (undefined4 *)(*(int *)(iVar1 + 0x60) + *(int *)(iVar1 + 0x68) * 4)) break; puVar9 = (undefined4 *)*puVar12; } while (puVar9 == (undefined4 *)0x0); goto LAB_0041bdc2; } } if ((*(byte *)(uVar4 + 4) & 5) == 0) { uVar11 = FUN_0040a8f0(); if (uVar11 < param_3) { LAB_0041becf: FUN_0040aa50(); } else { uVar11 = 0; puVar12 = (undefined4 *)0x0; if (param_3 != 0) { while( true ) { puVar9 = (undefined4 *)FUN_005df0f5(0xc); if (puVar9 == (undefined4 *)0x0) { puVar9 = (undefined4 *)0x0; } else { puVar9[1] = 0; lpAddend = (LONG *)(PTR_DAT_00818344 + -0x10); puVar9[2] = PTR_DAT_00818344; InterlockedIncrement(lpAddend); } FUN_0040ad10(4); puVar10 = (undefined4 *)FUN_0040acf0(4); if (puVar10 != (undefined4 *)0x0) { if ((*(byte *)(uVar4 + 4) & 1) == 0) { *puVar9 = *puVar10; } else { *puVar10 = *puVar9; } } FUN_00402400(uVar4); if ((*(uint *)(uVar4 + 4) >> 2 & 1) != 0) break; cVar5 = FUN_00599310(puVar9,puVar12); if (cVar5 == '\0') goto LAB_0041becf; uVar11 = uVar11 + 1; puVar12 = puVar9; if (param_3 <= uVar11) { return; } } } } } return; } // --- FUN_0041bee0 at 0x0041BEE0 (size: 63) --- void __fastcall FUN_0041bee0(int param_1) { FUN_00433a10(); FUN_00415e50(); if (*(int **)(param_1 + 0x34) != (int *)0x0) { (**(code **)(**(int **)(param_1 + 0x34) + 0x14))(); *(undefined4 *)(param_1 + 0x34) = 0; *(undefined4 *)(param_1 + 0x30) = DAT_00837c64; return; } *(undefined4 *)(param_1 + 0x30) = DAT_00837c64; return; } // --- FUN_0041bf20 at 0x0041BF20 (size: 82) --- undefined4 * __thiscall FUN_0041bf20(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_007964c8; FUN_00415e50(); param_1[1] = &PTR_FUN_00796464; if ((undefined4 *)param_1[0x19] != param_1 + 2) { operator_delete__((undefined4 *)param_1[0x19]); } param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x1c] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_0041bf80 at 0x0041BF80 (size: 180) --- void __fastcall FUN_0041bf80(undefined4 *param_1) { *param_1 = &PTR_LAB_00796470; FUN_00433a10(); FUN_00415e50(); if ((int *)param_1[0xd] != (int *)0x0) { (**(code **)(*(int *)param_1[0xd] + 0x14))(); param_1[0xd] = 0; } param_1[0xc] = DAT_00837c64; param_1[0x2b] = &PTR_FUN_0079646c; FUN_00433a10(); param_1[0x2c] = &PTR_FUN_00796468; if ((undefined4 *)param_1[0x44] != param_1 + 0x2d) { operator_delete__((undefined4 *)param_1[0x44]); } param_1[0x44] = 0; param_1[0x45] = 0; param_1[0x46] = 0; param_1[0x47] = 0; param_1[0xe] = &PTR_FUN_007964c8; FUN_00415e50(); param_1[0xf] = &PTR_FUN_00796464; if ((undefined4 *)param_1[0x27] != param_1 + 0x10) { operator_delete__((undefined4 *)param_1[0x27]); } param_1[0x27] = 0; param_1[0x28] = 0; param_1[0x29] = 0; param_1[0x2a] = 0; FUN_004154b0(); return; } // --- FUN_0041c050 at 0x0041C050 (size: 97) --- undefined4 * __fastcall FUN_0041c050(undefined4 *param_1) { FUN_00415460(DAT_00837c64); *param_1 = &PTR_LAB_00796470; param_1[0xc] = DAT_00837c64; param_1[0xd] = 0; param_1[0xe] = &PTR_FUN_007964c8; FUN_0041b320(0); param_1[0xe] = &PTR_FUN_007964c8; param_1[0x2b] = &PTR_FUN_0079646c; FUN_0041b3b0(0); param_1[0x2b] = &PTR_FUN_0079646c; return param_1; } // --- FUN_0041c0c0 at 0x0041C0C0 (size: 30) --- void * __thiscall FUN_0041c0c0(void *param_1,byte param_2) { FUN_0041bf80(); if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_0041c220 at 0x0041C220 (size: 30) --- uint FUN_0041c220(undefined4 *param_1) { uint in_EAX; uint uVar1; if ((param_1 != (undefined4 *)0x0) && (in_EAX = (uint)DAT_00837c68, DAT_00837c68 == (undefined4 *)0x0)) { DAT_00837c68 = param_1; /* WARNING: Could not recover jumptable at 0x0041c239. Too many branches */ /* WARNING: Treating indirect jump as call */ uVar1 = (**(code **)*param_1)(); return uVar1; } return in_EAX & 0xffffff00; } // --- FUN_0041c240 at 0x0041C240 (size: 27) --- undefined4 FUN_0041c240(void) { operator_delete(DAT_00837c68); DAT_00837c68 = (void *)0x0; return 1; } // --- FUN_0041c260 at 0x0041C260 (size: 24) --- undefined4 FUN_0041c260(undefined4 param_1) { undefined4 uVar1; if (DAT_00837c68 != (int *)0x0) { uVar1 = (**(code **)(*DAT_00837c68 + 4))(param_1); return uVar1; } return 0; } // --- FUN_0041c280 at 0x0041C280 (size: 24) --- undefined4 FUN_0041c280(undefined4 param_1) { undefined4 uVar1; if (DAT_00837c68 != (int *)0x0) { uVar1 = (**(code **)(*DAT_00837c68 + 8))(param_1); return uVar1; } return 0; } // --- FUN_0041c2a0 at 0x0041C2A0 (size: 64) --- undefined4 * __thiscall FUN_0041c2a0(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_007964cc; if ((undefined4 *)param_1[0x18] != param_1 + 1) { operator_delete__((undefined4 *)param_1[0x18]); } param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_0041c2e0 at 0x0041C2E0 (size: 79) --- void FUN_0041c2e0(int *param_1) { undefined4 *puVar1; LONG LVar2; if (DAT_00837c70 != *param_1) { puVar1 = (undefined4 *)(DAT_00837c70 + -0x14); LVar2 = InterlockedDecrement((LONG *)(DAT_00837c70 + -0x10)); if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } DAT_00837c70 = *param_1; InterlockedIncrement((LONG *)(DAT_00837c70 + -0x10)); } thunk_FUN_0040deb0(&DAT_00837c70,0); return; } // --- FUN_0041c330 at 0x0041C330 (size: 79) --- void FUN_0041c330(int *param_1) { undefined4 *puVar1; LONG LVar2; if (DAT_00837c74 != *param_1) { puVar1 = (undefined4 *)(DAT_00837c74 + -0x14); LVar2 = InterlockedDecrement((LONG *)(DAT_00837c74 + -0x10)); if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } DAT_00837c74 = *param_1; InterlockedIncrement((LONG *)(DAT_00837c74 + -0x10)); } thunk_FUN_0040deb0(&DAT_00837c74,0); return; } // --- FUN_0041c380 at 0x0041C380 (size: 116) --- undefined4 * __fastcall FUN_0041c380(undefined4 *param_1) { LONG *lpAddend; *param_1 = DAT_00837c6c; param_1[1] = DAT_00837c6c; param_1[2] = 0; param_1[3] = 0; param_1[4] = 0; param_1[5] = 0; param_1[6] = 0; *(undefined1 *)(param_1 + 7) = 0; *(undefined1 *)((int)param_1 + 0x1d) = 0; *(undefined1 *)((int)param_1 + 0x1e) = 0; *(undefined1 *)((int)param_1 + 0x1f) = 0; lpAddend = (LONG *)(PTR_DAT_00818344 + -0x10); param_1[8] = PTR_DAT_00818344; InterlockedIncrement(lpAddend); *(undefined1 *)(param_1 + 9) = 0; *(undefined1 *)((int)param_1 + 0x25) = 0; *(undefined1 *)((int)param_1 + 0x26) = 0; *(undefined1 *)((int)param_1 + 0x27) = 0; *(undefined1 *)(param_1 + 10) = 0; *(undefined1 *)((int)param_1 + 0x29) = 0; *(undefined1 *)((int)param_1 + 0x2a) = 0; *(undefined1 *)(param_1 + 0xb) = 0; *(undefined1 *)((int)param_1 + 0x2d) = 0; param_1[0xc] = 0x10; param_1[0xd] = 0x10; return param_1; } // --- FUN_0041c400 at 0x0041C400 (size: 114) --- uint * FUN_0041c400(uint param_1) { uint *puVar1; if ((DAT_00837cb0 & 1) == 0) { DAT_00837cb0 = DAT_00837cb0 | 1; FUN_0041c380(); _atexit((_func_4879 *)&LAB_00727fc0); } puVar1 = *(uint **)(DAT_0081880c + (param_1 % DAT_00818814) * 4); if (puVar1 != (uint *)0x0) { while (*puVar1 != param_1) { puVar1 = (uint *)puVar1[1]; if (puVar1 == (uint *)0x0) { return (uint *)&DAT_00837c78; } } if ((puVar1 != (uint *)0x0) && (puVar1 + 2 != (uint *)0x0)) { return puVar1 + 2; } } return (uint *)&DAT_00837c78; } // --- FUN_0041c480 at 0x0041C480 (size: 17) --- undefined1 FUN_0041c480(undefined4 param_1) { int iVar1; iVar1 = FUN_0041c400(param_1); return *(undefined1 *)(iVar1 + 0x1d); } // --- FUN_0041c4a0 at 0x0041C4A0 (size: 17) --- undefined1 FUN_0041c4a0(undefined4 param_1) { int iVar1; iVar1 = FUN_0041c400(param_1); return *(undefined1 *)(iVar1 + 0x1e); } // --- FUN_0041c4c0 at 0x0041C4C0 (size: 17) --- undefined1 FUN_0041c4c0(undefined4 param_1) { int iVar1; iVar1 = FUN_0041c400(param_1); return *(undefined1 *)(iVar1 + 0x1f); } // --- FUN_0041c4e0 at 0x0041C4E0 (size: 17) --- undefined1 FUN_0041c4e0(undefined4 param_1) { int iVar1; iVar1 = FUN_0041c400(param_1); return *(undefined1 *)(iVar1 + 0x29); } // --- FUN_0041c500 at 0x0041C500 (size: 17) --- int FUN_0041c500(undefined4 param_1) { int iVar1; iVar1 = FUN_0041c400(param_1); return iVar1 + 0x2c; } // --- FUN_0041c520 at 0x0041C520 (size: 332) --- undefined1 FUN_0041c520(char *param_1,undefined4 param_2) { int iVar1; LONG LVar2; char *_Str1; char *_Str1_00; char *pcVar3; undefined1 local_9; char *local_8; char *local_4; iVar1 = FUN_0041c400(param_2); _Str1 = *(char **)(iVar1 + 0x20); if (*(int *)(_Str1 + -4) == 1) { InterlockedIncrement((LONG *)(_Str1 + -0x10)); } else { FUN_0040bbc0(&local_4,(int *)(iVar1 + 0x20)); _Str1 = local_4; } iVar1 = FUN_0041c400(param_2); _Str1_00 = *(char **)(iVar1 + 0x20); if (*(int *)(_Str1_00 + -4) == 1) { InterlockedIncrement((LONG *)(_Str1_00 + -0x10)); } else { FUN_0040bbc0(&local_4,(int *)(iVar1 + 0x20)); _Str1_00 = local_4; } local_8 = param_1; InterlockedIncrement((LONG *)(param_1 + -0x10)); thunk_FUN_0040deb0(&local_8,0); iVar1 = _strnicmp(_Str1,local_8,*(int *)(_Str1 + -4) - 1); if (iVar1 != 0) { iVar1 = _strnicmp(_Str1_00,local_8,*(int *)(_Str1_00 + -4) - 1); local_9 = 0; if (iVar1 != 0) goto LAB_0041c5ee; } local_9 = 1; LAB_0041c5ee: pcVar3 = local_8 + -0x14; LVar2 = InterlockedDecrement((LONG *)(local_8 + -0x10)); if ((LVar2 == 0) && (pcVar3 != (char *)0x0)) { (*(code *)**(undefined4 **)pcVar3)(1); } LVar2 = InterlockedDecrement((LONG *)(_Str1_00 + -0x10)); if ((LVar2 == 0) && (_Str1_00 + -0x14 != (char *)0x0)) { (*(code *)**(undefined4 **)(_Str1_00 + -0x14))(1); } LVar2 = InterlockedDecrement((LONG *)(_Str1 + -0x10)); if ((LVar2 == 0) && (_Str1 + -0x14 != (char *)0x0)) { (*(code *)**(undefined4 **)(_Str1 + -0x14))(1); } LVar2 = InterlockedDecrement((LONG *)(param_1 + -0x10)); if ((LVar2 == 0) && (param_1 + -0x14 != (char *)0x0)) { (*(code *)**(undefined4 **)(param_1 + -0x14))(1); } return local_9; } // --- FUN_0041c670 at 0x0041C670 (size: 143) --- undefined4 * __thiscall FUN_0041c670(undefined4 *param_1,undefined4 param_2) { undefined *puVar1; uint *puVar2; undefined4 uVar3; uint uVar4; int iVar5; undefined4 *puVar6; param_1[0x18] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; *param_1 = &PTR_FUN_007964cc; puVar1 = PTR_DAT_00818558; puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0); if (puVar2 == (uint *)puVar1) { puVar2 = puVar2 + -1; } uVar4 = *puVar2; param_1[0x1a] = uVar4; if (uVar4 < 0x18) { param_1[0x18] = param_1 + 1; } else { uVar3 = thunk_FUN_005df0f5(uVar4 << 2); param_1[0x18] = uVar3; } param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a]; puVar6 = (undefined4 *)param_1[0x18]; for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) { *puVar6 = 0; puVar6 = puVar6 + 1; } for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) { *(undefined1 *)puVar6 = 0; puVar6 = (undefined4 *)((int)puVar6 + 1); } return param_1; } // --- FUN_0041c700 at 0x0041C700 (size: 271) --- void __fastcall FUN_0041c700(int param_1) { int iVar1; void *pvVar2; void *pvVar3; LONG LVar4; int *piVar5; void *pvVar6; undefined4 *puVar7; int iVar8; int local_8; iVar1 = *(int *)(param_1 + 0x6c); do { if (iVar1 == 0) { return; } piVar5 = *(int **)(param_1 + 100); while (piVar5 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) { if (**(int **)(param_1 + 100) != 0) { piVar5 = *(int **)(param_1 + 100); pvVar6 = (void *)*piVar5; goto LAB_0041c741; } piVar5 = *(int **)(param_1 + 100) + 1; *(int **)(param_1 + 100) = piVar5; } piVar5 = (int *)0x0; pvVar6 = (void *)0x0; LAB_0041c741: pvVar3 = (void *)*piVar5; if (pvVar3 == pvVar6) { LAB_0041c754: *piVar5 = *(int *)((int)pvVar3 + 4); } else { do { pvVar2 = pvVar3; pvVar3 = *(void **)((int)pvVar2 + 4); } while (pvVar3 != pvVar6); if (pvVar2 == (void *)0x0) goto LAB_0041c754; *(undefined4 *)((int)pvVar2 + 4) = *(undefined4 *)((int)pvVar3 + 4); } *(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1; if (pvVar6 != (void *)0x0) { puVar7 = (undefined4 *)(*(int *)((int)pvVar6 + 0x28) + -0x14); LVar4 = InterlockedDecrement((LONG *)(*(int *)((int)pvVar6 + 0x28) + -0x10)); if ((LVar4 == 0) && (puVar7 != (undefined4 *)0x0)) { (**(code **)*puVar7)(1); } if (((*(uint *)((int)pvVar6 + 0x14) & 0x80000000) == 0x80000000) && (iVar1 = *(int *)((int)pvVar6 + 0x10), iVar1 != 0)) { local_8 = *(int *)(iVar1 + -4); iVar8 = iVar1 + local_8 * 4; if (-1 < local_8 + -1) { do { piVar5 = (int *)(iVar8 + -4); iVar8 = iVar8 + -4; puVar7 = (undefined4 *)(*piVar5 + -0x14); LVar4 = InterlockedDecrement((LONG *)(*piVar5 + -0x10)); if ((LVar4 == 0) && (puVar7 != (undefined4 *)0x0)) { (**(code **)*puVar7)(1); } local_8 = local_8 + -1; } while (local_8 != 0); } operator_delete__((void *)(iVar1 + -4)); } operator_delete(pvVar6); } iVar1 = *(int *)(param_1 + 0x6c); } while( true ); } // --- FUN_0041c820 at 0x0041C820 (size: 82) --- undefined4 * __thiscall FUN_0041c820(undefined4 *param_1,byte param_2) { *param_1 = &PTR_FUN_007964d0; FUN_0041c700(); param_1[1] = &PTR_FUN_007964cc; if ((undefined4 *)param_1[0x19] != param_1 + 2) { operator_delete__((undefined4 *)param_1[0x19]); } param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x1c] = 0; if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_0041c880 at 0x0041C880 (size: 1087) --- int FUN_0041c880(uint param_1) { if (param_1 < 0x14010000) { if (0x13ffffff < param_1) { return 0x1d; } if (param_1 < 0xe00000e) { if (0xe00000c < param_1) { return 0x12; } if (param_1 < 0x8000000) { if (0x5ffffff < param_1) { return 0xc; } if (param_1 < 0x3010000) { if (0x2ffffff < param_1) { return 8; } if (param_1 < 0x2010000) { if (0x1ffffff < param_1) { return 7; } if (param_1 < 0x1010000) { return (-(uint)(param_1 < 0x1000000) & 0xfffffffa) + 6; } } } else if (param_1 < 0x6000000) { if (0x4ffffff < param_1) { return 0xb; } if (param_1 < 0x4010000) { return (-(uint)(param_1 < 0x4000000) & 0xfffffff6) + 10; } } } else if (param_1 < 0xa010000) { if (0x9ffffff < param_1) { return 0xf; } if (param_1 < 0x9010000) { if (0x8ffffff < param_1) { return 0xe; } if (param_1 < 0x8010000) { return (-(uint)(param_1 < 0x8000000) & 0xfffffff3) + 0xd; } } } else if (param_1 < 0xe000008) { if (0xe000006 < param_1) { return 0x11; } if (param_1 < 0xd010000) { return (-(uint)(param_1 < 0xd000000) & 0xfffffff0) + 0x10; } } } else if (param_1 < 0xf010000) { if (0xeffffff < param_1) { return 0x18; } if (param_1 < 0xe000020) { if (0xe00001e < param_1) { return 0x15; } if (param_1 < 0xe00001f) { if (0xe00001d < param_1) { return 0x14; } if (param_1 < 0xe00001b) { return (-(uint)(param_1 < 0xe00001a) & 0xffffffed) + 0x13; } } } else if (param_1 < 0xe030000) { if (0xe01ffff < param_1) { return 0x17; } if (param_1 < 0xe000021) { return (-(uint)(param_1 < 0xe000020) & 0xffffffea) + 0x16; } } } else if (param_1 < 0x12010000) { if (0x11ffffff < param_1) { return 0x1b; } if (param_1 < 0x11010000) { if (0x10ffffff < param_1) { return 0x1a; } if (param_1 < 0x10010000) { return (-(uint)(param_1 < 0x10000000) & 0xffffffe7) + 0x19; } } } else if (param_1 < 0x13010000) { return (-(uint)(param_1 < 0x13000000) & 0xffffffe4) + 0x1c; } } else if (param_1 < 0x26010000) { if (0x25ffffff < param_1) { return 0x27; } if (param_1 < 0x20010000) { if (0x1fffffff < param_1) { return 0x22; } if (param_1 < 0x18000000) { if (0x16ffffff < param_1) { return 0x20; } if (param_1 < 0x17000000) { if (0x15ffffff < param_1) { return 0x1f; } if (param_1 < 0x16000000) { return (-(uint)(param_1 < 0x15000000) & 0xffffffe2) + 0x1e; } } } else if (param_1 < 0x1a000000) { if (0x18ffffff < param_1) { return 0x43; } if (param_1 < 0x19000000) { return (-(uint)(param_1 < 0x18000000) & 0xffffffdf) + 0x21; } } } else if (param_1 < 0x25000000) { if (0x22ffffff < param_1) { return 0x25; } if (param_1 < 0x23000000) { if (0x21ffffff < param_1) { return 0x24; } if (param_1 < 0x22000000) { return (-(uint)(param_1 < 0x21000000) & 0xffffffdd) + 0x23; } } } else if (param_1 < 0x26000000) { return (-(uint)(param_1 < 0x25000000) & 0xffffffda) + 0x26; } } else if (param_1 < 0x3a000000) { if (0x38ffffff < param_1) { return 0x2d; } if (param_1 < 0x32010000) { if (0x31ffffff < param_1) { return 0x2a; } if (param_1 < 0x31010000) { if (0x30ffffff < param_1) { return 0x29; } if (param_1 < 0x28000000) { return (-(uint)(param_1 < 0x27000000) & 0xffffffd8) + 0x28; } } } else if (param_1 < 0x34010000) { if (0x33ffffff < param_1) { return 0x2c; } if (param_1 < 0x33010000) { return (-(uint)(param_1 < 0x33000000) & 0xffffffd5) + 0x2b; } } } else if (param_1 < 0x42000000) { if (0x40ffffff < param_1) { return 0x30; } if (param_1 < 0x41000000) { if (0x40000fff < param_1) { return 0x2f; } if (param_1 < 0x40001000) { return (-(uint)(param_1 < 0x40000000) & 0xffffffd2) + 0x2e; } } } else if (param_1 < 0x80000000) { return (-(uint)(param_1 < 0x78000000) & 0xffffffcf) + 0x31; } return 0; } // --- FUN_0041ccc0 at 0x0041CCC0 (size: 22) --- void __fastcall FUN_0041ccc0(undefined4 *param_1) { FUN_004080c0(); _strlwr((char *)*param_1); return; } // --- FUN_0041cce0 at 0x0041CCE0 (size: 5085) --- undefined4 FUN_0041cce0(undefined4 param_1) { char *pcVar1; uint uVar2; int iVar3; LONG LVar4; char *local_e4; char *local_e0; char *local_dc; char *local_d8; char *local_d4; char *local_d0; char *local_cc; char *local_c8; char *local_c4; char *local_c0; char *local_bc; char *local_b8; char *local_b4; char *local_b0; char *local_ac; char *local_a8; char *local_a4; char *local_a0; char *local_9c; char *local_98; char *local_94; char *local_90; char *local_8c; char *local_88; char *local_84; char *local_80; char *local_7c; char *local_78; char *local_74; char *local_70; char *local_6c; char *local_68; char *local_64; char *local_60; char *local_5c; char *local_58; char *local_54; char *local_50; char *local_4c; char *local_48; char *local_44; char *local_40; char *local_3c; char *local_38; char *local_34; char *local_30; char *local_2c; char *local_28; char *local_24; char *local_20; char *local_1c; char *local_18; char *local_14; char *local_10; char *local_c; char *local_8; char *local_4; FUN_0040ce00(&local_e4,param_1); FUN_004080c0(); _strlwr(local_e4); pcVar1 = local_e4; uVar2 = *(uint *)(local_e4 + -8); if (uVar2 == 0xffffffff) { uVar2 = FUN_004016b0(local_e4); *(uint *)(pcVar1 + -8) = uVar2; } if (uVar2 < 0x356c4) { if (uVar2 == 0x356c3) { FUN_00401340(&DAT_00796734); iVar3 = _stricmp(local_e4,local_dc); LVar4 = InterlockedDecrement((LONG *)(local_dc + -0x10)); if ((LVar4 == 0) && (local_dc + -0x14 != (char *)0x0)) { (*(code *)**(undefined4 **)(local_dc + -0x14))(1); } if (iVar3 == 0) { LVar4 = InterlockedDecrement((LONG *)(local_e4 + -0x10)); if ((LVar4 == 0) && (local_e4 + -0x14 != (char *)0x0)) { (*(code *)**(undefined4 **)(local_e4 + -0x14))(1); } return 0x2b; } goto LAB_0041e096; } if (uVar2 < 0x34c45) { if (uVar2 == 0x34c44) { FUN_00401340(&DAT_0079672c); iVar3 = _stricmp(local_e4,local_18); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x2a; } goto LAB_0041e096; } if (uVar2 < 0x34a30) { if (uVar2 == 0x34a2f) { FUN_00401340(&DAT_00796680); iVar3 = _stricmp(local_e4,local_c0); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x19; } goto LAB_0041e096; } if (uVar2 < 0x347ec) { if (uVar2 == 0x347eb) { FUN_00401340(&DAT_007965cc); iVar3 = _stricmp(local_e4,local_d0); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 9; } goto LAB_0041e096; } if (uVar2 == 0x3539) { FUN_00401340(&DAT_007966c0); iVar3 = _stricmp(local_e4,local_38); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x21; } goto LAB_0041e096; } if (uVar2 == 0x353d) { FUN_00401340(&DAT_007966bc); iVar3 = _stricmp(local_e4,local_d8); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x20; } goto LAB_0041e096; } if (uVar2 != 0x31586) goto LAB_0041e096; FUN_00401340(&DAT_00796608); iVar3 = _stricmp(local_e4,local_70); } else { if (uVar2 != 0x34830) { if (uVar2 == 0x3484d) { FUN_00401340(&DAT_007965c4); iVar3 = _stricmp(local_e4,local_c8); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 8; } } else if (uVar2 == 0x34874) { FUN_00401340(&DAT_00796654); iVar3 = _stricmp(local_e4,local_68); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x13; } } goto LAB_0041e096; } FUN_00401340(&DAT_00796618); iVar3 = _stricmp(local_e4,local_10); } } else { if (0x34ab7 < uVar2) { if (uVar2 == 0x34b93) { FUN_00401340(&DAT_0079662c); iVar3 = _stricmp(local_e4,local_a8); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0xe; } } else if (uVar2 == 0x34c40) { FUN_00401340(&DAT_007966e0); iVar3 = _stricmp(local_e4,local_58); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x24; } } goto LAB_0041e096; } if (uVar2 == 0x34ab7) { FUN_00401340(&DAT_00796688); iVar3 = _stricmp(local_e4,local_b0); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x1a; } goto LAB_0041e096; } if (uVar2 == 0x34a73) { FUN_00401340(&DAT_00796644); iVar3 = _stricmp(local_e4,local_30); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x11; } goto LAB_0041e096; } if (uVar2 == 0x34a99) { FUN_00401340(&DAT_00796610); iVar3 = _stricmp(local_e4,local_b8); } else { if (uVar2 != 0x34ab3) goto LAB_0041e096; FUN_00401340(&DAT_007965f0); iVar3 = _stricmp(local_e4,local_60); } } } else { if (0x35289 < uVar2) { if (uVar2 < 0x354d5) { if (uVar2 == 0x354d4) { FUN_00401340(&DAT_00796664); iVar3 = _stricmp(local_e4,local_78); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x16; } } else if (uVar2 == 0x3528f) { FUN_00401340(&DAT_007965a4); iVar3 = _stricmp(local_e4,local_40); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 4; } } else if (uVar2 == 0x35384) { FUN_00401340(&DAT_007966b4); iVar3 = _stricmp(local_e4,local_80); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x1f; } } else if (uVar2 == 0x35472) { FUN_00401340(&DAT_00796744); iVar3 = _stricmp(local_e4,local_8); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x2d; } } } else if (uVar2 == 0x3558a) { FUN_00401340(&DAT_007965b4); iVar3 = _stricmp(local_e4,local_e0); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 6; } } else if (uVar2 == 0x3567c) { FUN_00401340(&DAT_007965d4); iVar3 = _stricmp(local_e4,local_20); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 10; } } goto LAB_0041e096; } if (uVar2 == 0x35289) { FUN_00401340(&DAT_0079659c); iVar3 = _stricmp(local_e4,local_88); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 2; } goto LAB_0041e096; } if (uVar2 < 0x35041) { if (uVar2 == 0x35040) { FUN_00401340(&DAT_00796708); iVar3 = _stricmp(local_e4,local_28); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x26; } goto LAB_0041e096; } if (uVar2 == 0x34c56) { FUN_00401340(&DAT_0079663c); iVar3 = _stricmp(local_e4,local_98); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x10; } goto LAB_0041e096; } if (uVar2 == 0x34f83) { FUN_00401340(&DAT_0079664c); iVar3 = _stricmp(local_e4,local_50); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x12; } goto LAB_0041e096; } if (uVar2 != 0x34fc6) goto LAB_0041e096; FUN_00401340(&DAT_00796600); iVar3 = _stricmp(local_e4,local_a0); } else { if (uVar2 == 0x35053) { FUN_00401340(&DAT_007965ac); iVar3 = _stricmp(local_e4,local_48); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 5; } goto LAB_0041e096; } if (uVar2 != 0x35167) goto LAB_0041e096; FUN_00401340(&DAT_007965e8); iVar3 = _stricmp(local_e4,local_90); } } } else { if (0x34b040 < uVar2) { if (uVar2 < 0xaba5baf) { if (uVar2 != 0xaba5bae) { if (0x4657c30 < uVar2) { if (uVar2 == 0x51d03b0) { FUN_00401340(".keymap"); iVar3 = _stricmp(local_e4,local_3c); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x1d; } } else if (uVar2 == 0xa778f2c) { FUN_00401340(".font_local"); iVar3 = _stricmp(local_e4,local_44); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x2f; } } goto LAB_0041e096; } if (uVar2 == 0x4657c30) { FUN_00401340(".monprop"); iVar3 = _stricmp(local_e4,local_4c); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x17; } goto LAB_0041e096; } if (uVar2 == 0x34d654) { FUN_00401340(".font"); iVar3 = _stricmp(local_e4,local_54); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x2e; } goto LAB_0041e096; } if (uVar2 != 0x357384) { if (uVar2 == 0x35a795f) { FUN_00401340(".taboo"); iVar3 = _stricmp(local_e4,local_64); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x14; } } goto LAB_0041e096; } FUN_00401340(".pmat"); iVar3 = _stricmp(local_e4,local_5c); LAB_0041dc86: FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x31; } goto LAB_0041e096; } FUN_00401340(".stt_bin"); iVar3 = _stricmp(local_e4,local_34); } else { if (uVar2 < 0xafeb0d9) { if (uVar2 == 0xafeb0d8) { FUN_00401340(".rendermesh"); iVar3 = _stricmp(local_e4,local_14); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x43; } } else if (uVar2 == 0xac8c4c5) { FUN_00401340(".surface"); iVar3 = _stricmp(local_e4,local_1c); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0xd; } } else if (uVar2 == 0xacf8915) { FUN_00401340(".rtexture"); iVar3 = _stricmp(local_e4,local_24); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x1e; } } else if (uVar2 == 0xacfbfd5) { FUN_00401340(".texture"); iVar3 = _stricmp(local_e4,local_2c); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0xb; } } goto LAB_0041e096; } if (uVar2 == 0xb071420) { FUN_00401340(".actionmap"); iVar3 = _stricmp(local_e4,local_4); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x27; } goto LAB_0041e096; } if (uVar2 != 0xba55039) goto LAB_0041e096; FUN_00401340(".stt_ansi"); iVar3 = _stricmp(local_e4,local_c); } LAB_0041e017: FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x25; } goto LAB_0041e096; } if (uVar2 == 0x34b040) { FUN_00401340(".dimp"); iVar3 = _stricmp(local_e4,local_6c); LVar4 = InterlockedDecrement((LONG *)(local_6c + -0x10)); if ((LVar4 == 0) && (local_6c + -0x14 != (char *)0x0)) { (*(code *)**(undefined4 **)(local_6c + -0x14))(1); } if (iVar3 == 0) { FUN_004011b0(); return 0x28; } goto LAB_0041e096; } if (uVar2 < 0x35aaa) { if (uVar2 == 0x35aa9) { FUN_00401340(&DAT_00796760); iVar3 = _stricmp(local_e4,local_a4); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x30; } } else if (uVar2 < 0x3599f) { if (uVar2 == 0x3599e) { FUN_00401340(&DAT_00796690); iVar3 = _stricmp(local_e4,local_bc); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x1b; } } else if (uVar2 == 0x356c4) { FUN_00401340(&DAT_0079673c); iVar3 = _stricmp(local_e4,local_c4); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x2c; } } else if (uVar2 == 0x357a4) { FUN_00401340(&DAT_00796678); iVar3 = _stricmp(local_e4,local_cc); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x18; } } else if (uVar2 == 0x358de) { FUN_00401340(&DAT_00796698); iVar3 = _stricmp(local_e4,local_d4); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x1c; } } } else if (uVar2 == 0x359c4) { FUN_00401340(&DAT_007965bc); iVar3 = _stricmp(local_e4,local_ac); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 7; } } else if (uVar2 == 0x35aa2) { FUN_00401340(&DAT_007966d0); iVar3 = _stricmp(local_e4,local_b4); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x22; } } goto LAB_0041e096; } if (0x35bfc < uVar2) { if (uVar2 == 0x35d86) { FUN_00401340(&DAT_00796634); iVar3 = _stricmp(local_e4,local_74); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0xf; } goto LAB_0041e096; } if (uVar2 != 0x34a963) goto LAB_0041e096; FUN_00401340(".dbpc"); iVar3 = _stricmp(local_e4,local_7c); goto LAB_0041dc86; } if (uVar2 == 0x35bfc) { FUN_00401340(&DAT_007966d8); iVar3 = _stricmp(local_e4,local_84); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x23; } goto LAB_0041e096; } if (uVar2 == 0x35ab2) { FUN_00401340(&DAT_00796724); iVar3 = _stricmp(local_e4,local_8c); FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0x29; } goto LAB_0041e096; } if (uVar2 == 0x35ab4) { FUN_00401340(&DAT_007966e8); iVar3 = _stricmp(local_e4,local_94); goto LAB_0041e017; } if (uVar2 != 0x35ad1) goto LAB_0041e096; FUN_00401340(&DAT_007965f8); iVar3 = _stricmp(local_e4,local_9c); } FUN_004011b0(); if (iVar3 == 0) { FUN_004011b0(); return 0xc; } LAB_0041e096: LVar4 = InterlockedDecrement((LONG *)(local_e4 + -0x10)); if ((LVar4 == 0) && (local_e4 + -0x14 != (char *)0x0)) { (*(code *)**(undefined4 **)(local_e4 + -0x14))(1); } return 0; } // --- FUN_0041e0c0 at 0x0041E0C0 (size: 4464) --- undefined1 FUN_0041e0c0(undefined4 *param_1,undefined4 *param_2) { char *_String; undefined *puVar1; int iVar2; LONG LVar3; undefined1 uVar4; char *local_c8; char *local_c4; char *local_c0; char *local_bc; char *local_b8; char *local_b4; char *local_b0; char *local_ac; char *local_a8; char *local_a4; char *local_a0; char *local_9c; char *local_98; char *local_94; char *local_90; char *local_8c; char *local_88; char *local_84; char *local_80; char *local_7c; char *local_78; char *local_74; char *local_70; char *local_6c; char *local_68; char *local_64; char *local_60; char *local_5c; char *local_58; char *local_54; char *local_50; char *local_4c; char *local_48; char *local_44; char *local_40; char *local_3c; char *local_38; char *local_34; char *local_30; char *local_2c; char *local_28; char *local_24; char *local_20; char *local_1c; char *local_18; char *local_14; char *local_10; char *local_c; char *local_8; char *local_4; _String = (char *)*param_1; uVar4 = 0; InterlockedIncrement((LONG *)(_String + -0x10)); FUN_004080c0(); _strlwr(_String); puVar1 = *(undefined **)(_String + -8); if (puVar1 == (undefined *)0xffffffff) { puVar1 = (undefined *)FUN_004016b0(_String); *(undefined **)(_String + -8) = puVar1; } if (puVar1 < (undefined *)0x6779a50) { if (puVar1 == (undefined *)0x6779a4f) { FUN_00401340("DEGRADEINFO"); iVar2 = _stricmp(_String,local_c4); LVar3 = InterlockedDecrement((LONG *)(local_c4 + -0x10)); if ((LVar3 == 0) && (local_c4 + -0x14 != (char *)0x0)) { (*(code *)**(undefined4 **)(local_c4 + -0x14))(1); } if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x1a; } else if (puVar1 < (undefined *)0x29374e5) { if (puVar1 == (undefined *)0x29374e4) { FUN_00401340("PHYSICS_SCRIPT"); iVar2 = _stricmp(_String,local_28); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x2b; } else if (&DAT_006209de < puVar1) { if (puVar1 < (undefined *)0xe658ad) { if (puVar1 == (undefined *)0xe658ac) { FUN_00401340("RENDERMATERIAL"); iVar2 = _stricmp(_String,local_a0); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x1f; } else if (puVar1 == (undefined *)0xc26824) { FUN_00401340("PAL_SET"); iVar2 = _stricmp(_String,local_18); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x18; } else { if (puVar1 != (undefined *)0xc2ca45) goto LAB_0041f205; FUN_00401340("PALETTE"); iVar2 = _stricmp(_String,local_a8); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 10; } } else if (puVar1 == (undefined *)0x1ef0bc0) { FUN_00401340("SETUP"); iVar2 = _stricmp(_String,local_98); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 7; } else { if (puVar1 != (undefined *)0x1ef5c45) goto LAB_0041f205; FUN_00401340("SCENE"); iVar2 = _stricmp(_String,local_50); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x1b; } } else if (puVar1 == &DAT_006209de) { FUN_00401340("INSTANTIATION"); iVar2 = _stricmp(_String,local_58); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 5; } else if (puVar1 < (undefined *)0x1dba55) { if (puVar1 == (undefined *)0x1dba54) { FUN_00401340(&DAT_007969dc); iVar2 = _stricmp(_String,local_b8); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x2e; } else if (puVar1 == (undefined *)0x1e449) { FUN_00401340(&DAT_007969e4); iVar2 = _stricmp(_String,local_60); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 2; } else if (puVar1 == (undefined *)0x1e44f) { FUN_00401340(&DAT_007969e8); iVar2 = _stricmp(_String,local_c0); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 4; } else { if (puVar1 != (undefined *)0x1d28fd) goto LAB_0041f205; FUN_00401340(&DAT_007969ec); iVar2 = _stricmp(_String,local_68); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 8; } } else if (puVar1 == (undefined *)0x1df82c) { FUN_00401340(&DAT_007969cc); iVar2 = _stricmp(_String,local_b0); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 3; } else { if (puVar1 != (undefined *)0x1eb4c5) goto LAB_0041f205; FUN_00401340(&DAT_007969d4); iVar2 = _stricmp(_String,local_30); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0xf; } } else if (puVar1 < (undefined *)0x4448256) { if (puVar1 == (undefined *)0x4448255) { FUN_00401340("NAME_FILTER_TABLE"); iVar2 = _stricmp(_String,local_78); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x16; } else if (puVar1 < (undefined *)0x3cb6a8a) { if (puVar1 == (undefined *)0x3cb6a89) { FUN_00401340("MASTER_PROPERTY"); iVar2 = _stricmp(_String,local_8); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x2d; } else if (puVar1 == (undefined *)0x2e89502) { FUN_00401340("PARTICLE_EMITTER"); iVar2 = _stricmp(_String,local_88); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x2a; } else if (puVar1 == (undefined *)0x3ad38f5) { FUN_00401340("STRING_STATE"); iVar2 = _stricmp(_String,local_48); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x30; } else { if (puVar1 != (undefined *)0x3ade975) goto LAB_0041f205; FUN_00401340("STRING_TABLE"); iVar2 = _stricmp(_String,local_90); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x25; } } else if (puVar1 == (undefined *)0x3cdb295) { FUN_00401340("CHAT_POSE_TABLE"); iVar2 = _stricmp(_String,local_40); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x11; } else { if (puVar1 != (undefined *)0x428f205) goto LAB_0041f205; FUN_00401340("FILE2ID_TABLE"); iVar2 = _stricmp(_String,local_80); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x15; } } else if (puVar1 < (undefined *)0x5e6eaf3) { if (puVar1 == (undefined *)0x5e6eaf2) { FUN_00401340("ENUM_MAPPER"); iVar2 = _stricmp(_String,local_38); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x24; } else if (puVar1 == (undefined *)0x44b11f5) { FUN_00401340("RENDERTEXTURE"); iVar2 = _stricmp(_String,local_70); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x1e; } else { if (puVar1 != (undefined *)0x44c6ae5) goto LAB_0041f205; FUN_00401340("RENDERSURFACE"); iVar2 = _stricmp(_String,local_20); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0xc; } } else if (puVar1 == (undefined *)0x625b562) { FUN_00401340("DID_MAPPER"); iVar2 = _stricmp(_String,local_10); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x26; } else { if (puVar1 != (undefined *)0x6292bf4) goto LAB_0041f205; FUN_00401340("UI_LAYOUT"); iVar2 = _stricmp(_String,local_c8); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x23; } } else if (puVar1 < (undefined *)0xcf90dc6) { if (puVar1 == (undefined *)0xcf90dc5) { FUN_00401340("PHYSICS_SCRIPT_TABLE"); iVar2 = _stricmp(_String,local_5c); LVar3 = InterlockedDecrement((LONG *)(local_5c + -0x10)); if ((LVar3 == 0) && (local_5c + -0x14 != (char *)0x0)) { (*(code *)**(undefined4 **)(local_5c + -0x14))(1); } if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x2c; } else if (puVar1 < (undefined *)0xa4779dc) { if (puVar1 == (undefined *)0xa4779db) { FUN_00401340("LAND_BLOCK"); iVar2 = _stricmp(_String,local_8c); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 1; } else if (puVar1 < (undefined *)0x93b52f6) { if (puVar1 == (undefined *)0x93b52f5) { FUN_00401340("MATERIALINSTANCE"); iVar2 = _stricmp(_String,local_a4); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x21; } else if (puVar1 == (undefined *)0x686c245) { FUN_00401340("TABOO_TABLE"); iVar2 = _stricmp(_String,local_ac); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x14; } else if (puVar1 == (undefined *)0x730e209) { FUN_00401340("OBJECT_HIERARCHY"); iVar2 = _stricmp(_String,local_b4); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x12; } else { if (puVar1 != (undefined *)0x8d7da23) goto LAB_0041f205; FUN_00401340("MONITOREDPROPERTIES"); iVar2 = _stricmp(_String,local_bc); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x17; } } else if (puVar1 == (undefined *)0x93ef862) { FUN_00401340("MATERIALMODIFIER"); iVar2 = _stricmp(_String,local_94); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x20; } else { if (puVar1 != (undefined *)0xa43db85) goto LAB_0041f205; FUN_00401340("SURFACETEXTURE"); iVar2 = _stricmp(_String,local_9c); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0xb; } } else if (puVar1 < (undefined *)0xb05a2e1) { if (puVar1 == (undefined *)0xb05a2e0) { FUN_00401340("ACTIONMAP"); iVar2 = _stricmp(_String,local_74); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x27; } else if (puVar1 == (undefined *)0xa60e32c) { FUN_00401340("FONT_LOCAL"); iVar2 = _stricmp(_String,local_7c); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x2f; } else { if (puVar1 != (undefined *)0xa9ba754) goto LAB_0041f205; FUN_00401340("ENVIRONMENT"); iVar2 = _stricmp(_String,local_84); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x10; } } else if (puVar1 == (undefined *)0xb0cd6b3) { FUN_00401340("DBPROPERTIES"); iVar2 = _stricmp(_String,local_64); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x31; } else { if (puVar1 != (undefined *)0xc08c675) goto LAB_0041f205; FUN_00401340("SURFACE"); iVar2 = _stricmp(_String,local_6c); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0xd; } } else if (puVar1 < (undefined *)0xe710391) { if (puVar1 == (undefined *)0xe710390) { FUN_00401340("KEYMAP"); iVar2 = _stricmp(_String,local_2c); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x1d; } else if (puVar1 < (undefined *)0xdb1f59b) { if (puVar1 == (undefined *)0xdb1f59a) { FUN_00401340("GFXOBJ"); iVar2 = _stricmp(_String,local_44); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 6; } else if (puVar1 == (undefined *)0xd4683bb) { FUN_00401340("ANIMATION_HOOK"); iVar2 = _stricmp(_String,local_4c); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 9; } else { if (puVar1 != (undefined *)0xdacb838) goto LAB_0041f205; FUN_00401340("RENDER_MESH"); iVar2 = _stricmp(_String,local_54); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x43; } } else if (puVar1 == (undefined *)0xe1c0432) { FUN_00401340("DUAL_DID_MAPPER"); iVar2 = _stricmp(_String,local_34); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x28; } else { if (puVar1 != (undefined *)0xe267935) goto LAB_0041f205; FUN_00401340("MTABLE"); iVar2 = _stricmp(_String,local_3c); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0xe; } } else if (puVar1 < (undefined *)0xec79058) { if (puVar1 == (undefined *)0xec79057) { FUN_00401340("STRING"); iVar2 = _stricmp(_String,local_14); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x29; } else if (puVar1 == (undefined *)0xebaa971) { FUN_00401340("BADDATA"); iVar2 = _stricmp(_String,local_1c); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x13; } else { if (puVar1 != (undefined *)0xec67935) goto LAB_0041f205; FUN_00401340("STABLE"); iVar2 = _stricmp(_String,local_24); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x22; } } else if (puVar1 == (undefined *)0xee7e04e) { FUN_00401340("REGION"); iVar2 = _stricmp(_String,local_4); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x1c; } else { if (puVar1 != (undefined *)0xf6af247) goto LAB_0041f205; FUN_00401340("CLOTHING"); iVar2 = _stricmp(_String,local_c); FUN_004011b0(); if (iVar2 != 0) goto LAB_0041f205; *param_2 = 0x19; } uVar4 = 1; LAB_0041f205: LVar3 = InterlockedDecrement((LONG *)(_String + -0x10)); if ((LVar3 == 0) && (_String + -0x14 != (char *)0x0)) { (*(code *)**(undefined4 **)(_String + -0x14))(1); } return uVar4; } // --- FUN_0041f230 at 0x0041F230 (size: 319) --- int * __thiscall FUN_0041f230(int *param_1,undefined4 *param_2) { LONG *lpAddend; int *piVar1; int iVar2; undefined *puVar3; undefined *puVar4; char cVar5; LONG LVar6; uint uVar7; int *piVar8; int *piVar9; if ((param_1[1] & 0x7fffffffU) < (param_2[1] & 0x7fffffff)) { param_1[2] = 0; cVar5 = FUN_004082c0(param_2[1] & 0x7fffffff); if (cVar5 == '\0') { return param_1; } } piVar8 = (int *)*param_1; piVar9 = (int *)*param_2; piVar1 = piVar9 + param_2[2]; for (; piVar9 < piVar1; piVar9 = piVar9 + 1) { iVar2 = *piVar8; if (iVar2 != *piVar9) { LVar6 = InterlockedDecrement((LONG *)(iVar2 + -0x10)); if ((LVar6 == 0) && ((undefined4 *)(iVar2 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iVar2 + -0x14))(1); } iVar2 = *piVar9; *piVar8 = iVar2; InterlockedIncrement((LONG *)(iVar2 + -0x10)); } piVar8 = piVar8 + 1; } uVar7 = param_2[2]; if (uVar7 < (uint)param_1[2]) { do { puVar4 = PTR_DAT_00818344; lpAddend = (LONG *)(PTR_DAT_00818344 + -0x10); InterlockedIncrement(lpAddend); piVar1 = (int *)(*param_1 + uVar7 * 4); puVar3 = (undefined *)*piVar1; if (puVar3 != puVar4) { LVar6 = InterlockedDecrement((LONG *)(puVar3 + -0x10)); if ((LVar6 == 0) && ((undefined4 *)(puVar3 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar3 + -0x14))(1); } *piVar1 = (int)puVar4; InterlockedIncrement(lpAddend); } LVar6 = InterlockedDecrement((LONG *)(puVar4 + -0x10)); if ((LVar6 == 0) && ((undefined4 *)(puVar4 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar4 + -0x14))(1); } uVar7 = uVar7 + 1; } while (uVar7 < (uint)param_1[2]); } param_1[2] = param_2[2]; return param_1; } // --- FUN_0041f370 at 0x0041F370 (size: 973) --- undefined1 FUN_0041f370(undefined4 param_1) { undefined1 uVar1; uVar1 = 0; switch(param_1) { case 1: FUN_00405000("LAND_BLOCK"); return 1; case 2: FUN_00405000(&DAT_007969e4); return 1; case 3: FUN_00405000(&DAT_007969cc); return 1; case 4: FUN_00405000(&DAT_007969e8); return 1; case 5: FUN_00405000("INSTANTIATION"); return 1; case 6: FUN_00405000("GFXOBJ"); return 1; case 7: FUN_00405000("SETUP"); return 1; case 8: FUN_00405000(&DAT_007969ec); return 1; case 9: FUN_00405000("ANIMATION_HOOK"); return 1; case 10: FUN_00405000("PALETTE"); return 1; case 0xb: FUN_00405000("SURFACETEXTURE"); return 1; case 0xc: FUN_00405000("RENDERSURFACE"); return 1; case 0xd: FUN_00405000("SURFACE"); return 1; case 0xe: FUN_00405000("MTABLE"); return 1; case 0xf: FUN_00405000(&DAT_007969d4); return 1; case 0x10: FUN_00405000("ENVIRONMENT"); return 1; case 0x11: FUN_00405000("CHAT_POSE_TABLE"); return 1; case 0x12: FUN_00405000("OBJECT_HIERARCHY"); return 1; case 0x13: FUN_00405000("BADDATA"); return 1; case 0x14: FUN_00405000("TABOO_TABLE"); return 1; case 0x15: FUN_00405000("FILE2ID_TABLE"); return 1; case 0x16: FUN_00405000("NAME_FILTER_TABLE"); return 1; case 0x17: FUN_00405000("MONITOREDPROPERTIES"); return 1; case 0x18: FUN_00405000("PAL_SET"); return 1; case 0x19: FUN_00405000("CLOTHING"); return 1; case 0x1a: FUN_00405000("DEGRADEINFO"); return 1; case 0x1b: FUN_00405000("SCENE"); return 1; case 0x1c: FUN_00405000("REGION"); return 1; case 0x1d: FUN_00405000("KEYMAP"); return 1; case 0x1e: FUN_00405000("RENDERTEXTURE"); return 1; case 0x1f: FUN_00405000("RENDERMATERIAL"); return 1; case 0x20: FUN_00405000("MATERIALMODIFIER"); return 1; case 0x21: FUN_00405000("MATERIALINSTANCE"); return 1; case 0x22: FUN_00405000("STABLE"); return 1; case 0x23: FUN_00405000("UI_LAYOUT"); return 1; case 0x24: FUN_00405000("ENUM_MAPPER"); return 1; case 0x25: FUN_00405000("STRING_TABLE"); return 1; case 0x26: FUN_00405000("DID_MAPPER"); return 1; case 0x27: FUN_00405000("ACTIONMAP"); return 1; case 0x28: FUN_00405000("DUAL_DID_MAPPER"); return 1; case 0x29: FUN_00405000("STRING"); return 1; case 0x2a: FUN_00405000("PARTICLE_EMITTER"); return 1; case 0x2b: FUN_00405000("PHYSICS_SCRIPT"); return 1; case 0x2c: FUN_00405000("PHYSICS_SCRIPT_TABLE"); return 1; case 0x2d: FUN_00405000("MASTER_PROPERTY"); return 1; case 0x2e: FUN_00405000(&DAT_007969dc); return 1; case 0x2f: FUN_00405000("FONT_LOCAL"); return 1; case 0x30: FUN_00405000("STRING_STATE"); return 1; case 0x31: FUN_00405000("DBPROPERTIES"); uVar1 = 1; break; case 0x43: FUN_00405000("RENDER_MESH"); return 1; } return uVar1; } // --- FUN_0041f850 at 0x0041F850 (size: 163) --- undefined4 * __thiscall FUN_0041f850(undefined4 *param_1,undefined4 *param_2) { int iVar1; *param_1 = *param_2; param_1[1] = param_2[1]; param_1[2] = 0; param_1[3] = 0; param_1[4] = 0; FUN_0041f230(param_2 + 2); param_1[5] = param_2[5]; param_1[6] = param_2[6]; *(undefined1 *)(param_1 + 7) = *(undefined1 *)(param_2 + 7); *(undefined1 *)((int)param_1 + 0x1d) = *(undefined1 *)((int)param_2 + 0x1d); *(undefined1 *)((int)param_1 + 0x1e) = *(undefined1 *)((int)param_2 + 0x1e); *(undefined1 *)((int)param_1 + 0x1f) = *(undefined1 *)((int)param_2 + 0x1f); iVar1 = param_2[8]; param_1[8] = iVar1; InterlockedIncrement((LONG *)(iVar1 + -0x10)); *(undefined1 *)(param_1 + 9) = *(undefined1 *)(param_2 + 9); *(undefined1 *)((int)param_1 + 0x25) = *(undefined1 *)((int)param_2 + 0x25); *(undefined1 *)((int)param_1 + 0x26) = *(undefined1 *)((int)param_2 + 0x26); *(undefined1 *)((int)param_1 + 0x27) = *(undefined1 *)((int)param_2 + 0x27); *(undefined1 *)(param_1 + 10) = *(undefined1 *)(param_2 + 10); *(undefined1 *)((int)param_1 + 0x29) = *(undefined1 *)((int)param_2 + 0x29); *(undefined1 *)((int)param_1 + 0x2a) = *(undefined1 *)((int)param_2 + 0x2a); param_1[0xb] = param_2[0xb]; param_1[0xc] = param_2[0xc]; param_1[0xd] = param_2[0xd]; return param_1; } // --- FUN_0041f900 at 0x0041F900 (size: 153) --- undefined4 FUN_0041f900(undefined4 *param_1,undefined4 param_2) { char cVar1; undefined4 *puVar2; LONG LVar3; undefined4 *puVar4; puVar2 = (undefined4 *)FUN_005df0f5(0x40); if (puVar2 == (undefined4 *)0x0) { puVar2 = (undefined4 *)0x0; } else { *puVar2 = *param_1; puVar2[1] = 0; FUN_0041f850(param_2); } cVar1 = FUN_0042bd40(puVar2); if (cVar1 == '\0') { if (puVar2 != (undefined4 *)0x0) { puVar4 = (undefined4 *)(puVar2[10] + -0x14); LVar3 = InterlockedDecrement((LONG *)(puVar2[10] + -0x10)); if ((LVar3 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } if (((puVar2[5] & 0x80000000) == 0x80000000) && (puVar2[4] != 0)) { FUN_00407920(3); } operator_delete(puVar2); } return 0; } return 1; } // --- FUN_0041f9a0 at 0x0041F9A0 (size: 9998) --- /* WARNING: Type propagation algorithm not settling */ undefined4 FUN_0041f9a0(void) { LONG LVar1; undefined4 *puVar2; int local_3c [4]; uint uStack_2c; undefined4 local_28; undefined4 local_24; undefined4 local_20; undefined1 local_1c; undefined1 local_1b; undefined1 local_1a; undefined1 local_19; int local_18; undefined1 local_14; undefined1 local_13; undefined1 local_12; undefined1 local_11; undefined1 local_10; undefined1 local_f; undefined1 local_e; undefined1 local_c; undefined1 local_b; undefined4 local_8; undefined4 local_4; FUN_0041c380(); local_3c[1] = 0; local_3c[2] = 0; local_24 = 1; local_20 = 2; local_1c = 0; local_1b = 0; local_1a = 1; local_19 = 0; FUN_00405000(&DAT_007938af); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x15; local_4 = 0x90; local_e = 0; FUN_0041f900(&DAT_007964d4,local_3c + 1); local_28 = 0; local_3c[1] = 0; local_3c[2] = 0; FUN_00401340(&DAT_0079659c); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 2; local_1c = 1; local_1b = 0; local_1a = 1; local_19 = 0; FUN_00405000(&DAT_00796b18); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x15; local_4 = 0x90; local_e = 0; FUN_0041f900(&DAT_007964d8,local_3c + 1); local_28 = 0; local_3c[1] = 0; local_3c[2] = 0; local_24 = 1; local_20 = 2; local_1c = 0; local_1b = 0; local_1a = 1; local_19 = 0; FUN_00405000(&DAT_007938af); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x14; local_4 = 0x90; local_e = 0; FUN_0041f900(&DAT_007964dc,local_3c + 1); local_28 = 0; local_3c[1] = 0; local_3c[2] = 0; FUN_00401340(&DAT_007965a4); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 2; local_1c = 1; local_1b = 0; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_00796b14); local_14 = 0; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_007964e0,local_3c + 1); local_28 = 0; local_3c[1] = 0; local_3c[2] = 0; FUN_00401340(&DAT_007965ac); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 2; local_1c = 1; local_1b = 0; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_00796b10); local_14 = 0; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_007964e4,local_3c + 1); local_28 = 0; local_3c[1] = 0x1000000; local_3c[2] = 0x100ffff; FUN_00401340(&DAT_007965b4); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("gfxobj"); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 100; local_4 = 200; local_e = 0; FUN_0041f900(&DAT_007964e8,local_3c + 1); local_28 = 0; local_3c[1] = 0x2000000; local_3c[2] = 0x200ffff; FUN_00401340(&DAT_007965bc); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("setup"); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x19; local_4 = 100; local_e = 0; FUN_0041f900(&DAT_007964ec,local_3c + 1); local_28 = 0; local_3c[1] = 0x3000000; local_3c[2] = 0x300ffff; FUN_00401340(&DAT_007965c4); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_00796af8); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x14; local_4 = 0x50; local_e = 0; FUN_0041f900(&DAT_007964f0,local_3c + 1); local_28 = 0; local_3c[1] = 0; local_3c[2] = 0; FUN_00401340(&DAT_007965cc); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 0; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_00796af4); local_14 = 0; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_007964f4,local_3c + 1); local_28 = 0; local_3c[1] = 0x4000000; local_3c[2] = 0x400ffff; FUN_00401340(&DAT_007965d4); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("palette"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x3c; local_4 = 100; local_e = 0; FUN_0041f900(&DAT_007964f8,local_3c + 1); local_28 = 0; local_3c[1] = 0x5000000; local_3c[2] = 0x5ffffff; FUN_00401340(".texture"); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("textures"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 1; local_c = 0; local_b = 1; local_8 = 100; local_4 = 400; local_e = 0; FUN_0041f900(&DAT_007964fc,local_3c + 1); local_28 = 0; local_3c[1] = 0x6000000; local_3c[2] = 0x7ffffff; FUN_00401340(&DAT_007965e8); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340(&DAT_007965f0); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340(&DAT_007965f8); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340(&DAT_00796600); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340(&DAT_00796608); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340(&DAT_00796610); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340(&DAT_00796618); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("surfaces"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 1; local_c = 0; local_b = 1; local_8 = 100; local_4 = 400; local_e = 0; FUN_0041f900(&DAT_00796500,local_3c + 1); local_28 = 0; local_3c[1] = 0x8000000; local_3c[2] = 0x800ffff; FUN_00401340(".surface"); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("materials"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x32; local_4 = 200; local_e = 0; FUN_0041f900(&DAT_00796504,local_3c + 1); local_28 = 0; local_3c[1] = 0x9000000; local_3c[2] = 0x900ffff; FUN_00401340(&DAT_0079662c); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_00796ac4); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_00796508,local_3c + 1); local_28 = 0; local_3c[1] = 0xa000000; local_3c[2] = 0xa00ffff; FUN_00401340(&DAT_00796634); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("sound"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_0079650c,local_3c + 1); local_28 = 0; local_3c[1] = 0xd000000; local_3c[2] = 0xd00ffff; FUN_00401340(&DAT_0079663c); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_00796ab8); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_00796510,local_3c + 1); local_28 = 0; local_3c[1] = 0xe000007; local_3c[2] = 0xe000007; FUN_00401340(&DAT_00796644); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_00796ab4); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 0; local_8 = 1; local_4 = 1; local_e = 0; FUN_0041f900(&DAT_00796514,local_3c + 1); local_28 = 0; local_3c[1] = 0xe00000d; local_3c[2] = 0xe00000d; FUN_00401340(&DAT_0079664c); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("DungeonCfgs"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_00796518,local_3c + 1); local_28 = 0; local_3c[1] = 0xe00001a; local_3c[2] = 0xe00001a; FUN_00401340(&DAT_00796654); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("weenie"); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 0; local_8 = 1; local_4 = 1; local_e = 0; FUN_0041f900(&DAT_0079651c,local_3c + 1); local_28 = 0; local_3c[1] = 0xe00001e; local_3c[2] = 0xe00001e; FUN_00401340(".taboo"); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("weenie"); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_00796520,local_3c + 1); local_28 = 0; local_3c[1] = 0xe00001f; local_3c[2] = 0xe00001f; local_24 = 1; local_20 = 1; local_1c = 0; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_007938af); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_00796524,local_3c + 1); local_28 = 0; local_3c[1] = 0xe000020; local_3c[2] = 0xe000020; FUN_00401340(&DAT_00796664); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("namefilter"); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_00796528,local_3c + 1); local_28 = 0; local_3c[1] = 0xe020000; local_3c[2] = 0xe02ffff; FUN_00401340(".monprop"); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("properties"); local_14 = 0; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_0079652c,local_3c + 1); local_28 = 0; local_3c[1] = 0xf000000; local_3c[2] = 0xf00ffff; FUN_00401340(&DAT_00796678); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("palset"); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 10; local_4 = 0x28; local_e = 0; FUN_0041f900(&DAT_00796530,local_3c + 1); local_28 = 0; local_3c[1] = 0x10000000; local_3c[2] = 0x1000ffff; FUN_00401340(&DAT_00796680); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("clothing"); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x14; local_4 = 0x28; local_e = 0; FUN_0041f900(&DAT_00796534,local_3c + 1); local_28 = 0; local_3c[1] = 0x11000000; local_3c[2] = 0x1100ffff; FUN_00401340(&DAT_00796688); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_00796a70); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x50; local_4 = 200; local_e = 0; FUN_0041f900(&DAT_00796538,local_3c + 1); local_28 = 0; local_3c[1] = 0x12000000; local_3c[2] = 0x1200ffff; FUN_00401340(&DAT_00796690); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_00796a6c); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x19; local_4 = 100; local_e = 0; FUN_0041f900(&DAT_0079653c,local_3c + 1); local_28 = 0; local_3c[1] = 0x13000000; local_3c[2] = 0x1300ffff; FUN_00401340(&DAT_00796698); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("landscape"); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 1; FUN_0041f900(&DAT_00796540,local_3c + 1); local_28 = 0; local_3c[1] = 0x14000000; local_3c[2] = 0x1400ffff; FUN_00401340(".keymap"); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("keymap"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_00796544,local_3c + 1); local_28 = 0; local_3c[1] = 0x15000000; local_3c[2] = 0x15ffffff; FUN_00401340(".rtexture"); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("textures"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 1; local_c = 0; local_b = 1; local_8 = 0x80; local_4 = 0x100; local_e = 0; FUN_0041f900(&DAT_00796548,local_3c + 1); local_28 = 0; local_3c[1] = 0x16000000; local_3c[2] = 0x16ffffff; FUN_00401340(&DAT_007966b4); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("materials"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x40; local_4 = 0x80; local_e = 1; FUN_0041f900(&DAT_0079654c,local_3c + 1); local_28 = 0; local_3c[1] = 0x17000000; local_3c[2] = 0x17ffffff; FUN_00401340(&DAT_007966bc); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("materials"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x40; local_4 = 0x80; local_e = 0; FUN_0041f900(&DAT_00796550,local_3c + 1); local_28 = 0; local_3c[1] = 0x18000000; local_3c[2] = 0x18ffffff; FUN_00401340(&DAT_007966c0); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("materials"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x40; local_4 = 0x80; local_e = 0; FUN_0041f900(&DAT_00796554,local_3c + 1); local_28 = 0; local_3c[1] = 0x19000000; local_3c[2] = 0x19ffffff; FUN_00401340(".rendermesh"); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_00796a58); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x10; local_4 = 0x20; local_e = 0; FUN_0041f900(&DAT_00796598,local_3c + 1); local_28 = 0; local_3c[1] = 0x20000000; local_3c[2] = 0x2000ffff; FUN_00401340(&DAT_007966d0); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_00796a54); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 2; local_4 = 6; local_e = 0; FUN_0041f900(&DAT_00796558,local_3c + 1); local_28 = 0; local_3c[1] = 0x21000000; local_3c[2] = 0x21ffffff; FUN_00401340(&DAT_007966d8); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 3; local_20 = 1; local_1c = 1; local_1b = 0; local_1a = 0; local_19 = 1; FUN_00405000("ui/layout"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 1; FUN_0041f900(&DAT_0079655c,local_3c + 1); local_28 = 0; local_3c[1] = 0x22000000; local_3c[2] = 0x22ffffff; FUN_00401340(&DAT_007966e0); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_00796a44); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x40; local_4 = 0x80; local_e = 1; FUN_0041f900(&DAT_00796560,local_3c + 1); local_28 = 0; local_3c[1] = 0x23000000; local_3c[2] = 0x24ffffff; FUN_00401340(&DAT_007966e8); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340(".stt_ansi"); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340(".stt_bin"); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 0; local_1a = 0; local_19 = 1; FUN_00405000("stringtable"); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 1; FUN_0041f900(&DAT_00796564,local_3c + 1); local_28 = 0; local_3c[1] = 0x25000000; local_3c[2] = 0x25ffffff; FUN_00401340(&DAT_00796708); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("emp/idmap"); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x40; local_4 = 0x80; local_e = 1; FUN_0041f900(&DAT_00796568,local_3c + 1); local_28 = 0; local_3c[1] = 0x26000000; local_3c[2] = 0x2600ffff; FUN_00401340(".actionmap"); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("actionmap"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_0079656c,local_3c + 1); local_28 = 0; local_3c[1] = 0x27000000; local_3c[2] = 0x27ffffff; FUN_00401340(".dimp"); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("emp/idmap"); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 0x40; local_4 = 0x80; local_e = 1; FUN_0041f900(&DAT_00796570,local_3c + 1); local_28 = 0; local_3c[1] = 0x31000000; local_3c[2] = 0x3100ffff; FUN_00401340(&DAT_00796724); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("string"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_00796574,local_3c + 1); local_28 = 0; local_3c[1] = 0x32000000; local_3c[2] = 0x3200ffff; FUN_00401340(&DAT_0079672c); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_00796a14); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_00796578,local_3c + 1); local_28 = 0; local_3c[1] = 0x33000000; local_3c[2] = 0x3300ffff; FUN_00401340(&DAT_00796734); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_00796a10); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_0079657c,local_3c + 1); local_28 = 0; local_3c[1] = 0x34000000; local_3c[2] = 0x3400ffff; FUN_00401340(&DAT_0079673c); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000(&DAT_00796a0c); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_00796580,local_3c + 1); local_28 = 0; local_3c[1] = 0x39000000; local_3c[2] = 0x39ffffff; FUN_00401340(&DAT_00796744); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("emp/property"); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 1; FUN_0041f900(&DAT_00796584,local_3c + 1); local_28 = 0; local_3c[1] = 0x40000000; local_3c[2] = 0x40000fff; FUN_00401340(".font"); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("fonts"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_00796588,local_3c + 1); local_28 = 0; local_3c[1] = 0x40001000; local_3c[2] = 0x40ffffff; FUN_00401340(".font_local"); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 0; local_1a = 0; local_19 = 1; FUN_00405000("fonts"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 1; FUN_0041f900(&DAT_0079658c,local_3c + 1); local_28 = 0; local_3c[1] = 0x41000000; local_3c[2] = 0x41ffffff; FUN_00401340(&DAT_00796760); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 0; local_1a = 0; local_19 = 1; FUN_00405000("stringtable"); local_14 = 1; local_13 = 0; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 1; FUN_0041f900(&DAT_00796590,local_3c + 1); local_28 = 0; local_3c[1] = 0x78000000; local_3c[2] = 0x7fffffff; FUN_00401340(".dbpc"); FUN_0040c440(local_3c); puVar2 = (undefined4 *)(local_3c[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340(".pmat"); FUN_0040c440(local_3c); LVar1 = InterlockedDecrement((LONG *)(local_3c[0] + -0x10)); if ((LVar1 == 0) && ((undefined4 *)(local_3c[0] + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_3c[0] + -0x14))(1); } local_24 = 1; local_20 = 1; local_1c = 1; local_1b = 1; local_1a = 0; local_19 = 0; FUN_00405000("properties"); local_14 = 1; local_13 = 1; local_12 = 1; local_11 = 0; local_10 = 0; local_f = 0; local_c = 0; local_b = 1; local_8 = 3; local_4 = 0xf; local_e = 0; FUN_0041f900(&DAT_00796594,local_3c + 1); local_28 = 0; LVar1 = InterlockedDecrement((LONG *)(local_18 + -0x10)); if ((LVar1 == 0) && ((undefined4 *)(local_18 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_18 + -0x14))(1); } if (((uStack_2c & 0x80000000) == 0x80000000) && (local_3c[3] != 0)) { FUN_00407920(3); } return 1; }