// Decompiled from acclient.exe — chunk 0x00450000 // Ghidra 12.0.4 + pyghidra headless // --- FUN_00450120 at 0x00450120 (size: 607) --- void __thiscall FUN_00450120(int param_1,uint param_2) { int iVar1; char cVar2; undefined4 *puVar3; ushort *puVar4; undefined4 uVar5; undefined4 *puVar6; uint *puVar7; uint *puVar8; uint uVar9; uint uVar10; ushort uVar11; undefined4 *puVar12; uint local_4; iVar1 = param_2; FUN_0040ad10(4); puVar3 = (undefined4 *)FUN_0040acf0(4); if (puVar3 != (undefined4 *)0x0) { if ((*(byte *)(param_2 + 4) & 1) == 0) { *(undefined4 *)(param_1 + 4) = *puVar3; } else { *puVar3 = *(undefined4 *)(param_1 + 4); } } uVar11 = *(ushort *)(param_1 + 8); FUN_0040ad10(2); puVar4 = (ushort *)FUN_0040acf0(2); if (puVar4 != (ushort *)0x0) { if ((*(byte *)(param_2 + 4) & 1) == 0) { uVar11 = *puVar4; } else { *puVar4 = uVar11; } } if ((*(byte *)(param_2 + 4) & 5) == 0) { *(uint *)(param_1 + 8) = (uint)uVar11; } FUN_0040ad10(4); puVar3 = (undefined4 *)FUN_0040acf0(4); if (puVar3 != (undefined4 *)0x0) { if ((*(byte *)(param_2 + 4) & 1) == 0) { *(undefined4 *)(param_1 + 0xc) = *puVar3; } else { *puVar3 = *(undefined4 *)(param_1 + 0xc); } } if ((~*(byte *)(param_2 + 4) & 1) != 0) { uVar5 = thunk_FUN_005df0f5(*(undefined4 *)(param_1 + 0xc)); *(undefined4 *)(param_1 + 0x10) = uVar5; } uVar10 = *(uint *)(param_1 + 0xc); puVar3 = *(undefined4 **)(param_1 + 0x10); puVar6 = (undefined4 *)FUN_0040acf0(uVar10); if (puVar6 != (undefined4 *)0x0) { if ((*(byte *)(param_2 + 4) & 1) == 0) { puVar12 = puVar6; for (uVar9 = uVar10 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { *puVar3 = *puVar12; puVar12 = puVar12 + 1; puVar3 = puVar3 + 1; } } else { puVar12 = puVar3; puVar3 = puVar6; for (uVar9 = uVar10 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { *puVar3 = *puVar12; puVar12 = puVar12 + 1; puVar3 = puVar3 + 1; } } for (uVar10 = uVar10 & 3; uVar10 != 0; uVar10 = uVar10 - 1) { *(undefined1 *)puVar3 = *(undefined1 *)puVar12; puVar12 = (undefined4 *)((int)puVar12 + 1); puVar3 = (undefined4 *)((int)puVar3 + 1); } } local_4 = *(uint *)(param_1 + 0x24); FUN_0040ad10(4); puVar7 = (uint *)FUN_0040acf0(4); if (puVar7 != (uint *)0x0) { if ((*(byte *)(param_2 + 4) & 1) == 0) { local_4 = *puVar7; } else { *puVar7 = local_4; } } FUN_00422250(param_1 + 0x18,param_2); param_2 = 0; if (local_4 != 0) { do { if ((~*(byte *)(iVar1 + 4) & 1) == 0) { puVar7 = *(uint **)(*(int *)(param_1 + 0x1c) + param_2 * 4); } else { puVar7 = (uint *)FUN_005df0f5(0x10); } uVar11 = (ushort)*puVar7; FUN_0040ad10(2); puVar4 = (ushort *)FUN_0040acf0(2); if (puVar4 != (ushort *)0x0) { if ((*(byte *)(iVar1 + 4) & 1) == 0) { uVar11 = *puVar4; } else { *puVar4 = uVar11; } } if ((*(byte *)(iVar1 + 4) & 5) == 0) { *puVar7 = (uint)uVar11; } uVar11 = (ushort)puVar7[1]; FUN_0040ad10(2); puVar4 = (ushort *)FUN_0040acf0(2); if (puVar4 != (ushort *)0x0) { if ((*(byte *)(iVar1 + 4) & 1) == 0) { uVar11 = *puVar4; } else { *puVar4 = uVar11; } } if ((*(byte *)(iVar1 + 4) & 5) == 0) { puVar7[1] = (uint)uVar11; } FUN_0040ad10(4); puVar8 = (uint *)FUN_0040acf0(4); if (puVar8 != (uint *)0x0) { if ((*(byte *)(iVar1 + 4) & 1) == 0) { puVar7[2] = *puVar8; } else { *puVar8 = puVar7[2]; } } FUN_0040ad10(4); puVar8 = (uint *)FUN_0040acf0(4); if (puVar8 != (uint *)0x0) { if ((*(byte *)(iVar1 + 4) & 1) == 0) { puVar7[3] = *puVar8; } else { *puVar8 = puVar7[3]; } } if ((~*(byte *)(iVar1 + 4) & 1) != 0) { uVar10 = *(uint *)(param_1 + 0x20) & 0x7fffffff; if (uVar10 <= *(uint *)(param_1 + 0x24)) { uVar5 = FUN_00453850(uVar10 + 1); cVar2 = FUN_004180a0(uVar5); if (cVar2 == '\0') goto LAB_00450362; } *(uint **)(*(int *)(param_1 + 0x1c) + *(int *)(param_1 + 0x24) * 4) = puVar7; *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + 1; } LAB_00450362: param_2 = param_2 + 1; } while (param_2 < local_4); } return; } // --- FUN_00450380 at 0x00450380 (size: 110) --- uint FUN_00450380(void) { char cVar1; undefined4 *puVar2; LONG *pLVar3; puVar2 = (undefined4 *)FUN_005df0f5(0x2c); if (puVar2 != (undefined4 *)0x0) { pLVar3 = (LONG *)(PTR_DAT_00818344 + -0x10); *puVar2 = PTR_DAT_00818344; InterlockedIncrement(pLVar3); pLVar3 = (LONG *)(PTR_DAT_00818344 + -0x10); puVar2[5] = PTR_DAT_00818344; InterlockedIncrement(pLVar3); puVar2[7] = 0; puVar2[8] = 0; puVar2[9] = 0; FUN_0044fa50(); cVar1 = FUN_0044ff90(puVar2); return -(uint)(cVar1 != '\0') & (uint)puVar2; } return 0; } // --- FUN_004503f0 at 0x004503F0 (size: 44) --- void __thiscall FUN_004503f0(int param_1,undefined4 param_2) { uint uVar1; uVar1 = 0; if (*(int *)(param_1 + 0x38) != 0) { do { FUN_0044fee0(param_2); uVar1 = uVar1 + 1; } while (uVar1 < *(uint *)(param_1 + 0x38)); } return; } // --- FUN_00450420 at 0x00450420 (size: 47) --- undefined4 __fastcall FUN_00450420(int param_1) { undefined1 uVar1; char cVar2; uint uVar3; undefined1 uVar4; uint uVar5; uVar5 = 0; uVar4 = 1; uVar3 = 0; uVar1 = 1; if (*(int *)(param_1 + 0x38) != 0) { do { uVar4 = uVar1; cVar2 = FUN_0044fd50(); if (cVar2 == '\0') { uVar4 = 0; } uVar3 = *(uint *)(param_1 + 0x38); uVar5 = uVar5 + 1; uVar1 = uVar4; } while (uVar5 < uVar3); } return CONCAT31((int3)(uVar3 >> 8),uVar4); } // --- FUN_00450450 at 0x00450450 (size: 47) --- undefined4 __fastcall FUN_00450450(int param_1) { undefined1 uVar1; char cVar2; uint uVar3; undefined1 uVar4; uint uVar5; uVar5 = 0; uVar4 = 1; uVar3 = 0; uVar1 = 1; if (*(int *)(param_1 + 0x38) != 0) { do { uVar4 = uVar1; cVar2 = FUN_0044fa30(); if (cVar2 == '\0') { uVar4 = 0; } uVar3 = *(uint *)(param_1 + 0x38); uVar5 = uVar5 + 1; uVar1 = uVar4; } while (uVar5 < uVar3); } return CONCAT31((int3)(uVar3 >> 8),uVar4); } // --- FUN_00450480 at 0x00450480 (size: 35) --- undefined4 * __fastcall FUN_00450480(undefined4 *param_1) { FUN_00415460(DAT_0083d2b8); *param_1 = &PTR_LAB_0079c458; param_1[0xc] = 0; param_1[0xd] = 0; param_1[0xe] = 0; return param_1; } // --- FUN_004504c0 at 0x004504C0 (size: 180) --- void __fastcall FUN_004504c0(int param_1) { void *pvVar1; int iVar2; uint uVar3; uVar3 = 0; if (*(int *)(param_1 + 0x38) != 0) { do { FUN_0044fa30(); uVar3 = uVar3 + 1; } while (uVar3 < *(uint *)(param_1 + 0x38)); } uVar3 = 0; if (*(int *)(param_1 + 0x38) != 0) { do { pvVar1 = *(void **)(*(int *)(param_1 + 0x30) + uVar3 * 4); if (pvVar1 != (void *)0x0) { FUN_0044ff20(); operator_delete(pvVar1); } *(undefined4 *)(*(int *)(param_1 + 0x30) + uVar3 * 4) = 0; uVar3 = uVar3 + 1; } while (uVar3 < *(uint *)(param_1 + 0x38)); } *(undefined4 *)(param_1 + 0x38) = 0; if ((*(uint *)(param_1 + 0x34) & 0x80000000) == 0x80000000) { operator_delete__(*(void **)(param_1 + 0x30)); *(undefined4 *)(param_1 + 0x30) = 0; *(undefined4 *)(param_1 + 0x34) = 0; return; } if (*(int *)(param_1 + 0x30) != 0) { iVar2 = (*(uint *)(param_1 + 0x34) & 0x7fffffff) - 1; while (-1 < iVar2) { iVar2 = iVar2 + -1; *(undefined4 *)(*(int *)(param_1 + 0x30) + 4 + iVar2 * 4) = 0; } } return; } // --- FUN_004505f0 at 0x004505F0 (size: 49) --- void __fastcall FUN_004505f0(undefined4 *param_1) { *param_1 = &PTR_LAB_0079c458; FUN_004504c0(); if ((param_1[0xd] & 0x80000000) == 0x80000000) { operator_delete__((void *)param_1[0xc]); } FUN_004154b0(); return; } // --- FUN_00450630 at 0x00450630 (size: 70) --- undefined4 * __thiscall FUN_00450630(undefined4 *param_1,byte param_2) { *param_1 = &PTR_LAB_0079c458; FUN_004504c0(); if ((param_1[0xd] & 0x80000000) == 0x80000000) { operator_delete__((void *)param_1[0xc]); } FUN_004154b0(); if ((param_2 & 1) != 0) { operator_delete(param_1); } return param_1; } // --- FUN_004507e0 at 0x004507E0 (size: 58) --- undefined4 * __fastcall FUN_004507e0(undefined4 *param_1) { *param_1 = &PTR_LAB_0079c4b4; FUN_005b2250(); FUN_005b2250(); param_1[1] = 0; FUN_005b1fe0(); FUN_005b1fe0(); return param_1; } // --- FUN_004508b0 at 0x004508B0 (size: 39) --- undefined4 * __fastcall FUN_004508b0(undefined4 *param_1) { *param_1 = &PTR_LAB_0079c4dc; FUN_005b2250(); param_1[1] = 0; FUN_005b1fe0(); return param_1; } // --- FUN_00450950 at 0x00450950 (size: 69) --- undefined4 * __fastcall FUN_00450950(undefined4 *param_1) { *param_1 = &PTR_LAB_0079c508; FUN_005b2250(); FUN_005b2250(); param_1[1] = 0; FUN_005b1fe0(); param_1[3] = 0x3f800000; FUN_005b1fe0(); param_1[0xe] = 0x3f800000; return param_1; } // --- FUN_004509a0 at 0x004509A0 (size: 147) --- void __thiscall FUN_004509a0(int param_1,int param_2) { *(undefined4 *)(param_1 + 4) = *(undefined4 *)(param_2 + 4); *(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_2 + 8); *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc); *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_2 + 0x10); *(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(param_2 + 0x14); *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_2 + 0x18); *(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(param_2 + 0x1c); *(undefined4 *)(param_1 + 0x20) = *(undefined4 *)(param_2 + 0x20); *(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(param_2 + 0x24); *(undefined4 *)(param_1 + 0x28) = *(undefined4 *)(param_2 + 0x28); *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(param_2 + 0x2c); *(undefined4 *)(param_1 + 0x30) = *(undefined4 *)(param_2 + 0x30); *(undefined4 *)(param_1 + 0x34) = *(undefined4 *)(param_2 + 0x34); *(undefined4 *)(param_1 + 0x38) = *(undefined4 *)(param_2 + 0x38); *(undefined4 *)(param_1 + 0x3c) = *(undefined4 *)(param_2 + 0x3c); *(undefined4 *)(param_1 + 0x40) = *(undefined4 *)(param_2 + 0x40); *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44); *(undefined4 *)(param_1 + 0x48) = *(undefined4 *)(param_2 + 0x48); *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_2 + 0x4c); *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_2 + 0x50); *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_2 + 0x54); *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_2 + 0x58); *(undefined4 *)(param_1 + 0x5c) = *(undefined4 *)(param_2 + 0x5c); return; } // --- FUN_00450ac0 at 0x00450AC0 (size: 67) --- void __fastcall FUN_00450ac0(undefined4 *param_1) { *param_1 = &PTR_FUN_0079c530; param_1[1] = 0; param_1[5] = 0; param_1[4] = 0; param_1[3] = 0; param_1[9] = 0; param_1[8] = 0; param_1[6] = 0; param_1[0xd] = 0; param_1[0xb] = 0; param_1[10] = 0; param_1[0x10] = 0; param_1[0xf] = 0; param_1[0xe] = 0; param_1[0x11] = 0x3f800000; param_1[0xc] = 0x3f800000; param_1[7] = 0x3f800000; param_1[2] = 0x3f800000; return; } // --- FUN_00450cb0 at 0x00450CB0 (size: 109) --- void __thiscall FUN_00450cb0(undefined4 *param_1,int param_2) { undefined1 uVar1; undefined1 *puVar2; undefined4 *puVar3; uVar1 = (**(code **)*param_1)(); FUN_0040ad10(1); puVar2 = (undefined1 *)FUN_0040acf0(1); if ((puVar2 != (undefined1 *)0x0) && ((*(byte *)(param_2 + 4) & 1) != 0)) { *puVar2 = uVar1; } FUN_0040ad10(4); puVar3 = (undefined4 *)FUN_0040acf0(4); if (puVar3 != (undefined4 *)0x0) { if ((*(byte *)(param_2 + 4) & 1) == 0) { param_1[1] = *puVar3; } else { *puVar3 = param_1[1]; } } FUN_005b22c0(param_2); FUN_005b22c0(param_2); return; } // --- FUN_00450f70 at 0x00450F70 (size: 113) --- void __thiscall FUN_00450f70(undefined4 *param_1,int param_2) { undefined1 uVar1; undefined1 *puVar2; undefined4 *puVar3; uVar1 = (**(code **)*param_1)(); FUN_0040ad10(1); puVar2 = (undefined1 *)FUN_0040acf0(1); if ((puVar2 != (undefined1 *)0x0) && ((*(byte *)(param_2 + 4) & 1) != 0)) { *puVar2 = uVar1; } FUN_0040ad10(4); puVar3 = (undefined4 *)FUN_0040acf0(4); if (puVar3 != (undefined4 *)0x0) { if ((*(byte *)(param_2 + 4) & 1) != 0) { *puVar3 = param_1[1]; FUN_005b22c0(param_2); return; } param_1[1] = *puVar3; } FUN_005b22c0(param_2); return; } // --- FUN_00451410 at 0x00451410 (size: 143) --- void __thiscall FUN_00451410(undefined4 *param_1,int param_2) { undefined1 uVar1; undefined1 *puVar2; undefined4 *puVar3; int iVar4; uVar1 = (**(code **)*param_1)(); FUN_0040ad10(1); puVar2 = (undefined1 *)FUN_0040acf0(1); if ((puVar2 != (undefined1 *)0x0) && ((*(byte *)(param_2 + 4) & 1) != 0)) { *puVar2 = uVar1; } FUN_0040ad10(4); puVar3 = (undefined4 *)FUN_0040acf0(4); if (puVar3 != (undefined4 *)0x0) { if ((*(byte *)(param_2 + 4) & 1) == 0) { param_1[1] = *puVar3; } else { *puVar3 = param_1[1]; } } param_1 = param_1 + 2; FUN_0040ad10(0x40); puVar3 = (undefined4 *)FUN_0040acf0(0x40); if (puVar3 != (undefined4 *)0x0) { iVar4 = 0x10; if ((*(byte *)(param_2 + 4) & 1) != 0) { for (; iVar4 != 0; iVar4 = iVar4 + -1) { *puVar3 = *param_1; param_1 = param_1 + 1; puVar3 = puVar3 + 1; } return; } for (; iVar4 != 0; iVar4 = iVar4 + -1) { *param_1 = *puVar3; puVar3 = puVar3 + 1; param_1 = param_1 + 1; } } return; } // --- FUN_00451a60 at 0x00451A60 (size: 114) --- /* WARNING: Removing unreachable block (ram,0x00451aa0) */ /* WARNING: Removing unreachable block (ram,0x00451a7b) */ /* WARNING: Removing unreachable block (ram,0x00451ac0) */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __thiscall FUN_00451a60(float *param_1,uint param_2) { *param_1 = (float)(param_2 >> 0x10 & 0xff) * _DAT_00799208; param_1[1] = (float)(param_2 >> 8 & 0xff) * _DAT_00799208; param_1[2] = (float)(param_2 & 0xff) * _DAT_00799208; return; } // --- FUN_00451ae0 at 0x00451AE0 (size: 33) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __thiscall FUN_00451ae0(float *param_1,float param_2) { param_2 = _DAT_007938b0 / param_2; *param_1 = param_2 * *param_1; param_1[1] = param_2 * param_1[1]; param_1[2] = param_2 * param_1[2]; return; } // --- FUN_00451b10 at 0x00451B10 (size: 49) --- bool FUN_00451b10(ushort param_1,ushort param_2) { uint uVar1; uVar1 = (int)((uint)param_2 - (uint)param_1) >> 0x1f; if ((int)(((uint)param_2 - (uint)param_1 ^ uVar1) - uVar1) < 0x8000) { return param_1 < param_2; } return param_2 < param_1; } // --- FUN_00451b50 at 0x00451B50 (size: 83) --- undefined4 __thiscall FUN_00451b50(int param_1,int param_2,ushort param_3) { ushort uVar1; uint uVar2; bool bVar3; uVar1 = *(ushort *)(param_1 + 0x164 + param_2 * 2); uVar2 = (int)((uint)param_3 - (uint)uVar1) >> 0x1f; if ((int)(((uint)param_3 - (uint)uVar1 ^ uVar2) - uVar2) < 0x8000) { bVar3 = uVar1 < param_3; } else { bVar3 = param_3 < uVar1; } if (bVar3) { *(ushort *)(param_1 + 0x164 + param_2 * 2) = param_3; return 1; } return 0; } // --- FUN_00451bc0 at 0x00451BC0 (size: 11) --- void __fastcall FUN_00451bc0(int param_1) { /* WARNING: Could not recover jumptable at 0x00451bc8. Too many branches */ /* WARNING: Treating indirect jump as call */ (**(code **)(**(int **)(param_1 + 0xac) + 0x34))(); return; } // --- FUN_00451bd0 at 0x00451BD0 (size: 11) --- void FUN_00451bd0(void) { FUN_00509da0(); return; } // --- FUN_00451be0 at 0x00451BE0 (size: 10) --- void FUN_00451be0(undefined4 param_1) { DAT_00844bfc = param_1; return; } // --- FUN_00451bf0 at 0x00451BF0 (size: 11) --- undefined4 FUN_00451bf0(void) { return CONCAT31((int3)((uint)DAT_00844c00 >> 8),DAT_00844c00 != 0); } // --- FUN_00451c00 at 0x00451C00 (size: 23) --- void __thiscall FUN_00451c00(int param_1,undefined1 param_2,undefined4 param_3) { *(undefined1 *)(param_1 + 200) = param_2; *(undefined4 *)(param_1 + 0xc4) = param_3; return; } // --- FUN_00451c20 at 0x00451C20 (size: 57) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ float10 __fastcall FUN_00451c20(int param_1) { float10 fVar1; if (*(char *)(param_1 + 200) != '\0') { return (float10)*(float *)(param_1 + 0xc4); } fVar1 = (float10)fptan(((float10)*(float *)(param_1 + 0xc0) / ((float10)*(float *)(DAT_00870340 + 0xa8) - (float10)_DAT_007958cc)) * (float10)_DAT_00799088); return (float10)_DAT_007938c0 / fVar1; } // --- FUN_00451c60 at 0x00451C60 (size: 29) --- undefined4 __fastcall FUN_00451c60(int param_1) { if ((*(int *)(param_1 + 0xf8) != 0) && (*(int *)(param_1 + 0xdc) == 0)) { return 1; } return 0; } // --- FUN_00451c80 at 0x00451C80 (size: 17) --- undefined4 __fastcall FUN_00451c80(int param_1) { undefined4 uVar1; uVar1 = *(undefined4 *)(param_1 + 0xe4); *(undefined4 *)(param_1 + 0xe4) = 0; return uVar1; } // --- FUN_00451ca0 at 0x00451CA0 (size: 113) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 FUN_00451ca0(int param_1,int param_2) { uint uVar1; uint uVar2; DAT_0083da4c = param_1; _DAT_0083da50 = param_2; DAT_0083da44 = 0; _DAT_00819618 = 0xffffffff; uVar1 = param_1 - *(int *)(DAT_00870340 + 0x8c); uVar2 = param_2 - *(int *)(DAT_00870340 + 0x90); if ((uVar1 < *(uint *)(DAT_00870340 + 0x94)) && (uVar2 < *(uint *)(DAT_00870340 + 0x98))) { FUN_0054c360(uVar1,uVar2,1); DAT_00844c00 = 0; DAT_0083da48 = 1; return 1; } FUN_0054c3a0(); return 0; } // --- FUN_00451d20 at 0x00451D20 (size: 6) --- undefined4 FUN_00451d20(void) { return DAT_0083da44; } // --- FUN_00451d30 at 0x00451D30 (size: 27) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00451d30(undefined4 param_1,undefined4 param_2) { DAT_0083da44 = param_1; _DAT_00819618 = param_2; FUN_006935e0(param_1); return; } // --- FUN_00451d50 at 0x00451D50 (size: 13) --- void __thiscall FUN_00451d50(int param_1,undefined4 param_2) { *(undefined4 *)(param_1 + 0x100) = param_2; return; } // --- FUN_00451d60 at 0x00451D60 (size: 13) --- void __thiscall FUN_00451d60(int param_1,undefined4 param_2) { *(undefined4 *)(param_1 + 0xfc) = param_2; return; } // --- FUN_00451d70 at 0x00451D70 (size: 11) --- void __fastcall FUN_00451d70(int param_1) { *(undefined4 *)(param_1 + 0xd8) = 0; return; } // --- FUN_00451d80 at 0x00451D80 (size: 11) --- void __fastcall FUN_00451d80(int param_1) { *(undefined4 *)(param_1 + 0xd8) = 1; return; } // --- FUN_00451d90 at 0x00451D90 (size: 74) --- undefined4 FUN_00451d90(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) { int iVar1; iVar1 = FUN_0054be30(param_1,param_2,param_3,param_4); if (iVar1 != 0) { if (DAT_0083da48 != '\0') { FUN_00451ca0(DAT_0083da4c,DAT_0083da4c); } return 1; } return 0; } // --- FUN_00451de0 at 0x00451DE0 (size: 10) --- void FUN_00451de0(undefined4 param_1) { DAT_008452f4 = param_1; return; } // --- FUN_00451df0 at 0x00451DF0 (size: 22) --- void FUN_00451df0(int param_1) { FUN_005a3fe0(param_1 != 0); return; } // --- FUN_00451e10 at 0x00451E10 (size: 17) --- void FUN_00451e10(int param_1) { DAT_0081dbf9 = param_1 != 0; return; } // --- FUN_00451e30 at 0x00451E30 (size: 35) --- uint __thiscall FUN_00451e30(int param_1,undefined1 param_2,undefined1 param_3) { uint in_EAX; uint uVar1; uVar1 = in_EAX & 0xffffff00; if (*(int *)(param_1 + 0xb0) != 0) { uVar1 = FUN_005075a0(param_2,param_3,param_3,0); } return uVar1; } // --- FUN_00451e60 at 0x00451E60 (size: 49) --- bool FUN_00451e60(undefined4 param_1,undefined4 param_2,undefined4 *param_3,undefined4 *param_4) { char cVar1; *param_3 = 0; *param_4 = 0; cVar1 = FUN_00455d50(param_1,param_2,param_3,param_4); return cVar1 != '\0'; } // --- FUN_00451ea0 at 0x00451EA0 (size: 19) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __thiscall FUN_00451ea0(int param_1,float param_2) { *(float *)(param_1 + 0xc0) = param_2 * (float)_DAT_0079c6b0; return; } // --- FUN_00451ec0 at 0x00451EC0 (size: 31) --- bool __fastcall FUN_00451ec0(int param_1) { if (*(int *)(param_1 + 0xf8) != 0) { return (*(uint *)(*(int *)(param_1 + 0xf8) + 0x4c) & 0xffff) < 0x100; } return false; } // --- FUN_00451f80 at 0x00451F80 (size: 120) --- undefined4 __thiscall FUN_00451f80(int param_1,int param_2,undefined4 param_3,ushort param_4) { ushort uVar1; uint uVar2; bool bVar3; uVar1 = *(ushort *)(param_2 + 0x172); uVar2 = (int)((uint)param_4 - (uint)uVar1) >> 0x1f; if ((int)(((uint)param_4 - (uint)uVar1 ^ uVar2) - uVar2) < 0x8000) { bVar3 = uVar1 < param_4; } else { bVar3 = param_4 < uVar1; } if (bVar3) { *(ushort *)(param_2 + 0x172) = param_4; (**(code **)(**(int **)(param_1 + 0xac) + 0x24))(param_2,param_3); if (param_2 == *(int *)(param_1 + 0xf8)) { (**(code **)(**(int **)(param_1 + 0xac) + 0x30))(param_3); } return 1; } return 0; } // --- FUN_00452000 at 0x00452000 (size: 83) --- int FUN_00452000(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) { int iVar1; iVar1 = FUN_00508890(param_2); if (iVar1 == 0) { FUN_00509da0(param_2,param_1); return 4; } iVar1 = FUN_0050ff30(param_3,param_4); return (-(uint)(iVar1 != 0) & 0xfffffffe) + 3; } // --- FUN_00452060 at 0x00452060 (size: 78) --- int FUN_00452060(undefined4 param_1,undefined4 param_2,undefined4 param_3) { int iVar1; iVar1 = FUN_00508890(param_2); if (iVar1 == 0) { FUN_00509da0(param_2,param_1); return 4; } iVar1 = FUN_00511800(param_3); return (-(uint)(iVar1 != 0) & 0xfffffffe) + 3; } // --- FUN_004520b0 at 0x004520B0 (size: 83) --- int FUN_004520b0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) { int iVar1; iVar1 = FUN_00508890(param_2); if (iVar1 == 0) { FUN_00509da0(param_2,param_1); return 4; } iVar1 = FUN_00513d60(param_3,param_4); return (-(uint)(iVar1 != 0) & 0xfffffffe) + 3; } // --- FUN_00452110 at 0x00452110 (size: 123) --- void __thiscall FUN_00452110(int param_1,int param_2,undefined4 param_3,ushort param_4) { ushort uVar1; uint uVar2; bool bVar3; uVar1 = *(ushort *)(param_2 + 0x168); uVar2 = (int)((uint)param_4 - (uint)uVar1) >> 0x1f; if ((int)(((uint)param_4 - (uint)uVar1 ^ uVar2) - uVar2) < 0x8000) { bVar3 = uVar1 < param_4; } else { bVar3 = param_4 < uVar1; } if (bVar3) { *(ushort *)(param_2 + 0x168) = param_4; FUN_005158d0(param_3,1); if (((param_2 == *(int *)(param_1 + 0xf8)) && (*(int *)(param_1 + 0xe0) != 0)) && ((*(uint *)(param_2 + 0xa8) & 0x4000) == 0)) { *(undefined4 *)(param_1 + 0xe0) = 0; } } return; } // --- FUN_00452190 at 0x00452190 (size: 104) --- undefined4 __thiscall FUN_00452190(int param_1,undefined4 param_2,ushort param_3) { ushort uVar1; uint uVar2; bool bVar3; if (*(int *)(param_1 + 0xf8) != 0) { uVar1 = *(ushort *)(*(int *)(param_1 + 0xf8) + 0x16c); uVar2 = (int)((uint)uVar1 - (uint)param_3) >> 0x1f; if ((int)(((uint)uVar1 - (uint)param_3 ^ uVar2) - uVar2) < 0x8000) { bVar3 = param_3 < uVar1; } else { bVar3 = uVar1 < param_3; } if (!bVar3) { *(undefined4 *)(param_1 + 0xdc) = 0; *(undefined4 *)(param_1 + 0xe4) = 0; *(undefined4 *)(param_1 + 0xe0) = 1; return 1; } } return 1; } // --- FUN_00452200 at 0x00452200 (size: 119) --- void __thiscall FUN_00452200(int param_1,int param_2,undefined4 param_3,undefined4 param_4,ushort param_5) { ushort uVar1; int iVar2; uint uVar3; bool bVar4; uVar1 = *(ushort *)(param_2 + 0x16a); uVar3 = (int)((uint)param_5 - (uint)uVar1) >> 0x1f; if ((int)(((uint)param_5 - (uint)uVar1 ^ uVar3) - uVar3) < 0x8000) { bVar4 = uVar1 < param_5; } else { bVar4 = param_5 < uVar1; } if (bVar4) { *(ushort *)(param_2 + 0x16a) = param_5; if ((param_2 == *(int *)(param_1 + 0xf8)) && (iVar2 = (**(code **)(**(int **)(param_1 + 0xb8) + 0x60))(), iVar2 == 0)) { return; } FUN_00511ec0(param_3,1); FUN_005101a0(param_4,1); } return; } // --- FUN_00452280 at 0x00452280 (size: 80) --- void FUN_00452280(int param_1,ushort param_2) { ushort uVar1; uint uVar2; bool bVar3; uVar1 = *(ushort *)(param_1 + 0x164); uVar2 = (int)((uint)param_2 - (uint)uVar1) >> 0x1f; if ((int)(((uint)param_2 - (uint)uVar1 ^ uVar2) - uVar2) < 0x8000) { bVar3 = uVar1 < param_2; } else { bVar3 = param_2 < uVar1; } if (bVar3) { *(ushort *)(param_1 + 0x164) = param_2; FUN_00513f70(); FUN_005160a0(); } return; } // --- FUN_004522d0 at 0x004522D0 (size: 142) --- void __thiscall FUN_004522d0(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5, ushort param_6) { ushort uVar1; int *piVar2; uint uVar3; bool bVar4; uVar1 = *(ushort *)(param_2 + 0x164); uVar3 = (int)((uint)param_6 - (uint)uVar1) >> 0x1f; if ((int)(((uint)param_6 - (uint)uVar1 ^ uVar3) - uVar3) < 0x8000) { bVar4 = uVar1 < param_6; } else { bVar4 = param_6 < uVar1; } if (bVar4) { *(ushort *)(param_2 + 0x164) = param_6; if ((*(int *)(param_2 + 0x40) == 0) && (*(int *)(param_3 + 8) != *(int *)(param_1 + 0xf4))) { piVar2 = (int *)FUN_005088e0(*(int *)(param_3 + 8)); if (piVar2 != (int *)0x0) { (**(code **)(*piVar2 + 0xc))(1); } } FUN_00516590(param_3,param_4); FUN_00511e50(param_5,1); } return; } // --- FUN_00452360 at 0x00452360 (size: 57) --- bool __fastcall FUN_00452360(int param_1) { int iVar1; iVar1 = FUN_005df0f5(0x148); if (iVar1 != 0) { iVar1 = FUN_0052ce50(); *(int *)(param_1 + 0x18) = iVar1; return iVar1 != 0; } *(undefined4 *)(param_1 + 0x18) = 0; return false; } // --- FUN_004523a0 at 0x004523A0 (size: 26) --- void __thiscall FUN_004523a0(int param_1,undefined4 *param_2) { *(undefined4 *)(param_1 + 0x50) = *param_2; *(undefined4 *)(param_1 + 0x54) = param_2[1]; *(undefined4 *)(param_1 + 0x58) = param_2[2]; return; } // --- FUN_004523c0 at 0x004523C0 (size: 5) --- void __fastcall FUN_004523c0(int param_1) { *(undefined1 *)(param_1 + 0x6c) = 1; return; } // --- FUN_004523d0 at 0x004523D0 (size: 5) --- void __fastcall FUN_004523d0(int param_1) { *(undefined1 *)(param_1 + 0x6d) = 1; return; } // --- FUN_004523e0 at 0x004523E0 (size: 45) --- float10 FUN_004523e0(float param_1,float param_2,float param_3) { if (param_3 < param_1) { return (float10)param_3; } if (param_1 < param_2) { return (float10)param_2; } return (float10)param_1; } // --- FUN_00452410 at 0x00452410 (size: 33) --- float10 __fastcall FUN_00452410(float *param_1) { return SQRT((float10)param_1[2] * (float10)param_1[2] + (float10)param_1[1] * (float10)param_1[1] + (float10)*param_1 * (float10)*param_1); } // --- FUN_00452440 at 0x00452440 (size: 81) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __thiscall FUN_00452440(float *param_1,float *param_2) { float fVar1; float fVar2; fVar2 = _DAT_007938b0 / SQRT(param_1[2] * param_1[2] + param_1[1] * param_1[1] + *param_1 * *param_1); fVar1 = *param_1; *param_1 = fVar2 * fVar1; param_1[1] = fVar2 * param_1[1]; param_1[2] = fVar2 * param_1[2]; *param_2 = fVar2 * fVar1; param_2[1] = param_1[1]; param_2[2] = param_1[2]; return; } // --- FUN_004524a0 at 0x004524A0 (size: 82) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 __fastcall FUN_004524a0(float *param_1) { float fVar1; fVar1 = SQRT(param_1[2] * param_1[2] + param_1[1] * param_1[1] + *param_1 * *param_1); if (fVar1 < _DAT_0079c6ac) { return 1; } fVar1 = _DAT_007938b0 / fVar1; *param_1 = fVar1 * *param_1; param_1[1] = fVar1 * param_1[1]; param_1[2] = fVar1 * param_1[2]; return 0; } // --- FUN_00452500 at 0x00452500 (size: 35) --- void __thiscall FUN_00452500(float *param_1,float *param_2,float *param_3) { float fVar1; float fVar2; float fVar3; float fVar4; fVar1 = param_1[2]; fVar2 = param_3[2]; fVar3 = param_1[1]; fVar4 = param_3[1]; *param_2 = *param_1 - *param_3; param_2[1] = fVar3 - fVar4; param_2[2] = fVar1 - fVar2; return; } // --- FUN_00452530 at 0x00452530 (size: 82) --- void __thiscall FUN_00452530(int param_1,float *param_2,float *param_3) { float fVar1; float fVar2; float fVar3; float fVar4; float fVar5; float fVar6; float fVar7; float fVar8; float fVar9; float fVar10; float fVar11; float fVar12; fVar1 = *(float *)(param_1 + 0x30); fVar2 = param_3[2]; fVar3 = *(float *)(param_1 + 0x18); fVar4 = *param_3; fVar5 = *(float *)(param_1 + 0x24); fVar6 = param_3[1]; fVar7 = *(float *)(param_1 + 0x2c); fVar8 = param_3[2]; fVar9 = *(float *)(param_1 + 0x14); fVar10 = *param_3; fVar11 = *(float *)(param_1 + 0x20); fVar12 = param_3[1]; *param_2 = *(float *)(param_1 + 0x1c) * param_3[1] + *(float *)(param_1 + 0x10) * *param_3 + *(float *)(param_1 + 0x28) * param_3[2]; param_2[1] = fVar11 * fVar12 + fVar9 * fVar10 + fVar7 * fVar8; param_2[2] = fVar5 * fVar6 + fVar3 * fVar4 + fVar1 * fVar2; return; } // --- FUN_00452590 at 0x00452590 (size: 82) --- void __thiscall FUN_00452590(int param_1,float *param_2,float *param_3) { float fVar1; float fVar2; float fVar3; float fVar4; float fVar5; float fVar6; float fVar7; float fVar8; float fVar9; float fVar10; float fVar11; float fVar12; fVar1 = *(float *)(param_1 + 0x30); fVar2 = param_3[2]; fVar3 = *(float *)(param_1 + 0x28); fVar4 = *param_3; fVar5 = *(float *)(param_1 + 0x2c); fVar6 = param_3[1]; fVar7 = *(float *)(param_1 + 0x24); fVar8 = param_3[2]; fVar9 = *(float *)(param_1 + 0x1c); fVar10 = *param_3; fVar11 = *(float *)(param_1 + 0x20); fVar12 = param_3[1]; *param_2 = *(float *)(param_1 + 0x14) * param_3[1] + *(float *)(param_1 + 0x10) * *param_3 + *(float *)(param_1 + 0x18) * param_3[2]; param_2[1] = fVar11 * fVar12 + fVar9 * fVar10 + fVar7 * fVar8; param_2[2] = fVar5 * fVar6 + fVar3 * fVar4 + fVar1 * fVar2; return; } // --- FUN_004525f0 at 0x004525F0 (size: 98) --- void __thiscall FUN_004525f0(int param_1,float *param_2) { float local_c; float local_8; float local_4; local_c = *(float *)(param_1 + 0x1c) * param_2[1] + *(float *)(param_1 + 0x10) * *param_2 + *(float *)(param_1 + 0x28) * param_2[2]; local_8 = *(float *)(param_1 + 0x20) * param_2[1] + *(float *)(param_1 + 0x14) * *param_2 + *(float *)(param_1 + 0x2c) * param_2[2]; local_4 = *(float *)(param_1 + 0x24) * param_2[1] + *(float *)(param_1 + 0x18) * *param_2 + *(float *)(param_1 + 0x30) * param_2[2]; FUN_005364e0(&local_c); return; } // --- FUN_00452660 at 0x00452660 (size: 91) --- void __thiscall FUN_00452660(int param_1,float *param_2,float *param_3) { float fVar1; float fVar2; float fVar3; float fVar4; float fVar5; float fVar6; float fVar7; float fVar8; float fVar9; float fVar10; float fVar11; float fVar12; float fVar13; float fVar14; fVar1 = *(float *)(param_1 + 0x30); fVar2 = param_3[2]; fVar3 = *(float *)(param_1 + 0x18); fVar4 = *param_3; fVar5 = *(float *)(param_1 + 0x24); fVar6 = param_3[1]; fVar7 = *(float *)(param_1 + 0x3c); fVar8 = *(float *)(param_1 + 0x2c); fVar9 = param_3[2]; fVar10 = *(float *)(param_1 + 0x14); fVar11 = *param_3; fVar12 = *(float *)(param_1 + 0x20); fVar13 = param_3[1]; fVar14 = *(float *)(param_1 + 0x38); *param_2 = *(float *)(param_1 + 0x1c) * param_3[1] + *(float *)(param_1 + 0x10) * *param_3 + *(float *)(param_1 + 0x28) * param_3[2] + *(float *)(param_1 + 0x34); param_2[1] = fVar12 * fVar13 + fVar10 * fVar11 + fVar8 * fVar9 + fVar14; param_2[2] = fVar5 * fVar6 + fVar3 * fVar4 + fVar1 * fVar2 + fVar7; return; } // --- FUN_004526c0 at 0x004526C0 (size: 125) --- void __thiscall FUN_004526c0(int param_1,float *param_2,float *param_3) { float fVar1; float fVar2; float fVar3; float fVar4; float fVar5; float fVar6; float fVar7; float fVar8; float fVar9; fVar7 = *param_3 - *(float *)(param_1 + 0x34); fVar8 = param_3[1] - *(float *)(param_1 + 0x38); fVar9 = param_3[2] - *(float *)(param_1 + 0x3c); fVar1 = *(float *)(param_1 + 0x30); fVar2 = *(float *)(param_1 + 0x28); fVar3 = *(float *)(param_1 + 0x2c); fVar4 = *(float *)(param_1 + 0x24); fVar5 = *(float *)(param_1 + 0x1c); fVar6 = *(float *)(param_1 + 0x20); *param_2 = fVar8 * *(float *)(param_1 + 0x14) + fVar7 * *(float *)(param_1 + 0x10) + fVar9 * *(float *)(param_1 + 0x18); param_2[1] = fVar8 * fVar6 + fVar7 * fVar5 + fVar9 * fVar4; param_2[2] = fVar8 * fVar3 + fVar7 * fVar2 + fVar9 * fVar1; return; } // --- FUN_00452740 at 0x00452740 (size: 114) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __thiscall FUN_00452740(int *param_1,float *param_2) { float fVar1; float local_c; float local_8; float local_4; if ((*param_1 == 1) || (*param_1 == 2)) { local_c = *param_2; local_8 = param_2[1]; fVar1 = param_2[2]; local_4 = _DAT_007938b0 / SQRT(local_8 * local_8 + fVar1 * fVar1 + local_c * local_c); local_c = local_4 * local_c; local_8 = local_4 * local_8; local_4 = local_4 * fVar1; FUN_00536af0(&local_c); } return; } // --- FUN_004527c0 at 0x004527C0 (size: 35) --- undefined4 * __thiscall FUN_004527c0(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { *param_1 = &PTR_LAB_00797910; param_1[1] = param_2; FUN_00425f10(param_3); return param_1; } // --- FUN_004527f0 at 0x004527F0 (size: 60) --- uint __fastcall FUN_004527f0(int param_1) { int iVar1; uint local_10; undefined4 local_c; undefined4 local_8; undefined4 local_4; local_c = *(undefined4 *)(param_1 + 0x3c); local_8 = *(undefined4 *)(param_1 + 0x40); local_4 = *(undefined4 *)(param_1 + 0x44); local_10 = *(uint *)(param_1 + 4); iVar1 = FUN_005aac70(&local_10,&local_c); return -(uint)(iVar1 != 0) & local_10; } // --- FUN_00452830 at 0x00452830 (size: 194) --- undefined4 __thiscall FUN_00452830(int param_1,undefined4 param_2,int param_3,float *param_4) { float fVar1; float fVar2; float fVar3; float fVar4; float fVar5; float fVar6; float fVar7; float fVar8; float fVar9; float fVar10; float fVar11; float fVar12; float fVar13; float fVar14; float fVar15; float fVar16; float fVar17; float fVar18; float fVar19; float fVar20; float fVar21; float local_c; float local_8; float local_4; fVar1 = *(float *)(param_3 + 0x24); fVar2 = param_4[1]; fVar3 = *(float *)(param_3 + 0x18); fVar4 = *param_4; fVar5 = *(float *)(param_3 + 0x30); fVar6 = param_4[2]; fVar7 = *(float *)(param_3 + 0x3c); fVar8 = *(float *)(param_3 + 0x28); fVar9 = param_4[1]; fVar10 = *(float *)(param_3 + 0x1c); fVar11 = *param_4; fVar12 = *(float *)(param_3 + 0x34); fVar13 = param_4[2]; fVar14 = *(float *)(param_3 + 0x40); fVar15 = *(float *)(param_3 + 0x2c); fVar16 = param_4[1]; fVar17 = *(float *)(param_3 + 0x20); fVar18 = *param_4; fVar19 = *(float *)(param_3 + 0x38); fVar20 = param_4[2]; fVar21 = *(float *)(param_3 + 0x44); FUN_0043e7d0(&local_c,*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_3 + 4)); local_c = local_c + fVar5 * fVar6 + fVar3 * fVar4 + fVar1 * fVar2 + fVar7; local_8 = local_8 + fVar12 * fVar13 + fVar10 * fVar11 + fVar8 * fVar9 + fVar14; local_4 = local_4 + fVar19 * fVar20 + fVar17 * fVar18 + fVar15 * fVar16 + fVar21; FUN_004526c0(param_2,&local_c); return param_2; } // --- FUN_00452900 at 0x00452900 (size: 71) --- void __thiscall FUN_00452900(int param_1,float *param_2,int param_3) { float fVar1; float fVar2; float local_c; float local_8; float local_4; FUN_0043e7d0(&local_c,*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_3 + 4)); fVar1 = *(float *)(param_3 + 0x40); fVar2 = *(float *)(param_3 + 0x44); *param_2 = local_c + *(float *)(param_3 + 0x3c); param_2[1] = local_8 + fVar1; param_2[2] = local_4 + fVar2; return; } // --- FUN_00452950 at 0x00452950 (size: 4) --- int __fastcall FUN_00452950(int param_1) { return param_1 + 0x50; } // --- FUN_00452960 at 0x00452960 (size: 78) --- void __fastcall FUN_00452960(int param_1) { int iVar1; uint uVar2; uVar2 = 0; *(undefined4 *)(param_1 + 0x48) = 0; if (*(int *)(param_1 + 0x4c) != 0) { do { (**(code **)**(undefined4 **)(*(int *)(param_1 + 0x50) + uVar2 * 4))(); iVar1 = *(int *)(*(int *)(*(int *)(param_1 + 0x50) + uVar2 * 4) + 0xc); if ((*(int **)(iVar1 + 0x14) != (int *)0x0) && (*(int *)(iVar1 + 0x18) == 0)) { (**(code **)(**(int **)(iVar1 + 0x14) + 0x14))(); *(undefined4 *)(iVar1 + 0x14) = 0; } uVar2 = uVar2 + 1; } while (uVar2 < *(uint *)(param_1 + 0x4c)); } return; } // --- FUN_004529b0 at 0x004529B0 (size: 33) --- void __thiscall FUN_004529b0(int param_1,undefined4 *param_2) { *param_2 = *(undefined4 *)(param_1 + 0x8c); param_2[1] = *(undefined4 *)(param_1 + 0x90); param_2[2] = *(undefined4 *)(param_1 + 0x94); return; } // --- FUN_004529e0 at 0x004529E0 (size: 37) --- undefined4 * __thiscall FUN_004529e0(undefined4 *param_1,int param_2) { *param_1 = &PTR_LAB_00797910; param_1[1] = *(undefined4 *)(param_2 + 4); FUN_00425f10(param_2 + 8); return param_1; } // --- FUN_00452a10 at 0x00452A10 (size: 623) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __fastcall FUN_00452a10(int param_1) { undefined4 *puVar1; bool bVar2; uint uVar3; float fVar4; undefined4 local_d0; undefined4 local_cc; undefined4 local_c8; undefined4 local_c4; undefined4 local_9c; undefined4 local_98; undefined4 local_94; undefined **local_90; undefined4 local_8c; undefined **local_48; undefined4 local_44; puVar1 = (undefined4 *)(DAT_0083da58 + 0xbc); if (*(int *)(DAT_0083da58 + 0xbc) == 0) { *(undefined4 *)(DAT_0083da58 + 0xd4) = DAT_008452f4; DAT_008452f4 = 1; *puVar1 = 1; } if (*(int *)(param_1 + 0x18) == 0) { return; } bVar2 = false; if ((*(char *)(param_1 + 0x6d) != '\0') && (DAT_0081ffa0 < 2)) { FUN_005a0d60(0xbfb33333); bVar2 = true; } local_48 = &PTR_LAB_00797910; local_44 = DAT_008200f4; FUN_00425f10(&DAT_008200f8); local_90 = &PTR_LAB_00797910; local_8c = 0; FUN_00425f10(param_1 + 0x1c); FUN_00550fd0(&local_90); uVar3 = 0; if (*(int *)(param_1 + 8) != 0) { do { FUN_00515020(); uVar3 = uVar3 + 1; } while (uVar3 < *(uint *)(param_1 + 8)); } FUN_00550fd0(&local_48); _DAT_008682b0 = *(undefined4 *)(param_1 + 0x5c); _DAT_008682b4 = *(undefined4 *)(param_1 + 0x60); _DAT_008682b8 = *(undefined4 *)(param_1 + 100); FUN_0054e060(1); DAT_008683b4 = 0; DAT_0086b838 = 0; FUN_0054e060(0); if (*(char *)(param_1 + 0x6c) == '\0') { fVar4 = *(float *)(param_1 + 0x68); } else { if (*(char *)(DAT_0083da58 + 200) != '\0') { FUN_0054be50(*(undefined4 *)(DAT_0083da58 + 0xc4)); goto LAB_00452b74; } fVar4 = *(float *)(DAT_0083da58 + 0xc0) / ((float)DAT_00870340[0x2a] - _DAT_007958cc); } FUN_0054bee0(fVar4); LAB_00452b74: local_d0 = 0x3f800000; local_cc = 0; local_c8 = 0; local_c4 = 0; local_9c = 0; local_98 = 0; local_94 = 0; FUN_00535b30(); uVar3 = 0; if (*(int *)(param_1 + 0x14) != 0) { do { FUN_0054dff0(*(undefined4 *)(*(int *)(param_1 + 0xc) + uVar3 * 4),0,&local_d0); uVar3 = uVar3 + 1; } while (uVar3 < *(uint *)(param_1 + 0x14)); } FUN_0052c560(); if ((char)DAT_00870340[0x2b] != '\0') { FUN_0054e830(param_1 + 0x1c); FUN_0054fb60(); FUN_0054dd60(3,&local_d0,(DAT_00867338 - _DAT_0086733c) + -1); (**(code **)(*DAT_00870340 + 100))(*(undefined4 *)(param_1 + 0x18)); FUN_0054c9e0(); FUN_0059e3f0(0); } if (bVar2) { FUN_005a0d60(*(undefined4 *)(DAT_0086734c + 0x98)); } FUN_0054e060(1); DAT_008683b4 = 0; DAT_0086b838 = 0; FUN_0054e060(0); return; } // --- FUN_00452c80 at 0x00452C80 (size: 285) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __thiscall FUN_00452c80(int param_1,int param_2,int param_3) { int iVar1; undefined4 uVar2; iVar1 = param_1 + 8; *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 4); FUN_00425f10(param_2 + 8); if (param_3 != 0) { *(undefined4 *)(param_1 + 0x5c) = *(undefined4 *)(param_2 + 4); FUN_00425f10(param_2 + 8); } *(undefined4 *)(param_1 + 0x50) = 0; _DAT_008196e0 = DAT_00819610; DAT_0086b838 = 0; _DAT_008196dc = DAT_0083dc10; if (*(int *)(param_1 + 0xf8) == 0) { if ((DAT_00819680 == 0) || (DAT_00819680 == 2)) { _DAT_008196b8 = 0; _DAT_008196bc = 0; _DAT_008196c0 = 0; } uVar2 = *(undefined4 *)(param_1 + 0xc); param_1 = param_1 + 0x10; } else { if ((DAT_00819680 == 0) || (DAT_00819680 == 2)) { _DAT_008196b8 = 0; _DAT_008196bc = 0; _DAT_008196c0 = 0x40000000; } uVar2 = *(undefined4 *)(*(int *)(param_1 + 0xf8) + 0x4c); param_1 = *(int *)(param_1 + 0xf8) + 0x50; } FUN_0054e030(&DAT_00819680,uVar2,param_1); thunk_FUN_0052e070(); FUN_00550fd0(iVar1); FUN_00505690(iVar1); FUN_0043e8e0(iVar1); return; } // --- FUN_00452da0 at 0x00452DA0 (size: 49) --- void __fastcall FUN_00452da0(int param_1) { int iVar1; undefined1 local_48 [72]; iVar1 = FUN_00456780(local_48,param_1 + 8); *(undefined4 *)(param_1 + 0x5c) = *(undefined4 *)(iVar1 + 4); FUN_00425f10(iVar1 + 8); return; } // --- FUN_00452de0 at 0x00452DE0 (size: 116) --- undefined4 __thiscall FUN_00452de0(int param_1,int param_2,undefined4 *param_3) { undefined4 *puVar1; undefined4 local_18; undefined4 local_14; undefined4 local_10; undefined1 local_c [12]; if (((*(int *)(param_1 + 0xf8) != 0) && (param_2 != 0)) && (*(int *)(param_2 + 0x90) != 0)) { local_18 = 0; local_14 = 0; local_10 = 0; puVar1 = (undefined4 *)FUN_00452830(local_c,param_2 + 0x48,&local_18); *param_3 = *puVar1; param_3[1] = puVar1[1]; param_3[2] = puVar1[2]; return 1; } return 0; } // --- FUN_00452e60 at 0x00452E60 (size: 590) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 FUN_00452e60(undefined4 param_1,undefined4 *param_2,float *param_3) { int iVar1; int iVar2; int iVar3; float *pfVar4; undefined4 uVar5; float10 fVar6; undefined1 local_48 [8]; float local_40; float local_3c; float local_38; undefined1 local_34 [4]; undefined1 auStack_30 [8]; undefined1 local_28 [12]; undefined1 local_1c [12]; undefined4 local_10; undefined4 local_c; undefined4 local_8; undefined4 local_4; iVar1 = FUN_00508890(); if (iVar1 == 0) { return 3; } uVar5 = 0; FUN_0054fb60(); local_40 = 1.0; local_3c = 1.0; local_38 = 1.0; DAT_0081fec0 = 0x3f800000; DAT_0081fec4 = 0x3f800000; DAT_0081fec8 = 0x3f800000; DAT_0081fc84 = 0x3f800000; FUN_0054c9c0(3,iVar1 + 0x48); iVar2 = FUN_0050f510(&local_10); if (iVar2 == 0) { local_38 = 0.1; local_8 = 0x3dcccccd; local_4 = 0x3dcccccd; local_40 = 0.0; local_3c = 0.0; local_10 = 0; local_c = 0; } iVar2 = FUN_0054ce60(&local_10); FUN_0050a140(); FUN_0050a140(); if (iVar2 != 0) { FUN_0054c010(&local_10,local_34,local_28); iVar3 = (**(code **)(*DAT_0086734c + 0x44))(local_34,local_48); if (iVar3 == 0) { iVar2 = 0; } iVar3 = (**(code **)(*DAT_0086734c + 0x44))(auStack_30,&stack0xffffffa8); if ((iVar3 != 0) && (iVar2 != 0)) { if ((0 < iVar2) && (iVar2 < 3)) { uVar5 = FUN_005df4c4(); *param_2 = uVar5; uVar5 = FUN_005df4c4(); param_2[2] = uVar5; uVar5 = FUN_005df4c4(); param_2[1] = uVar5; uVar5 = FUN_005df4c4(); param_2[3] = uVar5; uVar5 = 1; } goto LAB_0045308c; } } pfVar4 = (float *)FUN_00452830(local_1c,iVar1 + 0x48,&local_10); local_40 = *pfVar4; local_3c = pfVar4[1]; local_38 = pfVar4[2]; iVar1 = FUN_004524a0(); if (iVar1 == 0) { if (local_3c <= DAT_00796344) { fpatan((float10)_DAT_00795610,(float10)local_40); fVar6 = (float10)_CIfmod(); *param_3 = (float)fVar6; } else { fpatan((float10)local_38,(float10)local_40); fVar6 = (float10)_CIfmod(); *param_3 = (float)fVar6; } } else { *param_3 = 0.0; } uVar5 = 2; LAB_0045308c: FUN_0054c9e0(); FUN_00695670(); FUN_00695670(); return uVar5; } // --- FUN_004530e0 at 0x004530E0 (size: 114) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __thiscall FUN_004530e0(int param_1,float param_2,undefined4 param_3) { undefined4 local_c; undefined4 local_8; undefined4 local_4; *(float *)(param_1 + 0xcc) = param_2; *(undefined4 *)(param_1 + 0xd0) = param_3; if (*(int *)(param_1 + 0xbc) == 0) { FUN_00451a60(param_3); _DAT_008682b0 = local_c * param_2; _DAT_008682b4 = local_8 * param_2; _DAT_008682b8 = local_4 * param_2; } return; } // --- FUN_00453160 at 0x00453160 (size: 81) --- undefined4 __fastcall FUN_00453160(int param_1) { if (*(int *)(param_1 + 0xbc) != 0) { DAT_008452f4 = *(undefined4 *)(param_1 + 0xd4); *(undefined4 *)(param_1 + 0xbc) = 0; FUN_004530e0(*(undefined4 *)(param_1 + 0xcc),*(undefined4 *)(param_1 + 0xd0)); DAT_008683b4 = 0; DAT_0086b838 = 0; FUN_0052eb50(); } return 1; } // --- FUN_004531c0 at 0x004531C0 (size: 97) --- undefined1 __thiscall FUN_004531c0(int param_1,undefined4 param_2) { char cVar1; int iVar2; undefined1 unaff_BL; undefined1 uVar3; cVar1 = *(char *)(*(int *)(param_1 + 0xa4) + 0x18); FUN_00455a50(); iVar2 = FUN_00505660(param_2); uVar3 = iVar2 != 0; if (((((bool)uVar3) && (cVar1 != '\0')) && (iVar2 = *(int *)(param_1 + 0xf8), iVar2 != 0)) && (*(int *)(iVar2 + 0x4c) != 0)) { FUN_00455ad0(iVar2 + 0x48,1); uVar3 = unaff_BL; } return uVar3; } // --- FUN_00453230 at 0x00453230 (size: 67) --- char FUN_00453230(undefined4 param_1) { char cVar1; FUN_00455a50(); cVar1 = FUN_004ff370(param_1); if (cVar1 != '\0') { FUN_00507710(); FUN_004531c0(DAT_0081ffb4); } return cVar1; } // --- FUN_00453280 at 0x00453280 (size: 247) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __fastcall FUN_00453280(int param_1) { int iVar1; float fVar2; undefined4 local_c; undefined4 local_8; undefined4 local_4; if (*(int *)(param_1 + 0xf8) != 0) { FUN_00455fc0(*(undefined4 *)(*(int *)(param_1 + 0xf8) + 8),0xffffffff); iVar1 = *(int *)(param_1 + 0xa0); local_c = 0; *(undefined4 *)(iVar1 + 0x18) = 0; local_8 = 0; *(undefined4 *)(iVar1 + 0x1c) = 0; local_4 = 0x3fc00000; *(undefined4 *)(iVar1 + 0x20) = 0x3fc00000; FUN_00455fa0(); FUN_00455fb0(4); local_c = 0; local_8 = 0x3f800000; local_4 = 0; FUN_004564c0(&local_c); FUN_00455fb0(1); FUN_00455fb0(0x10); iVar1 = *(int *)(param_1 + 0xa0); fVar2 = _DAT_0079a1ec * *(float *)(iVar1 + 0x6c); *(undefined4 *)(iVar1 + 0x48) = 0; *(float *)(iVar1 + 0x4c) = fVar2; *(float *)(iVar1 + 0x50) = *(float *)(iVar1 + 0x6c) * _DAT_0079c6dc; } return; } // --- FUN_004534c0 at 0x004534C0 (size: 164) --- undefined4 FUN_004534c0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5 ) { undefined2 uVar1; ushort uVar2; ushort uVar3; int iVar4; uint uVar5; bool bVar6; uVar1 = *(undefined2 *)(param_5 + 6); uVar2 = *(ushort *)(param_5 + 4); iVar4 = FUN_00508890(param_2); if (iVar4 != 0) { uVar3 = *(ushort *)(iVar4 + 0x174); uVar5 = (int)((uint)uVar2 - (uint)uVar3) >> 0x1f; if ((int)(((uint)uVar2 - (uint)uVar3 ^ uVar5) - uVar5) < 0x8000) { bVar6 = uVar3 < uVar2; } else { bVar6 = uVar2 < uVar3; } if (!bVar6) { if (uVar3 == uVar2) { FUN_00452200(iVar4,param_3,param_4,uVar1); return 1; } return 2; } } FUN_00509da0(param_2,param_1); return 4; } // --- FUN_004536e0 at 0x004536E0 (size: 110) --- uint __thiscall FUN_004536e0(int *param_1,int param_2) { int *in_EAX; uint uVar1; uint uVar2; if (param_2 != 0) { uVar2 = 0; in_EAX = (int *)0x0; if (param_1[2] != 0) { in_EAX = (int *)*param_1; do { if (*in_EAX == param_2) { FUN_00513ef0(param_1[6]); uVar1 = param_1[2]; if (uVar2 < uVar1) { uVar1 = uVar1 - 1; param_1[2] = uVar1; if (uVar2 != uVar1) { *(undefined4 *)(*param_1 + uVar2 * 4) = *(undefined4 *)(*param_1 + uVar1 * 4); uVar1 = param_1[2]; *(undefined4 *)(*param_1 + uVar1 * 4) = 0; } } return CONCAT31((int3)(uVar1 >> 8),1); } uVar2 = uVar2 + 1; in_EAX = in_EAX + 1; } while (uVar2 < (uint)param_1[2]); } } return (uint)in_EAX & 0xffffff00; } // --- FUN_00453750 at 0x00453750 (size: 22) --- undefined4 __thiscall FUN_00453750(int *param_1,uint param_2) { if ((uint)param_1[2] <= param_2) { return 0; } return *(undefined4 *)(*param_1 + param_2 * 4); } // --- FUN_00453770 at 0x00453770 (size: 35) --- void FUN_00453770(undefined4 param_1) { FUN_00536930(0,0,0,0); FUN_004525f0(param_1); return; } // --- FUN_004537a0 at 0x004537A0 (size: 93) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_004537a0(float *param_1) { float local_18; float local_14; float local_10; float local_4; FUN_00536930(0,0,0,0); local_18 = *param_1 * _DAT_0079c504; local_14 = param_1[1] * _DAT_0079c504; local_10 = param_1[2] * _DAT_0079c504; local_4 = local_10; FUN_004525f0(&local_18); return; } // --- FUN_00453800 at 0x00453800 (size: 66) --- void __thiscall FUN_00453800(int *param_1,undefined4 param_2) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_005df0f5(8); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { *puVar1 = param_2; puVar1[1] = 0; } if (param_1[1] == 0) { *param_1 = (int)puVar1; param_1[1] = (int)puVar1; return; } *(undefined4 **)(param_1[1] + 4) = puVar1; param_1[1] = *(int *)(param_1[1] + 4); return; } // --- FUN_00453850 at 0x00453850 (size: 87) --- uint FUN_00453850(uint param_1) { int iVar1; uint uVar2; if (param_1 < 9) { return 8; } if (param_1 < 0x4001) { iVar1 = 0x1f; if (param_1 != 0) { for (; param_1 >> iVar1 == 0; iVar1 = iVar1 + -1) { } } uVar2 = 1 << ((byte)iVar1 & 0x1f); if (uVar2 < param_1) { param_1 = uVar2 * 2; } } else if ((param_1 & 0x3fff) != 0) { return param_1 + (0x4000 - (param_1 & 0x3fff)); } return param_1; } // --- FUN_004538b0 at 0x004538B0 (size: 35) --- undefined4 * __thiscall FUN_004538b0(int param_1,undefined4 *param_2) { *param_2 = &PTR_LAB_00797910; param_2[1] = *(undefined4 *)(param_1 + 0x1c); FUN_00425f10(param_1 + 0x20); return param_2; } // --- FUN_004538e0 at 0x004538E0 (size: 40) --- void FUN_004538e0(void) { FUN_0054e370(&LAB_004530b0); if (DAT_0083da58 != (undefined4 *)0x0) { (**(code **)*DAT_0083da58)(1); } DAT_0083da58 = (undefined4 *)0x0; return; } // --- FUN_00453910 at 0x00453910 (size: 158) --- void __thiscall FUN_00453910(int param_1,int param_2,float param_3) { int iVar1; float10 fVar2; iVar1 = *(int *)(param_1 + 0xf8); if (iVar1 == 0) { return; } if (param_2 == 0) { fVar2 = (float10)FUN_0050f640(); if ((float10)param_3 <= fVar2) goto LAB_00453987; } else { *(undefined4 *)(param_1 + 0xdc) = 0; *(undefined4 *)(param_1 + 0xe0) = 0; *(undefined4 *)(param_1 + 0xe4) = 0; FUN_005159d0(1); (**(code **)(**(int **)(param_1 + 0xb8) + 0x74))(); } FUN_00452c80(iVar1 + 0x48,1); FUN_00506d30(0); LAB_00453987: iVar1 = *(int *)(param_1 + 0xf8); if ((iVar1 != 0) && (*(int *)(iVar1 + 0x4c) != 0)) { FUN_00455ad0(iVar1 + 0x48,param_2); } return; } // --- FUN_004539b0 at 0x004539B0 (size: 43) --- void __thiscall FUN_004539b0(int param_1,undefined4 param_2) { if (*(int *)(param_1 + 0xf8) != 0) { FUN_00516db0(param_2,1); FUN_00453910(1,0x7f7fffff); } return; } // --- FUN_004539e0 at 0x004539E0 (size: 64) --- void __thiscall FUN_004539e0(int param_1,undefined4 param_2) { float10 fVar1; if (*(int *)(param_1 + 0xf8) != 0) { fVar1 = (float10)FUN_005aa560(param_2); FUN_00516db0(param_2,1); FUN_00453910(0,(float)fVar1); } return; } // --- FUN_00453a20 at 0x00453A20 (size: 131) --- void __thiscall FUN_00453a20(int param_1,int param_2) { int *piVar1; undefined4 *puVar2; int *piVar3; if (*(int *)(param_1 + 0xec) == 0) { puVar2 = (undefined4 *)FUN_005df0f5(8); if (puVar2 == (undefined4 *)0x0) { puVar2 = (undefined4 *)0x0; } else { *puVar2 = 0; puVar2[1] = 0; } *(undefined4 **)(param_1 + 0xec) = puVar2; } InterlockedIncrement((LONG *)(param_2 + 4)); piVar1 = *(int **)(param_1 + 0xec); piVar3 = (int *)FUN_005df0f5(8); if (piVar3 == (int *)0x0) { piVar3 = (int *)0x0; } else { *piVar3 = param_2; piVar3[1] = 0; } if (piVar1[1] == 0) { *piVar1 = (int)piVar3; piVar1[1] = (int)piVar3; return; } *(int **)(piVar1[1] + 4) = piVar3; piVar1[1] = *(int *)(piVar1[1] + 4); return; } // --- FUN_00453ab0 at 0x00453AB0 (size: 144) --- void __fastcall FUN_00453ab0(int param_1) { int iVar1; int *piVar2; undefined4 *puVar3; void *pvVar4; LONG LVar5; undefined4 *puVar6; if (*(int **)(param_1 + 0xec) != (int *)0x0) { iVar1 = **(int **)(param_1 + 0xec); while (iVar1 != 0) { piVar2 = *(int **)(param_1 + 0xec); puVar3 = (undefined4 *)*piVar2; if (puVar3 == (undefined4 *)0x0) { puVar6 = (undefined4 *)0x0; } else { iVar1 = puVar3[1]; *piVar2 = iVar1; if (iVar1 == 0) { piVar2[1] = 0; } puVar6 = (undefined4 *)*puVar3; operator_delete(puVar3); } LVar5 = InterlockedDecrement(puVar6 + 1); if ((LVar5 == 0) && (puVar6 != (undefined4 *)0x0)) { (**(code **)*puVar6)(1); } iVar1 = **(int **)(param_1 + 0xec); } pvVar4 = *(void **)(param_1 + 0xec); if (pvVar4 != (void *)0x0) { FUN_004c65a0(); operator_delete(pvVar4); } *(undefined4 *)(param_1 + 0xec) = 0; } return; } // --- FUN_00453b40 at 0x00453B40 (size: 325) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __fastcall FUN_00453b40(int param_1) { bool bVar1; undefined4 uVar2; bool bVar3; undefined4 local_14; undefined1 local_10 [16]; if ((char)DAT_00870340[0x2b] != '\0') { bVar3 = (*(uint *)(param_1 + 0xc) & 0xffff) < 0x100; if ((bVar3) || (*(int *)(*(int *)(param_1 + 0x50) + 0xe8) != 0)) { bVar1 = true; } else { bVar1 = false; } if (*(char *)(param_1 + 200) == '\0') { FUN_0054bee0(*(float *)(param_1 + 0xc0) / ((float)DAT_00870340[0x2a] - _DAT_007958cc)); } else { FUN_0054be50(*(undefined4 *)(param_1 + 0xc4)); } if (bVar3) { FUN_00506d30(*(undefined4 *)(param_1 + 0xc)); FUN_0054d9e0(param_1 + 8); FUN_0054fb60(); FUN_0054e060(1); FUN_00506d90(); } else { if (bVar1) { uVar2 = FUN_004527f0(); FUN_00506d30(uVar2); } FUN_0054d9e0(param_1 + 8); (**(code **)(*DAT_00870340 + 0x48))(*(undefined4 *)(param_1 + 0x50)); } } FUN_0059e3f0(0); if ((*(int *)(param_1 + 0xfc) != 0) && (*(int *)(param_1 + 0x100) != 0)) { uVar2 = FUN_00452e60(*(int *)(param_1 + 0xfc),local_10,&local_14); (**(code **)(param_1 + 0x100))(*(undefined4 *)(param_1 + 0xfc),uVar2,local_10,local_14); } if (*(code **)(param_1 + 0x114) != (code *)0x0) { (**(code **)(param_1 + 0x114))(); } return; } // --- FUN_00453c90 at 0x00453C90 (size: 131) --- void __thiscall FUN_00453c90(int param_1,int param_2) { DAT_008452f4 = 0; *(undefined4 *)(param_1 + 0xf8) = 0; if (*(int *)(param_1 + 0xa8) != 0) { FUN_0050a150(0); } if (*(int **)(param_1 + 0xb8) != (int *)0x0) { (**(code **)(**(int **)(param_1 + 0xb8) + 0x5c))(param_1); } if (*(int *)(param_1 + 0xa4) != 0) { FUN_00455a50(); } *(undefined4 *)(param_1 + 0x50) = 0; *(undefined4 *)(param_1 + 0xdc) = 0; *(undefined4 *)(param_1 + 0xe4) = 0; if (param_2 != 0) { *(undefined4 *)(param_1 + 0xf4) = 0; if (*(int **)(param_1 + 0xac) != (int *)0x0) { (**(code **)(**(int **)(param_1 + 0xac) + 0x30))(0); FUN_00509700(); } FUN_00453ab0(); } return; } // --- FUN_00453d20 at 0x00453D20 (size: 86) --- void __thiscall FUN_00453d20(int param_1,undefined4 param_2,undefined4 param_3) { *(undefined4 *)(param_1 + 0xf8) = param_2; FUN_00453280(); FUN_0050a150(*(undefined4 *)(param_1 + 0xf8)); FUN_0050ff90(*(undefined4 *)(param_1 + 0xf8)); DAT_00844c08 = *(undefined4 *)(*(int *)(param_1 + 0xf8) + 8); (**(code **)(**(int **)(param_1 + 0xb8) + 0x6c))(param_3); return; } // --- FUN_00453d80 at 0x00453D80 (size: 745) --- void __fastcall FUN_00453d80(int param_1) { float *pfVar1; undefined4 *puVar2; int iVar3; int iVar4; undefined4 unaff_EBX; int iVar5; undefined ***pppuStack_188; int local_174 [2]; undefined **local_16c [13]; float local_138; float local_134; float local_130; undefined1 local_12c [12]; undefined **local_120; undefined4 local_11c; undefined **local_118 [13]; undefined4 local_e4; undefined4 local_e0; undefined4 local_dc; undefined **local_d8; undefined4 local_d4; undefined **local_90; undefined4 local_8c; undefined1 auStack_54 [12]; undefined **local_48; undefined4 local_44; iVar3 = *(int *)(param_1 + 0xf8); if (iVar3 == 0) { return; } if (*(int *)(iVar3 + 0x90) == 0) { FUN_00516d50(); iVar3 = *(int *)(param_1 + 0xf8); if (*(int *)(iVar3 + 0x90) == 0) { pppuStack_188 = (undefined ***)0x453dc2; FUN_00452c80(); *(undefined4 *)(param_1 + 0x50) = 0; return; } } DAT_0081ff5c = *(undefined4 *)(iVar3 + 0x4c); FUN_00425f10(); if (DAT_0083da40 != 0) { return; } local_11c = *(undefined4 *)(param_1 + 0x5c); pppuStack_188 = (undefined ***)(param_1 + 0x60); local_120 = &PTR_LAB_00797910; FUN_00425f10(); iVar3 = *(int *)(param_1 + 0xa0); local_174[0] = 0; iVar4 = *(int *)(iVar3 + 0x14); if (iVar4 != -1) { iVar5 = *(int *)(param_1 + 0xf8); if (iVar4 < *(int *)(*(int *)(iVar5 + 0x10) + 0x58)) { pppuStack_188 = (undefined ***)(*(int *)(*(int *)(*(int *)(iVar5 + 0x10) + 0x5c) + iVar4 * 4) + 0x38); goto LAB_00453e45; } } iVar5 = *(int *)(param_1 + 0xf8); pppuStack_188 = (undefined ***)(iVar5 + 0x50); LAB_00453e45: FUN_00425f10(); pppuStack_188 = (undefined ***)(iVar3 + 0x18); pfVar1 = (float *)FUN_00452530(local_12c); local_138 = local_138 + *pfVar1; local_134 = local_134 + pfVar1[1]; local_130 = local_130 + pfVar1[2]; if ((*(uint *)(iVar5 + 0x4c) & 0xffff) < 0x100) { local_174[0] = *(int *)(iVar5 + 0x90); } else { local_8c = *(undefined4 *)(iVar5 + 0x4c); pppuStack_188 = local_16c; local_90 = &PTR_LAB_00797910; FUN_00425f10(); pppuStack_188 = (undefined ***)0x1; iVar3 = FUN_00512850(&local_90,&DAT_0083dc14,local_174,0); if (iVar3 == 0) { local_174[0] = *(int *)(*(int *)(param_1 + 0xf8) + 0x90); } } iVar3 = local_174[0]; local_d4 = *(undefined4 *)(local_174[0] + 0x28); pppuStack_188 = local_16c; local_d8 = &PTR_LAB_00797910; FUN_00425f10(); pppuStack_188 = &local_120; puVar2 = (undefined4 *)FUN_00452900(local_12c); local_e4 = *puVar2; local_e0 = puVar2[1]; local_dc = puVar2[2]; pppuStack_188 = local_118; local_44 = *(undefined4 *)(iVar3 + 0x28); local_48 = &PTR_LAB_00797910; FUN_00425f10(); pppuStack_188 = (undefined ***)0x453f73; iVar3 = FUN_0050bc20(); if (iVar3 != 0) { pppuStack_188 = (undefined ***)0x5c; thunk_FUN_0050da00(*(undefined4 *)(param_1 + 0xf8)); pppuStack_188 = (undefined ***)0x3f800000; FUN_0050a920(1,&DAT_0083dc14); FUN_0050a930(unaff_EBX,&local_e4,auStack_54); iVar4 = FUN_0050cde0(); if (iVar4 != 0) { FUN_00452c80(iVar3 + 0xc0,0); *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(iVar3 + 0xbc); FUN_0050a890(iVar3); return; } pppuStack_188 = (undefined ***)0x0; iVar4 = FUN_00512850(&local_138,&DAT_0083dc14,&pppuStack_188,0,1); if (iVar4 != 0) { FUN_00452c80(&local_138,0); *(undefined ****)(param_1 + 0x50) = pppuStack_188; FUN_0050a890(iVar3); return; } FUN_00452c80(*(int *)(param_1 + 0xf8) + 0x48,1); *(undefined4 *)(param_1 + 0x50) = 0; FUN_0050a890(iVar3); } return; } // --- FUN_00454070 at 0x00454070 (size: 748) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __thiscall FUN_00454070(int param_1,int param_2,int param_3,undefined4 param_4,int param_5,undefined4 param_6, undefined4 param_7,uint param_8,undefined4 param_9) { ushort uVar1; undefined2 uVar2; int iVar3; uint uVar4; int *piVar5; uint uVar6; ushort uVar7; bool bVar8; float10 fVar9; float fVar10; undefined4 uStack_54; undefined4 uStack_50; undefined4 uStack_4c; undefined **local_48; undefined4 local_44; local_44 = *(undefined4 *)(param_3 + 4); local_48 = &PTR_LAB_00797910; FUN_00425f10(param_3 + 8); uVar7 = (ushort)param_8; if (param_2 == *(int *)(param_1 + 0xf8)) { iVar3 = FUN_00451b50(6,param_9); if (iVar3 != 0) { uVar1 = *(ushort *)(*(int *)(param_1 + 0xf8) + 0x16c); uVar4 = (uint)uVar1 - (param_8 & 0xffff); uVar6 = (int)uVar4 >> 0x1f; if ((int)((uVar4 ^ uVar6) - uVar6) < 0x8000) { bVar8 = uVar7 < uVar1; } else { bVar8 = uVar1 < uVar7; } if (!bVar8) { fVar9 = (float10)FUN_00512010(); FUN_00536b80((float)fVar9); FUN_004539e0(&local_48); *(undefined2 *)(*(int *)(param_1 + 0xf8) + 0x164) = (undefined2)param_7; (**(code **)(**(int **)(param_1 + 0xb8) + 0x58))(); return; } } } uVar2 = *(undefined2 *)(param_2 + 0x164); iVar3 = FUN_00451b50(0,param_7); if (iVar3 == 0) { uVar1 = *(ushort *)(param_2 + 0x16c); uVar4 = (param_8 & 0xffff) - (uint)uVar1; uVar6 = (int)uVar4 >> 0x1f; if ((int)((uVar4 ^ uVar6) - uVar6) < 0x8000) { bVar8 = uVar1 < uVar7; } else { bVar8 = uVar7 < uVar1; } if (bVar8) { _DAT_0083dc24 = _DAT_0083dc24 + 1; } } else { uVar1 = *(ushort *)(param_2 + 0x16c); uVar4 = (uint)uVar1 - (param_8 & 0xffff); uVar6 = (int)uVar4 >> 0x1f; if ((int)((uVar4 ^ uVar6) - uVar6) < 0x8000) { bVar8 = uVar7 < uVar1; } else { bVar8 = uVar1 < uVar7; } if (bVar8) { *(undefined2 *)(param_2 + 0x164) = uVar2; return; } if ((*(int *)(param_2 + 0x40) != 0) && (*(int *)(*(int *)(param_2 + 0x40) + 8) != *(int *)(param_1 + 0xf4))) { piVar5 = (int *)FUN_005088e0(*(undefined4 *)(param_2 + 8)); if (piVar5 != (int *)0x0) { (**(code **)(*piVar5 + 0xc))(0); } } FUN_00513f70(); iVar3 = FUN_00510240(); if (iVar3 == 0) { FUN_00511e50(param_4,1); } if (param_2 == *(int *)(param_1 + 0xf8)) { iVar3 = FUN_00451b50(4,param_8); if (iVar3 != 0) { FUN_004539b0(&local_48); fVar9 = (float10)FUN_0050f6e0(); fVar10 = (float)fVar9; fVar9 = (float10)FUN_0050f690(fVar10); FUN_00510ff0(&local_48,(float)fVar9,fVar10); uStack_54 = 0; uStack_50 = 0; uStack_4c = 0; FUN_00511ec0(&uStack_54,1); return; } fVar9 = (float10)FUN_0050f6e0(); fVar10 = (float)fVar9; fVar9 = (float10)FUN_0050f690(fVar10); FUN_00510ff0(&local_48,(float)fVar9,fVar10); iVar3 = (**(code **)(**(int **)(param_1 + 0xb8) + 0x60))(); if ((iVar3 != 0) && (param_5 != 0)) { iVar3 = (**(code **)(**(int **)(param_1 + 0xb8) + 0xb4))(); FUN_00510fc0(&local_48,iVar3 != 0); return; } } else { iVar3 = FUN_00516e30(&local_48,param_8,param_5,param_6); if (iVar3 != 0) { fVar9 = (float10)FUN_0050f6e0(); fVar10 = (float)fVar9; fVar9 = (float10)FUN_0050f690(fVar10); FUN_00510ff0(param_2 + 0x48,(float)fVar9,fVar10); return; } } } return; } // --- FUN_00454430 at 0x00454430 (size: 90) --- undefined4 * __fastcall FUN_00454430(undefined4 *param_1) { *param_1 = 0; param_1[1] = 0; param_1[2] = 0; param_1[3] = 0; param_1[4] = 0; param_1[5] = 0; param_1[6] = 0; param_1[7] = 0x3f800000; param_1[8] = 0; param_1[9] = 0; param_1[10] = 0; param_1[0x14] = 0; param_1[0x15] = 0; param_1[0x16] = 0; FUN_00535b30(); param_1[0x17] = 0x3e99999a; param_1[0x18] = 0x3e99999a; param_1[0x19] = 0x3e99999a; *(undefined1 *)(param_1 + 0x1b) = 0; *(undefined1 *)((int)param_1 + 0x6d) = 0; param_1[0x1a] = 0x3f490fdb; return param_1; } // --- FUN_00454490 at 0x00454490 (size: 64) --- void __fastcall FUN_00454490(int param_1) { uint uVar1; if (*(int *)(param_1 + 0x18) != 0) { uVar1 = 0; if (*(int *)(param_1 + 8) != 0) { do { FUN_00513ef0(*(undefined4 *)(param_1 + 0x18)); uVar1 = uVar1 + 1; } while (uVar1 < *(uint *)(param_1 + 8)); } FUN_0052f310(1); } FUN_0044dcb0(); return; } // --- FUN_004544d0 at 0x004544D0 (size: 130) --- void __fastcall FUN_004544d0(int param_1) { void *pvVar1; int iVar2; uint uVar3; uVar3 = 0; if (*(int *)(param_1 + 0x14) != 0) { do { pvVar1 = *(void **)(*(int *)(param_1 + 0xc) + uVar3 * 4); if (pvVar1 != (void *)0x0) { operator_delete(pvVar1); } uVar3 = uVar3 + 1; } while (uVar3 < *(uint *)(param_1 + 0x14)); } *(undefined4 *)(param_1 + 0x14) = 0; if ((*(uint *)(param_1 + 0x10) & 0x80000000) == 0x80000000) { operator_delete__(*(void **)(param_1 + 0xc)); *(undefined4 *)(param_1 + 0xc) = 0; *(undefined4 *)(param_1 + 0x10) = 0; return; } if (*(int *)(param_1 + 0xc) != 0) { iVar2 = (*(uint *)(param_1 + 0x10) & 0x7fffffff) - 1; while (-1 < iVar2) { iVar2 = iVar2 + -1; *(undefined4 *)(*(int *)(param_1 + 0xc) + 4 + iVar2 * 4) = 0; } } return; } // --- FUN_00454560 at 0x00454560 (size: 35) --- undefined4 __thiscall FUN_00454560(int param_1,uint param_2,undefined4 param_3) { if (param_2 < *(uint *)(param_1 + 0x14)) { FUN_00452740(param_3); return 1; } return 0; } // --- FUN_00454590 at 0x00454590 (size: 162) --- int * __thiscall FUN_00454590(int *param_1,int *param_2,int *param_3) { int *piVar1; int *piVar2; int *piVar3; int iVar4; int *local_4; piVar1 = param_3; local_4 = param_1; if (param_3 == (int *)0x0) { piVar3 = (int *)*param_1; if (piVar3 != (int *)0x0) { *param_1 = 0; (**(code **)(*piVar3 + 0x14))(); param_1[1] = 0; } iVar4 = -0x7fffbffe; } else { iVar4 = *param_3; param_3 = (int *)0x0; piVar3 = (int *)(**(code **)(iVar4 + 0xc))(&local_4,&DAT_0079c5e8,¶m_3); piVar2 = param_3; iVar4 = *piVar3; piVar3 = (int *)*param_1; if (iVar4 < 0) { if (piVar3 != (int *)0x0) { (**(code **)(*piVar3 + 0x14))(); } *param_1 = 0; param_1[1] = 0; *param_2 = iVar4; (**(code **)(*piVar1 + 0x14))(); return param_2; } if (piVar3 != (int *)0x0) { (**(code **)(*piVar3 + 0x14))(); } *param_1 = (int)piVar2; param_1[1] = 0; } *param_2 = iVar4; if (piVar1 != (int *)0x0) { (**(code **)(*piVar1 + 0x14))(); } return param_2; } // --- FUN_00454640 at 0x00454640 (size: 724) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 * __thiscall FUN_00454640(undefined4 *param_1,int param_2) { LONG LVar1; undefined4 *puVar2; int local_50 [17]; undefined4 uStack_c; undefined4 uStack_8; undefined4 uStack_4; *param_1 = &PTR_FUN_0079c76c; param_1[1] = 0; param_1[3] = 0; param_1[2] = &PTR_LAB_00797910; param_1[4] = 0x3f800000; param_1[5] = 0; param_1[6] = 0; param_1[7] = 0; param_1[0x11] = 0; param_1[0x12] = 0; param_1[0x13] = 0; FUN_00535b30(); param_1[0x14] = 0; param_1[0x15] = 0x10; param_1[0x16] = &PTR_LAB_00797910; param_1[0x17] = 0; param_1[0x18] = 0x3f800000; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; param_1[0x25] = 0; param_1[0x26] = 0; param_1[0x27] = 0; FUN_00535b30(); param_1[0x3a] = param_2; param_1[0x28] = 0; param_1[0x29] = 0; param_1[0x2a] = 0; param_1[0x2b] = 0; param_1[0x2c] = 0; param_1[0x2d] = 0; param_1[0x2e] = 0; param_1[0x2f] = 0; param_1[0x30] = 0x3fc90fdb; param_1[0x31] = 0; *(undefined1 *)(param_1 + 0x32) = 0; param_1[0x33] = 0; param_1[0x35] = 0; param_1[0x36] = 0; param_1[0x37] = 0; param_1[0x38] = 0; param_1[0x39] = 0; param_1[0x3b] = 0; param_1[0x3c] = 0; param_1[0x3d] = 0; param_1[0x3e] = 0; param_1[0x3f] = 0; param_1[0x40] = 0; param_1[0x41] = 0; param_1[0x42] = 0; param_1[0x43] = 0; param_1[0x44] = 0; param_1[0x45] = 0; _DAT_0083dc14 = 0; local_50[1] = 0; local_50[2] = 0; local_50[3] = 0; _DAT_0083dc18 = 0; _DAT_0083dc1c = 0; _DAT_0083dc20 = 0x3e99999a; FUN_00401340("The intensity of the player light"); FUN_00401340("SmartBox.ViewerLightIntensity"); FUN_004369a0(&DAT_0083dc10,9,¶m_2,local_50,0,0,0,0); puVar2 = (undefined4 *)(param_2 + -0x14); LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } puVar2 = (undefined4 *)(local_50[0] + -0x14); LVar1 = InterlockedDecrement((LONG *)(local_50[0] + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } FUN_00401340("The falloff distance of the player light"); FUN_00401340("SmartBox.ViewerLightFalloff"); FUN_004369a0(&DAT_00819610,9,¶m_2,local_50,0,0,0,0); puVar2 = (undefined4 *)(param_2 + -0x14); LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10)); if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(1); } LVar1 = InterlockedDecrement((LONG *)(local_50[0] + -0x10)); if ((LVar1 == 0) && ((undefined4 *)(local_50[0] + -0x14) != (undefined4 *)0x0)) { (*(code *)**(undefined4 **)(local_50[0] + -0x14))(1); } DAT_00819680 = 0; local_50[4] = 0x3f800000; local_50[5] = 0; local_50[6] = 0; local_50[7] = 0; uStack_c = 0; uStack_8 = 0; uStack_4 = 0; FUN_00535b30(); FUN_00425f10(local_50 + 4); FUN_00451a60(0xffffffff); _DAT_008196dc = DAT_0083dc10; _DAT_008196e0 = DAT_00819610; _DAT_008196e4 = 0x43b40000; return param_1; } // --- FUN_00454920 at 0x00454920 (size: 489) --- void __fastcall FUN_00454920(undefined4 *param_1) { void *pvVar1; LONG LVar2; undefined4 *puVar3; undefined4 *local_4; *param_1 = &PTR_FUN_0079c76c; local_4 = param_1; FUN_00453c90(1); FUN_00401340("SmartBox.ViewerLightIntensity"); FUN_00436cf0(&local_4); puVar3 = local_4 + -5; LVar2 = InterlockedDecrement(local_4 + -4); if ((LVar2 == 0) && (puVar3 != (undefined4 *)0x0)) { (**(code **)*puVar3)(1); } FUN_00401340("SmartBox.ViewerLightFalloff"); FUN_00436cf0(&local_4); puVar3 = local_4 + -5; LVar2 = InterlockedDecrement(local_4 + -4); if ((LVar2 == 0) && (puVar3 != (undefined4 *)0x0)) { (**(code **)*puVar3)(1); } if (param_1[0x28] != 0) { if (DAT_00837ff4 != (int *)0x0) { (**(code **)(*DAT_00837ff4 + 0x4c))(param_1[0x28],4); } if (param_1[0x28] != 0) { (*(code *)**(undefined4 **)(param_1[0x28] + 4))(1); } param_1[0x28] = 0; } if (param_1[0x29] != 0) { *(undefined4 *)(param_1[0x29] + 4) = 0; pvVar1 = (void *)param_1[0x29]; if (pvVar1 != (void *)0x0) { FUN_00455930(); operator_delete(pvVar1); } param_1[0x29] = 0; } if ((int *)param_1[0x2e] != (int *)0x0) { (**(code **)(*(int *)param_1[0x2e] + 0x5c))(0); if ((undefined4 *)param_1[0x2e] != (undefined4 *)0x0) { (*(code *)**(undefined4 **)param_1[0x2e])(1); } param_1[0x2e] = 0; } FUN_0052b980(0); FUN_0050ff80(0); DAT_00842b98 = 0; DAT_008456f0 = 0; if (param_1[0x2d] != 0) { FUN_00452960(); pvVar1 = (void *)param_1[0x2d]; if (pvVar1 != (void *)0x0) { FUN_00552380(); operator_delete(pvVar1); } param_1[0x2d] = 0; } pvVar1 = (void *)param_1[0x2c]; if (pvVar1 != (void *)0x0) { FUN_00505e70(); operator_delete(pvVar1); param_1[0x2c] = 0; } pvVar1 = (void *)param_1[0x2a]; if (pvVar1 != (void *)0x0) { FUN_0050a3e0(); operator_delete(pvVar1); param_1[0x2a] = 0; } if ((int *)param_1[0x2b] != (int *)0x0) { (**(code **)(*(int *)param_1[0x2b] + 0x14))(); param_1[0x2b] = 0; } FUN_004ff3b0(); pvVar1 = DAT_008ee9c8; if (DAT_008ee9c8 != (void *)0x0) { FUN_005a7f80(); operator_delete(pvVar1); DAT_008ee9c8 = (void *)0x0; } param_1[0x16] = &PTR_FUN_0079385c; param_1[2] = &PTR_FUN_0079385c; return; } // --- FUN_00454b10 at 0x00454B10 (size: 171) --- void __fastcall FUN_00454b10(int *param_1) { int *piVar1; undefined4 *puVar2; void *pvVar3; int iVar4; LONG LVar5; undefined4 *puVar6; if ((int *)param_1[0x3b] != (int *)0x0) { iVar4 = *(int *)param_1[0x3b]; while (iVar4 != 0) { piVar1 = (int *)param_1[0x3b]; puVar2 = (undefined4 *)*piVar1; if (puVar2 == (undefined4 *)0x0) { puVar6 = (undefined4 *)0x0; } else { iVar4 = puVar2[1]; *piVar1 = iVar4; if (iVar4 == 0) { piVar1[1] = 0; } puVar6 = (undefined4 *)*puVar2; operator_delete(puVar2); } iVar4 = (**(code **)(*param_1 + 4))(puVar6); if (iVar4 == 0) { FUN_00453a20(puVar6); } else { (**(code **)(*param_1 + 8))(puVar6); } LVar5 = InterlockedDecrement(puVar6 + 1); if ((LVar5 == 0) && (puVar6 != (undefined4 *)0x0)) { (**(code **)*puVar6)(1); } iVar4 = *(int *)param_1[0x3b]; } pvVar3 = (void *)param_1[0x3b]; if (pvVar3 != (void *)0x0) { FUN_004c65a0(); operator_delete(pvVar3); } param_1[0x3b] = 0; } return; } // --- FUN_00454bc0 at 0x00454BC0 (size: 250) --- void __thiscall FUN_00454bc0(int *param_1,int param_2) { undefined4 *puVar1; void *pvVar2; void *pvVar3; int *piVar4; int *piVar5; LONG LVar6; int *piVar7; int iVar8; int *piVar9; int *piVar10; bool bVar11; if (*(int **)(param_2 + 300) != (int *)0x0) { (**(code **)(**(int **)(param_2 + 300) + 8))(); } piVar4 = *(int **)(param_2 + 0xc); if (piVar4 != (int *)0x0) { piVar7 = (int *)0x0; piVar9 = (int *)0x0; if (*piVar4 != 0) { do { piVar5 = (int *)*piVar4; if (piVar5 == (int *)0x0) { iVar8 = 0; } else { iVar8 = piVar5[1]; *piVar4 = iVar8; if (iVar8 == 0) { piVar4[1] = 0; } iVar8 = *piVar5; operator_delete(piVar5); } piVar5 = (int *)FUN_005df0f5(8); if (piVar5 == (int *)0x0) { piVar5 = (int *)0x0; } else { *piVar5 = iVar8; piVar5[1] = 0; } piVar10 = piVar5; if (piVar7 != (int *)0x0) { piVar7[1] = (int)piVar5; piVar10 = piVar9; } piVar4 = *(int **)(param_2 + 0xc); piVar7 = piVar5; piVar9 = piVar10; } while (*piVar4 != 0); while (piVar10 != (int *)0x0) { piVar4 = (int *)piVar10[1]; puVar1 = (undefined4 *)*piVar10; operator_delete(piVar10); iVar8 = (**(code **)(*param_1 + 4))(puVar1); if (iVar8 == 0) { FUN_00453a20(puVar1); } else { (**(code **)(*param_1 + 8))(puVar1); } LVar6 = InterlockedDecrement(puVar1 + 1); piVar10 = piVar4; if ((LVar6 == 0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(1); } } } bVar11 = false; pvVar3 = (void *)0x0; while (bVar11) { pvVar2 = *(void **)((int)pvVar3 + 4); operator_delete(pvVar3); bVar11 = pvVar2 != (void *)0x0; pvVar3 = pvVar2; } } return; } // --- FUN_00454cc0 at 0x00454CC0 (size: 93) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __fastcall FUN_00454cc0(int param_1) { undefined4 uVar1; FUN_00453160(); if (*(int *)(param_1 + 0xf8) != 0) { FUN_00453d80(); if (*(int *)(param_1 + 0x50) != 0) { FUN_00453b40(); } } if (DAT_0083da48 != '\0') { uVar1 = FUN_0054d590(); DAT_0083da44 = FUN_0054d560(); _DAT_00819618 = uVar1; FUN_006935e0(DAT_0083da44); DAT_0083da48 = '\0'; } FUN_0054c3a0(); return; } // --- FUN_00454d20 at 0x00454D20 (size: 1167) --- undefined4 __thiscall FUN_00454d20(int param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5, undefined4 param_6,int param_7) { short sVar1; short sVar2; int iVar3; int iVar4; undefined4 uVar5; undefined4 uVar6; undefined4 uVar7; undefined4 uVar8; undefined4 uVar9; undefined ***pppuVar10; int local_bc; int local_b8; undefined4 local_b4; int local_b0; undefined **local_ac; int local_a8; undefined4 local_a4; undefined1 local_a0 [4]; undefined1 local_9c [4]; int local_98; undefined **ppuStack_58; undefined4 local_54 [21]; local_b0 = 0; local_bc = 0; local_b8 = 0; iVar3 = FUN_0051df90(); if ((iVar3 != 0) && (local_b0 = FUN_00508890(iVar3), local_b0 == 0)) { FUN_00509da0(iVar3,param_2); return 4; } iVar4 = FUN_00508a40(param_3,&local_bc,&local_b8); if (iVar4 == 0) { LAB_00455046: if (local_bc == 0) goto LAB_0045504a; } else { if (local_bc != 0) { if (param_7 == 0) { local_b4 = CONCAT22(local_b4._2_2_,*(undefined2 *)(local_bc + 0x174)); uVar5 = FUN_0051df80(8); iVar4 = FUN_00451b10(local_b4,uVar5); if (iVar4 == 0) { FUN_0050f430(&local_b4); FUN_0051e280(local_a0); sVar1 = *(short *)(local_bc + 0x174); sVar2 = FUN_0051df80(8); if (sVar1 != sVar2) { return 2; } uVar5 = FUN_0051df80(7); FUN_00451f80(local_bc,param_4,uVar5); uVar5 = FUN_0051df80(0); if (iVar3 == 0) { uVar6 = FUN_0051df80(4); local_b4 = FUN_0051df80(6); FUN_004538b0(local_9c); if (local_98 == 0) { FUN_00452280(local_bc,uVar5); } else { local_ac = *(undefined ***)(param_5 + 0x74); local_a8 = *(int *)(param_5 + 0x78); local_a4 = *(undefined4 *)(param_5 + 0x7c); pppuVar10 = &local_ac; uVar9 = 1; uVar8 = local_b4; uVar7 = FUN_004f32b0(1,pppuVar10,uVar5,uVar6,local_b4); FUN_00454070(local_bc,local_9c,uVar7,uVar9,pppuVar10,uVar5,uVar6,uVar8); } } else { uVar6 = FUN_004f32b0(uVar5); uVar8 = FUN_0051dfa0(uVar6); FUN_004522d0(local_bc,local_b0,uVar8,uVar6,uVar5); } iVar3 = FUN_004f8da0(); if (iVar3 != 0) { uVar5 = FUN_0051df70(); uVar6 = FUN_0051df80(5); uVar8 = FUN_0051df80(1); uVar7 = FUN_004f8da0(uVar8,uVar6,uVar5); uVar9 = FUN_004f8d90(uVar7); FUN_0050a160(local_bc,uVar9,uVar7,uVar8,uVar6,uVar5); } uVar5 = FUN_0051df80(2); FUN_00452110(local_bc,*(undefined4 *)(param_5 + 0x60),uVar5); uVar5 = FUN_0051df80(3); local_ac = *(undefined ***)(param_5 + 0x74); local_a8 = *(undefined4 *)(param_5 + 0x78); local_a4 = *(undefined4 *)(param_5 + 0x7c); uVar6 = FUN_004529b0(local_54); FUN_00452200(local_bc,&local_ac,uVar6,uVar5); if (local_b8 != 0) { (**(code **)(**(int **)(param_1 + 0xac) + 0x28))(local_b8,param_6,1); } if (*(int *)(local_bc + 0x4c) == 0) { if (local_b8 != 0) { return 1; } FUN_00509a40(*(undefined4 *)(local_bc + 8)); return 1; } if (*(int *)(local_bc + 0x90) != 0) { FUN_00508f10(*(undefined4 *)(local_bc + 8)); return 1; } FUN_00509a40(*(undefined4 *)(local_bc + 8)); return 1; } } goto LAB_00455046; } LAB_0045504a: if (local_b8 == 0) goto LAB_0045505e; } (**(code **)(**(int **)(param_1 + 0xac) + 0x1c))(param_3); LAB_0045505e: iVar3 = (**(code **)(**(int **)(param_1 + 0xac) + 0x2c))(param_3,param_4,param_5,param_6); if (iVar3 != 0) { if (param_3 == *(int *)(param_1 + 0xf4)) { uVar5 = FUN_0051df70(); FUN_00453d20(iVar3,uVar5); local_54[0] = *(undefined4 *)(param_5 + 0x1c); ppuStack_58 = &PTR_LAB_00797910; FUN_00425f10(param_5 + 0x20); FUN_00514ca0(&ppuStack_58); iVar4 = *(int *)(param_1 + 0xf8); if ((iVar4 != 0) && (*(int *)(iVar4 + 0x4c) != 0)) { FUN_00455ad0(iVar4 + 0x48,1); } local_a8 = *(int *)(param_5 + 0x1c); local_ac = &PTR_LAB_00797910; FUN_00425f10(param_5 + 0x20); if (*(int *)(param_1 + 0xf8) != 0) { FUN_00516e10(&local_ac); FUN_00453910(1,0x7f7fffff); } (**(code **)(**(int **)(param_1 + 0xac) + 0x30))(param_4); } else { iVar4 = FUN_0051df90(); if (iVar4 == 0) { local_a8 = *(int *)(param_5 + 0x1c); FUN_00425f10(param_5 + 0x20); if (local_a8 != 0) { uVar5 = FUN_004538b0(&local_ac); FUN_00516e10(uVar5); } } } FUN_00454bc0(iVar3); return 1; } return 3; } // --- FUN_004551b0 at 0x004551B0 (size: 62) --- undefined4 __thiscall FUN_004551b0(int param_1,undefined4 param_2,undefined4 param_3) { if (*(int *)(param_1 + 0xf4) != 0) { return 3; } *(undefined4 *)(param_1 + 0xf4) = param_3; FUN_00454b10(); (**(code **)(**(int **)(param_1 + 0xb8) + 0x88))(); return 1; } // --- FUN_004551f0 at 0x004551F0 (size: 86) --- void __fastcall FUN_004551f0(undefined4 *param_1) { FUN_00454490(); if ((int *)param_1[6] != (int *)0x0) { (**(code **)(*(int *)param_1[6] + 0x18))(1); } param_1[6] = 0; if ((param_1[4] & 0x80000000) == 0x80000000) { operator_delete__((void *)param_1[3]); } if ((param_1[1] & 0x80000000) == 0x80000000) { operator_delete__((void *)*param_1); } return; } // --- FUN_00455250 at 0x00455250 (size: 62) --- undefined4 * __thiscall FUN_00455250(undefined4 *param_1,int *param_2) { undefined4 *puVar1; int *piVar2; undefined4 uVar3; *param_1 = 0; param_1[1] = 0; piVar2 = (int *)*param_2; uVar3 = 0; if (piVar2 != (int *)0x0) { (**(code **)(*piVar2 + 0x10))(piVar2,0); } puVar1 = (undefined4 *)FUN_00454590(¶m_2,piVar2,uVar3); param_1[1] = *puVar1; return param_1; } // --- FUN_00455290 at 0x00455290 (size: 533) --- uint __fastcall FUN_00455290(int param_1) { int iVar1; int *piVar2; undefined4 *puVar3; uint uVar4; undefined1 *puVar5; undefined *puVar6; undefined *puVar7; undefined4 uVar8; int *piVar9; int **ppiVar10; int *local_14; undefined1 local_10 [4]; undefined1 local_c [4]; int local_8; undefined4 local_4; ppiVar10 = &local_14; uVar8 = 0; puVar7 = &DAT_0079c69c; puVar5 = local_10; puVar6 = &DAT_0079c5f8; local_14 = (int *)0x0; FUN_00406d10(puVar5,&DAT_0079c5f8,&DAT_0079c69c,0,ppiVar10); FUN_00406650(puVar5,puVar6,puVar7,uVar8,ppiVar10); piVar2 = local_14; uVar8 = 0; local_8 = 0; local_4 = 0; piVar9 = local_14; if (local_14 != (int *)0x0) { (**(code **)(*local_14 + 0x10))(local_14,0); } FUN_00454590(local_c,piVar9,uVar8); if (piVar2 != (int *)0x0) { (**(code **)(*piVar2 + 0x14))(); } uVar4 = 0; if (local_8 != 0) { *(int *)(param_1 + 0xac) = local_8; if (*(int *)(param_1 + 4) != 0) { *(undefined4 *)(local_8 + 0x10) = 0; } iVar1 = FUN_005df0f5(0x10); if (iVar1 == 0) { iVar1 = 0; } else { iVar1 = FUN_0050a530(*(undefined4 *)(param_1 + 0xac),param_1); } *(int *)(param_1 + 0xa8) = iVar1; uVar4 = 0; if (iVar1 != 0) { iVar1 = FUN_005df0f5(0x34); if (iVar1 == 0) { iVar1 = 0; } else { iVar1 = FUN_00505dd0(); } *(int *)(param_1 + 0xb0) = iVar1; uVar4 = 0; if (iVar1 != 0) { iVar1 = FUN_005df0f5(0x74); if (iVar1 == 0) { iVar1 = 0; } else { iVar1 = FUN_00552300(); } *(int *)(param_1 + 0xb4) = iVar1; uVar4 = 0; if (iVar1 != 0) { (**(code **)(*DAT_00870340 + 0x44))(*(undefined4 *)(param_1 + 0xb0)); FUN_0052b980(*(undefined4 *)(param_1 + 0xac)); FUN_0050ff80(*(undefined4 *)(param_1 + 0xac)); DAT_00842b98 = *(undefined4 *)(param_1 + 0xac); DAT_008456f0 = *(undefined4 *)(param_1 + 0xb0); piVar2 = (int *)FUN_0054bad0(); *(int **)(param_1 + 0xb8) = piVar2; uVar4 = 0; if (piVar2 != (int *)0x0) { (**(code **)(*piVar2 + 0x5c))(DAT_0083da58); (**(code **)(**(int **)(param_1 + 0xb8) + 0xb0))(DAT_00819614); iVar1 = FUN_005df0f5(0x78); if (iVar1 == 0) { puVar3 = (undefined4 *)0x0; } else { puVar3 = (undefined4 *)FUN_004558d0(); } *(undefined4 **)(param_1 + 0xa4) = puVar3; uVar4 = 0; if (puVar3 != (undefined4 *)0x0) { *puVar3 = *(undefined4 *)(param_1 + 0xb0); *(undefined4 *)(*(int *)(param_1 + 0xa4) + 4) = *(undefined4 *)(param_1 + 0xb4); iVar1 = FUN_005df0f5(0xc0); if (iVar1 == 0) { uVar4 = 0; } else { uVar4 = FUN_004571b0(); } *(uint *)(param_1 + 0xa0) = uVar4; if ((uVar4 != 0) && (DAT_00837ff4 != (int *)0x0)) { (**(code **)(*DAT_00837ff4 + 0x48))(uVar4,4); FUN_00453280(); *(undefined4 *)(param_1 + 0xd8) = 1; return 1; } } } } } } } return uVar4 & 0xffffff00; } // --- FUN_004554b0 at 0x004554B0 (size: 337) --- void __fastcall FUN_004554b0(int *param_1) { int *piVar1; undefined4 *puVar2; int iVar3; LONG LVar4; undefined4 *puVar5; if (*(char *)(param_1[0x29] + 0x18) == '\0') { if ((*(char *)(param_1[0x29] + 0x19) == '\0') && (iVar3 = FUN_00455d00(), iVar3 != 0)) { FUN_00455830(); } iVar3 = param_1[0x3e]; if ((iVar3 != 0) && (*(int *)(iVar3 + 0x4c) != 0)) { FUN_00455ad0(iVar3 + 0x48,0); } if (((param_1[0x3e] != 0) && (param_1[0x38] == 0)) && (param_1[0x37] == 0)) { param_1[0x37] = 1; param_1[0x39] = 1; } FUN_00509480(); FUN_0050a420(); if (DAT_008ee9c8 != 0) { FUN_005a7800(); FUN_005062e0(); } FUN_005524a0(); } else { FUN_00455d00(); } FUN_0043f7b0(); if (param_1[0x3a] != 0) { while( true ) { piVar1 = (int *)param_1[0x3a]; puVar2 = (undefined4 *)*piVar1; if (puVar2 == (undefined4 *)0x0) { puVar5 = (undefined4 *)0x0; } else { iVar3 = puVar2[1]; *piVar1 = iVar3; if (iVar3 == 0) { piVar1[1] = 0; } puVar5 = (undefined4 *)*puVar2; operator_delete(puVar2); } if (puVar5 == (undefined4 *)0x0) break; iVar3 = (**(code **)(*param_1 + 4))(puVar5); if (iVar3 == 0) { FUN_00453a20(puVar5); } else { (**(code **)(*param_1 + 8))(puVar5); } LVar4 = InterlockedDecrement(puVar5 + 1); if (LVar4 == 0) { (**(code **)*puVar5)(1); } } } if (param_1[1] == 0) { (**(code **)(*(int *)param_1[0x2e] + 0xa8))(); } FUN_0054d700(); return; } // --- FUN_00455610 at 0x00455610 (size: 16) --- void __fastcall FUN_00455610(int param_1) { if (*(int *)(param_1 + 0xd8) == 0) { FUN_00454cc0(); return; } return; } // --- FUN_00455620 at 0x00455620 (size: 35) --- void FUN_00455620(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, undefined4 param_5) { FUN_00454d20(param_1,param_2,param_3,param_4,param_5,1); return; } // --- FUN_00455650 at 0x00455650 (size: 192) --- void __thiscall FUN_00455650(int param_1,undefined4 param_2,undefined4 param_3) { char cVar1; undefined4 *puVar2; uint uVar3; undefined4 uVar4; undefined4 local_c; undefined4 local_8; undefined4 local_4; puVar2 = (undefined4 *)FUN_005df0f5(0x68); if (puVar2 == (undefined4 *)0x0) { puVar2 = (undefined4 *)0x0; } else { puVar2[1] = 0x3f800000; puVar2[2] = 0; puVar2[3] = 0; puVar2[4] = 0; puVar2[0xe] = 0; puVar2[0xf] = 0; puVar2[0x10] = 0; FUN_00535b30(); } *puVar2 = param_2; local_c = 0x3f800000; local_8 = 0x3f800000; local_4 = 0x3f800000; FUN_00452740(&local_c); puVar2[0x17] = param_3; FUN_00451a60(0xffffffff); puVar2[0x18] = 0x7f7fffff; puVar2[0x19] = 0x43b40000; uVar3 = *(uint *)(param_1 + 0x10) & 0x7fffffff; if (uVar3 <= *(uint *)(param_1 + 0x14)) { uVar4 = FUN_00453850(uVar3 + 1); cVar1 = FUN_004180a0(uVar4); if (cVar1 == '\0') { return; } } *(undefined4 **)(*(int *)(param_1 + 0xc) + *(int *)(param_1 + 0x14) * 4) = puVar2; *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1; return; } // --- FUN_00455710 at 0x00455710 (size: 91) --- undefined4 * FUN_00455710(undefined4 param_1,undefined4 param_2) { char cVar1; DAT_0083da58 = (undefined4 *)FUN_0054bbf0(param_1); if (DAT_0083da58 != (undefined4 *)0x0) { DAT_0083da58[1] = param_2; cVar1 = FUN_00455290(param_1); if (cVar1 != '\0') { FUN_0054fc10(&LAB_004530b0); return DAT_0083da58; } if (DAT_0083da58 != (undefined4 *)0x0) { (**(code **)*DAT_0083da58)(1); } } DAT_0083da58 = (undefined4 *)0x0; return (undefined4 *)0x0; } // --- FUN_00455770 at 0x00455770 (size: 113) --- uint __thiscall FUN_00455770(int *param_1,int *param_2) { int iVar1; uint uVar2; undefined4 uVar3; int *piVar4; uVar2 = 0; if (param_1[2] != 0) { piVar4 = (int *)*param_1; do { if (*piVar4 == *param_2) { if (uVar2 != 0xffffffff) goto LAB_004557be; break; } uVar2 = uVar2 + 1; piVar4 = piVar4 + 1; } while (uVar2 < (uint)param_1[2]); } if ((param_1[1] & 0x7fffffffU) <= (uint)param_1[2]) { uVar3 = FUN_00453850((param_1[1] & 0x7fffffffU) + 1); uVar2 = FUN_004180a0(uVar3); if ((char)uVar2 == '\0') { LAB_004557be: return uVar2 & 0xffffff00; } } *(int *)(*param_1 + param_1[2] * 4) = *param_2; iVar1 = param_1[2]; param_1[2] = iVar1 + 1; return CONCAT31((int3)((uint)(iVar1 + 1) >> 8),1); } // --- FUN_004557f0 at 0x004557F0 (size: 62) --- undefined4 __thiscall FUN_004557f0(int param_1,int param_2) { char cVar1; if (param_2 != 0) { cVar1 = FUN_00455770(¶m_2); if (cVar1 != '\0') { FUN_005154e0(*(undefined4 *)(param_1 + 0x18)); FUN_00511e50(0,1); return 1; } } return 0; } // --- FUN_00455830 at 0x00455830 (size: 32) --- void __fastcall FUN_00455830(int param_1) { uint uVar1; uVar1 = *(uint *)(param_1 + 0x2c); if ((uVar1 != 0) && ((uVar1 & 0xffff) < 0x100)) { FUN_00507730(uVar1); } return; } // --- FUN_00455850 at 0x00455850 (size: 55) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ float10 FUN_00455850(void) { return SQRT((float10)DAT_00842950 * (float10)DAT_00842950 + (float10)DAT_00842954 * (float10)DAT_00842954 + (float10)DAT_00842958 * (float10)DAT_00842958) * (float10)_DAT_0079a1e8 + (float10)DAT_00842780; } // --- FUN_00455890 at 0x00455890 (size: 63) --- void __fastcall FUN_00455890(int param_1) { int iVar1; uint uVar2; if (*(int *)(param_1 + 0x4c) != 0) { uVar2 = 0; do { iVar1 = *(int *)(*(int *)(*(int *)(param_1 + 0x50) + uVar2 * 4) + 0xc); if ((*(int **)(iVar1 + 0x14) != (int *)0x0) && (*(int *)(iVar1 + 0x18) == 0)) { (**(code **)(**(int **)(iVar1 + 0x14) + 0x14))(); *(undefined4 *)(iVar1 + 0x14) = 0; } uVar2 = uVar2 + 1; } while (uVar2 < *(uint *)(param_1 + 0x4c)); } return; } // --- FUN_004558d0 at 0x004558D0 (size: 83) --- undefined4 * __fastcall FUN_004558d0(undefined4 *param_1) { *param_1 = 0; param_1[2] = 0; param_1[4] = 0; param_1[5] = 0; *(undefined1 *)(param_1 + 6) = 0; *(undefined1 *)((int)param_1 + 0x19) = 1; param_1[7] = 0; param_1[8] = 0; param_1[9] = 0; param_1[10] = &PTR_LAB_00797910; param_1[0xb] = 0; param_1[0xc] = 0x3f800000; param_1[0xd] = 0; param_1[0xe] = 0; param_1[0xf] = 0; param_1[0x19] = 0; param_1[0x1a] = 0; param_1[0x1b] = 0; FUN_00535b30(); param_1[0x1c] = 0; return param_1; } // --- FUN_00455930 at 0x00455930 (size: 8) --- void __fastcall FUN_00455930(int param_1) { *(undefined ***)(param_1 + 0x28) = &PTR_FUN_0079385c; return; } // --- FUN_00455940 at 0x00455940 (size: 266) --- undefined1 __thiscall FUN_00455940(uint param_1,uint param_2,int param_3) { char cVar1; int iVar2; uint uVar3; uint uStack_4; uStack_4 = param_1; cVar1 = (**(code **)(*DAT_00837bac + 0x3c))(); if (cVar1 != '\0') { return 1; } uStack_4 = 0; if ((param_2 & 0xffff) < 0x100) { if (((param_3 != 0) || (*(char *)(param_1 + 0x19) == '\0')) || (((*(uint *)(param_1 + 8) ^ param_2) & 0xffff0000) != 0)) { iVar2 = FUN_005060c0(param_2 | 0xffff,&uStack_4); goto LAB_004559af; } *(undefined1 *)(param_1 + 0x19) = 1; } else { iVar2 = FUN_0052de40(param_2,&uStack_4); LAB_004559af: if (iVar2 == 0) { *(undefined1 *)(param_1 + 0x19) = 0; } else { *(undefined1 *)(param_1 + 0x19) = 1; } } *(uint *)(param_1 + 8) = param_2; if (param_3 == 0) { if (*(char *)(param_1 + 0x19) == '\0') goto LAB_00455a3e; } else { if (uStack_4 != 0) { if (*(uint *)(param_1 + 0x20) == 0) { *(uint *)(param_1 + 0x20) = uStack_4; iVar2 = 0; uVar3 = uStack_4; } else { if (*(uint *)(param_1 + 0x20) < uStack_4) { *(uint *)(param_1 + 0x20) = uStack_4; } uVar3 = *(uint *)(param_1 + 0x20); iVar2 = uVar3 - uStack_4; *(int *)(param_1 + 0x1c) = iVar2; } FUN_006937c0(1,iVar2,uVar3); } if (*(char *)(param_1 + 0x19) == '\0') { if (*(char *)(param_1 + 0x18) == '\0') { *(undefined1 *)(param_1 + 0x18) = 1; return *(undefined1 *)(param_1 + 0x19); } goto LAB_00455a3e; } } if (*(char *)(param_1 + 0x18) != '\0') { *(undefined1 *)(param_1 + 0x18) = 0; FUN_006937c0(0,0,0); *(undefined4 *)(param_1 + 0x1c) = 0; *(undefined4 *)(param_1 + 0x20) = 0; } LAB_00455a3e: return *(undefined1 *)(param_1 + 0x19); } // --- FUN_00455a50 at 0x00455A50 (size: 122) --- void __fastcall FUN_00455a50(int param_1) { bool bVar1; bVar1 = (*(uint *)(param_1 + 0x2c) & 0xffff) < 0x100; if (*(int **)(param_1 + 0x24) != (int *)0x0) { (**(code **)(**(int **)(param_1 + 0x24) + 0x74))(); (**(code **)(**(int **)(param_1 + 0x24) + 0x14))(); bVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0xe8) != 0 || bVar1; *(undefined4 *)(param_1 + 0x24) = 0; FUN_0052eb50(); } if (bVar1) { FUN_005055c0(); } FUN_00452960(); *(undefined4 *)(param_1 + 0x2c) = 0; if (*(char *)(param_1 + 0x18) != '\0') { *(undefined1 *)(param_1 + 0x18) = 0; FUN_006937c0(0,0,0); *(undefined4 *)(param_1 + 0x1c) = 0; *(undefined4 *)(param_1 + 0x20) = 0; } *(undefined1 *)(param_1 + 0x19) = 1; return; } // --- FUN_00455ad0 at 0x00455AD0 (size: 16) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __thiscall FUN_00455ad0(int param_1,int param_2,int param_3) { int iVar1; undefined4 uVar2; undefined4 uVar3; int *piVar4; int iVar5; bool bVar6; float10 fVar7; float fVar8; undefined4 uVar9; iVar1 = *(int *)(param_2 + 4); if (iVar1 == 0) { FUN_00455a50(); return; } iVar5 = 1; if (*(char *)(param_1 + 0x18) == '\0') { iVar5 = param_3; } if ((*(int *)(param_1 + 0x2c) == iVar1) && (*(int *)(param_1 + 0x24) != 0)) goto LAB_00455c55; FUN_00455940(iVar1,iVar5); if (*(int **)(param_1 + 0x24) != (int *)0x0) { (**(code **)(**(int **)(param_1 + 0x24) + 0x74))(); (**(code **)(**(int **)(param_1 + 0x24) + 0x14))(); *(undefined4 *)(param_1 + 0x24) = 0; } bVar6 = (*(uint *)(param_2 + 4) & 0xffff) < 0x100; if (iVar5 == 0) { if (bVar6) { FUN_00507730(*(uint *)(param_2 + 4)); } piVar4 = (int *)FUN_0052bd90(*(undefined4 *)(param_2 + 4)); if (piVar4 != (int *)0x0) { if (!bVar6) { if ((piVar4[0x3a] == 0) && (*(int *)(param_1 + 0x70) == 0)) { FUN_005055c0(); (**(code **)(*piVar4 + 0x70))(); *(int **)(param_1 + 0x24) = piVar4; goto LAB_00455bb3; } uVar9 = FUN_004527f0(); FUN_00507730(uVar9); } (**(code **)(*piVar4 + 0x70))(); *(int **)(param_1 + 0x24) = piVar4; } } else { FUN_005055c0(); } LAB_00455bb3: if (*(int *)(param_1 + 0x24) != 0) { _DAT_0081ecc8 = _DAT_0081ecc8 + 1; DAT_008683b4 = 0; DAT_0086b838 = 0; DAT_0081ff5c = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x58); FUN_00425f10(*(int *)(param_1 + 0x24) + 0x5c); } FUN_0052eb50(); uVar3 = DAT_00842958; uVar2 = DAT_00842954; uVar9 = DAT_00842950; if (*(int *)(param_1 + 0x24) == 0) goto LAB_00455c55; if ((bVar6) || (*(int *)(*(int *)(param_1 + 0x24) + 0xe8) != 0)) { _DAT_008682c8 = DAT_00842950; _DAT_008682d0 = DAT_00842958; bVar6 = true; _DAT_008682cc = DAT_00842954; FUN_00451a60(DAT_00842778); _DAT_008682bc = uVar9; _DAT_008682c0 = uVar2; _DAT_008682c4 = uVar3; DAT_008682d4 = 0; if (DAT_0083da58 != 0) { uVar9 = DAT_0084277c; fVar7 = (float10)FUN_00455850(DAT_0084277c); fVar8 = (float)fVar7; goto LAB_00455c14; } } else { bVar6 = false; if (DAT_0083da58 != 0) { uVar9 = 0xffffffff; fVar8 = DAT_0079c7fc; LAB_00455c14: FUN_004530e0(fVar8,uVar9); } } FUN_005521f0(param_2); FUN_00695670(*(undefined4 *)(param_1 + 4)); if (bVar6) { FUN_00506270(*(undefined4 *)(param_1 + 4)); } FUN_00552670(); FUN_00455890(); LAB_00455c55: *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(param_2 + 4); FUN_00425f10(param_2 + 8); return; } // --- FUN_00455ae0 at 0x00455AE0 (size: 539) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __thiscall FUN_00455ae0(int param_1) { int *piVar1; undefined4 uVar2; undefined4 uVar3; int in_EAX; int *piVar4; char cVar5; int *unaff_EBX; int unaff_EBP; bool in_ZF; float10 fVar6; int in_stack_00000018; int *in_stack_0000001c; float fVar7; undefined4 uVar8; if (in_ZF) { FUN_00455a50(); return; } cVar5 = (char)unaff_EBX; piVar4 = (int *)0x1; if (*(char *)(param_1 + 0x18) == cVar5) { piVar4 = in_stack_0000001c; } if ((*(int *)(param_1 + 0x2c) == in_EAX) && (*(int **)(param_1 + 0x24) != unaff_EBX)) goto LAB_00455c55; FUN_00455940(in_EAX,piVar4); if (*(int **)(param_1 + 0x24) != unaff_EBX) { (**(code **)(**(int **)(param_1 + 0x24) + 0x74))(); (**(code **)(**(int **)(param_1 + 0x24) + 0x14))(); *(int **)(param_1 + 0x24) = unaff_EBX; } piVar1 = (int *)(uint)((*(uint *)(unaff_EBP + 4) & 0xffff) < 0x100); if (piVar4 == unaff_EBX) { if (piVar1 != unaff_EBX) { FUN_00507730(*(uint *)(unaff_EBP + 4)); } piVar4 = (int *)FUN_0052bd90(*(undefined4 *)(in_stack_00000018 + 4)); if (piVar4 != unaff_EBX) { if (piVar1 == unaff_EBX) { if (((int *)piVar4[0x3a] == unaff_EBX) && (*(int **)(param_1 + 0x70) == unaff_EBX)) { FUN_005055c0(); (**(code **)(*piVar4 + 0x70))(); *(int **)(param_1 + 0x24) = piVar4; goto LAB_00455bb3; } uVar8 = FUN_004527f0(); FUN_00507730(uVar8); } (**(code **)(*piVar4 + 0x70))(); *(int **)(param_1 + 0x24) = piVar4; } } else { FUN_005055c0(); } LAB_00455bb3: if (*(int **)(param_1 + 0x24) != unaff_EBX) { _DAT_0081ecc8 = _DAT_0081ecc8 + 1; DAT_0081ff5c = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x58); DAT_008683b4 = unaff_EBX; DAT_0086b838 = unaff_EBX; FUN_00425f10(*(int *)(param_1 + 0x24) + 0x5c); } FUN_0052eb50(); uVar3 = DAT_00842958; uVar2 = DAT_00842954; uVar8 = DAT_00842950; unaff_EBP = in_stack_00000018; if (*(int **)(param_1 + 0x24) == unaff_EBX) goto LAB_00455c55; if ((piVar1 == unaff_EBX) && ((int *)(*(int **)(param_1 + 0x24))[0x3a] == unaff_EBX)) { piVar4 = (int *)0x0; if (DAT_0083da58 != unaff_EBX) { uVar8 = 0xffffffff; fVar7 = DAT_0079c7fc; LAB_00455c14: FUN_004530e0(fVar7,uVar8); } } else { _DAT_008682c8 = DAT_00842950; _DAT_008682d0 = DAT_00842958; piVar4 = (int *)0x1; _DAT_008682cc = DAT_00842954; FUN_00451a60(DAT_00842778); _DAT_008682bc = uVar8; _DAT_008682c0 = uVar2; _DAT_008682c4 = uVar3; DAT_008682d4 = cVar5; if (DAT_0083da58 != unaff_EBX) { uVar8 = DAT_0084277c; fVar6 = (float10)FUN_00455850(DAT_0084277c); fVar7 = (float)fVar6; goto LAB_00455c14; } } FUN_005521f0(in_stack_00000018); FUN_00695670(*(undefined4 *)(param_1 + 4)); if (piVar4 != unaff_EBX) { FUN_00506270(*(undefined4 *)(param_1 + 4)); } FUN_00552670(); FUN_00455890(); LAB_00455c55: *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(unaff_EBP + 4); FUN_00425f10(unaff_EBP + 8); return; } // --- FUN_00455d00 at 0x00455D00 (size: 73) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ bool __fastcall FUN_00455d00(int param_1) { undefined4 uVar1; int iVar2; if (_DAT_0079a1b0 < (double)CONCAT44(DAT_008379ac,DAT_008379a8) - *(double *)(param_1 + 0x10)) { iVar2 = FUN_00455940(*(undefined4 *)(param_1 + 0x2c),*(undefined1 *)(param_1 + 0x18)); uVar1 = DAT_008379ac; *(undefined4 *)(param_1 + 0x10) = DAT_008379a8; *(undefined4 *)(param_1 + 0x14) = uVar1; return iVar2 != 0; } return false; } // --- FUN_00455d50 at 0x00455D50 (size: 309) --- /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 FUN_00455d50(int param_1,int param_2,undefined4 *param_3,undefined4 *param_4) { float fVar1; int iVar2; uint uVar3; if (param_1 < 2) { *param_4 = "Usage:\n@render