// Decompiled from acclient.exe — chunk 0x00490000 // Ghidra 12.0.4 + pyghidra headless // --- FUN_00490900 at 0x00490900 (size: 593) --- undefined4 __thiscall FUN_00490900(int param_1,int param_2,undefined4 param_3) { int iVar1; LONG LVar2; undefined4 extraout_ECX; undefined4 uVar3; undefined4 *local_114; int *local_110; undefined4 uStack_10c; undefined1 local_108 [120]; undefined1 local_90 [144]; if (*(int *)(param_1 + 0x608) == 0) { FUN_0042dc80(); FUN_0042c9c0(DAT_0083f150,0x10000001); uVar3 = extraout_ECX; FUN_00401340(param_2); FUN_0042e9f0(DAT_0083f170,uVar3); FUN_006823d0(); local_114 = (undefined4 *)0x0; local_110 = (int *)0x0; FUN_0042a2d0(0x8e); if (local_110 != (int *)0x0) { FUN_00429b10(); (**(code **)(*local_110 + 0xac))(1); } uStack_10c = FUN_00429a00(); FUN_0042c290(&uStack_10c,&local_114); FUN_0042a2d0(0xc5); if (local_110 != (int *)0x0) { FUN_00429b10(); (**(code **)(*local_110 + 0xc4))(local_90); } uStack_10c = FUN_00429a00(); FUN_0042c290(&uStack_10c,&local_114); iVar1 = FUN_00478810(local_108); *(int *)(param_1 + 0x608) = iVar1; if (iVar1 != 0) { *(undefined4 *)(param_1 + 0x604) = param_3; if (local_114 != (undefined4 *)0x0) { iVar1 = local_114[1]; local_114[1] = iVar1 + -1; if (iVar1 + -1 == 0) { (**(code **)*local_114)(1); } local_114 = (undefined4 *)0x0; } if (local_110 != (int *)0x0) { iVar1 = local_110[1]; local_110[1] = iVar1 + -1; if (iVar1 + -1 == 0) { (**(code **)*local_110)(1); } local_110 = (int *)0x0; } FUN_00681f60(); FUN_0042e590(); LVar2 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(param_2 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(param_2 + -0x14))(1); } return 1; } if (local_114 != (undefined4 *)0x0) { iVar1 = local_114[1]; local_114[1] = iVar1 + -1; if (iVar1 + -1 == 0) { (**(code **)*local_114)(1); } local_114 = (undefined4 *)0x0; } if (local_110 != (int *)0x0) { iVar1 = local_110[1]; local_110[1] = iVar1 + -1; if (iVar1 + -1 == 0) { (**(code **)*local_110)(1); } local_110 = (int *)0x0; } FUN_00681f60(); FUN_0042e590(); } LVar2 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(param_2 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(param_2 + -0x14))(1); } return 0; } // --- FUN_00490bc0 at 0x00490BC0 (size: 232) --- void __fastcall FUN_00490bc0(int param_1) { undefined4 uVar1; int iVar2; int *piVar3; int iVar4; undefined1 local_38 [56]; FUN_0056ad30(); FUN_0059a040(); if (DAT_0083da58 == 0) { uVar1 = 0; } else { uVar1 = *(undefined4 *)(DAT_0083da58 + 0xf4); } iVar2 = FUN_005b7ba0(uVar1,local_38); iVar4 = DAT_00871e54; if ((iVar2 == 0) && (DAT_00871e54 != 0)) { if (DAT_0083da58 == 0) { iVar2 = 0; } else { iVar2 = *(int *)(DAT_0083da58 + 0xf4); } if (DAT_00871e54 != iVar2) { piVar3 = (int *)FUN_005583f0(DAT_00871e54); if (piVar3 != (int *)0x0) { iVar2 = (**(code **)(*piVar3 + 0x10))(); if (iVar2 != 0) { FUN_005b7670(); iVar4 = FUN_005b7bd0(iVar4,&stack0xffffff88); if (iVar4 == 0) { (**(code **)(**(int **)(param_1 + 0x63c) + 0x9c))(1); FUN_005b76c0(); FUN_005b76c0(); return; } FUN_005b76c0(); } } } } (**(code **)(**(int **)(param_1 + 0x63c) + 0x9c))(0xd); FUN_005b76c0(); return; } // --- FUN_00490cb0 at 0x00490CB0 (size: 118) --- void __fastcall FUN_00490cb0(int param_1) { undefined4 uVar1; int iVar2; undefined1 local_38 [56]; FUN_0056ad30(); FUN_0059a040(); if (DAT_0083da58 == 0) { uVar1 = 0; } else { uVar1 = *(undefined4 *)(DAT_0083da58 + 0xf4); } iVar2 = FUN_005b7ba0(uVar1,local_38); if (iVar2 != 0) { (**(code **)(**(int **)(param_1 + 0x640) + 0x9c))(1); FUN_005b76c0(); return; } (**(code **)(**(int **)(param_1 + 0x640) + 0x9c))(0xd); FUN_005b76c0(); return; } // --- FUN_00490d30 at 0x00490D30 (size: 52) --- undefined4 __thiscall FUN_00490d30(int param_1,undefined1 param_2) { *(undefined4 *)(param_1 + 0x64c) = 0; FUN_006a2030(1,*(undefined4 *)(param_1 + 0x610),param_2); *(undefined4 *)(param_1 + 0x610) = 0; return 1; } // --- FUN_00490d70 at 0x00490D70 (size: 100) --- undefined4 __thiscall FUN_00490d70(int param_1,char param_2) { undefined4 in_EAX; undefined3 uVar2; undefined4 uVar1; undefined3 extraout_var; undefined1 local_38 [56]; uVar2 = (undefined3)((uint)in_EAX >> 8); *(undefined4 *)(param_1 + 0x650) = 0; if (param_2 != '\0') { FUN_0056ad30(); FUN_0059a040(); if (DAT_0083da58 == 0) { uVar1 = 0; } else { uVar1 = *(undefined4 *)(DAT_0083da58 + 0xf4); } uVar1 = FUN_005b7ba0(uVar1,local_38); FUN_006a78e0(uVar1); FUN_005b76c0(); uVar2 = extraout_var; } return CONCAT31(uVar2,1); } // --- FUN_00490de0 at 0x00490DE0 (size: 52) --- undefined4 __thiscall FUN_00490de0(int param_1,char param_2) { undefined4 in_EAX; undefined3 uVar1; undefined3 extraout_var; uVar1 = (undefined3)((uint)in_EAX >> 8); *(undefined4 *)(param_1 + 0x654) = 0; if (param_2 != '\0') { FUN_006a78e0(*(undefined4 *)(param_1 + 0x60c)); uVar1 = extraout_var; } *(undefined4 *)(param_1 + 0x60c) = 0; return CONCAT31(uVar1,1); } // --- FUN_00490e20 at 0x00490E20 (size: 206) --- undefined4 * __thiscall FUN_00490e20(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { FUN_00472670(param_2,param_3); param_1[0x17e] = &PTR_FUN_007ccb60; param_1[0x17f] = &PTR_LAB_007a6af4; *(undefined1 *)(param_1 + 0x180) = 0; param_1[0x181] = 0; param_1[0x182] = 0; param_1[0x183] = 0; param_1[0x184] = 0; param_1[0x185] = 0; param_1[0x186] = 0; param_1[0x187] = 0; param_1[0x188] = 0; param_1[0x189] = 0; param_1[0x18a] = 0; param_1[0x18b] = 0; param_1[0x18c] = 0; param_1[0x18d] = 0; param_1[0x18e] = 0; param_1[399] = 0; param_1[400] = 0; param_1[0x191] = 0; param_1[0x192] = 0; param_1[0x193] = 0; param_1[0x194] = 0; param_1[0x195] = 0; *param_1 = &PTR_FUN_007a6db0; param_1[0x17e] = &PTR_FUN_007a6b08; param_1[0x17f] = &PTR_LAB_007a6afc; return param_1; } // --- FUN_00490f20 at 0x00490F20 (size: 195) --- void __fastcall FUN_00490f20(undefined4 *param_1) { undefined4 *puVar1; undefined4 *puVar2; int *piVar3; puVar1 = param_1 + 0x17e; puVar2 = param_1 + 0x17f; *param_1 = &PTR_FUN_007a6db0; *puVar1 = &PTR_FUN_007a6b08; *puVar2 = &PTR_LAB_007a6afc; piVar3 = (int *)FUN_0043c680(); if (piVar3 != (int *)0x0) { (**(code **)(*piVar3 + 0xc))(puVar1); } FUN_00465fb0(1); (**(code **)(*DAT_008f958c + 0x10))(7,0x19,puVar2); (**(code **)(*DAT_008f958c + 0x10))(7,0x1a,puVar2); FUN_00478560(param_1[0x192]); param_1[0x192] = 0; FUN_00478560(param_1[0x193]); param_1[0x193] = 0; FUN_00478560(param_1[0x194]); param_1[0x194] = 0; FUN_00478560(param_1[0x195]); param_1[0x195] = 0; *puVar1 = &PTR_FUN_007ccb60; FUN_0043c610(); FUN_004726c0(); return; } // --- FUN_004910c0 at 0x004910C0 (size: 129) --- void __thiscall FUN_004910c0(int *param_1,char *param_2,size_t param_3) { uint uVar1; char cVar2; undefined4 *puVar3; int iVar4; char *pcVar5; LONG LVar6; char *pcVar7; puVar3 = (undefined4 *)*param_1; iVar4 = puVar3[2]; uVar1 = param_3 + iVar4; if ((uint)puVar3[3] < uVar1) { FUN_00403560(uVar1 - 1); pcVar7 = (char *)(puVar3 + 5); pcVar5 = (char *)(*param_1 + 0x14); do { cVar2 = *pcVar7; pcVar7 = pcVar7 + 1; *pcVar5 = cVar2; pcVar5 = pcVar5 + 1; } while (cVar2 != '\0'); LVar6 = InterlockedDecrement(puVar3 + 1); if ((LVar6 == 0) && (puVar3 != (undefined4 *)0x0)) { (**(code **)*puVar3)(1); } } else { FUN_00411870(); *(uint *)(*param_1 + 8) = uVar1; } strncpy((char *)(*param_1 + 0x13 + iVar4),param_2,param_3); *(undefined1 *)(*(int *)(*param_1 + 8) + 0x13 + *param_1) = 0; return; } // --- FUN_00491150 at 0x00491150 (size: 30) --- void * __thiscall FUN_00491150(void *param_1,byte param_2) { FUN_00490f20(); if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_004914d0 at 0x004914D0 (size: 19) --- void FUN_004914d0(void) { FUN_00460270(0x1000002c,&LAB_00490ff0); return; } // --- FUN_004914f0 at 0x004914F0 (size: 44) --- undefined4 __thiscall FUN_004914f0(undefined4 param_1,int *param_2) { int iVar1; iVar1 = *param_2; if ((*(int *)(iVar1 + 8) != 1) && (iVar1 != DAT_008ef11c)) { FUN_004910c0(iVar1 + 0x14,*(int *)(iVar1 + 8) + -1); } return param_1; } // --- FUN_00491610 at 0x00491610 (size: 1166) --- void __fastcall FUN_00491610(int param_1) { undefined4 *puVar1; int *piVar2; int iVar3; LONG LVar4; undefined4 extraout_ECX; undefined4 extraout_ECX_00; undefined4 extraout_ECX_01; int unaff_EBX; undefined4 *puVar5; int *piVar6; undefined *puVar7; int **ppiVar8; undefined4 uVar9; int *local_204; int local_200; undefined4 *puStack_1fc; int local_1f4; int *local_1f0; undefined4 local_1ec; undefined1 auStack_1e8 [12]; int iStack_1dc; ppiVar8 = &local_204; piVar6 = &local_200; puVar7 = &DAT_007a69a0; local_204 = (int *)0x0; FUN_00406d10(piVar6,&DAT_007a69a0,ppiVar8); FUN_00406570(piVar6,puVar7,ppiVar8); piVar6 = local_204; uVar9 = 0; local_1f0 = (int *)0x0; local_1ec = 0; piVar2 = local_204; if (local_204 != (int *)0x0) { (**(code **)(*local_204 + 0x10))(local_204,0); } piVar2 = (int *)FUN_0048bb00(&local_1f4,piVar2,uVar9); iVar3 = *piVar2; if (piVar6 != (int *)0x0) { (**(code **)(*piVar6 + 0x14))(); } if (local_1f0 != (int *)0x0) { if (-1 < iVar3) { iVar3 = FUN_0056ad30(); local_1f4 = iVar3 + 0x10; if (DAT_0083da58 == 0) { local_204 = (int *)0x0; } else { local_204 = *(int **)(DAT_0083da58 + 0xf4); } FUN_0059a040(); puVar1 = DAT_008ef11c; puStack_1fc = DAT_008ef11c; InterlockedIncrement(DAT_008ef11c + 1); puVar5 = *(undefined4 **)(iVar3 + 0x3c); InterlockedIncrement(puVar5 + 1); if (puVar1 != puVar5) { LVar4 = InterlockedDecrement(puStack_1fc + 1); if ((LVar4 == 0) && (puStack_1fc != (undefined4 *)0x0)) { (**(code **)*puStack_1fc)(1); } puStack_1fc = puVar5; InterlockedIncrement(puVar5 + 1); } LVar4 = InterlockedDecrement(puVar5 + 1); if ((LVar4 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } FUN_0042dc80(); FUN_0042c9c0(DAT_0083f20c,0x10000001); uVar9 = extraout_ECX; FUN_00401340(puStack_1fc + 5); FUN_0042e9f0(DAT_0083f230,uVar9); uVar9 = FUN_0042e980(&local_200,0); FUN_0046a740(uVar9); puVar5 = (undefined4 *)(local_200 + -0x14); LVar4 = InterlockedDecrement((LONG *)(local_200 + -0x10)); if ((LVar4 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } FUN_0042dc80(); FUN_0042c9c0(DAT_0083f210,0x10000001); FUN_0042e000(DAT_0083f244,*(undefined4 *)(local_1f4 + 0x114),0); uVar9 = FUN_0042e980(&local_200,0); FUN_0046a740(uVar9); LVar4 = InterlockedDecrement((LONG *)(local_200 + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(local_200 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_200 + -0x14))(1); } FUN_005b7bd0(local_204,auStack_1e8); local_200 = 0; FUN_00590c20(0x1e,&local_200,0,0); if ((local_200 == -1) || (local_200 == iStack_1dc)) { FUN_0042dc80(); FUN_0042c9c0(DAT_0083f220,0x10000001); puVar5 = DAT_008ef11c; InterlockedIncrement(DAT_008ef11c + 1); FUN_005b7620(&stack0xfffffdf4); uVar9 = extraout_ECX_01; FUN_00401340(puVar5 + 5); FUN_0042e9f0(DAT_0083f240,uVar9); FUN_0042e000(DAT_0083f238,iStack_1dc,iStack_1dc >> 0x1f); uVar9 = FUN_0042e980(&stack0xfffffdf8,0); FUN_0046a740(uVar9); LVar4 = InterlockedDecrement((LONG *)(unaff_EBX + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(unaff_EBX + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(unaff_EBX + -0x14))(1); } (**(code **)(**(int **)(param_1 + 0x61c) + 0x9c))(1); piVar6 = local_204; LVar4 = InterlockedDecrement(local_204 + 1); if ((LVar4 == 0) && (piVar6 != (int *)0x0)) { (**(code **)*piVar6)(1); } } else { FUN_0042dc80(); FUN_0042c9c0(DAT_0083f224,0x10000001); puVar5 = DAT_008ef11c; InterlockedIncrement(DAT_008ef11c + 1); FUN_005b7620(&stack0xfffffdf4); uVar9 = extraout_ECX_00; FUN_00401340(puVar5 + 5); FUN_0042e9f0(DAT_0083f240,uVar9); FUN_0042e000(DAT_0083f238,local_200,local_200 >> 0x1f); FUN_0042e000(DAT_0083f23c,local_200 - iStack_1dc,local_200 - iStack_1dc >> 0x1f); uVar9 = FUN_0042e980(&stack0xfffffdf8,0); FUN_0046a740(uVar9); LVar4 = InterlockedDecrement((LONG *)(unaff_EBX + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(unaff_EBX + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(unaff_EBX + -0x14))(1); } (**(code **)(**(int **)(param_1 + 0x61c) + 0x9c))(0x10000014); piVar6 = local_204; LVar4 = InterlockedDecrement(local_204 + 1); if ((LVar4 == 0) && (piVar6 != (int *)0x0)) { (**(code **)*piVar6)(1); } } FUN_0042e590(); FUN_0042e590(); FUN_0042e590(); puVar5 = puStack_1fc; LVar4 = InterlockedDecrement(puStack_1fc + 1); if ((LVar4 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } FUN_005b76c0(); } (**(code **)(*local_1f0 + 0x14))(); } return; } // --- FUN_00491aa0 at 0x00491AA0 (size: 883) --- void __fastcall FUN_00491aa0(int param_1) { int *piVar1; int *piVar2; undefined4 uVar3; LONG LVar4; int iVar5; undefined4 extraout_ECX; int *unaff_EBP; int *unaff_ESI; int **ppiVar6; int *unaff_EDI; undefined1 *puVar7; int *local_1f4; int **local_1f0; int *local_1dc; undefined1 local_1d8 [4]; undefined1 local_1d4 [4]; int *local_1d0; undefined4 local_1cc; int *apiStack_1c8 [10]; undefined1 auStack_1a0 [24]; undefined4 uStack_188; int *apiStack_158 [86]; local_1f0 = &local_1dc; puVar7 = local_1d8; local_1f4 = (int *)&DAT_007a69a0; local_1dc = (int *)0x0; FUN_00406d10(puVar7); FUN_00406570(puVar7); piVar2 = local_1dc; local_1f4 = local_1dc; local_1f0 = (int **)0x0; local_1d0 = (int *)0x0; local_1cc = 0; if (local_1dc != (int *)0x0) { (**(code **)(*local_1dc + 0x10))(); } piVar1 = (int *)FUN_0048bb00(local_1d4); iVar5 = *piVar1; if (piVar2 != (int *)0x0) { local_1f0 = (int **)0x491b0d; (**(code **)(*piVar2 + 0x14))(); } if (local_1d0 != (int *)0x0) { if (-1 < iVar5) { local_1f0 = (int **)0x491b32; FUN_0056ad30(); local_1f0 = (int **)0x491b43; FUN_0059a040(); local_1f0 = apiStack_158; local_1f4 = (int *)0x491b52; local_1dc = (int *)FUN_005b7b70(); local_1f0 = (int **)0x491b5f; FUN_0059a040(); if (DAT_0083da58 == 0) { local_1f4 = (int *)0x0; } else { local_1f4 = *(int **)(DAT_0083da58 + 0xf4); } local_1f0 = apiStack_1c8; piVar2 = (int *)FUN_005b7ba0(); local_1dc = piVar2; if ((piVar2 == (int *)0x0) || (piVar2 == unaff_EBP)) { (**(code **)(**(int **)(param_1 + 0x630) + 0x18))(0); FUN_00402730(&DAT_00795358); FUN_0046a740(&local_1f4); piVar1 = local_1f4 + -5; LVar4 = InterlockedDecrement(local_1f4 + -4); unaff_EDI = piVar2; if ((LVar4 == 0) && (piVar1 != (int *)0x0)) { (**(code **)*piVar1)(1); } } else { (**(code **)(**(int **)(param_1 + 0x630) + 0x18))(1); unaff_ESI = DAT_008ef11c; InterlockedIncrement(DAT_008ef11c + 1); FUN_005b7a40(&stack0xfffffe18); FUN_0042dc80(); FUN_0042c9c0(DAT_0083f20c,0x10000001); uVar3 = extraout_ECX; FUN_00401340(unaff_ESI + 5); FUN_0042e9f0(DAT_0083f230,uVar3); uVar3 = FUN_0042e980(&stack0xfffffe1c,0); FUN_0046a740(uVar3); LVar4 = InterlockedDecrement(unaff_EBP + -4); if ((LVar4 == 0) && (unaff_EBP + -5 != (int *)0x0)) { (**(code **)unaff_EBP[-5])(1); } iVar5 = FUN_005b7640(); if (iVar5 == 0) { (**(code **)(**(int **)(param_1 + 0x630) + 0x9c))(0xd); } else { (**(code **)(**(int **)(param_1 + 0x630) + 0x9c))(1); } FUN_0059a040(); if (DAT_0083da58 == 0) { uVar3 = 0; } else { uVar3 = *(undefined4 *)(DAT_0083da58 + 0xf4); } FUN_005b7bd0(uVar3,auStack_1a0); FUN_0042dc80(); FUN_0042c9c0(DAT_0083f22c,0x10000001); FUN_0042e000(DAT_0083f248,uStack_188,0); piVar2 = (int *)FUN_00463c00(0x10000492); if (piVar2 != (int *)0x0) { (**(code **)(*piVar2 + 0x94))(0xc); } uVar3 = FUN_0042e980(&local_1f0,0); FUN_0046a740(uVar3); ppiVar6 = local_1f0 + -5; LVar4 = InterlockedDecrement((LONG *)(local_1f0 + -4)); if ((LVar4 == 0) && (ppiVar6 != (int **)0x0)) { (*(code *)**ppiVar6)(1); } FUN_0042e590(); FUN_005b76c0(); FUN_0042e590(); piVar2 = local_1f4; LVar4 = InterlockedDecrement(local_1f4 + 1); if ((LVar4 == 0) && (piVar2 != (int *)0x0)) { (**(code **)*piVar2)(1); } } if ((unaff_EDI == (int *)0x0) || (iVar5 = FUN_005b7640(), iVar5 == 0)) { uVar3 = 0; } else { uVar3 = 1; } FUN_00589eb0(4,uVar3); FUN_005b76c0(); FUN_005b76c0(); (**(code **)(*unaff_ESI + 0x14))(); return; } local_1f0 = (int **)0x491b22; (**(code **)(*local_1d0 + 0x14))(); return; } return; } // --- FUN_00491e20 at 0x00491E20 (size: 1289) --- void __fastcall FUN_00491e20(int param_1) { int *piVar1; int iVar2; int iVar3; int iVar4; undefined4 uVar5; int *piVar6; LONG LVar7; int **ppiVar8; undefined4 extraout_ECX; int *unaff_EDI; int *piStack_318; int *local_314; int **local_310; int *local_2fc; int local_2f8; int local_2f4; int *local_2f0; undefined4 local_2ec; int *apiStack_2e8 [10]; undefined1 auStack_2c0 [24]; undefined4 uStack_2a8; int aiStack_1ec [123]; local_310 = &local_2fc; piStack_318 = &local_2f4; local_314 = (int *)&DAT_007a69a0; local_2fc = (int *)0x0; FUN_00406d10(); FUN_00406570(); piVar6 = local_2fc; local_314 = local_2fc; local_310 = (int **)0x0; local_2f0 = (int *)0x0; local_2ec = 0; if (local_2fc != (int *)0x0) { piStack_318 = (int *)0x491e72; (**(code **)(*local_2fc + 0x10))(); } piStack_318 = &local_2f8; piVar1 = (int *)FUN_0048bb00(); iVar2 = *piVar1; if (piVar6 != (int *)0x0) { local_310 = (int **)0x491e8d; (**(code **)(*piVar6 + 0x14))(); } if (local_2f0 == (int *)0x0) { return; } if (iVar2 < 0) { local_310 = (int **)0x491ea2; (**(code **)(*local_2f0 + 0x14))(); return; } local_310 = (int **)0x491eb2; iVar2 = FUN_0056ad30(); local_310 = (int **)0x491ec0; FUN_0059a040(); local_310 = apiStack_2e8; local_314 = (int *)0x491ecc; iVar3 = FUN_005b7b70(); if (DAT_0083da58 == 0) { iVar4 = 0; } else { iVar4 = *(int *)(DAT_0083da58 + 0xf4); } local_2f4 = iVar3; if ((iVar3 == iVar4) || (iVar3 == 0)) { local_310 = (int **)0x0; local_314 = (int *)0x492253; (**(code **)(**(int **)(param_1 + 0x620) + 0x18))(); FUN_00402730(&DAT_00795358); FUN_0046a740(&piStack_318); piVar6 = piStack_318 + -5; LVar7 = InterlockedDecrement(piStack_318 + -4); if ((LVar7 == 0) && (piVar6 != (int *)0x0)) { (**(code **)*piVar6)(1); } FUN_00402730(&DAT_00795358); FUN_0046a740(&piStack_318); piVar6 = piStack_318 + -5; LVar7 = InterlockedDecrement(piStack_318 + -4); if ((LVar7 == 0) && (piVar6 != (int *)0x0)) { (**(code **)*piVar6)(1); } } else { local_310 = (int **)0x1; local_314 = (int *)0x491f02; (**(code **)(**(int **)(param_1 + 0x620) + 0x18))(); local_314 = (int *)0x491f0e; FUN_0059a040(); if (DAT_0083da58 == 0) { piStack_318 = (int *)0x0; } else { piStack_318 = *(int **)(DAT_0083da58 + 0xf4); } local_314 = aiStack_1ec; iVar4 = FUN_005b7ba0(); if (iVar4 == iVar3) { FUN_0042dc80(); FUN_0042c9c0(DAT_0083f21c,0x10000001); uVar5 = FUN_0042e980(&stack0xfffffcfc,0); FUN_0046a740(uVar5); FUN_004011b0(); piVar6 = (int *)FUN_00463c00(0x10000490); (**(code **)(*piVar6 + 0x18))(1); FUN_0059a040(); if (DAT_0083da58 == 0) { uVar5 = 0; } else { uVar5 = *(undefined4 *)(DAT_0083da58 + 0xf4); } FUN_005b7bd0(uVar5,auStack_2c0); FUN_0042dc80(); FUN_0042c9c0(DAT_0083f22c,0x10000001); FUN_0042e000(DAT_0083f248,uStack_2a8,0); FUN_00476820(0x10000492); uVar5 = FUN_0042e980(&local_310,0); FUN_0046a740(uVar5); FUN_004011b0(); FUN_0042e590(); FUN_005b76c0(); } else { FUN_0042dc80(); FUN_0042c9c0(DAT_0083f218,0x10000001); uVar5 = FUN_0042e980(&stack0xfffffcfc,0); FUN_0046a740(uVar5); FUN_004011b0(); piVar6 = (int *)FUN_00463c00(0x10000490); (**(code **)(*piVar6 + 0x18))(0); } FUN_0042e590(); local_314 = DAT_008ef11c; InterlockedIncrement(DAT_008ef11c + 1); FUN_005b7a40(&local_314); FUN_0042dc80(); FUN_0042c9c0(DAT_0083f20c,0x10000001); uVar5 = extraout_ECX; FUN_00401340(local_314 + 5); FUN_0042e9f0(DAT_0083f230,uVar5); uVar5 = FUN_0042e980(&local_310,0); FUN_0046a740(uVar5); ppiVar8 = local_310 + -5; LVar7 = InterlockedDecrement((LONG *)(local_310 + -4)); if ((LVar7 == 0) && (ppiVar8 != (int **)0x0)) { (*(code *)**ppiVar8)(1); } FUN_0042dc80(); FUN_0042c9c0(DAT_0083f210,0x10000001); FUN_0042e000(DAT_0083f244,*(int *)(iVar2 + 0x120) + -1,0); uVar5 = FUN_0042e980(&local_310,0); FUN_0046a740(uVar5); ppiVar8 = local_310 + -5; LVar7 = InterlockedDecrement((LONG *)(local_310 + -4)); if ((LVar7 == 0) && (ppiVar8 != (int **)0x0)) { (*(code *)**ppiVar8)(1); } iVar2 = FUN_005b7640(); if (iVar2 == 0) { (**(code **)(**(int **)(param_1 + 0x620) + 0x9c))(0xd); } else { (**(code **)(**(int **)(param_1 + 0x620) + 0x9c))(1); } FUN_0042e590(); FUN_0042e590(); piVar6 = piStack_318; LVar7 = InterlockedDecrement(piStack_318 + 1); if ((LVar7 == 0) && (piVar6 != (int *)0x0)) { (**(code **)*piVar6)(1); } FUN_005b76c0(); } if (local_310 != (int **)0x0) { if (DAT_0083da58 == 0) { ppiVar8 = (int **)0x0; } else { ppiVar8 = *(int ***)(DAT_0083da58 + 0xf4); } if (local_310 != ppiVar8) { iVar2 = FUN_005b7640(); if (iVar2 != 0) { uVar5 = 1; goto LAB_00492301; } } } uVar5 = 0; LAB_00492301: FUN_00589eb0(5,uVar5); FUN_005b76c0(); (**(code **)(*unaff_EDI + 0x14))(); return; } // --- FUN_00492620 at 0x00492620 (size: 803) --- void __fastcall FUN_00492620(int param_1) { undefined4 *puVar1; int *piVar2; int iVar3; int iVar4; int *piVar5; LONG LVar6; undefined4 unaff_ESI; undefined4 *puVar7; undefined *puVar8; int **ppiVar9; undefined4 uVar10; int *local_ec; int iStack_e8; undefined1 uStack_e4; int *local_e0; int local_dc; int *local_d8; undefined4 local_d4 [2]; int local_cc; undefined1 auStack_c8 [24]; undefined4 uStack_b0; ppiVar9 = &local_ec; piVar5 = &local_dc; puVar8 = &DAT_007a69a0; local_ec = (int *)0x0; local_cc = param_1; FUN_00406d10(piVar5,&DAT_007a69a0,ppiVar9); FUN_00406570(piVar5,puVar8,ppiVar9); piVar5 = local_ec; uVar10 = 0; local_d8 = (int *)0x0; local_d4[0] = 0; piVar2 = local_ec; if (local_ec != (int *)0x0) { (**(code **)(*local_ec + 0x10))(local_ec,0); } piVar2 = (int *)FUN_0048bb00(&local_e0,piVar2,uVar10); iVar3 = *piVar2; if (piVar5 != (int *)0x0) { (**(code **)(*piVar5 + 0x14))(); } if (local_d8 != (int *)0x0) { if (iVar3 < 0) { (**(code **)(*local_d8 + 0x14))(); return; } local_dc = FUN_0056ad30(); local_dc = local_dc + 0x10; FUN_0046e460(); *(undefined4 *)(param_1 + 0x604) = 0; uStack_e4 = 0; FUN_0059a040(); if (DAT_0083da58 == 0) { uVar10 = 0; } else { uVar10 = *(undefined4 *)(DAT_0083da58 + 0xf4); } iVar3 = FUN_005b7bb0(uVar10,auStack_c8); joined_r0x00492705: if (iVar3 != 0) { iVar4 = FUN_005b7640(); if (iVar4 != 0) { local_ec = (int *)CONCAT31(local_ec._1_3_,1); } iVar4 = FUN_0046f670(0,0); if (iVar4 != 0) { FUN_00460530(0x10000001,iVar3); piVar5 = (int *)FUN_00463c00(0x10000268); if ((piVar5 == (int *)0x0) || (iVar3 = (**(code **)(*piVar5 + 0x94))(0xc), puVar1 = DAT_008ef11c, iVar3 == 0)) goto LAB_00492917; InterlockedIncrement(DAT_008ef11c + 1); FUN_005b7a40(&stack0xffffff10); uVar10 = FUN_00404a40(0,puVar1 + 5); FUN_0046a740(uVar10); piVar5 = local_d8 + -5; LVar6 = InterlockedDecrement(local_d8 + -4); if ((LVar6 == 0) && (piVar5 != (int *)0x0)) { (**(code **)*piVar5)(1); } piVar5 = (int *)FUN_00463c00(0x10000269); if ((piVar5 != (int *)0x0) && (iVar3 = (**(code **)(*piVar5 + 0x94))(0xc), iVar3 != 0)) { FUN_0042dc80(); FUN_0042c9c0(DAT_0083f22c,0x10000001); FUN_0042e000(DAT_0083f248,uStack_b0,0); uVar10 = FUN_0042e980(&iStack_e8,0); FUN_0046a740(uVar10); puVar7 = (undefined4 *)(iStack_e8 + -0x14); LVar6 = InterlockedDecrement((LONG *)(iStack_e8 + -0x10)); if ((LVar6 == 0) && (puVar7 != (undefined4 *)0x0)) { (**(code **)*puVar7)(1); } piVar5 = (int *)FUN_00463c00(0x100004aa); if ((piVar5 != (int *)0x0) && (piVar5 = (int *)(**(code **)(*piVar5 + 0x94))(0xc), piVar5 != (int *)0x0)) { iVar3 = FUN_005b7640(); if (iVar3 == 0) { (**(code **)(*piVar5 + 0x18))(1); } else { (**(code **)(*piVar5 + 0x18))(0); } iVar3 = FUN_005b7bc0(unaff_ESI,local_d4); FUN_0042e590(); LVar6 = InterlockedDecrement(puVar1 + 1); if ((LVar6 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } goto joined_r0x00492705; } FUN_0042e590(); } LVar6 = InterlockedDecrement(puVar1 + 1); if ((LVar6 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } goto LAB_00492917; } goto joined_r0x00492705; } LAB_00492917: FUN_00589eb0(6,local_ec); FUN_005b76c0(); (**(code **)(*local_e0 + 0x14))(); } return; } // --- FUN_00492950 at 0x00492950 (size: 265) --- void __fastcall FUN_00492950(int param_1) { int iVar1; int *piVar2; int *piVar3; undefined1 *puVar4; undefined *puVar5; int **ppiVar6; undefined4 uVar7; int *local_14; undefined1 local_10 [4]; undefined1 local_c [4]; int *local_8; undefined4 local_4; if (*(char *)(param_1 + 0x600) != '\0') { *(undefined1 *)(param_1 + 0x600) = 0; FUN_00564d30(); FUN_00565630(); } ppiVar6 = &local_14; puVar4 = local_10; puVar5 = &DAT_007a69a0; local_14 = (int *)0x0; FUN_00406d10(puVar4,&DAT_007a69a0,ppiVar6); FUN_00406570(puVar4,puVar5,ppiVar6); piVar2 = local_14; uVar7 = 0; local_8 = (int *)0x0; local_4 = 0; piVar3 = local_14; if (local_14 != (int *)0x0) { (**(code **)(*local_14 + 0x10))(local_14,0); } piVar3 = (int *)FUN_0048bb00(local_c,piVar3,uVar7); iVar1 = *piVar3; if (piVar2 != (int *)0x0) { (**(code **)(*piVar2 + 0x14))(); } piVar2 = local_8; if (local_8 != (int *)0x0) { if (iVar1 < 0) { (**(code **)(*local_8 + 0x14))(); return; } FUN_00491610(); FUN_00491e20(); FUN_00491aa0(); FUN_00492620(); FUN_00490bc0(); FUN_00490cb0(); if (*(int *)(param_1 + 0x604) != 0) { (**(code **)(**(int **)(param_1 + 0x644) + 0x9c))(1); (**(code **)(*piVar2 + 0x14))(); return; } (**(code **)(**(int **)(param_1 + 0x644) + 0x9c))(0xd); (**(code **)(*piVar2 + 0x14))(); } return; } // --- FUN_00492a90 at 0x00492A90 (size: 473) --- undefined4 __fastcall FUN_00492a90(int param_1) { undefined4 *puVar1; undefined4 uVar2; int iVar3; LONG LVar4; undefined4 extraout_ECX; undefined4 local_114; int *local_110; undefined4 *local_10c; undefined1 local_108 [120]; undefined1 local_90 [144]; if (*(int *)(param_1 + 0x648) == 0) { uVar2 = FUN_0058f840(DAT_00871e54,2,0); FUN_0048c3e0(uVar2); puVar1 = local_10c; if (local_10c[2] != 1) { FUN_0042dc80(); FUN_0042c9c0(DAT_0083f228,0x10000001); uVar2 = extraout_ECX; FUN_00401340(local_10c + 5); FUN_0042e9f0(DAT_0083f234,uVar2); FUN_006823d0(); local_114 = 0; local_110 = (int *)0x0; FUN_0042a2d0(0x8e); if (local_110 != (int *)0x0) { FUN_00429b10(); (**(code **)(*local_110 + 0xac))(1); } local_10c = (undefined4 *)FUN_00429a00(); FUN_0042c290(&local_10c,&local_114); FUN_0042a2d0(0xc5); if (local_110 != (int *)0x0) { FUN_00429b10(); (**(code **)(*local_110 + 0xc4))(local_90); } local_10c = (undefined4 *)FUN_00429a00(); FUN_0042c290(&local_10c,&local_114); iVar3 = FUN_00478810(local_108); *(int *)(param_1 + 0x648) = iVar3; if (iVar3 != 0) { *(undefined4 *)(param_1 + 0x608) = DAT_00871e54; FUN_004234d0(); FUN_00681f60(); FUN_0042e590(); LVar4 = InterlockedDecrement(puVar1 + 1); if (LVar4 == 0) { (**(code **)*puVar1)(1); } return 1; } FUN_004234d0(); FUN_00681f60(); FUN_0042e590(); } LVar4 = InterlockedDecrement(puVar1 + 1); if (LVar4 == 0) { (**(code **)*puVar1)(1); } } return 0; } // --- FUN_00492c70 at 0x00492C70 (size: 593) --- undefined4 __thiscall FUN_00492c70(int param_1,int param_2,undefined4 param_3) { int iVar1; LONG LVar2; undefined4 extraout_ECX; undefined4 uVar3; undefined4 *local_114; int *local_110; undefined4 uStack_10c; undefined1 local_108 [120]; undefined1 local_90 [144]; if (*(int *)(param_1 + 0x64c) == 0) { FUN_0042dc80(); FUN_0042c9c0(DAT_0083f204,0x10000001); uVar3 = extraout_ECX; FUN_00401340(param_2); FUN_0042e9f0(DAT_0083f234,uVar3); FUN_006823d0(); local_114 = (undefined4 *)0x0; local_110 = (int *)0x0; FUN_0042a2d0(0x8e); if (local_110 != (int *)0x0) { FUN_00429b10(); (**(code **)(*local_110 + 0xac))(1); } uStack_10c = FUN_00429a00(); FUN_0042c290(&uStack_10c,&local_114); FUN_0042a2d0(0xc5); if (local_110 != (int *)0x0) { FUN_00429b10(); (**(code **)(*local_110 + 0xc4))(local_90); } uStack_10c = FUN_00429a00(); FUN_0042c290(&uStack_10c,&local_114); iVar1 = FUN_00478810(local_108); *(int *)(param_1 + 0x64c) = iVar1; if (iVar1 != 0) { *(undefined4 *)(param_1 + 0x610) = param_3; if (local_114 != (undefined4 *)0x0) { iVar1 = local_114[1]; local_114[1] = iVar1 + -1; if (iVar1 + -1 == 0) { (**(code **)*local_114)(1); } local_114 = (undefined4 *)0x0; } if (local_110 != (int *)0x0) { iVar1 = local_110[1]; local_110[1] = iVar1 + -1; if (iVar1 + -1 == 0) { (**(code **)*local_110)(1); } local_110 = (int *)0x0; } FUN_00681f60(); FUN_0042e590(); LVar2 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(param_2 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(param_2 + -0x14))(1); } return 1; } if (local_114 != (undefined4 *)0x0) { iVar1 = local_114[1]; local_114[1] = iVar1 + -1; if (iVar1 + -1 == 0) { (**(code **)*local_114)(1); } local_114 = (undefined4 *)0x0; } if (local_110 != (int *)0x0) { iVar1 = local_110[1]; local_110[1] = iVar1 + -1; if (iVar1 + -1 == 0) { (**(code **)*local_110)(1); } local_110 = (int *)0x0; } FUN_00681f60(); FUN_0042e590(); } LVar2 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(param_2 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(param_2 + -0x14))(1); } return 0; } // --- FUN_00492ed0 at 0x00492ED0 (size: 538) --- /* WARNING: Removing unreachable block (ram,0x00492fd5) */ /* WARNING: Removing unreachable block (ram,0x00493022) */ undefined4 __fastcall FUN_00492ed0(int param_1) { undefined4 uVar1; int iVar2; LONG LVar3; undefined4 extraout_ECX; undefined4 uStack_150; undefined4 *puStack_14c; undefined4 *local_140 [12]; undefined1 auStack_110 [272]; if (*(int *)(param_1 + 0x650) == 0) { FUN_0056ad30(); FUN_0059a040(); if (DAT_0083da58 == 0) { uVar1 = 0; } else { uVar1 = *(undefined4 *)(DAT_0083da58 + 0xf4); } iVar2 = FUN_005b7ba0(uVar1,local_140); if (iVar2 != 0) { puStack_14c = local_140[0]; InterlockedIncrement(local_140[0] + 1); if (local_140[0][2] == 1) { LVar3 = InterlockedDecrement(local_140[0] + 1); if (LVar3 == 0) { (**(code **)*local_140[0])(1); } FUN_005b76c0(); return 0; } FUN_0042dc80(); FUN_0042c9c0(DAT_0083f208,0x10000001); uVar1 = extraout_ECX; FUN_00401340(local_140[0] + 5); FUN_0042e9f0(DAT_0083f234,uVar1); FUN_006823d0(); FUN_0042a2d0(0x8e); uStack_150 = FUN_00429a00(); FUN_0042c290(&uStack_150,&stack0xfffffea8); FUN_0042a2d0(0xc5); uStack_150 = FUN_00429a00(); FUN_0042c290(&uStack_150,&stack0xfffffea8); iVar2 = FUN_00478810(auStack_110); *(int *)(param_1 + 0x650) = iVar2; if (iVar2 != 0) { FUN_004234d0(); FUN_00681f60(); FUN_0042e590(); FUN_005abb30(); FUN_005b76c0(); return 1; } FUN_004234d0(); FUN_00681f60(); FUN_0042e590(); FUN_005abb30(); } FUN_005b76c0(); } return 0; } // --- FUN_004930f0 at 0x004930F0 (size: 539) --- /* WARNING: Removing unreachable block (ram,0x004931e6) */ /* WARNING: Removing unreachable block (ram,0x00493233) */ undefined4 __fastcall FUN_004930f0(int param_1) { int iVar1; LONG LVar2; undefined4 extraout_ECX; undefined4 uVar3; undefined4 uStack_150; undefined4 *puStack_14c; undefined4 *local_140 [12]; undefined1 auStack_110 [272]; if (*(int *)(param_1 + 0x654) == 0) { FUN_0056ad30(); FUN_0059a040(); iVar1 = FUN_005b7bd0(*(undefined4 *)(param_1 + 0x604),local_140); if (iVar1 != 0) { puStack_14c = local_140[0]; InterlockedIncrement(local_140[0] + 1); if (local_140[0][2] == 1) { LVar2 = InterlockedDecrement(local_140[0] + 1); if (LVar2 == 0) { (**(code **)*local_140[0])(1); } FUN_005b76c0(); return 0; } FUN_0042dc80(); FUN_0042c9c0(DAT_0083f214,0x10000001); uVar3 = extraout_ECX; FUN_00401340(local_140[0] + 5); FUN_0042e9f0(DAT_0083f234,uVar3); FUN_006823d0(); FUN_0042a2d0(0x8e); uStack_150 = FUN_00429a00(); FUN_0042c290(&uStack_150,&stack0xfffffea8); FUN_0042a2d0(0xc5); uStack_150 = FUN_00429a00(); FUN_0042c290(&uStack_150,&stack0xfffffea8); iVar1 = FUN_00478810(auStack_110); *(int *)(param_1 + 0x654) = iVar1; if (iVar1 != 0) { *(undefined4 *)(param_1 + 0x60c) = *(undefined4 *)(param_1 + 0x604); FUN_004234d0(); FUN_00681f60(); FUN_0042e590(); FUN_005abb30(); FUN_005b76c0(); return 1; } FUN_004234d0(); FUN_00681f60(); FUN_0042e590(); FUN_005abb30(); } FUN_005b76c0(); } return 0; } // --- FUN_00493310 at 0x00493310 (size: 209) --- void __thiscall FUN_00493310(int param_1,int *param_2) { int *piVar1; undefined4 uVar2; int iVar3; if (param_2[2] == 1) { iVar3 = *param_2; if (iVar3 == 0x10000263) { FUN_00492a90(); } else { if (iVar3 == 0x10000264) { FUN_00492ed0(); FUN_00462420(param_2); return; } if (iVar3 == 0x10000265) { FUN_004930f0(); FUN_00462420(param_2); return; } } } else if (param_2[2] == 4) { uVar2 = FUN_0046cf60(); iVar3 = FUN_0046dc50(uVar2); piVar1 = (int *)(param_1 + 0x604); if (iVar3 == 0) { *piVar1 = 0; } else { FUN_00460a60(0x10000001,piVar1); } if (*piVar1 != 0) { (**(code **)(**(int **)(param_1 + 0x644) + 0x9c))(1); FUN_00462420(param_2); return; } (**(code **)(**(int **)(param_1 + 0x644) + 0x9c))(0xd); FUN_00462420(param_2); return; } FUN_00462420(param_2); return; } // --- FUN_00493420 at 0x00493420 (size: 89) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ uint __thiscall FUN_00493420(int param_1,int param_2) { double dVar1; uint in_EAX; if (param_2 == *(int *)(param_1 + 0x618)) { dVar1 = *(double *)(param_1 + 0x620) + _DAT_007938c0; in_EAX = CONCAT22((short)(in_EAX >> 0x10), (ushort)(_DAT_008379a8 < dVar1) << 8 | (ushort)(NAN(_DAT_008379a8) || NAN(dVar1)) << 10 | (ushort)(_DAT_008379a8 == dVar1) << 0xe); if (_DAT_008379a8 < dVar1 || (_DAT_008379a8 == dVar1) != 0) { *(undefined4 *)(param_1 + 0x620) = 0; *(undefined4 *)(param_1 + 0x624) = 0; *(undefined4 *)(param_1 + 0x618) = 0xffffffff; return 1; } } *(double *)(param_1 + 0x620) = _DAT_008379a8; *(int *)(param_1 + 0x618) = param_2; return in_EAX & 0xffffff00; } // --- FUN_00493480 at 0x00493480 (size: 47) --- int FUN_00493480(int param_1,int param_2,int param_3) { for (; param_1 != param_2; param_1 = param_1 + 0x40) { if (param_3 != 0) { FUN_004951d0(param_1); } param_3 = param_3 + 0x40; } return param_3; } // --- FUN_004934b0 at 0x004934B0 (size: 62) --- int FUN_004934b0(int param_1,int param_2,int param_3) { int iVar1; iVar1 = param_2 - param_1 >> 6; if (iVar1 < 1) { return param_3; } do { param_2 = param_2 + -0x40; param_3 = param_3 + -0x40; FUN_00495300(param_2); iVar1 = iVar1 + -1; } while (iVar1 != 0); return param_3; } // --- FUN_004934f0 at 0x004934F0 (size: 61) --- int FUN_004934f0(int param_1,int param_2,int param_3) { int iVar1; iVar1 = param_2 - param_1 >> 6; if (iVar1 < 1) { return param_3; } do { FUN_00495300(param_1); param_1 = param_1 + 0x40; param_3 = param_3 + 0x40; iVar1 = iVar1 + -1; } while (iVar1 != 0); return param_3; } // --- FUN_00493530 at 0x00493530 (size: 98) --- void __fastcall FUN_00493530(int *param_1) { LONG LVar1; undefined4 *puVar2; puVar2 = (undefined4 *)(param_1[2] + -0x14); LVar1 = InterlockedDecrement((LONG *)(param_1[2] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(param_1[1] + -0x14); LVar1 = InterlockedDecrement((LONG *)(param_1[1] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(*param_1 + -0x14); LVar1 = InterlockedDecrement((LONG *)(*param_1 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } return; } // --- FUN_004935a0 at 0x004935A0 (size: 84) --- void FUN_004935a0(int param_1) { code *pcVar1; char cVar2; code *in_stack_00000048; pcVar1 = in_stack_00000048; param_1 = param_1 + -0x40; cVar2 = (*in_stack_00000048)(&stack0x00000008,param_1); while (cVar2 != '\0') { FUN_00495300(param_1); param_1 = param_1 + -0x40; cVar2 = (*pcVar1)(&stack0x00000008,param_1); } FUN_00495300(&stack0x00000008); FUN_00493530(); return; } // --- FUN_00493600 at 0x00493600 (size: 118) --- void FUN_00493600(int param_1,int param_2,int param_3) { int iVar1; char cVar2; code *in_stack_00000050; while (param_3 < param_2) { param_2 = (param_2 + -1) / 2; iVar1 = param_2 * 0x40 + param_1; cVar2 = (*in_stack_00000050)(iVar1,&stack0x00000010); if (cVar2 == '\0') break; FUN_00495300(iVar1); } FUN_00495300(&stack0x00000010); FUN_00493530(); return; } // --- FUN_00493680 at 0x00493680 (size: 100) --- void __fastcall FUN_00493680(int param_1) { int *piVar1; undefined4 uVar2; FUN_004639a0(); piVar1 = (int *)FUN_00463c00(0x10000583); if (piVar1 == (int *)0x0) { uVar2 = 0; } else { uVar2 = (**(code **)(*piVar1 + 0x94))(5); } *(undefined4 *)(param_1 + 0x608) = uVar2; piVar1 = (int *)FUN_00463c00(0x10000587); if (piVar1 == (int *)0x0) { uVar2 = 0; } else { uVar2 = (**(code **)(*piVar1 + 0x94))(0xc); } *(undefined4 *)(param_1 + 0x60c) = uVar2; FUN_0043c680(); FUN_00465f90(3); return; } // --- FUN_004936f0 at 0x004936F0 (size: 376) --- void __fastcall FUN_004936f0(int param_1) { int iVar1; int *piVar2; LONG LVar3; int iVar4; undefined4 *puVar5; undefined *puStack_10; uint local_c; int iStack_8; int iStack_4; if ((*(int *)(*(int *)(param_1 + 0x608) + 0x610) == *(int *)(param_1 + 0x600) - *(int *)(param_1 + 0x5fc) >> 6) && (local_c = 0, *(int *)(param_1 + 0x600) - *(int *)(param_1 + 0x5fc) >> 6 != 0)) { iVar4 = 0; do { FUN_0046dc50(local_c); piVar2 = (int *)FUN_00463c00(0x1000058c); if ((piVar2 != (int *)0x0) && (iStack_8 = (**(code **)(*piVar2 + 0x94))(0xc), iStack_8 != 0)) { puStack_10 = PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); iVar1 = *(int *)(param_1 + 0x5fc); piVar2 = (int *)FUN_00495980(&iStack_4,*(undefined1 *)(iVar1 + 0x10 + iVar4), *(undefined4 *)(iVar1 + 0x18 + iVar4), *(undefined4 *)(iVar1 + 0x1c + iVar4)); if (puStack_10 != (undefined *)*piVar2) { puVar5 = (undefined4 *)(puStack_10 + -0x14); LVar3 = InterlockedDecrement((LONG *)(puStack_10 + -0x10)); if ((LVar3 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } puStack_10 = (undefined *)*piVar2; InterlockedIncrement((LONG *)(puStack_10 + -0x10)); } puVar5 = (undefined4 *)(iStack_4 + -0x14); LVar3 = InterlockedDecrement((LONG *)(iStack_4 + -0x10)); if ((LVar3 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } FUN_0046a740(&puStack_10); puVar5 = (undefined4 *)(puStack_10 + -0x14); LVar3 = InterlockedDecrement((LONG *)(puStack_10 + -0x10)); if ((LVar3 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } } local_c = local_c + 1; iVar4 = iVar4 + 0x40; } while (local_c < (uint)(*(int *)(param_1 + 0x600) - *(int *)(param_1 + 0x5fc) >> 6)); } return; } // --- FUN_00493870 at 0x00493870 (size: 51) --- void FUN_00493870(int param_1,int param_2) { for (; param_1 != param_2; param_1 = param_1 + 0x40) { FUN_004951d0(param_1); FUN_004935a0(param_1); } return; } // --- FUN_004938b0 at 0x004938B0 (size: 161) --- void FUN_004938b0(int param_1,int param_2,int param_3) { int iVar1; char cVar2; int iVar3; int iVar4; code *in_stack_00000050; iVar3 = param_2; while( true ) { iVar1 = iVar3 * 2; iVar4 = iVar1 + 2; if (param_3 <= iVar4) break; iVar3 = iVar4 * 0x40 + param_1; cVar2 = (*in_stack_00000050)(iVar3,iVar3 + -0x40); if (cVar2 != '\0') { iVar4 = iVar1 + 1; } FUN_00495300(iVar4 * 0x40 + param_1); iVar3 = iVar4; } if (iVar4 == param_3) { FUN_00495300(iVar4 * 0x40 + -0x40 + param_1); iVar3 = iVar1 + 1; } FUN_004951d0(&stack0x00000010); FUN_00493600(param_1,iVar3,param_2); FUN_00493530(); return; } // --- FUN_00493960 at 0x00493960 (size: 427) --- void FUN_00493960(int param_1) { int *piVar1; int iVar2; LONG LVar3; undefined4 *puVar4; undefined *local_8; int iStack_4; local_8 = PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); FUN_0046f2c0(0x10000589,0); piVar1 = (int *)FUN_00463c00(0x1000058a); if ((piVar1 != (int *)0x0) && (iVar2 = (**(code **)(*piVar1 + 0x94))(0xc), iVar2 != 0)) { FUN_004027b0(&local_8,&DAT_007a11d4,*(undefined4 *)(param_1 + 0xc)); FUN_0046a740(&local_8); } piVar1 = (int *)FUN_00463c00(0x1000058b); if ((piVar1 != (int *)0x0) && (iVar2 = (**(code **)(*piVar1 + 0x94))(0xc), iVar2 != 0)) { FUN_0046a740(param_1 + 4); } piVar1 = (int *)FUN_00463c00(0x1000058c); if ((piVar1 != (int *)0x0) && (iVar2 = (**(code **)(*piVar1 + 0x94))(0xc), iVar2 != 0)) { piVar1 = (int *)FUN_00495980(&iStack_4,*(undefined1 *)(param_1 + 0x10), *(undefined4 *)(param_1 + 0x18),*(undefined4 *)(param_1 + 0x1c)); if (local_8 != (undefined *)*piVar1) { puVar4 = (undefined4 *)(local_8 + -0x14); LVar3 = InterlockedDecrement((LONG *)(local_8 + -0x10)); if ((LVar3 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } local_8 = (undefined *)*piVar1; InterlockedIncrement((LONG *)(local_8 + -0x10)); } LVar3 = InterlockedDecrement((LONG *)(iStack_4 + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(iStack_4 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iStack_4 + -0x14))(1); } FUN_0046a740(&local_8); } piVar1 = (int *)FUN_00463c00(0x1000058d); if ((piVar1 != (int *)0x0) && (iVar2 = (**(code **)(*piVar1 + 0x94))(0xc), iVar2 != 0)) { FUN_0046a740(param_1); } puVar4 = (undefined4 *)(local_8 + -0x14); LVar3 = InterlockedDecrement((LONG *)(local_8 + -0x10)); if ((LVar3 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } return; } // --- FUN_00493b10 at 0x00493B10 (size: 262) --- uint FUN_00493b10(uint param_1,uint param_2) { code *pcVar1; char cVar2; LONG LVar3; undefined4 *puVar4; code *in_stack_0000004c; int iStack_40; int iStack_3c; int iStack_38; pcVar1 = in_stack_0000004c; while( true ) { cVar2 = (*pcVar1)(param_1,&stack0x0000000c); while (cVar2 != '\0') { param_1 = param_1 + 0x40; cVar2 = (*pcVar1)(param_1,&stack0x0000000c); } param_2 = param_2 - 0x40; cVar2 = (*pcVar1)(&stack0x0000000c,param_2); while (cVar2 != '\0') { param_2 = param_2 - 0x40; cVar2 = (*pcVar1)(&stack0x0000000c,param_2); } if (param_2 <= param_1) break; FUN_004951d0(param_1); FUN_00495300(param_2); FUN_00495300(&iStack_40); puVar4 = (undefined4 *)(iStack_38 + -0x14); LVar3 = InterlockedDecrement((LONG *)(iStack_38 + -0x10)); if ((LVar3 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } puVar4 = (undefined4 *)(iStack_3c + -0x14); LVar3 = InterlockedDecrement((LONG *)(iStack_3c + -0x10)); if ((LVar3 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } puVar4 = (undefined4 *)(iStack_40 + -0x14); LVar3 = InterlockedDecrement((LONG *)(iStack_40 + -0x10)); if ((LVar3 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } param_1 = param_1 + 0x40; } FUN_00493530(); return param_1; } // --- FUN_00493c20 at 0x00493C20 (size: 117) --- void FUN_00493c20(int *param_1,int *param_2) { LONG LVar1; undefined4 *puVar2; for (; param_1 != param_2; param_1 = param_1 + 0x10) { puVar2 = (undefined4 *)(param_1[2] + -0x14); LVar1 = InterlockedDecrement((LONG *)(param_1[2] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(param_1[1] + -0x14); LVar1 = InterlockedDecrement((LONG *)(param_1[1] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(*param_1 + -0x14); LVar1 = InterlockedDecrement((LONG *)(*param_1 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } } return; } // --- FUN_00493ca0 at 0x00493CA0 (size: 113) --- void FUN_00493ca0(undefined4 param_1,int param_2) { char cVar1; code *in_stack_0000004c; cVar1 = (*in_stack_0000004c)(&stack0x0000000c,param_1); if (cVar1 != '\0') { FUN_004934b0(param_1,param_2,param_2 + 0x40,&stack0x0000004c,0); FUN_00495300(&stack0x0000000c); FUN_00493530(); return; } FUN_004951d0(&stack0x0000000c); FUN_004935a0(param_2); FUN_00493530(); return; } // --- FUN_00493d20 at 0x00493D20 (size: 81) --- void FUN_00493d20(int param_1,int param_2) { int iVar1; int iVar2; int iVar3; iVar1 = param_2 - param_1 >> 6; if (1 < iVar1) { iVar2 = (iVar1 + -2) / 2; iVar3 = iVar2 * 0x40 + param_1; while( true ) { FUN_004951d0(iVar3); FUN_004938b0(param_1,iVar2,iVar1); if (iVar2 == 0) break; iVar2 = iVar2 + -1; iVar3 = iVar3 + -0x40; } } return; } // --- FUN_00493dd0 at 0x00493DD0 (size: 97) --- void __fastcall FUN_00493dd0(int param_1) { int iVar1; uint uVar2; FUN_0046e460(); FUN_0046dc70(0,1); uVar2 = 0; if (*(int *)(param_1 + 0x600) - *(int *)(param_1 + 0x5fc) >> 6 != 0) { iVar1 = 0; do { FUN_00493960(*(int *)(param_1 + 0x5fc) + iVar1); uVar2 = uVar2 + 1; iVar1 = iVar1 + 0x40; } while (uVar2 < (uint)(*(int *)(param_1 + 0x600) - *(int *)(param_1 + 0x5fc) >> 6)); } return; } // --- FUN_00493e40 at 0x00493E40 (size: 523) --- undefined4 FUN_00493e40(int *param_1,wchar_t *param_2) { undefined *puVar1; LONG LVar2; wchar_t *pwVar3; wchar_t *local_8; if (*(int *)(param_2 + -2) == 1) { LVar2 = InterlockedDecrement((LONG *)(param_2 + -8)); if ((LVar2 == 0) && (param_2 + -10 != (wchar_t *)0x0)) { (*(code *)**(undefined4 **)(param_2 + -10))(1); } return 1; } InterlockedIncrement((LONG *)(param_2 + -8)); puVar1 = PTR_DAT_00818340; local_8 = (wchar_t *)PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); FUN_00408390(); _wcslwr(param_2); if (puVar1 != (undefined *)*param_1) { LVar2 = InterlockedDecrement((LONG *)(puVar1 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar1 + -0x14))(1); } local_8 = (wchar_t *)*param_1; InterlockedIncrement((LONG *)(local_8 + -8)); } FUN_00408390(); _wcslwr(local_8); pwVar3 = wcsstr(local_8,param_2); if ((pwVar3 == (wchar_t *)0x0) || ((int)pwVar3 - (int)local_8 >> 1 < 0)) { FUN_00402070(param_1 + 1); FUN_00408390(); _wcslwr(local_8); pwVar3 = wcsstr(local_8,param_2); if ((pwVar3 == (wchar_t *)0x0) || ((int)pwVar3 - (int)local_8 >> 1 < 0)) { FUN_00402070(param_1 + 2); FUN_00408390(); _wcslwr(local_8); pwVar3 = wcsstr(local_8,param_2); if ((pwVar3 != (wchar_t *)0x0) && (-1 < (int)pwVar3 - (int)local_8 >> 1)) { FUN_004011b0(); FUN_004011b0(); FUN_004011b0(); return 1; } FUN_004011b0(); FUN_004011b0(); FUN_004011b0(); return 0; } } LVar2 = InterlockedDecrement((LONG *)(local_8 + -8)); if ((LVar2 == 0) && (local_8 + -10 != (wchar_t *)0x0)) { (*(code *)**(undefined4 **)(local_8 + -10))(1); } LVar2 = InterlockedDecrement((LONG *)(param_2 + -8)); if ((LVar2 == 0) && (param_2 + -10 != (wchar_t *)0x0)) { (*(code *)**(undefined4 **)(param_2 + -10))(1); } LVar2 = InterlockedDecrement((LONG *)(param_2 + -8)); if ((LVar2 == 0) && (param_2 + -10 != (wchar_t *)0x0)) { (*(code *)**(undefined4 **)(param_2 + -10))(1); } return 1; } // --- FUN_00494050 at 0x00494050 (size: 63) --- void FUN_00494050(int param_1,int param_2) { int iVar1; iVar1 = param_1; if (param_1 != param_2) { while (iVar1 = iVar1 + 0x40, iVar1 != param_2) { FUN_004951d0(iVar1); FUN_00493ca0(param_1,iVar1); } } return; } // --- FUN_004940a0 at 0x004940A0 (size: 78) --- void FUN_004940a0(int param_1,int param_2,undefined4 param_3) { if (0x400 < (int)(param_2 - param_1 & 0xffffffc0U)) { FUN_00494050(param_1,param_1 + 0x400,param_3); FUN_00493870(param_1 + 0x400,param_2,0,param_3); return; } FUN_00494050(param_1,param_2,param_3); return; } // --- FUN_004940f0 at 0x004940F0 (size: 208) --- void FUN_004940f0(int param_1,int param_2) { LONG LVar1; undefined4 *puVar2; uint uVar3; int local_40; int local_3c; int local_38; uVar3 = param_2 - param_1; while (0x40 < (int)(uVar3 & 0xffffffc0)) { FUN_004951d0(param_1 + -0x40 + uVar3); FUN_00495300(param_1); uVar3 = uVar3 - 0x40; FUN_004951d0(&local_40); FUN_004938b0(param_1,0,(int)uVar3 >> 6); puVar2 = (undefined4 *)(local_38 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_38 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(local_3c + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_3c + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(local_40 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_40 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } } return; } // --- FUN_004941c0 at 0x004941C0 (size: 253) --- void FUN_004941c0(int param_1,uint param_2,uint param_3,undefined4 param_4,code *param_5) { char cVar1; LONG LVar2; uint uVar3; undefined4 *puVar4; int iStack_40; int iStack_3c; int iStack_38; FUN_00493d20(param_1,param_2,param_5,0,0); for (uVar3 = param_2; uVar3 < param_3; uVar3 = uVar3 + 0x40) { cVar1 = (*param_5)(uVar3,param_1); if (cVar1 != '\0') { FUN_004951d0(uVar3); FUN_00495300(param_1); FUN_004951d0(&iStack_40); FUN_004938b0(param_1,0,(int)(param_2 - param_1) >> 6); puVar4 = (undefined4 *)(iStack_38 + -0x14); LVar2 = InterlockedDecrement((LONG *)(iStack_38 + -0x10)); if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } puVar4 = (undefined4 *)(iStack_3c + -0x14); LVar2 = InterlockedDecrement((LONG *)(iStack_3c + -0x10)); if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } puVar4 = (undefined4 *)(iStack_40 + -0x14); LVar2 = InterlockedDecrement((LONG *)(iStack_40 + -0x10)); if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) { (**(code **)*puVar4)(1); } } } FUN_004940f0(param_1,param_2,param_5); return; } // --- FUN_004942c0 at 0x004942C0 (size: 130) --- undefined4 * __thiscall FUN_004942c0(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { FUN_00472670(param_2,param_3); param_1[0x17e] = &PTR_FUN_007ccb60; *param_1 = &PTR_FUN_007a7138; param_1[0x17e] = &PTR_FUN_007ccb60; param_1[0x17f] = 0; param_1[0x180] = 0; param_1[0x181] = 0; param_1[0x182] = 0; param_1[0x183] = 0; param_1[0x184] = 0; *(undefined1 *)(param_1 + 0x185) = 0; param_1[0x188] = 0; param_1[0x189] = 0; param_1[0x18a] = 0; param_1[0x18b] = 0; param_1[0x186] = 0xffffffff; return param_1; } // --- FUN_00494380 at 0x00494380 (size: 132) --- void __fastcall FUN_00494380(undefined4 *param_1) { undefined4 *puVar1; int iVar2; int *piVar3; undefined4 uStack_4; puVar1 = param_1 + 0x17e; *param_1 = &PTR_FUN_007a7138; *puVar1 = &PTR_FUN_007ccb60; uStack_4 = param_1; FUN_00465fb0(3); piVar3 = (int *)FUN_0043c680(); if (piVar3 != (int *)0x0) { (**(code **)(*piVar3 + 0xc))(puVar1); } FUN_00493c20(param_1[0x17f],param_1[0x180],(int)&uStack_4 + 3); iVar2 = param_1[0x17f]; if (iVar2 != 0) { FUN_004051c0(iVar2,(param_1[0x181] - iVar2 >> 6) << 6); } *puVar1 = &PTR_FUN_007ccb60; FUN_0043c610(); FUN_004726c0(); return; } // --- FUN_00494440 at 0x00494440 (size: 305) --- void __thiscall FUN_00494440(uint *param_1,uint param_2,undefined4 param_3,undefined4 param_4,uint param_5, char param_6) { uint *puVar1; uint uVar2; uint uVar3; uint local_8; int local_4; local_8 = (int)(param_1[1] - *param_1) >> 6; puVar1 = ¶m_5; if (param_5 <= local_8) { puVar1 = &local_8; } local_4 = *puVar1 + local_8; if (local_4 == 0) { local_8 = 0; } else if ((uint)(local_4 * 0x40) < 0x81) { local_8 = FUN_004050d0(local_4 * 0x40); } else { local_8 = FUN_005df0f5(); } uVar2 = local_8; for (uVar3 = *param_1; uVar3 != param_2; uVar3 = uVar3 + 0x40) { if (uVar2 != 0) { FUN_004951d0(uVar3); } uVar2 = uVar2 + 0x40; } uVar3 = param_5; if (param_5 == 1) { if (uVar2 != 0) { FUN_004951d0(param_3); } uVar2 = uVar2 + 0x40; } else { for (; uVar3 != 0; uVar3 = uVar3 - 1) { if (uVar2 != 0) { FUN_004951d0(param_3); } uVar2 = uVar2 + 0x40; } } if (param_6 == '\0') { uVar2 = FUN_00493480(param_2,param_1[1],uVar2,¶m_6); } FUN_00493c20(*param_1,param_1[1],¶m_6); uVar3 = *param_1; if (uVar3 != 0) { FUN_004051c0(uVar3,((int)(param_1[2] - uVar3) >> 6) << 6); } param_1[1] = uVar2; *param_1 = local_8; param_1[2] = local_4 * 0x40 + local_8; return; } // --- FUN_00494580 at 0x00494580 (size: 30) --- void * __thiscall FUN_00494580(void *param_1,byte param_2) { FUN_00494380(); if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_004945a0 at 0x004945A0 (size: 19) --- void FUN_004945a0(void) { FUN_00460270(0x10000049,&LAB_00494410); return; } // --- FUN_004945c0 at 0x004945C0 (size: 217) --- int __thiscall FUN_004945c0(int *param_1,int param_2,undefined4 param_3) { int iVar1; int iVar2; undefined1 local_40 [64]; iVar1 = param_1[1]; iVar2 = param_2 - *param_1 >> 6; if (iVar1 == param_1[2]) { FUN_00494440(param_2,param_3,¶m_3,1,0); return iVar2 * 0x40 + *param_1; } if (param_2 == iVar1) { if (iVar1 != 0) { FUN_004951d0(param_3); } param_1[1] = param_1[1] + 0x40; return iVar2 * 0x40 + *param_1; } if (iVar1 != 0) { FUN_004951d0(iVar1 + -0x40); } param_1[1] = param_1[1] + 0x40; FUN_004951d0(param_3); FUN_004934b0(param_2,param_1[1] + -0x80,param_1[1] + -0x40,¶m_3,0); FUN_00495300(local_40); FUN_00493530(); return iVar2 * 0x40 + *param_1; } // --- FUN_004946a0 at 0x004946A0 (size: 228) --- void FUN_004946a0(int param_1,int param_2,undefined4 param_3,int param_4,code *param_5) { char cVar1; int iVar2; int iVar3; if (0x400 < (int)(param_2 - param_1 & 0xffffffc0U)) { while (param_4 != 0) { param_4 = param_4 + -1; iVar2 = ((param_2 - param_1 >> 6) - (param_2 - param_1 >> 0x1f) >> 1) * 0x40 + param_1; cVar1 = (*param_5)(param_1,iVar2); if (cVar1 == '\0') { cVar1 = (*param_5)(param_1,param_2 + -0x40); iVar3 = param_1; if ((cVar1 == '\0') && (cVar1 = (*param_5)(iVar2,param_2 + -0x40), iVar3 = iVar2, cVar1 != '\0')) { iVar3 = param_2 + -0x40; } } else { cVar1 = (*param_5)(iVar2,param_2 + -0x40); iVar3 = iVar2; if (cVar1 == '\0') { cVar1 = (*param_5)(param_1,param_2 + -0x40); iVar3 = param_2 + -0x40; if (cVar1 == '\0') { iVar3 = param_1; } } } FUN_004951d0(iVar3); iVar2 = FUN_00493b10(param_1,param_2); FUN_004946a0(iVar2,param_2,0,param_4,param_5); param_2 = iVar2; if ((int)(iVar2 - param_1 & 0xffffffc0U) < 0x401) { return; } } FUN_004941c0(param_1,param_2,param_2,0,param_5); } return; } // --- FUN_00494790 at 0x00494790 (size: 346) --- void __thiscall FUN_00494790(int param_1,char param_2) { char cVar1; int *piVar2; LONG LVar3; undefined4 uVar4; int iVar5; undefined *puVar6; undefined *puVar7; uint uStack_8; int local_4; puVar6 = PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); if (param_2 != '\0') { piVar2 = (int *)FUN_00466830(&local_4); if (puVar6 != (undefined *)*piVar2) { LVar3 = InterlockedDecrement((LONG *)(puVar6 + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(puVar6 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar6 + -0x14))(1); } puVar6 = (undefined *)*piVar2; InterlockedIncrement((LONG *)(puVar6 + -0x10)); } LVar3 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(local_4 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_4 + -0x14))(1); } } uVar4 = FUN_004934f0(*(undefined4 *)(param_1 + 0x600),*(undefined4 *)(param_1 + 0x600), *(undefined4 *)(param_1 + 0x5fc),¶m_2,0); FUN_00493c20(uVar4,*(undefined4 *)(param_1 + 0x600),¶m_2); *(undefined4 *)(param_1 + 0x600) = uVar4; iVar5 = 0; uStack_8 = 0; if (DAT_0083f33c - DAT_0083f338 >> 6 != 0) { do { if (param_2 == '\0') { LAB_0049488a: FUN_004945c0(*(undefined4 *)(param_1 + 0x600),iVar5 + DAT_0083f338); } else { puVar7 = puVar6; InterlockedIncrement((LONG *)(puVar6 + -0x10)); cVar1 = FUN_00493e40(DAT_0083f338 + iVar5,puVar7); if (cVar1 != '\0') goto LAB_0049488a; } uStack_8 = uStack_8 + 1; iVar5 = iVar5 + 0x40; } while (uStack_8 < (uint)(DAT_0083f33c - DAT_0083f338 >> 6)); } LVar3 = InterlockedDecrement((LONG *)(puVar6 + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(puVar6 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar6 + -0x14))(1); } return; } // --- FUN_004948f0 at 0x004948F0 (size: 74) --- void FUN_004948f0(int param_1,int param_2,undefined4 param_3) { int iVar1; int iVar2; if (param_1 != param_2) { iVar2 = 0; for (iVar1 = param_2 - param_1 >> 6; iVar1 != 1; iVar1 = iVar1 >> 1) { iVar2 = iVar2 + 1; } FUN_004946a0(param_1,param_2,0,iVar2 * 2,param_3); FUN_004940a0(param_1,param_2,param_3); } return; } // --- FUN_00494940 at 0x00494940 (size: 340) --- void __fastcall FUN_00494940(int param_1) { int iVar1; iVar1 = *(int *)(param_1 + 0x610); if (iVar1 == 1) { if (*(char *)(param_1 + 0x614) != '\0') { FUN_004948f0(*(undefined4 *)(param_1 + 0x5fc),*(undefined4 *)(param_1 + 0x600),&LAB_00496010); FUN_00493dd0(); return; } FUN_004948f0(*(undefined4 *)(param_1 + 0x5fc),*(undefined4 *)(param_1 + 0x600),&LAB_00495dd0); FUN_00493dd0(); return; } if (iVar1 == 2) { if (*(char *)(param_1 + 0x614) != '\0') { FUN_004948f0(*(undefined4 *)(param_1 + 0x5fc),*(undefined4 *)(param_1 + 0x600),FUN_00496130); FUN_00493dd0(); return; } FUN_004948f0(*(undefined4 *)(param_1 + 0x5fc),*(undefined4 *)(param_1 + 0x600),FUN_00495ef0); FUN_00493dd0(); return; } if (iVar1 == 3) { if (*(char *)(param_1 + 0x614) != '\0') { FUN_004948f0(*(undefined4 *)(param_1 + 0x5fc),*(undefined4 *)(param_1 + 0x600),&LAB_00494d60); FUN_00493dd0(); return; } FUN_004948f0(*(undefined4 *)(param_1 + 0x5fc),*(undefined4 *)(param_1 + 0x600),&LAB_00494ce0); FUN_00493dd0(); return; } if (*(char *)(param_1 + 0x614) != '\0') { FUN_004948f0(*(undefined4 *)(param_1 + 0x5fc),*(undefined4 *)(param_1 + 0x600),&LAB_00494d40); FUN_00493dd0(); return; } FUN_004948f0(*(undefined4 *)(param_1 + 0x5fc),*(undefined4 *)(param_1 + 0x600),&LAB_00494cc0); FUN_00493dd0(); return; } // --- FUN_00494aa0 at 0x00494AA0 (size: 407) --- void __thiscall FUN_00494aa0(int param_1,undefined4 *param_2) { char cVar1; int iVar2; undefined4 uVar3; iVar2 = param_2[2]; if (iVar2 != 1) { if ((((iVar2 != 4) && (iVar2 == 0x43)) && (iVar2 = FUN_0046cf60(), iVar2 != -1)) && (cVar1 = FUN_00493420(iVar2), cVar1 != '\0')) { FUN_00496710(*(undefined4 *)(*(int *)(param_1 + 0x5fc) + 0xc + iVar2 * 0x40)); (**(code **)(*DAT_0083f284 + 0x18))(1); FUN_00462420(param_2); return; } goto switchD_00494b2b_caseD_10000583; } switch(*param_2) { case 0x1000057f: if (*(int *)(param_1 + 0x610) == 0) goto LAB_00494bab; *(undefined4 *)(param_1 + 0x610) = 0; *(undefined1 *)(param_1 + 0x614) = 0; break; case 0x10000580: uVar3 = 1; if (*(int *)(param_1 + 0x610) == 1) { *(bool *)(param_1 + 0x614) = *(char *)(param_1 + 0x614) == '\0'; } else { LAB_00494bbe: *(undefined4 *)(param_1 + 0x610) = uVar3; *(undefined1 *)(param_1 + 0x614) = 0; } break; case 0x10000581: uVar3 = 3; if (*(int *)(param_1 + 0x610) != 3) goto LAB_00494bbe; *(bool *)(param_1 + 0x614) = *(char *)(param_1 + 0x614) == '\0'; break; case 0x10000582: uVar3 = 2; if (*(int *)(param_1 + 0x610) != 2) goto LAB_00494bbe; LAB_00494bab: *(bool *)(param_1 + 0x614) = *(char *)(param_1 + 0x614) == '\0'; break; default: goto switchD_00494b2b_caseD_10000583; case 0x10000585: goto switchD_00494b2b_caseD_10000585; case 0x10000586: uVar3 = 1; goto LAB_00494c1b; case 0x10000588: FUN_00467ae0(); FUN_00494790(0); FUN_00494940(); switchD_00494b2b_caseD_10000585: iVar2 = FUN_0046cf60(); if ((iVar2 == -1) || (DAT_0083f284 == (int *)0x0)) goto switchD_00494b2b_caseD_10000583; FUN_004968b0(*(undefined4 *)(*(int *)(param_1 + 0x5fc) + 0xc + iVar2 * 0x40)); uVar3 = 0; LAB_00494c1b: FUN_00494790(uVar3); } FUN_00494940(); switchD_00494b2b_caseD_10000583: FUN_00462420(param_2); return; } // --- FUN_00494ca0 at 0x00494CA0 (size: 20) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ float10 FUN_00494ca0(double param_1) { float10 fVar1; fVar1 = (float10)param_1; if (fVar1 < (float10)_DAT_00795610) { fVar1 = -fVar1; } return fVar1; } // --- FUN_00494dc0 at 0x00494DC0 (size: 75) --- void __fastcall FUN_00494dc0(int param_1) { *(undefined4 *)(param_1 + 0x650) = 0; *(undefined4 *)(param_1 + 0x654) = 0; *(undefined1 *)(param_1 + 0x648) = 0; *(undefined4 *)(param_1 + 0x660) = 0; *(undefined4 *)(param_1 + 0x65c) = 0; *(undefined4 *)(param_1 + 0x658) = 0; FUN_00467ae0(); FUN_00467ae0(); FUN_00467ae0(); return; } // --- FUN_00494e10 at 0x00494E10 (size: 64) --- uint __thiscall FUN_00494e10(undefined4 *param_1,undefined4 *param_2) { wchar_t *_Str2; wchar_t *_Str1; int iVar1; _Str2 = (wchar_t *)*param_2; _Str1 = (wchar_t *)*param_1; iVar1 = *(int *)(_Str1 + -2); if (iVar1 == *(int *)(_Str2 + -2)) { iVar1 = *(int *)(_Str1 + -4); if (((iVar1 == *(int *)(_Str2 + -4)) || (iVar1 == -1)) || (*(int *)(_Str2 + -4) == -1)) { iVar1 = wcscmp(_Str1,_Str2); return (uint)(iVar1 != 0); } } return CONCAT31((int3)((uint)iVar1 >> 8),1); } // --- FUN_00494e50 at 0x00494E50 (size: 276) --- int * __fastcall FUN_00494e50(int *param_1) { undefined *puVar1; LONG LVar2; LONG *pLVar3; pLVar3 = (LONG *)(PTR_DAT_00818340 + -0x10); *param_1 = (int)PTR_DAT_00818340; InterlockedIncrement(pLVar3); pLVar3 = (LONG *)(PTR_DAT_00818340 + -0x10); param_1[1] = (int)PTR_DAT_00818340; InterlockedIncrement(pLVar3); pLVar3 = (LONG *)(PTR_DAT_00818340 + -0x10); param_1[2] = (int)PTR_DAT_00818340; InterlockedIncrement(pLVar3); puVar1 = (undefined *)*param_1; if (puVar1 != PTR_DAT_00818340) { LVar2 = InterlockedDecrement((LONG *)(puVar1 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar1 + -0x14))(1); } pLVar3 = (LONG *)(PTR_DAT_00818340 + -0x10); *param_1 = (int)PTR_DAT_00818340; InterlockedIncrement(pLVar3); } puVar1 = (undefined *)param_1[1]; if (puVar1 != PTR_DAT_00818340) { LVar2 = InterlockedDecrement((LONG *)(puVar1 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar1 + -0x14))(1); } pLVar3 = (LONG *)(PTR_DAT_00818340 + -0x10); param_1[1] = (int)PTR_DAT_00818340; InterlockedIncrement(pLVar3); } puVar1 = (undefined *)param_1[2]; if (puVar1 != PTR_DAT_00818340) { LVar2 = InterlockedDecrement((LONG *)(puVar1 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar1 + -0x14))(1); } pLVar3 = (LONG *)(PTR_DAT_00818340 + -0x10); param_1[2] = (int)PTR_DAT_00818340; InterlockedIncrement(pLVar3); } param_1[3] = 0; param_1[6] = 0; param_1[7] = 0; param_1[8] = 0; param_1[9] = 0; param_1[10] = 0; param_1[0xc] = 0; param_1[0xd] = 0; param_1[0xe] = 0; param_1[0xf] = 0; *(undefined1 *)(param_1 + 4) = 0; *(undefined1 *)(param_1 + 0xb) = 0; return param_1; } // --- FUN_00494f70 at 0x00494F70 (size: 222) --- void __fastcall FUN_00494f70(int *param_1) { undefined *puVar1; LONG LVar2; LONG *pLVar3; puVar1 = (undefined *)*param_1; if (puVar1 != PTR_DAT_00818340) { LVar2 = InterlockedDecrement((LONG *)(puVar1 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar1 + -0x14))(1); } pLVar3 = (LONG *)(PTR_DAT_00818340 + -0x10); *param_1 = (int)PTR_DAT_00818340; InterlockedIncrement(pLVar3); } puVar1 = (undefined *)param_1[1]; if (puVar1 != PTR_DAT_00818340) { LVar2 = InterlockedDecrement((LONG *)(puVar1 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar1 + -0x14))(1); } pLVar3 = (LONG *)(PTR_DAT_00818340 + -0x10); param_1[1] = (int)PTR_DAT_00818340; InterlockedIncrement(pLVar3); } puVar1 = (undefined *)param_1[2]; if (puVar1 != PTR_DAT_00818340) { LVar2 = InterlockedDecrement((LONG *)(puVar1 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar1 + -0x14))(1); } pLVar3 = (LONG *)(PTR_DAT_00818340 + -0x10); param_1[2] = (int)PTR_DAT_00818340; InterlockedIncrement(pLVar3); } param_1[3] = 0; param_1[6] = 0; param_1[7] = 0; param_1[8] = 0; param_1[9] = 0; param_1[10] = 0; param_1[0xc] = 0; param_1[0xd] = 0; param_1[0xe] = 0; param_1[0xf] = 0; *(undefined1 *)(param_1 + 4) = 0; *(undefined1 *)(param_1 + 0xb) = 0; return; } // --- FUN_00495050 at 0x00495050 (size: 169) --- undefined4 * __thiscall FUN_00495050(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { FUN_00472670(param_2,param_3); param_1[0x17e] = &PTR_FUN_007ccb60; *param_1 = &PTR_FUN_007a7470; param_1[0x17e] = &PTR_FUN_007ccb60; param_1[0x17f] = 0; param_1[0x180] = 0; param_1[0x181] = 0; param_1[0x182] = 0; param_1[0x183] = 0; param_1[0x184] = 0; param_1[0x185] = 0; param_1[0x186] = 0; param_1[0x187] = 0; param_1[0x188] = 0; param_1[0x189] = 0; param_1[0x18a] = 0; param_1[0x18b] = 0; *(undefined1 *)(param_1 + 0x18c) = 0; param_1[0x18d] = 0; FUN_00494e50(); param_1[0x19e] = 0; param_1[0x19f] = 0; return param_1; } // --- FUN_00495130 at 0x00495130 (size: 79) --- void __fastcall FUN_00495130(undefined4 *param_1) { undefined4 *puVar1; int *piVar2; puVar1 = param_1 + 0x17e; *param_1 = &PTR_FUN_007a7470; *puVar1 = &PTR_FUN_007ccb60; FUN_00465fb0(3); piVar2 = (int *)FUN_0043c680(); if (piVar2 != (int *)0x0) { (**(code **)(*piVar2 + 0xc))(puVar1); } FUN_00493530(); *puVar1 = &PTR_FUN_007ccb60; FUN_0043c610(); FUN_004726c0(); return; } // --- FUN_004951b0 at 0x004951B0 (size: 32) --- undefined4 __fastcall FUN_004951b0(int param_1) { return CONCAT31((int3)(DAT_0083f33c - DAT_0083f338 >> 0xe), *(int *)(param_1 + 0x634) == DAT_0083f33c - DAT_0083f338 >> 6); } // --- FUN_004951d0 at 0x004951D0 (size: 292) --- int * __thiscall FUN_004951d0(int *param_1,int *param_2) { int iVar1; LONG LVar2; LONG *pLVar3; pLVar3 = (LONG *)(PTR_DAT_00818340 + -0x10); *param_1 = (int)PTR_DAT_00818340; InterlockedIncrement(pLVar3); pLVar3 = (LONG *)(PTR_DAT_00818340 + -0x10); param_1[1] = (int)PTR_DAT_00818340; InterlockedIncrement(pLVar3); pLVar3 = (LONG *)(PTR_DAT_00818340 + -0x10); param_1[2] = (int)PTR_DAT_00818340; InterlockedIncrement(pLVar3); iVar1 = *param_1; 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; *param_1 = iVar1; InterlockedIncrement((LONG *)(iVar1 + -0x10)); } iVar1 = param_1[1]; if (iVar1 != param_2[1]) { LVar2 = InterlockedDecrement((LONG *)(iVar1 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(iVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iVar1 + -0x14))(1); } iVar1 = param_2[1]; param_1[1] = iVar1; InterlockedIncrement((LONG *)(iVar1 + -0x10)); } iVar1 = param_1[2]; if (iVar1 != param_2[2]) { LVar2 = InterlockedDecrement((LONG *)(iVar1 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(iVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iVar1 + -0x14))(1); } iVar1 = param_2[2]; param_1[2] = iVar1; InterlockedIncrement((LONG *)(iVar1 + -0x10)); } param_1[3] = param_2[3]; *(char *)(param_1 + 4) = (char)param_2[4]; param_1[6] = param_2[6]; param_1[7] = param_2[7]; param_1[8] = param_2[8]; param_1[9] = param_2[9]; param_1[10] = param_2[10]; *(char *)(param_1 + 0xb) = (char)param_2[0xb]; param_1[0xc] = param_2[0xc]; param_1[0xd] = param_2[0xd]; param_1[0xe] = param_2[0xe]; param_1[0xf] = param_2[0xf]; return param_1; } // --- FUN_00495300 at 0x00495300 (size: 240) --- int * __thiscall FUN_00495300(int *param_1,int *param_2) { int iVar1; LONG LVar2; iVar1 = *param_1; 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; *param_1 = iVar1; InterlockedIncrement((LONG *)(iVar1 + -0x10)); } iVar1 = param_1[1]; if (iVar1 != param_2[1]) { LVar2 = InterlockedDecrement((LONG *)(iVar1 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(iVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iVar1 + -0x14))(1); } iVar1 = param_2[1]; param_1[1] = iVar1; InterlockedIncrement((LONG *)(iVar1 + -0x10)); } iVar1 = param_1[2]; if (iVar1 != param_2[2]) { LVar2 = InterlockedDecrement((LONG *)(iVar1 + -0x10)); if ((LVar2 == 0) && ((undefined4 *)(iVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iVar1 + -0x14))(1); } iVar1 = param_2[2]; param_1[2] = iVar1; InterlockedIncrement((LONG *)(iVar1 + -0x10)); } param_1[3] = param_2[3]; *(char *)(param_1 + 4) = (char)param_2[4]; param_1[6] = param_2[6]; param_1[7] = param_2[7]; param_1[8] = param_2[8]; param_1[9] = param_2[9]; param_1[10] = param_2[10]; *(char *)(param_1 + 0xb) = (char)param_2[0xb]; param_1[0xc] = param_2[0xc]; param_1[0xd] = param_2[0xd]; param_1[0xe] = param_2[0xe]; param_1[0xf] = param_2[0xf]; return param_1; } // --- FUN_004953f0 at 0x004953F0 (size: 30) --- void * __thiscall FUN_004953f0(void *param_1,byte param_2) { FUN_00495130(); if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_00495410 at 0x00495410 (size: 19) --- void FUN_00495410(void) { FUN_00460270(0x10000048,&LAB_00495180); return; } // --- FUN_00495430 at 0x00495430 (size: 514) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 __fastcall FUN_00495430(int param_1) { double dVar1; int *piVar2; LONG LVar3; ulong uVar4; wchar_t *_Str; int local_10; int iStack_c; int iStack_8; int iStack_4; _Str = (wchar_t *)PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); piVar2 = (int *)FUN_00466830(&local_10); if (_Str != (wchar_t *)*piVar2) { LVar3 = InterlockedDecrement((LONG *)((int)_Str + -0x10)); if ((LVar3 == 0) && ((undefined4 *)((int)_Str + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)((int)_Str + -0x14))(1); } _Str = (wchar_t *)*piVar2; InterlockedIncrement((LONG *)(_Str + -8)); } LVar3 = InterlockedDecrement((LONG *)(local_10 + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(local_10 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_10 + -0x14))(1); } piVar2 = _errno(); *piVar2 = 0; uVar4 = wcstoul(_Str,(wchar_t **)0x0,0); *(ulong *)(param_1 + 0x658) = uVar4; piVar2 = (int *)FUN_00466830(&iStack_c); if (_Str != (wchar_t *)*piVar2) { LVar3 = InterlockedDecrement((LONG *)(_Str + -8)); if ((LVar3 == 0) && (_Str + -10 != (wchar_t *)0x0)) { (*(code *)**(undefined4 **)(_Str + -10))(1); } _Str = (wchar_t *)*piVar2; InterlockedIncrement((LONG *)(_Str + -8)); } LVar3 = InterlockedDecrement((LONG *)(iStack_c + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(iStack_c + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iStack_c + -0x14))(1); } piVar2 = _errno(); *piVar2 = 0; uVar4 = wcstoul(_Str,(wchar_t **)0x0,0); *(ulong *)(param_1 + 0x65c) = uVar4; piVar2 = (int *)FUN_00466830(&iStack_8); if (_Str != (wchar_t *)*piVar2) { LVar3 = InterlockedDecrement((LONG *)(_Str + -8)); if ((LVar3 == 0) && (_Str + -10 != (wchar_t *)0x0)) { (*(code *)**(undefined4 **)(_Str + -10))(1); } _Str = (wchar_t *)*piVar2; InterlockedIncrement((LONG *)(_Str + -8)); } LVar3 = InterlockedDecrement((LONG *)(iStack_8 + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(iStack_8 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iStack_8 + -0x14))(1); } piVar2 = _errno(); *piVar2 = 0; uVar4 = wcstoul(_Str,(wchar_t **)0x0,0); *(ulong *)(param_1 + 0x660) = uVar4; iStack_4 = *(int *)(param_1 + 0x65c) * 0xe10; dVar1 = (double)iStack_4 + (double)(int)(uVar4 * 0x3c) + (double)(*(int *)(param_1 + 0x658) * 0x15180) + _DAT_008379a8; *(undefined1 *)(param_1 + 0x648) = 1; *(double *)(param_1 + 0x650) = dVar1; LVar3 = InterlockedDecrement((LONG *)(_Str + -8)); if ((LVar3 == 0) && (_Str + -10 != (wchar_t *)0x0)) { (*(code *)**(undefined4 **)(_Str + -10))(1); } return 0; } // --- FUN_00495640 at 0x00495640 (size: 826) --- void __fastcall FUN_00495640(int param_1) { int *piVar1; int iVar2; int *piVar3; LONG LVar4; ulong uVar5; undefined4 *puVar6; wchar_t *_Str; int local_c; int iStack_8; int iStack_4; _Str = (wchar_t *)PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); piVar3 = (int *)FUN_00466830(&local_c); piVar1 = (int *)(param_1 + 0x638); iVar2 = *piVar1; if (iVar2 != *piVar3) { LVar4 = InterlockedDecrement((LONG *)(iVar2 + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(iVar2 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iVar2 + -0x14))(1); } iVar2 = *piVar3; *piVar1 = iVar2; InterlockedIncrement((LONG *)(iVar2 + -0x10)); } puVar6 = (undefined4 *)(local_c + -0x14); LVar4 = InterlockedDecrement((LONG *)(local_c + -0x10)); if ((LVar4 == 0) && (puVar6 != (undefined4 *)0x0)) { (**(code **)*puVar6)(1); } piVar3 = (int *)FUN_00466830(&local_c); iVar2 = *(int *)(param_1 + 0x63c); if (iVar2 != *piVar3) { LVar4 = InterlockedDecrement((LONG *)(iVar2 + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(iVar2 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iVar2 + -0x14))(1); } iVar2 = *piVar3; *(int *)(param_1 + 0x63c) = iVar2; InterlockedIncrement((LONG *)(iVar2 + -0x10)); } puVar6 = (undefined4 *)(local_c + -0x14); LVar4 = InterlockedDecrement((LONG *)(local_c + -0x10)); if ((LVar4 == 0) && (puVar6 != (undefined4 *)0x0)) { (**(code **)*puVar6)(1); } piVar3 = (int *)FUN_00466830(&local_c); iVar2 = *(int *)(param_1 + 0x640); if (iVar2 != *piVar3) { LVar4 = InterlockedDecrement((LONG *)(iVar2 + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(iVar2 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iVar2 + -0x14))(1); } iVar2 = *piVar3; *(int *)(param_1 + 0x640) = iVar2; InterlockedIncrement((LONG *)(iVar2 + -0x10)); } puVar6 = (undefined4 *)(local_c + -0x14); LVar4 = InterlockedDecrement((LONG *)(local_c + -0x10)); if ((LVar4 == 0) && (puVar6 != (undefined4 *)0x0)) { (**(code **)*puVar6)(1); } *(undefined4 *)(param_1 + 0x644) = *(undefined4 *)(param_1 + 0x634); piVar3 = (int *)FUN_00466830(&local_c); if (_Str != (wchar_t *)*piVar3) { LVar4 = InterlockedDecrement((LONG *)((int)_Str + -0x10)); if ((LVar4 == 0) && ((undefined4 *)((int)_Str + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)((int)_Str + -0x14))(1); } _Str = (wchar_t *)*piVar3; InterlockedIncrement((LONG *)(_Str + -8)); } LVar4 = InterlockedDecrement((LONG *)(local_c + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(local_c + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_c + -0x14))(1); } piVar3 = _errno(); *piVar3 = 0; uVar5 = wcstoul(_Str,(wchar_t **)0x0,0); *(ulong *)(param_1 + 0x658) = uVar5; piVar3 = (int *)FUN_00466830(&iStack_8); if (_Str != (wchar_t *)*piVar3) { LVar4 = InterlockedDecrement((LONG *)(_Str + -8)); if ((LVar4 == 0) && (_Str + -10 != (wchar_t *)0x0)) { (*(code *)**(undefined4 **)(_Str + -10))(1); } _Str = (wchar_t *)*piVar3; InterlockedIncrement((LONG *)(_Str + -8)); } LVar4 = InterlockedDecrement((LONG *)(iStack_8 + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(iStack_8 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iStack_8 + -0x14))(1); } piVar3 = _errno(); *piVar3 = 0; uVar5 = wcstoul(_Str,(wchar_t **)0x0,0); *(ulong *)(param_1 + 0x65c) = uVar5; piVar3 = (int *)FUN_00466830(&iStack_4); if (_Str != (wchar_t *)*piVar3) { LVar4 = InterlockedDecrement((LONG *)(_Str + -8)); if ((LVar4 == 0) && (_Str + -10 != (wchar_t *)0x0)) { (*(code *)**(undefined4 **)(_Str + -10))(1); } _Str = (wchar_t *)*piVar3; InterlockedIncrement((LONG *)(_Str + -8)); } LVar4 = InterlockedDecrement((LONG *)(iStack_4 + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(iStack_4 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iStack_4 + -0x14))(1); } piVar3 = _errno(); *piVar3 = 0; uVar5 = wcstoul(_Str,(wchar_t **)0x0,0); *(ulong *)(param_1 + 0x660) = uVar5; if (*(uint *)(param_1 + 0x634) <= (uint)(DAT_0083f33c - DAT_0083f338 >> 6)) { FUN_00495300(piVar1); } LVar4 = InterlockedDecrement((LONG *)(_Str + -8)); if ((LVar4 == 0) && (_Str + -10 != (wchar_t *)0x0)) { (*(code *)**(undefined4 **)(_Str + -10))(1); } return; } // --- FUN_00495980 at 0x00495980 (size: 194) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 * FUN_00495980(undefined4 *param_1,char param_2,double param_3) { int iVar1; LONG LVar2; undefined4 *puVar3; undefined *local_4; local_4 = PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); if (((param_2 == '\0') || (param_3 <= _DAT_00795610)) || (iVar1 = FUN_005df4c4(), iVar1 < 1)) { FUN_004027b0(); } else { FUN_00566bb0((double)iVar1,&local_4); } *param_1 = local_4; InterlockedIncrement((LONG *)(local_4 + -0x10)); puVar3 = (undefined4 *)(local_4 + -0x14); LVar2 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar2 == 0) && (puVar3 != (undefined4 *)0x0)) { (**(code **)*puVar3)(1); } return param_1; } // --- FUN_00495a50 at 0x00495A50 (size: 276) --- void __fastcall FUN_00495a50(int param_1) { LONG LVar1; undefined4 *puVar2; undefined **ppuVar3; int iStack_24; undefined **ppuStack_20; undefined *puStack_1c; undefined **ppuStack_18; undefined *local_8; undefined *local_4; local_4 = PTR_DAT_00818340; ppuStack_18 = (undefined **)0x495a6c; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); local_8 = PTR_DAT_00818340; ppuStack_18 = (undefined **)0x495a7b; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); ppuStack_18 = &local_4; puStack_1c = (undefined *)0x495a8a; FUN_004027b0(); ppuStack_20 = &local_8; puStack_1c = &DAT_00795320; iStack_24 = 0x495a99; FUN_004027b0(); *(undefined1 *)(param_1 + 0x648) = 0; ppuStack_18 = (undefined **)0x495ab0; (**(code **)(**(int **)(param_1 + 0x60c) + 0x18))(); ppuStack_18 = (undefined **)0x1; puStack_1c = (undefined *)0x495abd; (**(code **)(**(int **)(param_1 + 0x620) + 0x18))(); puStack_1c = (undefined *)0x1; ppuStack_20 = (undefined **)0x495aca; (**(code **)(**(int **)(param_1 + 0x610) + 0x18))(); ppuStack_20 = (undefined **)0x1; iStack_24 = 0x495ad7; (**(code **)(**(int **)(param_1 + 0x624) + 0x18))(); iStack_24 = 1; (**(code **)(**(int **)(param_1 + 0x614) + 0x18))(); (**(code **)(**(int **)(param_1 + 0x628) + 0x18))(1); (**(code **)(**(int **)(param_1 + 0x61c) + 0x18))(0); FUN_0046a740(&iStack_24); FUN_0046a740(&ppuStack_20); puVar2 = (undefined4 *)(iStack_24 + -0x14); LVar1 = InterlockedDecrement((LONG *)(iStack_24 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } ppuVar3 = ppuStack_20 + -5; LVar1 = InterlockedDecrement((LONG *)(ppuStack_20 + -4)); if ((LVar1 == 0) && (ppuVar3 != (undefined **)0x0)) { (**(code **)*ppuVar3)(1); } return; } // --- FUN_00495b70 at 0x00495B70 (size: 92) --- void __fastcall FUN_00495b70(int param_1) { LONG LVar1; undefined4 *puVar2; int local_4; local_4 = param_1; FUN_00495980(&local_4,*(undefined1 *)(param_1 + 0x648),*(undefined4 *)(param_1 + 0x650), *(undefined4 *)(param_1 + 0x654)); FUN_0046a740(&local_4); puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } return; } // --- FUN_00495bd0 at 0x00495BD0 (size: 381) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __fastcall FUN_00495bd0(int param_1) { double dVar1; double dVar2; undefined4 uVar3; undefined4 uVar4; undefined4 uVar5; undefined4 uVar6; LONG LVar7; undefined *puVar8; undefined *puVar9; undefined4 *puVar10; undefined *local_1c; undefined8 uStack_18; undefined8 uStack_10; local_1c = PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); if (local_1c != PTR_DAT_00818340) { puVar10 = (undefined4 *)(local_1c + -0x14); LVar7 = InterlockedDecrement((LONG *)(local_1c + -0x10)); if ((LVar7 == 0) && (puVar10 != (undefined4 *)0x0)) { (**(code **)*puVar10)(1); } local_1c = PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); } if (*(char *)(param_1 + 0x664) == '\0') { FUN_004027b0(&local_1c,L"None"); } else { if (_DAT_00795610 <= *(double *)(param_1 + 0x668)) { puVar9 = &DAT_007a75f4; if (*(double *)(param_1 + 0x668) <= _DAT_00795610) { puVar9 = &DAT_00795320; } } else { puVar9 = &DAT_007a75f8; } if (_DAT_00795610 <= *(double *)(param_1 + 0x670)) { puVar8 = &DAT_007a75ec; if (*(double *)(param_1 + 0x670) <= _DAT_00795610) { puVar8 = &DAT_00795320; } } else { puVar8 = &DAT_007a75f0; } dVar1 = *(double *)(param_1 + 0x668); if (dVar1 < _DAT_00795610) { dVar1 = -dVar1; } dVar2 = *(double *)(param_1 + 0x670); if (dVar2 < _DAT_00795610) { dVar2 = -dVar2; } uStack_18._4_4_ = (undefined4)((ulonglong)dVar1 >> 0x20); uVar3 = uStack_18._4_4_; uStack_18._0_4_ = SUB84(dVar1,0); uStack_10._4_4_ = (undefined4)((ulonglong)dVar2 >> 0x20); uVar4 = uStack_10._4_4_; uStack_10._0_4_ = SUB84(dVar2,0); uVar5 = (undefined4)uStack_18; uStack_18 = dVar1; uVar6 = (undefined4)uStack_10; uStack_10 = dVar2; FUN_004027b0(&local_1c,L"%.1f%s, %.1f%s",uVar6,uVar4,puVar8,uVar5,uVar3,puVar9); } FUN_0046a740(&local_1c); puVar10 = (undefined4 *)(local_1c + -0x14); LVar7 = InterlockedDecrement((LONG *)(local_1c + -0x10)); if ((LVar7 == 0) && (puVar10 != (undefined4 *)0x0)) { (**(code **)*puVar10)(1); } return; } // --- FUN_00495d50 at 0x00495D50 (size: 113) --- void __fastcall FUN_00495d50(int param_1) { LONG LVar1; undefined4 *puVar2; int iVar3; undefined *local_4; local_4 = PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); iVar3 = 1; if (0 < *(int *)(param_1 + 0x644)) { iVar3 = *(int *)(param_1 + 0x644); } FUN_004027b0(&local_4,L"~ %d ~",iVar3); FUN_0046a740(&local_4); puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } return; } // --- FUN_00495ef0 at 0x00495EF0 (size: 280) --- bool FUN_00495ef0(int *param_1,int *param_2) { undefined *puVar1; undefined *puVar2; LONG LVar3; int iVar4; wchar_t *local_8; wchar_t *local_4; puVar1 = PTR_DAT_00818340; local_4 = (wchar_t *)PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); puVar2 = PTR_DAT_00818340; local_8 = (wchar_t *)PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); if (puVar1 != (undefined *)*param_1) { LVar3 = InterlockedDecrement((LONG *)(puVar1 + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar1 + -0x14))(1); } local_4 = (wchar_t *)*param_1; InterlockedIncrement((LONG *)(local_4 + -8)); } if (puVar2 != (undefined *)*param_2) { LVar3 = InterlockedDecrement((LONG *)(puVar2 + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(puVar2 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar2 + -0x14))(1); } local_8 = (wchar_t *)*param_2; InterlockedIncrement((LONG *)(local_8 + -8)); } FUN_00408390(); _wcslwr(local_4); FUN_00408390(); _wcslwr(local_8); iVar4 = wcscmp(local_4,local_8); LVar3 = InterlockedDecrement((LONG *)(local_8 + -8)); if ((LVar3 == 0) && (local_8 + -10 != (wchar_t *)0x0)) { (*(code *)**(undefined4 **)(local_8 + -10))(1); } LVar3 = InterlockedDecrement((LONG *)(local_4 + -8)); if ((LVar3 == 0) && (local_4 + -10 != (wchar_t *)0x0)) { (*(code *)**(undefined4 **)(local_4 + -10))(1); } return iVar4 < 0; } // --- FUN_00496130 at 0x00496130 (size: 280) --- bool FUN_00496130(int *param_1,int *param_2) { undefined *puVar1; undefined *puVar2; LONG LVar3; int iVar4; wchar_t *local_8; wchar_t *local_4; puVar1 = PTR_DAT_00818340; local_4 = (wchar_t *)PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); puVar2 = PTR_DAT_00818340; local_8 = (wchar_t *)PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); if (puVar1 != (undefined *)*param_1) { LVar3 = InterlockedDecrement((LONG *)(puVar1 + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar1 + -0x14))(1); } local_4 = (wchar_t *)*param_1; InterlockedIncrement((LONG *)(local_4 + -8)); } if (puVar2 != (undefined *)*param_2) { LVar3 = InterlockedDecrement((LONG *)(puVar2 + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(puVar2 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar2 + -0x14))(1); } local_8 = (wchar_t *)*param_2; InterlockedIncrement((LONG *)(local_8 + -8)); } FUN_00408390(); _wcslwr(local_4); FUN_00408390(); _wcslwr(local_8); iVar4 = wcscmp(local_4,local_8); LVar3 = InterlockedDecrement((LONG *)(local_8 + -8)); if ((LVar3 == 0) && (local_8 + -10 != (wchar_t *)0x0)) { (*(code *)**(undefined4 **)(local_8 + -10))(1); } LVar3 = InterlockedDecrement((LONG *)(local_4 + -8)); if ((LVar3 == 0) && (local_4 + -10 != (wchar_t *)0x0)) { (*(code *)**(undefined4 **)(local_4 + -10))(1); } return 0 < iVar4; } // --- FUN_00496250 at 0x00496250 (size: 535) --- void __fastcall FUN_00496250(int param_1) { int *piVar1; undefined4 uVar2; FUN_004639a0(); piVar1 = (int *)FUN_00463c00(0x1000057d); if (piVar1 == (int *)0x0) { uVar2 = 0; } else { uVar2 = (**(code **)(*piVar1 + 0x94))(1); } *(undefined4 *)(param_1 + 0x5fc) = uVar2; piVar1 = (int *)FUN_00463c00(0x10000569); if (piVar1 == (int *)0x0) { uVar2 = 0; } else { uVar2 = (**(code **)(*piVar1 + 0x94))(0xc); } *(undefined4 *)(param_1 + 0x600) = uVar2; piVar1 = (int *)FUN_00463c00(0x1000056b); if (piVar1 == (int *)0x0) { uVar2 = 0; } else { uVar2 = (**(code **)(*piVar1 + 0x94))(0xc); } *(undefined4 *)(param_1 + 0x604) = uVar2; piVar1 = (int *)FUN_00463c00(0x1000056d); if (piVar1 == (int *)0x0) { uVar2 = 0; } else { uVar2 = (**(code **)(*piVar1 + 0x94))(0xc); } *(undefined4 *)(param_1 + 0x608) = uVar2; piVar1 = (int *)FUN_00463c00(0x10000576); if (piVar1 == (int *)0x0) { uVar2 = 0; } else { uVar2 = (**(code **)(*piVar1 + 0x94))(0xc); } *(undefined4 *)(param_1 + 0x60c) = uVar2; piVar1 = (int *)FUN_00463c00(0x10000578); if (piVar1 == (int *)0x0) { uVar2 = 0; } else { uVar2 = (**(code **)(*piVar1 + 0x94))(0xc); } *(undefined4 *)(param_1 + 0x610) = uVar2; piVar1 = (int *)FUN_00463c00(0x1000057a); if (piVar1 == (int *)0x0) { uVar2 = 0; } else { uVar2 = (**(code **)(*piVar1 + 0x94))(0xc); } *(undefined4 *)(param_1 + 0x614) = uVar2; piVar1 = (int *)FUN_00463c00(0x10000573); if (piVar1 == (int *)0x0) { uVar2 = 0; } else { uVar2 = (**(code **)(*piVar1 + 0x94))(0xc); } *(undefined4 *)(param_1 + 0x618) = uVar2; piVar1 = (int *)FUN_00463c00(0x1000057c); if (piVar1 == (int *)0x0) { uVar2 = 0; } else { uVar2 = (**(code **)(*piVar1 + 0x94))(0xc); } *(undefined4 *)(param_1 + 0x61c) = uVar2; piVar1 = (int *)FUN_00463c00(0x10000577); if (piVar1 == (int *)0x0) { uVar2 = 0; } else { uVar2 = (**(code **)(*piVar1 + 0x94))(0xc); } *(undefined4 *)(param_1 + 0x620) = uVar2; piVar1 = (int *)FUN_00463c00(0x10000579); if (piVar1 == (int *)0x0) { uVar2 = 0; } else { uVar2 = (**(code **)(*piVar1 + 0x94))(0xc); } *(undefined4 *)(param_1 + 0x624) = uVar2; piVar1 = (int *)FUN_00463c00(0x1000057b); if (piVar1 == (int *)0x0) { uVar2 = 0; } else { uVar2 = (**(code **)(*piVar1 + 0x94))(0xc); } *(undefined4 *)(param_1 + 0x628) = uVar2; piVar1 = (int *)FUN_00463c00(0x10000570); if (piVar1 == (int *)0x0) { uVar2 = 0; } else { uVar2 = (**(code **)(*piVar1 + 0x94))(0xc); } *(undefined4 *)(param_1 + 0x62c) = uVar2; FUN_00495a50(); FUN_00465f90(3); FUN_00465f90(0xb); DAT_0083f284 = param_1; return; } // --- FUN_00496470 at 0x00496470 (size: 198) --- void __fastcall FUN_00496470(int param_1) { LONG LVar1; undefined4 *puVar2; int aiStack_20 [4]; undefined **ppuStack_10; undefined *local_4; local_4 = PTR_DAT_00818340; ppuStack_10 = (undefined **)0x496487; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); ppuStack_10 = &local_4; aiStack_20[3] = 0x496496; FUN_004027b0(); *(undefined1 *)(param_1 + 0x648) = 1; ppuStack_10 = (undefined **)0x4964ad; (**(code **)(**(int **)(param_1 + 0x60c) + 0x18))(); ppuStack_10 = (undefined **)0x0; aiStack_20[3] = 0x4964ba; (**(code **)(**(int **)(param_1 + 0x620) + 0x18))(); aiStack_20[3] = 0; aiStack_20[2] = 0x4964c7; (**(code **)(**(int **)(param_1 + 0x610) + 0x18))(); aiStack_20[2] = 0; aiStack_20[1] = 0x4964d4; (**(code **)(**(int **)(param_1 + 0x624) + 0x18))(); aiStack_20[1] = 0; aiStack_20[0] = 0x4964e1; (**(code **)(**(int **)(param_1 + 0x614) + 0x18))(); aiStack_20[0] = 0; (**(code **)(**(int **)(param_1 + 0x628) + 0x18))(); (**(code **)(**(int **)(param_1 + 0x61c) + 0x18))(1); FUN_0046a740(aiStack_20); FUN_00495b70(); puVar2 = (undefined4 *)(aiStack_20[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(aiStack_20[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } return; } // --- FUN_00496540 at 0x00496540 (size: 63) --- void __fastcall FUN_00496540(int param_1) { undefined1 uVar1; int iVar2; iVar2 = FUN_0055e1d0(); if (iVar2 != 0) { *(undefined4 *)(param_1 + 0x670) = 0; *(undefined4 *)(param_1 + 0x674) = 0; *(undefined4 *)(param_1 + 0x668) = 0; *(undefined4 *)(param_1 + 0x66c) = 0; uVar1 = FUN_00560e00((undefined4 *)(param_1 + 0x668),(undefined4 *)(param_1 + 0x670)); *(undefined1 *)(param_1 + 0x664) = uVar1; FUN_00495bd0(); return; } return; } // --- FUN_00496580 at 0x00496580 (size: 59) --- int __thiscall FUN_00496580(int param_1,int param_2) { int iVar1; iVar1 = param_2; if (param_2 + 0x40 != *(int *)(param_1 + 4)) { FUN_004934f0(param_2 + 0x40,*(int *)(param_1 + 4),param_2,¶m_2,0); } *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + -0x40; FUN_00493530(); return iVar1; } // --- FUN_004965c0 at 0x004965C0 (size: 328) --- void __fastcall FUN_004965c0(int param_1) { LONG LVar1; undefined4 *puVar2; undefined *local_4; if (*(char *)(param_1 + 0x630) != '\0') { local_4 = PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); FUN_00494f70(); FUN_00494f70(); FUN_0046a740(param_1 + 0x638); FUN_0046a740(param_1 + 0x63c); FUN_0046a740(param_1 + 0x640); FUN_004027b0(&local_4,&DAT_007a11d4,*(undefined4 *)(param_1 + 0x658)); FUN_0046a740(&local_4); FUN_004027b0(&local_4,&DAT_007a11d4,*(undefined4 *)(param_1 + 0x65c)); FUN_0046a740(&local_4); FUN_004027b0(&local_4,&DAT_007a11d4,*(undefined4 *)(param_1 + 0x660)); FUN_0046a740(&local_4); FUN_00495b70(); FUN_00495bd0(); FUN_00495d50(); if (*(char *)(param_1 + 0x648) == '\0') { FUN_00495a50(); } else { FUN_00496470(); } puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } } return; } // --- FUN_00496710 at 0x00496710 (size: 352) --- void __thiscall FUN_00496710(int param_1,uint param_2) { LONG LVar1; undefined4 *puVar2; undefined *local_4; if (*(char *)(param_1 + 0x630) != '\0') { local_4 = PTR_DAT_00818340; InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10)); if (param_2 <= (uint)(DAT_0083f33c - DAT_0083f338 >> 6)) { FUN_00495300(param_2 * 0x40 + -0x40 + DAT_0083f338); *(uint *)(param_1 + 0x634) = param_2; FUN_0046a740(param_1 + 0x638); FUN_0046a740(param_1 + 0x63c); FUN_0046a740(param_1 + 0x640); FUN_004027b0(&local_4,&DAT_007a11d4,*(undefined4 *)(param_1 + 0x658)); FUN_0046a740(&local_4); FUN_004027b0(&local_4,&DAT_007a11d4,*(undefined4 *)(param_1 + 0x65c)); FUN_0046a740(&local_4); FUN_004027b0(&local_4,&DAT_007a11d4,*(undefined4 *)(param_1 + 0x660)); FUN_0046a740(&local_4); FUN_00495b70(); FUN_00495bd0(); FUN_00495d50(); if (*(char *)(param_1 + 0x648) == '\0') { FUN_00495a50(); } else { FUN_00496470(); } } puVar2 = (undefined4 *)(local_4 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } } return; } // --- FUN_00496870 at 0x00496870 (size: 57) --- void __fastcall FUN_00496870(int param_1) { if (*(char *)(param_1 + 0x630) == '\0') { return; } FUN_00495b70(); FUN_00495bd0(); FUN_00495d50(); if (*(char *)(param_1 + 0x648) != '\0') { FUN_00496470(); return; } FUN_00495a50(); return; } // --- FUN_004968b0 at 0x004968B0 (size: 140) --- void __thiscall FUN_004968b0(int param_1,uint param_2) { uint uVar1; int iVar2; if ((*(char *)(param_1 + 0x630) != '\0') && (uVar1 = DAT_0083f33c - DAT_0083f338 >> 6, param_2 <= uVar1)) { if (uVar1 < 2) { FUN_004965c0(); return; } FUN_00496580(param_2 * 0x40 + -0x40 + DAT_0083f338); uVar1 = 0; if (DAT_0083f33c - DAT_0083f338 >> 6 != 0) { iVar2 = 0; do { uVar1 = uVar1 + 1; *(uint *)(iVar2 + 0xc + DAT_0083f338) = uVar1; iVar2 = iVar2 + 0x40; } while (uVar1 < (uint)(DAT_0083f33c - DAT_0083f338 >> 6)); } FUN_00496710(1); } return; } // --- FUN_00496940 at 0x00496940 (size: 416) --- void FUN_00496940(int param_1,int *param_2) { undefined *puVar1; int iVar2; int *piVar3; LONG LVar4; undefined4 uVar5; int *piVar6; LONG *lpAddend; undefined4 *puVar7; int iStack_10; int iStack_c; int iStack_8; int iStack_4; piVar3 = param_2; puVar1 = (undefined *)*param_2; if (puVar1 != PTR_DAT_00818344) { LVar4 = InterlockedDecrement((LONG *)(puVar1 + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar1 + -0x14))(1); } lpAddend = (LONG *)(PTR_DAT_00818344 + -0x10); *piVar3 = (int)PTR_DAT_00818344; InterlockedIncrement(lpAddend); } if (DAT_0083da58 == 0) { uVar5 = 0; } else { uVar5 = *(undefined4 *)(DAT_0083da58 + 0xf4); } uVar5 = FUN_0058f840(uVar5,0,0); FUN_00401340(uVar5); piVar6 = (int *)FUN_004114c0(); piVar6 = (int *)(**(code **)(*piVar6 + 0x54))(); iVar2 = *piVar6; iStack_4 = iVar2; InterlockedIncrement((LONG *)(iVar2 + -0x10)); FUN_00408fd0(&iStack_c,0); iStack_10 = DAT_00838188; InterlockedIncrement((LONG *)(DAT_00838188 + -0x10)); param_2 = (int *)PTR_DAT_00818344; InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10)); thunk_FUN_0040c780(¶m_2,&iStack_10); FUN_00402710(piVar3,"%s%s-%s-%s.txt",param_2,param_1,iStack_c,iStack_8); puVar7 = (undefined4 *)((int)param_2 + -0x14); LVar4 = InterlockedDecrement((LONG *)((int)param_2 + -0x10)); if ((LVar4 == 0) && (puVar7 != (undefined4 *)0x0)) { (**(code **)*puVar7)(1); } puVar7 = (undefined4 *)(iStack_10 + -0x14); LVar4 = InterlockedDecrement((LONG *)(iStack_10 + -0x10)); if ((LVar4 == 0) && (puVar7 != (undefined4 *)0x0)) { (**(code **)*puVar7)(1); } LVar4 = InterlockedDecrement((LONG *)(iStack_c + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(iStack_c + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iStack_c + -0x14))(1); } LVar4 = InterlockedDecrement((LONG *)(iVar2 + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(iVar2 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iVar2 + -0x14))(1); } LVar4 = InterlockedDecrement((LONG *)(iStack_8 + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(iStack_8 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(iStack_8 + -0x14))(1); } LVar4 = InterlockedDecrement((LONG *)(param_1 + -0x10)); if ((LVar4 == 0) && ((undefined4 *)(param_1 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(param_1 + -0x14))(1); } return; } // --- FUN_00496ae0 at 0x00496AE0 (size: 113) --- void FUN_00496ae0(int param_1,undefined4 param_2) { int iVar1; LONG LVar2; undefined4 *puVar3; FUN_00564d30(); iVar1 = param_1; FUN_00404a40(0,param_1); FUN_005649f0(¶m_1,param_2,1,0); puVar3 = (undefined4 *)(param_1 + -0x14); LVar2 = InterlockedDecrement((LONG *)(param_1 + -0x10)); if ((LVar2 == 0) && (puVar3 != (undefined4 *)0x0)) { (**(code **)*puVar3)(1); } puVar3 = (undefined4 *)(iVar1 + -0x14); LVar2 = InterlockedDecrement((LONG *)(iVar1 + -0x10)); if ((LVar2 == 0) && (puVar3 != (undefined4 *)0x0)) { (**(code **)*puVar3)(1); } return; } // --- FUN_00496b60 at 0x00496B60 (size: 74) --- void __fastcall FUN_00496b60(int param_1) { undefined1 local_40 [12]; int local_34; if (*(char *)(param_1 + 0x630) != '\0') { FUN_00494e50(); local_34 = (DAT_0083f33c - DAT_0083f338 >> 6) + 1; FUN_004945c0(DAT_0083f33c,local_40); FUN_00493530(); } return; } // --- FUN_00496bb0 at 0x00496BB0 (size: 110) --- void __thiscall FUN_00496bb0(int param_1,undefined4 *param_2) { char cVar1; int iVar2; if (*(char *)(param_1 + 0x630) == '\0') { FUN_00462420(param_2); return; } if (((param_2[2] == 0x18) && (param_2[1] == param_1)) && (param_2[3] != 0)) { FUN_00496870(); } if (param_2[2] == 1) { switch(*param_2) { case 0x10000565: FUN_00495640(); if (*(int *)(param_1 + 0x634) != 1) { FUN_00496710(*(int *)(param_1 + 0x634) + -1); FUN_00462420(param_2); return; } break; case 0x10000566: FUN_00495640(); cVar1 = FUN_004951b0(); if (cVar1 == '\0') { FUN_00496710(*(int *)(param_1 + 0x634) + 1); FUN_00462420(param_2); return; } break; case 0x10000567: FUN_00495640(); FUN_00496b60(); FUN_00496710(DAT_0083f33c - DAT_0083f338 >> 6); FUN_00462420(param_2); return; case 0x1000056f: FUN_00495640(); FUN_00496710(1); FUN_00462420(param_2); return; case 0x10000571: FUN_00495640(); FUN_00496710(DAT_0083f33c - DAT_0083f338 >> 6); FUN_00462420(param_2); return; case 0x10000574: FUN_00496540(); FUN_00462420(param_2); return; case 0x1000057d: if (*(char *)(param_1 + 0x648) != '\0') { *(undefined4 *)(param_1 + 0x650) = 0; *(undefined4 *)(param_1 + 0x654) = 0; *(undefined1 *)(param_1 + 0x648) = 0; FUN_00495a50(); FUN_00462420(param_2); return; } iVar2 = FUN_00495430(); if (iVar2 == 0) { FUN_00496470(); FUN_00462420(param_2); return; } FUN_00494dc0(); } } FUN_00462420(param_2); return; } // --- FUN_00496da0 at 0x00496DA0 (size: 1961) --- void __thiscall FUN_00496da0(int param_1,int param_2) { LONG LVar1; FILE *_File; int iVar2; byte *pbVar3; undefined4 uVar4; int iVar5; int iVar6; char *pcVar7; undefined4 *puVar8; byte *pbVar9; byte *pbVar10; code *pcVar11; bool bVar12; bool bVar13; char **ppcVar14; char local_865; undefined *local_864; undefined4 local_860; char *local_85c; FILE *local_858; undefined4 local_854; undefined4 uStack_850; undefined1 local_84c [4]; undefined1 local_848 [4]; int local_844; undefined1 local_840 [4]; int local_83c; undefined1 local_838 [4]; char local_834 [2100]; local_85c = PTR_DAT_00818344; local_844 = param_1; InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10)); pcVar11 = InterlockedDecrement_exref; iVar6 = 0; if (*(char *)(param_1 + 0x630) == '\0') { pcVar7 = local_85c + -0x14; LVar1 = InterlockedDecrement((LONG *)(local_85c + -0x10)); if ((LVar1 == 0) && (pcVar7 != (char *)0x0)) { (*(code *)**(undefined4 **)pcVar7)(1); } } else { ppcVar14 = &local_85c; iVar2 = param_2; InterlockedIncrement((LONG *)(param_2 + -0x10)); FUN_00496940(iVar2,ppcVar14); local_864 = PTR_DAT_00818344; local_860 = 0; local_854 = 0; uStack_850 = 0; InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10)); local_865 = '\0'; _File = fopen(local_85c,"r"); pcVar11 = InterlockedDecrement_exref; local_858 = _File; if (_File != (FILE *)0x0) { iVar2 = FUN_004934f0(DAT_0083f33c,DAT_0083f33c,DAT_0083f338,&local_865,0); FUN_00493c20(iVar2,DAT_0083f33c,&local_865); DAT_0083f33c = iVar2; pcVar7 = fgets(local_834,0x834,_File); while (pcVar7 != (char *)0x0) { pbVar3 = (byte *)strtok(local_834," \t\n\r"); if (pbVar3 != (byte *)0x0) { if (local_865 == '\0') { iVar2 = 7; bVar12 = false; iVar5 = 0; bVar13 = true; pbVar9 = pbVar3; pbVar10 = &DAT_007a76e0; do { if (iVar2 == 0) break; iVar2 = iVar2 + -1; bVar12 = *pbVar9 < *pbVar10; bVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar13); if (!bVar13) { iVar5 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar5 != 0) { uVar4 = 0x1a; FUN_00401340("Problem loading journal: Your journal file does not create a new page!") ; FUN_00496ae0(iVar2,uVar4); fclose(local_858); pcVar11 = InterlockedDecrement_exref; puVar8 = (undefined4 *)(local_864 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_864 + -0x10)); if ((LVar1 == 0) && (puVar8 != (undefined4 *)0x0)) { (**(code **)*puVar8)(1); } pcVar7 = local_85c + -0x14; LVar1 = InterlockedDecrement((LONG *)(local_85c + -0x10)); if ((LVar1 == 0) && (pcVar7 != (char *)0x0)) { (*(code *)**(undefined4 **)pcVar7)(1); } goto LAB_004974b1; } } iVar2 = 7; bVar12 = false; iVar5 = 0; bVar13 = true; pbVar9 = pbVar3; pbVar10 = &DAT_007a76e0; do { if (iVar2 == 0) break; iVar2 = iVar2 + -1; bVar12 = *pbVar9 < *pbVar10; bVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar13); if (!bVar13) { iVar5 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar5 == 0) { FUN_00496b60(); iVar2 = DAT_0083f33c - DAT_0083f338 >> 6; iVar6 = iVar2 + -1; *(int *)(iVar6 * 0x40 + 0xc + DAT_0083f338) = iVar2; local_865 = '\x01'; } else { iVar2 = 7; bVar12 = false; iVar5 = 0; bVar13 = true; pbVar9 = pbVar3; pbVar10 = &DAT_007a76d8; do { if (iVar2 == 0) break; iVar2 = iVar2 + -1; bVar12 = *pbVar9 < *pbVar10; bVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar13); if (!bVar13) { iVar5 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar5 == 0) { pcVar7 = strtok((char *)0x0," \t\n\r"); sscanf(pcVar7,"%d",&local_860); } else { iVar2 = 7; bVar12 = false; iVar5 = 0; bVar13 = true; pbVar9 = pbVar3; pbVar10 = &DAT_007a76d0; do { if (iVar2 == 0) break; iVar2 = iVar2 + -1; bVar12 = *pbVar9 < *pbVar10; bVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar13); if (!bVar13) { iVar5 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar5 == 0) { pcVar7 = strtok((char *)0x0,"\n\r"); FUN_00405000(pcVar7); uVar4 = FUN_00403350(&local_83c,0); FUN_00402070(uVar4); puVar8 = (undefined4 *)(local_83c + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_83c + -0x10)); if ((LVar1 == 0) && (puVar8 != (undefined4 *)0x0)) { (**(code **)*puVar8)(1); } } else { iVar2 = 7; bVar12 = false; iVar5 = 0; bVar13 = true; pbVar9 = pbVar3; pbVar10 = &DAT_007a76c4; do { if (iVar2 == 0) break; iVar2 = iVar2 + -1; bVar12 = *pbVar9 < *pbVar10; bVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar13); if (!bVar13) { iVar5 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar5 == 0) { pcVar7 = strtok((char *)0x0,"\n\r"); FUN_00405000(pcVar7); uVar4 = FUN_00403350(local_840,0); FUN_00402070(uVar4); FUN_004011b0(); } else { iVar2 = 7; bVar12 = false; iVar5 = 0; bVar13 = true; pbVar9 = pbVar3; pbVar10 = &DAT_007a76bc; do { if (iVar2 == 0) break; iVar2 = iVar2 + -1; bVar12 = *pbVar9 < *pbVar10; bVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar13); if (!bVar13) { iVar5 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar5 == 0) { pcVar7 = strtok((char *)0x0,"\n\r"); FUN_00405000(pcVar7); FUN_00401340(&DAT_00795508); FUN_00401340(&DAT_007a76b8); FUN_004053a0(local_848,local_84c); FUN_004011b0(); FUN_004011b0(); uVar4 = FUN_00403350(local_838,0); FUN_00402070(uVar4); FUN_004011b0(); } else { iVar2 = 7; bVar12 = false; iVar5 = 0; bVar13 = true; pbVar9 = pbVar3; pbVar10 = &DAT_007a76b0; do { if (iVar2 == 0) break; iVar2 = iVar2 + -1; bVar12 = *pbVar9 < *pbVar10; bVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar13); if (!bVar13) { iVar5 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar5 == 0) { pcVar7 = strtok((char *)0x0," \t\n\r"); iVar2 = sscanf(pcVar7,"%d",&local_860); if (iVar2 == 1) { *(undefined4 *)(iVar6 * 0x40 + 0x20 + DAT_0083f338) = local_860; } } else { iVar2 = 7; bVar12 = false; iVar5 = 0; bVar13 = true; pbVar9 = pbVar3; pbVar10 = &DAT_007a76a8; do { if (iVar2 == 0) break; iVar2 = iVar2 + -1; bVar12 = *pbVar9 < *pbVar10; bVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar13); if (!bVar13) { iVar5 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar5 == 0) { pcVar7 = strtok((char *)0x0," \t\n\r"); iVar2 = sscanf(pcVar7,"%d",&local_860); if (iVar2 == 1) { *(undefined4 *)(iVar6 * 0x40 + 0x24 + DAT_0083f338) = local_860; } } else { iVar2 = 7; bVar12 = false; iVar5 = 0; bVar13 = true; pbVar9 = pbVar3; pbVar10 = &DAT_007a76a0; do { if (iVar2 == 0) break; iVar2 = iVar2 + -1; bVar12 = *pbVar9 < *pbVar10; bVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar13); if (!bVar13) { iVar5 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar5 == 0) { pcVar7 = strtok((char *)0x0," \t\n\r"); iVar2 = sscanf(pcVar7,"%d",&local_860); if (iVar2 == 1) { *(undefined4 *)(iVar6 * 0x40 + 0x28 + DAT_0083f338) = local_860; } } else { iVar2 = 7; bVar12 = false; iVar5 = 0; bVar13 = true; pbVar9 = pbVar3; pbVar10 = &DAT_007a7698; do { if (iVar2 == 0) break; iVar2 = iVar2 + -1; bVar12 = *pbVar9 < *pbVar10; bVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar13); if (!bVar13) { iVar5 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar5 == 0) { pbVar3 = (byte *)strtok((char *)0x0," \t\n\r"); iVar5 = 5; bVar12 = false; iVar2 = 0; bVar13 = true; pbVar9 = &DAT_007a7690; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar3 < *pbVar9; bVar13 = *pbVar3 == *pbVar9; pbVar3 = pbVar3 + 1; pbVar9 = pbVar9 + 1; } while (bVar13); if (!bVar13) { iVar2 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar2 == 0) { *(undefined1 *)(iVar6 * 0x40 + 0x2c + DAT_0083f338) = 1; } else { *(undefined1 *)(iVar6 * 0x40 + 0x2c + DAT_0083f338) = 0; } } else { iVar2 = 7; bVar12 = false; iVar5 = 0; bVar13 = true; pbVar9 = pbVar3; pbVar10 = &DAT_007a7688; do { if (iVar2 == 0) break; iVar2 = iVar2 + -1; bVar12 = *pbVar9 < *pbVar10; bVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar13); if (!bVar13) { iVar5 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar5 == 0) { pcVar7 = strtok((char *)0x0," \t\n\r"); iVar2 = sscanf(pcVar7,"%lf",&local_854); if (iVar2 == 1) { *(ulonglong *)(iVar6 * 0x40 + 0x30 + DAT_0083f338) = CONCAT44(uStack_850,local_854); } } else { iVar2 = 7; bVar12 = false; iVar5 = 0; bVar13 = true; pbVar9 = pbVar3; pbVar10 = &DAT_007a7680; do { if (iVar2 == 0) break; iVar2 = iVar2 + -1; bVar12 = *pbVar9 < *pbVar10; bVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar13); if (!bVar13) { iVar5 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar5 == 0) { pcVar7 = strtok((char *)0x0," \t\n\r"); iVar2 = sscanf(pcVar7,"%lf",&local_854); if (iVar2 == 1) { *(ulonglong *)(iVar6 * 0x40 + 0x38 + DAT_0083f338) = CONCAT44(uStack_850,local_854); } } else { iVar2 = 7; bVar12 = false; iVar5 = 0; bVar13 = true; pbVar9 = pbVar3; pbVar10 = &DAT_007a7678; do { if (iVar2 == 0) break; iVar2 = iVar2 + -1; bVar12 = *pbVar9 < *pbVar10; bVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar13); if (!bVar13) { iVar5 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar5 == 0) { pbVar3 = (byte *)strtok((char *)0x0," \t\n\r"); iVar5 = 5; bVar12 = false; iVar2 = 0; bVar13 = true; pbVar9 = &DAT_007a7690; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar3 < *pbVar9; bVar13 = *pbVar3 == *pbVar9; pbVar3 = pbVar3 + 1; pbVar9 = pbVar9 + 1; } while (bVar13); if (!bVar13) { iVar2 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar2 == 0) { *(undefined1 *)(iVar6 * 0x40 + 0x10 + DAT_0083f338) = 1; } else { *(undefined1 *)(iVar6 * 0x40 + 0x10 + DAT_0083f338) = 0; } } else { iVar5 = 7; bVar12 = false; iVar2 = 0; bVar13 = true; pbVar9 = &DAT_007a7670; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar3 < *pbVar9; bVar13 = *pbVar3 == *pbVar9; pbVar3 = pbVar3 + 1; pbVar9 = pbVar9 + 1; } while (bVar13); if (!bVar13) { iVar2 = (1 - (uint)bVar12) - (uint)(bVar12 != 0); } if (iVar2 == 0) { pcVar7 = strtok((char *)0x0," \t\n\r"); iVar2 = sscanf(pcVar7,"%lf",&local_854); if (iVar2 == 1) { *(ulonglong *)(iVar6 * 0x40 + 0x18 + DAT_0083f338) = CONCAT44(uStack_850,local_854); } } } } } } } } } } } } } } } pcVar7 = fgets(local_834,0x834,local_858); _File = local_858; } fclose(_File); pcVar11 = InterlockedDecrement_exref; puVar8 = (undefined4 *)(local_864 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_864 + -0x10)); if ((LVar1 == 0) && (puVar8 != (undefined4 *)0x0)) { (**(code **)*puVar8)(1); } pcVar7 = local_85c + -0x14; LVar1 = InterlockedDecrement((LONG *)(local_85c + -0x10)); if ((LVar1 == 0) && (pcVar7 != (char *)0x0)) { (*(code *)**(undefined4 **)pcVar7)(1); } LAB_004974b1: iVar6 = (*pcVar11)(param_2 + -0x10); goto joined_r0x004974b9; } puVar8 = (undefined4 *)(local_864 + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_864 + -0x10)); if ((LVar1 == 0) && (puVar8 != (undefined4 *)0x0)) { (**(code **)*puVar8)(1); } pcVar7 = local_85c + -0x14; LVar1 = InterlockedDecrement((LONG *)(local_85c + -0x10)); if ((LVar1 == 0) && (pcVar7 != (char *)0x0)) { (*(code *)**(undefined4 **)pcVar7)(1); } } iVar6 = (*pcVar11)(param_2 + -0x10); joined_r0x004974b9: if ((iVar6 == 0) && ((undefined4 *)(param_2 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(param_2 + -0x14))(1); } return; } // --- FUN_00497550 at 0x00497550 (size: 1377) --- void __thiscall FUN_00497550(int param_1,int param_2) { int iVar1; undefined *puVar2; LONG LVar3; FILE *_File; int iVar4; undefined4 *puVar5; char *pcVar6; code *pcVar7; char **ppcVar8; undefined *local_28; undefined *local_24; char *local_20; int iStack_1c; int iStack_18; uint local_14; int local_10; int iStack_c; undefined *puStack_8; undefined4 *puStack_4; local_20 = PTR_DAT_00818344; InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10)); local_28 = PTR_DAT_00818344; InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10)); local_24 = PTR_DAT_00818344; InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10)); pcVar7 = InterlockedDecrement_exref; if (*(char *)(param_1 + 0x630) == '\0') { puVar5 = (undefined4 *)(local_24 + -0x14); LVar3 = InterlockedDecrement((LONG *)(local_24 + -0x10)); if ((LVar3 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } puVar5 = (undefined4 *)(local_28 + -0x14); LVar3 = InterlockedDecrement((LONG *)(local_28 + -0x10)); if ((LVar3 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } pcVar6 = local_20 + -0x14; LVar3 = InterlockedDecrement((LONG *)(local_20 + -0x10)); if ((LVar3 == 0) && (pcVar6 != (char *)0x0)) { (*(code *)**(undefined4 **)pcVar6)(1); } } else { ppcVar8 = &local_20; iVar4 = param_2; InterlockedIncrement((LONG *)(param_2 + -0x10)); FUN_00496940(iVar4,ppcVar8); _File = fopen(local_20,"w"); if ((_File == (FILE *)0x0) && (_File = fopen(local_20,"w+"), pcVar7 = InterlockedDecrement_exref, _File == (FILE *)0x0)) { puVar5 = (undefined4 *)(local_24 + -0x14); LVar3 = InterlockedDecrement((LONG *)(local_24 + -0x10)); if ((LVar3 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } } else { local_14 = 0; if (DAT_0083f33c - DAT_0083f338 >> 6 != 0) { iVar4 = 0; do { FUN_00402710(&local_28,"\n"); fwrite(local_28,1,*(int *)(local_28 + -4) - 1,_File); FUN_00408fd0(&local_10,0); iVar1 = local_10; FUN_00402710(&local_28," %s\n",local_10); puVar5 = (undefined4 *)(iVar1 + -0x14); LVar3 = InterlockedDecrement((LONG *)(iVar1 + -0x10)); if ((LVar3 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } fwrite(local_28,1,*(int *)(local_28 + -4) - 1,_File); FUN_00408fd0(&iStack_c,0); iVar1 = iStack_c; FUN_00402710(&local_28," %s\n",iStack_c); puVar5 = (undefined4 *)(iVar1 + -0x14); LVar3 = InterlockedDecrement((LONG *)(iVar1 + -0x10)); if ((LVar3 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } fwrite(local_28,1,*(int *)(local_28 + -4) - 1,_File); FUN_00408fd0(&puStack_8,0); puVar2 = puStack_8; if (local_24 != puStack_8) { puStack_4 = (undefined4 *)(local_24 + -0x14); LVar3 = InterlockedDecrement((LONG *)(local_24 + -0x10)); if ((LVar3 == 0) && (puStack_4 != (undefined4 *)0x0)) { (**(code **)*puStack_4)(1); } local_24 = puVar2; InterlockedIncrement((LONG *)(puVar2 + -0x10)); } LVar3 = InterlockedDecrement((LONG *)(puVar2 + -0x10)); if ((LVar3 == 0) && ((undefined4 *)(puVar2 + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(puVar2 + -0x14))(1); } FUN_00401340(&DAT_007a76b8); FUN_00401340(&DAT_00795508); FUN_004053a0(&iStack_1c,&iStack_18); puVar5 = (undefined4 *)(iStack_1c + -0x14); LVar3 = InterlockedDecrement((LONG *)(iStack_1c + -0x10)); if ((LVar3 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } puVar5 = (undefined4 *)(iStack_18 + -0x14); LVar3 = InterlockedDecrement((LONG *)(iStack_18 + -0x10)); if ((LVar3 == 0) && (puVar5 != (undefined4 *)0x0)) { (**(code **)*puVar5)(1); } FUN_00402710(&local_28," %s\n",local_24); fwrite(local_28,1,*(int *)(local_28 + -4) - 1,_File); FUN_00402710(&local_28," %d\n",*(undefined4 *)(iVar4 + 0x20 + DAT_0083f338)); fwrite(local_28,1,*(int *)(local_28 + -4) - 1,_File); FUN_00402710(&local_28," %d\n",*(undefined4 *)(iVar4 + 0x24 + DAT_0083f338)); fwrite(local_28,1,*(int *)(local_28 + -4) - 1,_File); FUN_00402710(&local_28," %d\n",*(undefined4 *)(iVar4 + 0x28 + DAT_0083f338)); fwrite(local_28,1,*(int *)(local_28 + -4) - 1,_File); pcVar6 = "TRUE"; if (*(char *)(iVar4 + 0x2c + DAT_0083f338) == '\0') { pcVar6 = "FALSE"; } FUN_00402710(&local_28," %s\n",pcVar6); fwrite(local_28,1,*(int *)(local_28 + -4) - 1,_File); FUN_00402710(&local_28," %f\n",*(undefined4 *)(iVar4 + 0x30 + DAT_0083f338), *(undefined4 *)(iVar4 + 0x34 + DAT_0083f338)); fwrite(local_28,1,*(int *)(local_28 + -4) - 1,_File); FUN_00402710(&local_28," %f\n",*(undefined4 *)(iVar4 + 0x38 + DAT_0083f338), *(undefined4 *)(iVar4 + 0x3c + DAT_0083f338)); fwrite(local_28,1,*(int *)(local_28 + -4) - 1,_File); pcVar6 = "TRUE"; if (*(char *)(iVar4 + 0x10 + DAT_0083f338) == '\0') { pcVar6 = "FALSE"; } FUN_00402710(&local_28," %s\n",pcVar6); fwrite(local_28,1,*(int *)(local_28 + -4) - 1,_File); FUN_00402710(&local_28,"