acdream/docs/research/decompiled/chunk_004D0000.c
Erik 4d36756b91 research: full acclient.exe decompilation — 22,225 functions, 688K lines
Complete decompilation of the retail Asheron's Call client using
Ghidra 12.0.4 + pyghidra headless. 22,225 of 22,226 functions
successfully decompiled in 75 seconds.

Output: docs/research/decompiled/ (54 files, 688,567 lines of C)

Key findings already identified:
- CLandBlockStruct::ConstructPolygons at chunk_00530000.c:2270
  (split direction formula with 0x0CCAC033 constants)
- Motion command handlers at chunk_00510000.c (0x45000005 etc)
- Motion interpreter at chunk_00520000.c
- Portal space UI at chunk_004D0000.c and chunk_00560000.c

Next: identify CPhysicsObj, CMotionInterp, collision, and movement
functions by cross-referencing against ACE's C# port.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 23:25:51 +02:00

7874 lines
211 KiB
C

// Decompiled from acclient.exe — chunk 0x004D0000
// Ghidra 12.0.4 + pyghidra headless
// --- FUN_004d0100 at 0x004D0100 (size: 156) ---
undefined4 * __thiscall FUN_004d0100(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_004be3a0(param_2,param_3);
param_1[0x193] = 0;
param_1[0x194] = 0;
param_1[0x195] = 0;
param_1[0x196] = 0;
param_1[0x197] = 0;
param_1[0x198] = 0;
param_1[0x199] = 0;
param_1[0x19a] = 0;
param_1[0x19b] = 0;
param_1[0x19c] = 0;
param_1[0x19d] = 0;
param_1[0x19e] = 0;
param_1[0x19f] = 0;
param_1[0x1a0] = 0;
param_1[0x1a1] = 0;
param_1[0x1a2] = 0;
param_1[0x1a3] = 0;
*param_1 = &PTR_FUN_007bb870;
param_1[0x17e] = &PTR_FUN_007bb5c8;
param_1[0x17f] = &PTR_LAB_007bb5c4;
return param_1;
}
// --- FUN_004d0210 at 0x004D0210 (size: 464) ---
void __fastcall FUN_004d0210(int param_1)
{
char cVar1;
FUN_0055e1d0();
cVar1 = FUN_005d4330();
if (cVar1 != '\0') {
(**(code **)(**(int **)(param_1 + 0x650) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x650) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x654) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x658) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x65c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x660) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x664) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x668) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x66c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x670) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x674) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x678) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x67c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x680) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x684) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x688) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x68c) + 0x18))(1);
return;
}
(**(code **)(**(int **)(param_1 + 0x650) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x650) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x654) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x658) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x65c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x660) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x664) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x668) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x66c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x670) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x674) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x678) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x67c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x680) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x684) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x688) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x68c) + 0x18))(0);
return;
}
// --- FUN_004d03e0 at 0x004D03E0 (size: 42) ---
void __thiscall FUN_004d03e0(int param_1,undefined4 param_2,undefined4 param_3)
{
(**(code **)(*(int *)(param_1 + -0x5f8) + 0x138))();
FUN_004c0610(param_2,param_3);
return;
}
// --- FUN_004d0410 at 0x004D0410 (size: 56) ---
undefined4 * __thiscall FUN_004d0410(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007bb870;
param_1[0x17e] = &PTR_FUN_007bb5c8;
param_1[0x17f] = &PTR_LAB_007bb5c4;
FUN_004be490();
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004d0450 at 0x004D0450 (size: 19) ---
void FUN_004d0450(void)
{
FUN_00460270(0x10000051,&LAB_004d01e0);
return;
}
// --- FUN_004d0470 at 0x004D0470 (size: 897) ---
void __fastcall FUN_004d0470(int *param_1)
{
int *piVar1;
int *piVar2;
int iVar3;
FUN_00460990(0x1000007e,param_1 + 0x193);
FUN_004bf710();
piVar2 = (int *)FUN_00463c00(0x1000062c);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(2);
}
param_1[0x194] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000062e);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(2);
}
param_1[0x195] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000630);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x196] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000632);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(2);
}
param_1[0x197] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000062b);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(2);
}
param_1[0x198] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000062d);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(2);
}
param_1[0x199] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000062f);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x19a] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000631);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x19b] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000624);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x19c] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000626);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x19d] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000628);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x19e] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000062a);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x19f] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000623);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x1a0] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000625);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x1a1] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000627);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x1a2] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000629);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x1a3] = iVar3;
piVar2 = (int *)FUN_0043c680();
if (piVar2 != (int *)0x0) {
piVar1 = param_1 + 0x17e;
(**(code **)(*piVar2 + 4))(0x4dd1ef,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd244,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1f5,piVar1);
(**(code **)(*piVar2 + 4))(0x186ab,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd256,piVar1);
(**(code **)(*piVar2 + 4))(0x186a8,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1f4,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1f8,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1f0,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd26e,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd22d,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd22e,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd22f,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1fb,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd25e,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1e8,piVar1);
}
FUN_00465f90(1);
FUN_00465f90(0xd);
/* WARNING: Could not recover jumptable at 0x004d07eb. Too many branches */
/* WARNING: Treating indirect jump as call */
(**(code **)(*param_1 + 0x138))();
return;
}
// --- FUN_004d0ef0 at 0x004D0EF0 (size: 156) ---
undefined4 * __thiscall FUN_004d0ef0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_004c08d0(param_2,param_3);
param_1[0x186] = 0;
param_1[0x187] = 0;
param_1[0x188] = 0;
param_1[0x189] = 0;
param_1[0x18a] = 0;
param_1[0x18b] = 0;
param_1[0x18c] = 0;
param_1[0x18d] = 0;
param_1[0x18e] = 0;
param_1[399] = 0;
param_1[400] = 0;
param_1[0x191] = 0;
param_1[0x192] = 0;
param_1[0x193] = 0;
param_1[0x194] = 0;
param_1[0x195] = 0;
param_1[0x196] = 0;
*param_1 = &PTR_FUN_007bbaa0;
param_1[0x17e] = &PTR_FUN_007bb0f0;
param_1[0x17f] = &PTR_LAB_007bb0e4;
return param_1;
}
// --- FUN_004d1000 at 0x004D1000 (size: 464) ---
void __fastcall FUN_004d1000(int param_1)
{
char cVar1;
FUN_0055e1d0();
cVar1 = FUN_005d4330();
if (cVar1 != '\0') {
(**(code **)(**(int **)(param_1 + 0x61c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x61c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x620) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x624) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x628) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x62c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x630) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x634) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x638) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x63c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x640) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x644) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x648) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x64c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x650) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x654) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x658) + 0x18))(1);
return;
}
(**(code **)(**(int **)(param_1 + 0x61c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x61c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x620) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x624) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x628) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x62c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x630) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x634) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x638) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x63c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x640) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x644) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x648) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x64c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x650) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x654) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x658) + 0x18))(0);
return;
}
// --- FUN_004d11d0 at 0x004D11D0 (size: 42) ---
void __thiscall FUN_004d11d0(int param_1,undefined4 param_2,undefined4 param_3)
{
(**(code **)(*(int *)(param_1 + -0x5f8) + 0x138))();
FUN_004c0e80(param_2,param_3);
return;
}
// --- FUN_004d1200 at 0x004D1200 (size: 56) ---
undefined4 * __thiscall FUN_004d1200(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007bbaa0;
param_1[0x17e] = &PTR_FUN_007bb0f0;
param_1[0x17f] = &PTR_LAB_007bb0e4;
FUN_004c07a0();
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004d1240 at 0x004D1240 (size: 19) ---
void FUN_004d1240(void)
{
FUN_00460270(0x10000056,&LAB_004d0fd0);
return;
}
// --- FUN_004d1260 at 0x004D1260 (size: 859) ---
void __fastcall FUN_004d1260(int *param_1)
{
int *piVar1;
int iVar2;
FUN_004c0960();
FUN_00460990(0x1000007e,param_1 + 0x186);
if (param_1 == (int *)0x0) {
piVar1 = (int *)0x0;
}
else {
piVar1 = param_1 + 0x17f;
}
(**(code **)(*DAT_008f958c + 8))(9,2,piVar1);
if (param_1 == (int *)0x0) {
piVar1 = (int *)0x0;
}
else {
piVar1 = param_1 + 0x17f;
}
(**(code **)(*DAT_008f958c + 8))(9,1,piVar1);
if (param_1 == (int *)0x0) {
piVar1 = (int *)0x0;
}
else {
piVar1 = param_1 + 0x17f;
}
(**(code **)(*DAT_008f958c + 8))(9,4,piVar1);
if (param_1 == (int *)0x0) {
piVar1 = (int *)0x0;
}
else {
piVar1 = param_1 + 0x17f;
}
(**(code **)(*DAT_008f958c + 8))(9,3,piVar1);
if (param_1 == (int *)0x0) {
piVar1 = (int *)0x0;
}
else {
piVar1 = param_1 + 0x17f;
}
(**(code **)(*DAT_008f958c + 8))(9,6,piVar1);
if (param_1 == (int *)0x0) {
piVar1 = (int *)0x0;
}
else {
piVar1 = param_1 + 0x17f;
}
(**(code **)(*DAT_008f958c + 8))(9,5,piVar1);
piVar1 = (int *)FUN_00463c00(0x100006df);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(2);
}
param_1[0x187] = iVar2;
piVar1 = (int *)FUN_00463c00(0x100006e1);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(9);
}
param_1[0x188] = iVar2;
piVar1 = (int *)FUN_00463c00(0x100006e3);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(2);
}
param_1[0x189] = iVar2;
piVar1 = (int *)FUN_00463c00(0x100006e5);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(9);
}
param_1[0x18a] = iVar2;
piVar1 = (int *)FUN_00463c00(0x100006de);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(9);
}
param_1[0x18b] = iVar2;
piVar1 = (int *)FUN_00463c00(0x100006e0);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(9);
}
param_1[0x18c] = iVar2;
piVar1 = (int *)FUN_00463c00(0x100006e2);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(9);
}
param_1[0x18d] = iVar2;
piVar1 = (int *)FUN_00463c00(0x100006e4);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(9);
}
param_1[0x18e] = iVar2;
piVar1 = (int *)FUN_00463c00(0x100006d7);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[399] = iVar2;
piVar1 = (int *)FUN_00463c00(0x100006d9);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[400] = iVar2;
piVar1 = (int *)FUN_00463c00(0x100006db);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[0x191] = iVar2;
piVar1 = (int *)FUN_00463c00(0x100006dd);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[0x192] = iVar2;
piVar1 = (int *)FUN_00463c00(0x100006d6);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[0x193] = iVar2;
piVar1 = (int *)FUN_00463c00(0x100006d8);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[0x194] = iVar2;
piVar1 = (int *)FUN_00463c00(0x100006da);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[0x195] = iVar2;
piVar1 = (int *)FUN_00463c00(0x100006dc);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[0x196] = iVar2;
piVar1 = (int *)FUN_0043c680();
(**(code **)(*piVar1 + 4))(0x4dd1f0,param_1 + 0x17e);
FUN_00465f90(0xd);
/* WARNING: Could not recover jumptable at 0x004d15b5. Too many branches */
/* WARNING: Treating indirect jump as call */
(**(code **)(*param_1 + 0x138))();
return;
}
// --- FUN_004d1a00 at 0x004D1A00 (size: 146) ---
undefined4 * __thiscall FUN_004d1a00(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_004db000(param_2,param_3);
param_1[0x181] = 0;
param_1[0x182] = 0;
param_1[0x183] = 0;
param_1[0x184] = 0;
param_1[0x185] = 0;
param_1[0x186] = 0;
param_1[0x187] = 0;
param_1[0x188] = 0;
param_1[0x189] = 0;
param_1[0x18a] = 0;
param_1[0x18b] = 0;
param_1[0x18c] = 0;
param_1[0x18d] = 0;
param_1[0x18e] = 0;
param_1[399] = 0;
param_1[400] = 0;
param_1[0x191] = 0;
*param_1 = &PTR_FUN_007bbf78;
param_1[0x17e] = &PTR_FUN_007bbcd0;
return param_1;
}
// --- FUN_004d1b10 at 0x004D1B10 (size: 464) ---
void __fastcall FUN_004d1b10(int param_1)
{
char cVar1;
FUN_0055e1d0();
cVar1 = FUN_005d4330();
if (cVar1 != '\0') {
(**(code **)(**(int **)(param_1 + 0x608) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x608) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x60c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x610) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x614) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x618) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x61c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x620) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x624) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x628) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x62c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x630) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x634) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x638) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x63c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x640) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x644) + 0x18))(1);
return;
}
(**(code **)(**(int **)(param_1 + 0x608) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x608) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x60c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x610) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x614) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x618) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x61c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x620) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x624) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x628) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x62c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x630) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x634) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x638) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x63c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x640) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x644) + 0x18))(0);
return;
}
// --- FUN_004d1ce0 at 0x004D1CE0 (size: 46) ---
undefined4 * __thiscall FUN_004d1ce0(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007bbf78;
param_1[0x17e] = &PTR_FUN_007bbcd0;
FUN_004db070();
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004d1d10 at 0x004D1D10 (size: 19) ---
void FUN_004d1d10(void)
{
FUN_00460270(0x10000053,&LAB_004d1ae0);
return;
}
// --- FUN_004d1d30 at 0x004D1D30 (size: 741) ---
void __fastcall FUN_004d1d30(int *param_1)
{
int *piVar1;
int *piVar2;
int iVar3;
FUN_004db140();
FUN_00460990(0x1000007e,param_1 + 0x181);
piVar2 = (int *)FUN_00463c00(0x1000068c);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(2);
}
param_1[0x182] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000068e);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x183] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000690);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(2);
}
param_1[0x184] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000692);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x185] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000068b);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x186] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000068d);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x187] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000068f);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x188] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000691);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x189] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000684);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x18a] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000686);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x18b] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000688);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x18c] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000068a);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x18d] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000683);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x18e] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000685);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[399] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000687);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[400] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000689);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x191] = iVar3;
piVar2 = (int *)FUN_0043c680();
if (piVar2 != (int *)0x0) {
piVar1 = param_1 + 0x17e;
(**(code **)(*piVar2 + 4))(0x4dd1fd,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1e6,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1fe,piVar1);
(**(code **)(*piVar2 + 4))(0x186b1,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1f0,piVar1);
}
FUN_00465f90(0xd);
/* WARNING: Could not recover jumptable at 0x004d200f. Too many branches */
/* WARNING: Treating indirect jump as call */
(**(code **)(*param_1 + 0x138))();
return;
}
// --- FUN_004d26f0 at 0x004D26F0 (size: 146) ---
undefined4 * __thiscall FUN_004d26f0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_004bd510(param_2,param_3);
param_1[0x186] = 0;
param_1[0x187] = 0;
param_1[0x188] = 0;
param_1[0x189] = 0;
param_1[0x18a] = 0;
param_1[0x18b] = 0;
param_1[0x18c] = 0;
param_1[0x18d] = 0;
param_1[0x18e] = 0;
param_1[399] = 0;
param_1[400] = 0;
param_1[0x191] = 0;
param_1[0x192] = 0;
param_1[0x193] = 0;
param_1[0x194] = 0;
param_1[0x195] = 0;
param_1[0x196] = 0;
*param_1 = &PTR_FUN_007bc450;
param_1[0x17e] = &PTR_FUN_007bc1a8;
return param_1;
}
// --- FUN_004d2810 at 0x004D2810 (size: 46) ---
undefined4 * __thiscall FUN_004d2810(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007bc450;
param_1[0x17e] = &PTR_FUN_007bc1a8;
FUN_004bd5d0();
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004d2840 at 0x004D2840 (size: 19) ---
void FUN_004d2840(void)
{
FUN_00460270(0x1000004f,&LAB_004d27d0);
return;
}
// --- FUN_004d2860 at 0x004D2860 (size: 737) ---
void __fastcall FUN_004d2860(int *param_1)
{
int *piVar1;
int *piVar2;
int iVar3;
FUN_004bdca0();
FUN_00460990(0x1000007e,param_1 + 0x186);
piVar2 = (int *)FUN_00463c00(0x1000065c);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(2);
}
param_1[0x187] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000065e);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(2);
}
param_1[0x188] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000660);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x189] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000662);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(2);
}
param_1[0x18a] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000065b);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x18b] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000065d);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x18c] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000065f);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x18d] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000661);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x18e] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000654);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[399] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000656);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[400] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000658);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x191] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000065a);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x192] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000653);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x193] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000655);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x194] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000657);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x195] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000659);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x196] = iVar3;
piVar2 = (int *)FUN_0043c680();
if (piVar2 != (int *)0x0) {
piVar1 = param_1 + 0x17e;
(**(code **)(*piVar2 + 4))(0x4dd1f8,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1f0,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd21f,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd25c,piVar1);
}
FUN_00465f90(1);
FUN_00465f90(0xd);
/* WARNING: Could not recover jumptable at 0x004d2b3b. Too many branches */
/* WARNING: Treating indirect jump as call */
(**(code **)(*param_1 + 0x138))();
return;
}
// --- FUN_004d2ee0 at 0x004D2EE0 (size: 137) ---
undefined4 * __thiscall FUN_004d2ee0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_004cdd60(param_2,param_3);
param_1[0x196] = 0;
param_1[0x197] = 0;
param_1[0x198] = 0;
param_1[0x199] = 0;
param_1[0x19a] = 0;
param_1[0x19b] = 0;
param_1[0x19c] = 0;
param_1[0x19d] = 0;
param_1[0x19e] = 0;
param_1[0x19f] = 0;
param_1[0x1a0] = 0;
param_1[0x1a1] = 0;
param_1[0x1a2] = 0;
param_1[0x1a3] = 0;
param_1[0x1a4] = 0;
param_1[0x1a5] = 0;
*param_1 = &PTR_FUN_007bc7c8;
param_1[1] = &PTR_LAB_007bc690;
return param_1;
}
// --- FUN_004d3000 at 0x004D3000 (size: 457) ---
void __fastcall FUN_004d3000(int param_1)
{
char cVar1;
int iVar2;
iVar2 = FUN_0055e1d0();
if (iVar2 != 0) {
FUN_0055e1d0();
cVar1 = FUN_005d4330();
if (cVar1 != '\0') {
(**(code **)(**(int **)(param_1 + 0x658) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x65c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x660) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x664) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x668) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x66c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x670) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x674) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x678) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x67c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x680) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x684) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x688) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x68c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x690) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x694) + 0x18))(1);
return;
}
}
(**(code **)(**(int **)(param_1 + 0x658) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x65c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x660) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x664) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x668) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x66c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x670) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x674) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x678) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x67c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x680) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x684) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x688) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x68c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x690) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x694) + 0x18))(0);
return;
}
// --- FUN_004d31d0 at 0x004D31D0 (size: 125) ---
void FUN_004d31d0(int param_1,undefined4 param_2)
{
int iVar1;
char cVar2;
int iVar3;
undefined4 unaff_retaddr;
iVar1 = param_1;
iVar3 = FUN_00429a00();
if (iVar3 == 0x10000080) {
if (*(int **)(iVar1 + 4) != (int *)0x0) {
cVar2 = (**(code **)(**(int **)(iVar1 + 4) + 0x88))(&param_1);
if (cVar2 != '\0') {
FUN_004f4820(unaff_retaddr);
}
}
}
else {
if (iVar3 != 0x10000081) {
FUN_004f3d40(iVar1,param_2);
return;
}
if (*(int **)(iVar1 + 4) != (int *)0x0) {
cVar2 = (**(code **)(**(int **)(iVar1 + 4) + 0x88))(&param_1);
if (cVar2 != '\0') {
FUN_004f48a0(unaff_retaddr);
return;
}
}
}
return;
}
// --- FUN_004d3280 at 0x004D3280 (size: 19) ---
void FUN_004d3280(void)
{
FUN_00460270(0x10000050,&LAB_004d2fb0);
return;
}
// --- FUN_004d3ae0 at 0x004D3AE0 (size: 146) ---
undefined4 * __thiscall FUN_004d3ae0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_004c0620(param_2,param_3);
param_1[0x17f] = 0;
param_1[0x180] = 0;
param_1[0x181] = 0;
param_1[0x182] = 0;
param_1[0x183] = 0;
param_1[0x184] = 0;
param_1[0x185] = 0;
param_1[0x186] = 0;
param_1[0x187] = 0;
param_1[0x188] = 0;
param_1[0x189] = 0;
param_1[0x18a] = 0;
param_1[0x18b] = 0;
param_1[0x18c] = 0;
param_1[0x18d] = 0;
param_1[0x18e] = 0;
param_1[399] = 0;
*param_1 = &PTR_FUN_007bce10;
param_1[0x17e] = &PTR_FUN_007bcb68;
return param_1;
}
// --- FUN_004d3bf0 at 0x004D3BF0 (size: 45) ---
void FUN_004d3bf0(int *param_1)
{
if ((param_1[2] == 1) && (*param_1 == 0x100000fa)) {
FUN_00479f40(1);
}
FUN_004c0710(param_1);
return;
}
// --- FUN_004d3c20 at 0x004D3C20 (size: 464) ---
void __fastcall FUN_004d3c20(int param_1)
{
char cVar1;
FUN_0055e1d0();
cVar1 = FUN_005d4330();
if (cVar1 != '\0') {
(**(code **)(**(int **)(param_1 + 0x600) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x600) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x604) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x608) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x60c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x610) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x614) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x618) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x61c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x620) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x624) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x628) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x62c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x630) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x634) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x638) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x63c) + 0x18))(1);
return;
}
(**(code **)(**(int **)(param_1 + 0x600) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x600) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x604) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x608) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x60c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x610) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x614) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x618) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x61c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x620) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x624) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x628) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x62c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x630) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x634) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x638) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x63c) + 0x18))(0);
return;
}
// --- FUN_004d3df0 at 0x004D3DF0 (size: 46) ---
undefined4 * __thiscall FUN_004d3df0(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007bce10;
param_1[0x17e] = &PTR_FUN_007bcb68;
FUN_004c0690();
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004d3e20 at 0x004D3E20 (size: 19) ---
void FUN_004d3e20(void)
{
FUN_00460270(0x10000052,&LAB_004d3bc0);
return;
}
// --- FUN_004d3e40 at 0x004D3E40 (size: 683) ---
void __fastcall FUN_004d3e40(int *param_1)
{
int *piVar1;
int iVar2;
thunk_FUN_004639a0();
piVar1 = (int *)FUN_00463c00(0x1000064c);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(2);
}
param_1[0x180] = iVar2;
piVar1 = (int *)FUN_00463c00(0x1000064e);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(2);
}
param_1[0x181] = iVar2;
piVar1 = (int *)FUN_00463c00(0x10000650);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(2);
}
param_1[0x182] = iVar2;
piVar1 = (int *)FUN_00463c00(0x10000652);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(2);
}
param_1[0x183] = iVar2;
piVar1 = (int *)FUN_00463c00(0x1000064b);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(2);
}
param_1[0x184] = iVar2;
piVar1 = (int *)FUN_00463c00(0x1000064d);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(2);
}
param_1[0x185] = iVar2;
piVar1 = (int *)FUN_00463c00(0x1000064f);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(2);
}
param_1[0x186] = iVar2;
piVar1 = (int *)FUN_00463c00(0x10000651);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(2);
}
param_1[0x187] = iVar2;
piVar1 = (int *)FUN_00463c00(0x10000644);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[0x188] = iVar2;
piVar1 = (int *)FUN_00463c00(0x10000646);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[0x189] = iVar2;
piVar1 = (int *)FUN_00463c00(0x10000648);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[0x18a] = iVar2;
piVar1 = (int *)FUN_00463c00(0x1000064a);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[0x18b] = iVar2;
piVar1 = (int *)FUN_00463c00(0x10000643);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[0x18c] = iVar2;
piVar1 = (int *)FUN_00463c00(0x10000645);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[0x18d] = iVar2;
piVar1 = (int *)FUN_00463c00(0x10000647);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[0x18e] = iVar2;
piVar1 = (int *)FUN_00463c00(0x10000649);
if (piVar1 == (int *)0x0) {
iVar2 = 0;
}
else {
iVar2 = (**(code **)(*piVar1 + 0x94))(3);
}
param_1[399] = iVar2;
FUN_00460990(0x1000007e,param_1 + 0x17f);
piVar1 = (int *)FUN_0043c680();
if (piVar1 != (int *)0x0) {
(**(code **)(*piVar1 + 4))(0x4dd1f0,param_1 + 0x17e);
}
FUN_00465f90(0xd);
/* WARNING: Could not recover jumptable at 0x004d40e5. Too many branches */
/* WARNING: Treating indirect jump as call */
(**(code **)(*param_1 + 0x138))();
return;
}
// --- FUN_004d47e0 at 0x004D47E0 (size: 146) ---
undefined4 * __thiscall FUN_004d47e0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_004ab630(param_2,param_3);
param_1[0x18a] = 0;
param_1[0x18b] = 0;
param_1[0x18c] = 0;
param_1[0x18d] = 0;
param_1[0x18e] = 0;
param_1[399] = 0;
param_1[400] = 0;
param_1[0x191] = 0;
param_1[0x192] = 0;
param_1[0x193] = 0;
param_1[0x194] = 0;
param_1[0x195] = 0;
param_1[0x196] = 0;
param_1[0x197] = 0;
param_1[0x198] = 0;
param_1[0x199] = 0;
param_1[0x19a] = 0;
*param_1 = &PTR_FUN_007bd2e8;
param_1[0x17e] = &PTR_FUN_007bd040;
return param_1;
}
// --- FUN_004d4930 at 0x004D4930 (size: 464) ---
void __fastcall FUN_004d4930(int param_1)
{
char cVar1;
FUN_0055e1d0();
cVar1 = FUN_005d4330();
if (cVar1 != '\0') {
(**(code **)(**(int **)(param_1 + 0x62c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x62c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x630) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x634) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x638) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x63c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x640) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x644) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x648) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x64c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x650) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x654) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x658) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x65c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x660) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x664) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x668) + 0x18))(1);
return;
}
(**(code **)(**(int **)(param_1 + 0x62c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x62c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x630) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x634) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x638) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x63c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x640) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x644) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x648) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x64c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x650) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x654) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x658) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x65c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x660) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x664) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x668) + 0x18))(0);
return;
}
// --- FUN_004d4b00 at 0x004D4B00 (size: 46) ---
undefined4 * __thiscall FUN_004d4b00(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007bd2e8;
param_1[0x17e] = &PTR_FUN_007bd040;
FUN_004adbd0();
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004d4b30 at 0x004D4B30 (size: 19) ---
void FUN_004d4b30(void)
{
FUN_00460270(0x1000004c,&LAB_004d48c0);
return;
}
// --- FUN_004d4b50 at 0x004D4B50 (size: 767) ---
void __fastcall FUN_004d4b50(int *param_1)
{
int *piVar1;
int *piVar2;
int iVar3;
FUN_004ada20();
FUN_00460990(0x1000007e,param_1 + 0x18a);
piVar2 = (int *)FUN_00463c00(0x1000067c);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(2);
}
param_1[0x18b] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000067e);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x18c] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000680);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x18d] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000682);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x18e] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000067b);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[399] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000067d);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[400] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000067f);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x191] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000681);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x192] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000674);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x193] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000676);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x194] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000678);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x195] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000067a);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x196] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000673);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x197] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000675);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x198] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000677);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x199] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000679);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x19a] = iVar3;
piVar2 = (int *)FUN_0043c680();
if (piVar2 != (int *)0x0) {
piVar1 = param_1 + 0x17e;
(**(code **)(*piVar2 + 4))(0x4dd1e7,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1ed,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1ee,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1ef,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd255,piVar1);
(**(code **)(*piVar2 + 4))(0x186a8,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1f0,piVar1);
}
FUN_00465f90(0xd);
/* WARNING: Could not recover jumptable at 0x004d4e49. Too many branches */
/* WARNING: Treating indirect jump as call */
(**(code **)(*param_1 + 0x138))();
return;
}
// --- FUN_004d5400 at 0x004D5400 (size: 146) ---
undefined4 * __thiscall FUN_004d5400(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_004cd540(param_2,param_3);
param_1[0x184] = 0;
param_1[0x185] = 0;
param_1[0x186] = 0;
param_1[0x187] = 0;
param_1[0x188] = 0;
param_1[0x189] = 0;
param_1[0x18a] = 0;
param_1[0x18b] = 0;
param_1[0x18c] = 0;
param_1[0x18d] = 0;
param_1[0x18e] = 0;
param_1[399] = 0;
param_1[400] = 0;
param_1[0x191] = 0;
param_1[0x192] = 0;
param_1[0x193] = 0;
param_1[0x194] = 0;
*param_1 = &PTR_FUN_007bd7c0;
param_1[0x17e] = &PTR_FUN_007bd518;
return param_1;
}
// --- FUN_004d5520 at 0x004D5520 (size: 464) ---
void __fastcall FUN_004d5520(int param_1)
{
char cVar1;
FUN_0055e1d0();
cVar1 = FUN_005d4330();
if (cVar1 != '\0') {
(**(code **)(**(int **)(param_1 + 0x614) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x614) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x618) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x61c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x620) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x624) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x628) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x62c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x630) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x634) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x638) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x63c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x640) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x644) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x648) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x64c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x650) + 0x18))(1);
return;
}
(**(code **)(**(int **)(param_1 + 0x614) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x614) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x618) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x61c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x620) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x624) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x628) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x62c) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x630) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x634) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x638) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x63c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x640) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x644) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x648) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x64c) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x650) + 0x18))(0);
return;
}
// --- FUN_004d56f0 at 0x004D56F0 (size: 46) ---
undefined4 * __thiscall FUN_004d56f0(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007bd7c0;
param_1[0x17e] = &PTR_FUN_007bd518;
FUN_004cd600();
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004d5720 at 0x004D5720 (size: 19) ---
void FUN_004d5720(void)
{
FUN_00460270(0x1000004e,&LAB_004d54e0);
return;
}
// --- FUN_004d5740 at 0x004D5740 (size: 715) ---
void __fastcall FUN_004d5740(int *param_1)
{
int *piVar1;
int *piVar2;
int iVar3;
FUN_004cd7f0();
FUN_00460990(0x1000007e,param_1 + 0x184);
piVar2 = (int *)FUN_00463c00(0x1000066c);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(2);
}
param_1[0x185] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000066e);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x186] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000670);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(2);
}
param_1[0x187] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000672);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x188] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000066b);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x189] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000066d);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x18a] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000066f);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x18b] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000671);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x18c] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000664);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x18d] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000666);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x18e] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000668);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[399] = iVar3;
piVar2 = (int *)FUN_00463c00(0x1000066a);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[400] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000663);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x191] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000665);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x192] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000667);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x193] = iVar3;
piVar2 = (int *)FUN_00463c00(0x10000669);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x194] = iVar3;
piVar2 = (int *)FUN_0043c680();
if (piVar2 != (int *)0x0) {
piVar1 = param_1 + 0x17e;
(**(code **)(*piVar2 + 4))(0x4dd1f8,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1fb,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1f0,piVar1);
}
FUN_00465f90(0xd);
/* WARNING: Could not recover jumptable at 0x004d5a05. Too many branches */
/* WARNING: Treating indirect jump as call */
(**(code **)(*param_1 + 0x138))();
return;
}
// --- FUN_004d5ba0 at 0x004D5BA0 (size: 146) ---
undefined4 * __thiscall FUN_004d5ba0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_004f6740(param_2,param_3);
param_1[0x184] = 0;
param_1[0x185] = 0;
param_1[0x186] = 0;
param_1[0x187] = 0;
param_1[0x188] = 0;
param_1[0x189] = 0;
param_1[0x18a] = 0;
param_1[0x18b] = 0;
param_1[0x18c] = 0;
param_1[0x18d] = 0;
param_1[0x18e] = 0;
param_1[399] = 0;
param_1[400] = 0;
param_1[0x191] = 0;
param_1[0x192] = 0;
param_1[0x193] = 0;
param_1[0x194] = 0;
*param_1 = &PTR_FUN_007bdc98;
param_1[0x17e] = &PTR_FUN_007bd9f0;
return param_1;
}
// --- FUN_004d5cb0 at 0x004D5CB0 (size: 46) ---
void FUN_004d5cb0(int param_1)
{
int iVar1;
int iVar2;
iVar1 = param_1;
iVar2 = FUN_00429a00();
if (((iVar2 == 0x10000080) || (iVar2 == 0x10000081)) && (*(int **)(iVar1 + 4) != (int *)0x0)) {
(**(code **)(**(int **)(iVar1 + 4) + 0x88))(&param_1);
}
return;
}
// --- FUN_004d5ce0 at 0x004D5CE0 (size: 46) ---
undefined4 * __thiscall FUN_004d5ce0(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007bdc98;
param_1[0x17e] = &PTR_FUN_007bd9f0;
FUN_004f67d0();
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004d5d10 at 0x004D5D10 (size: 19) ---
void FUN_004d5d10(void)
{
FUN_00460270(0x10000054,&LAB_004d5c80);
return;
}
// --- FUN_004d5d30 at 0x004D5D30 (size: 715) ---
void __fastcall FUN_004d5d30(int *param_1)
{
int *piVar1;
int *piVar2;
int iVar3;
FUN_004f6970();
FUN_00460990(0x1000007e,param_1 + 0x184);
piVar2 = (int *)FUN_00463c00(0x100006ae);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(2);
}
param_1[0x185] = iVar3;
piVar2 = (int *)FUN_00463c00(0x100006b0);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x186] = iVar3;
piVar2 = (int *)FUN_00463c00(0x100006b2);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x187] = iVar3;
piVar2 = (int *)FUN_00463c00(0x100006b4);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x188] = iVar3;
piVar2 = (int *)FUN_00463c00(0x100006ad);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x189] = iVar3;
piVar2 = (int *)FUN_00463c00(0x100006af);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x18a] = iVar3;
piVar2 = (int *)FUN_00463c00(0x100006b1);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x18b] = iVar3;
piVar2 = (int *)FUN_00463c00(0x100006b3);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(9);
}
param_1[0x18c] = iVar3;
piVar2 = (int *)FUN_00463c00(0x100006a6);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x18d] = iVar3;
piVar2 = (int *)FUN_00463c00(0x100006a8);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x18e] = iVar3;
piVar2 = (int *)FUN_00463c00(0x100006aa);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[399] = iVar3;
piVar2 = (int *)FUN_00463c00(0x100006ac);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[400] = iVar3;
piVar2 = (int *)FUN_00463c00(0x100006a5);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x191] = iVar3;
piVar2 = (int *)FUN_00463c00(0x100006a7);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x192] = iVar3;
piVar2 = (int *)FUN_00463c00(0x100006a9);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x193] = iVar3;
piVar2 = (int *)FUN_00463c00(0x100006ab);
if (piVar2 == (int *)0x0) {
iVar3 = 0;
}
else {
iVar3 = (**(code **)(*piVar2 + 0x94))(3);
}
param_1[0x194] = iVar3;
piVar2 = (int *)FUN_0043c680();
if (piVar2 != (int *)0x0) {
piVar1 = param_1 + 0x17e;
(**(code **)(*piVar2 + 4))(0x4dd1f8,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1fb,piVar1);
(**(code **)(*piVar2 + 4))(0x4dd1f0,piVar1);
}
FUN_00465f90(0xd);
/* WARNING: Could not recover jumptable at 0x004d5ff5. Too many branches */
/* WARNING: Treating indirect jump as call */
(**(code **)(*param_1 + 0x138))();
return;
}
// --- FUN_004d6420 at 0x004D6420 (size: 53) ---
void FUN_004d6420(int *param_1)
{
if ((*param_1 == 0x1000004a) && (param_1[2] == 0x10000003)) {
FUN_0046e3e0(param_1[1]);
}
FUN_00462420(param_1);
return;
}
// --- FUN_004d6460 at 0x004D6460 (size: 182) ---
void __fastcall FUN_004d6460(int *param_1)
{
int iVar1;
uint uVar2;
undefined4 uVar3;
int iVar4;
param_1[2] = 0;
if ((param_1[1] & 0x80000000U) != 0x80000000) {
if ((*param_1 != 0) && (uVar2 = param_1[1] & 0x7fffffff, -1 < (int)(uVar2 - 1))) {
do {
uVar3 = FUN_0042dc80();
FUN_0042de30(uVar3);
FUN_0042e590();
uVar2 = uVar2 - 1;
} while (uVar2 != 0);
}
return;
}
iVar1 = *param_1;
if (iVar1 != 0) {
iVar4 = *(int *)(iVar1 + -4);
if (-1 < iVar4 + -1) {
do {
FUN_0042e590();
iVar4 = iVar4 + -1;
} while (iVar4 != 0);
}
operator_delete__((void *)(iVar1 + -4));
}
*param_1 = 0;
param_1[1] = 0;
return;
}
// --- FUN_004d6520 at 0x004D6520 (size: 77) ---
void __fastcall FUN_004d6520(int *param_1)
{
int iVar1;
int iVar2;
if (((param_1[1] & 0x80000000U) == 0x80000000) && (iVar1 = *param_1, iVar1 != 0)) {
iVar2 = *(int *)(iVar1 + -4);
if (-1 < iVar2 + -1) {
do {
FUN_0042e590();
iVar2 = iVar2 + -1;
} while (iVar2 != 0);
}
operator_delete__((void *)(iVar1 + -4));
}
return;
}
// --- FUN_004d6570 at 0x004D6570 (size: 286) ---
undefined4 __thiscall FUN_004d6570(int *param_1,uint param_2)
{
uint *puVar1;
uint uVar2;
uint *puVar3;
int iVar4;
uVar2 = param_2;
if ((uint)param_1[2] <= param_2) {
if (param_2 <= (param_1[1] & 0x7fffffffU)) {
return 1;
}
if (param_2 == 0) {
FUN_004d6460();
return 1;
}
puVar3 = (uint *)thunk_FUN_005df0f5(param_2 * 0x90 + 4);
if (puVar3 != (uint *)0x0) {
puVar1 = puVar3 + 1;
*puVar3 = param_2;
FUN_00401000(puVar1,0x90,param_2,FUN_0042dc80);
if (puVar1 != (uint *)0x0) {
if (*param_1 != 0) {
param_2 = param_1[2];
if (-1 < (int)(param_2 + -1)) {
iVar4 = (param_2 + -1) * 0x90;
do {
FUN_0042de30(*param_1 + iVar4);
iVar4 = iVar4 + -0x90;
param_2 = param_2 + -1;
} while (param_2 != 0);
}
if (((param_1[1] & 0x80000000U) == 0x80000000) && (iVar4 = *param_1, iVar4 != 0)) {
param_2 = *(int *)(iVar4 + -4);
if (-1 < (int)(param_2 + -1)) {
do {
FUN_0042e590();
param_2 = param_2 + -1;
} while (param_2 != 0);
}
operator_delete__((void *)(iVar4 + -4));
}
}
*param_1 = (int)puVar1;
param_1[1] = uVar2 | 0x80000000;
return 1;
}
}
}
return 0;
}
// --- FUN_004d6690 at 0x004D6690 (size: 72) ---
undefined4 * __thiscall FUN_004d6690(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_00472670(param_2,param_3);
param_1[0x17e] = &PTR_FUN_007ccb60;
*param_1 = &PTR_FUN_007be0c8;
param_1[0x17e] = &PTR_FUN_007bde20;
param_1[0x180] = 0;
param_1[0x181] = 0;
param_1[0x182] = 0;
return param_1;
}
// --- FUN_004d6830 at 0x004D6830 (size: 89) ---
void __fastcall FUN_004d6830(undefined4 *param_1)
{
undefined4 *puVar1;
int *piVar2;
puVar1 = param_1 + 0x17e;
*param_1 = &PTR_FUN_007be0c8;
*puVar1 = &PTR_FUN_007bde20;
FUN_00465fb0(3);
piVar2 = (int *)FUN_0043c680();
if (piVar2 != (int *)0x0) {
(**(code **)(*piVar2 + 0xc))(puVar1);
}
param_1[0x17f] = 0;
FUN_004d6520();
*puVar1 = &PTR_FUN_007ccb60;
FUN_0043c610();
FUN_004726c0();
return;
}
// --- FUN_004d68c0 at 0x004D68C0 (size: 324) ---
void __thiscall FUN_004d68c0(int *param_1,char param_2,char param_3,wchar_t *param_4)
{
wchar_t _Ch;
undefined *puVar1;
wchar_t *pwVar2;
wchar_t *pwVar3;
LONG LVar4;
LONG *lpAddend;
int iVar5;
wchar_t *pwVar6;
pwVar6 = (wchar_t *)*param_1;
iVar5 = *(int *)(pwVar6 + -2) + -1;
if (param_2 != '\0') {
_Ch = *pwVar6;
while ((_Ch != L'\0' && (pwVar2 = wcschr(param_4,_Ch), pwVar2 != (wchar_t *)0x0))) {
_Ch = pwVar6[1];
pwVar6 = pwVar6 + 1;
iVar5 = iVar5 + -1;
}
}
if ((param_3 != '\0') && (iVar5 != 0)) {
pwVar2 = pwVar6 + iVar5 + -1;
do {
pwVar3 = wcschr(param_4,*pwVar2);
if (pwVar3 == (wchar_t *)0x0) break;
iVar5 = iVar5 + -1;
pwVar2 = pwVar2 + -1;
} while (iVar5 != 0);
}
pwVar2 = (wchar_t *)*param_1;
if ((pwVar6 == pwVar2) && (iVar5 == *(int *)(pwVar2 + -2) + -1)) {
iVar5 = InterlockedDecrement((LONG *)(param_4 + -8));
}
else {
InterlockedIncrement((LONG *)(pwVar2 + -8));
puVar1 = (undefined *)*param_1;
if (puVar1 != PTR_DAT_00818340) {
LVar4 = InterlockedDecrement((LONG *)(puVar1 + -0x10));
if ((LVar4 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) {
(*(code *)**(undefined4 **)(puVar1 + -0x14))(1);
}
lpAddend = (LONG *)(PTR_DAT_00818340 + -0x10);
*param_1 = (int)PTR_DAT_00818340;
InterlockedIncrement(lpAddend);
}
if (iVar5 != 0) {
FUN_00402490(pwVar6,iVar5);
}
LVar4 = InterlockedDecrement((LONG *)(pwVar2 + -8));
if ((LVar4 == 0) && (pwVar2 + -10 != (wchar_t *)0x0)) {
(*(code *)**(undefined4 **)(pwVar2 + -10))(1);
}
iVar5 = InterlockedDecrement((LONG *)(param_4 + -8));
}
if ((iVar5 == 0) && (param_4 + -10 != (wchar_t *)0x0)) {
(*(code *)**(undefined4 **)(param_4 + -10))(1);
}
return;
}
// --- FUN_004d6a10 at 0x004D6A10 (size: 30) ---
void * __thiscall FUN_004d6a10(void *param_1,byte param_2)
{
FUN_004d6830();
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004d6a30 at 0x004D6A30 (size: 19) ---
void FUN_004d6a30(void)
{
FUN_00460270(0x10000016,&LAB_004d6890);
return;
}
// --- FUN_004d6a50 at 0x004D6A50 (size: 583) ---
void __fastcall FUN_004d6a50(int param_1)
{
bool bVar1;
int *piVar2;
undefined4 uVar3;
int *piVar4;
undefined4 *puVar5;
int iVar6;
LONG LVar7;
char cVar8;
wchar_t *pwVar9;
wchar_t *pwStack_14;
int local_10;
uint local_c;
int iStack_8;
int iStack_4;
if (*(int *)(param_1 + 0x5fc) != 0) {
bVar1 = false;
local_c = 0;
if (*(int *)(param_1 + 0x608) != 0) {
local_10 = 0;
do {
piVar2 = (int *)FUN_0045e520(0,0x10000012,0x1000004a);
if (piVar2 != (int *)0x0) {
piVar2 = (int *)(**(code **)(*piVar2 + 0x94))(0xc);
if (piVar2 != (int *)0x0) {
FUN_0042e980(&pwStack_14,0);
iVar6 = DAT_00837750;
InterlockedIncrement((LONG *)(DAT_00837750 + -0x10));
FUN_004d68c0(0,1,iVar6);
FUN_0046a740(&pwStack_14);
FUN_00466d20(&DAT_0081c5a0);
iVar6 = *piVar2;
uVar3 = FUN_0069fe70();
uVar3 = FUN_0069fe60(uVar3);
(**(code **)(iVar6 + 0x30))(uVar3);
FUN_004686b0();
iVar6 = *piVar2;
uVar3 = FUN_0069fe60(piVar2[0x181]);
(**(code **)(iVar6 + 0x30))(uVar3);
if (0 < *(int *)(*(int *)(param_1 + 0x5fc) + 0x610)) {
piVar4 = (int *)FUN_0046dc50(0);
iStack_4 = (**(code **)(*piVar4 + 0x94))(0xc);
if (iStack_4 != 0) {
puVar5 = (undefined4 *)FUN_00466830(&iStack_8);
pwVar9 = (wchar_t *)*puVar5;
if (*(int *)(pwStack_14 + -2) == *(int *)(pwVar9 + -2)) {
if (((*(int *)(pwStack_14 + -4) == *(int *)(pwVar9 + -4)) ||
(*(int *)(pwStack_14 + -4) == -1)) || (*(int *)(pwVar9 + -4) == -1)) {
iVar6 = wcscmp(pwStack_14,pwVar9);
cVar8 = '\x01' - (iVar6 != 0);
}
else {
cVar8 = '\0';
}
}
else {
cVar8 = '\0';
}
puVar5 = (undefined4 *)(iStack_8 + -0x14);
LVar7 = InterlockedDecrement((LONG *)(iStack_8 + -0x10));
if ((LVar7 == 0) && (puVar5 != (undefined4 *)0x0)) {
(**(code **)*puVar5)(1);
}
if (cVar8 != '\0') {
FUN_0046e3e0(iStack_4);
}
}
}
FUN_0046eb20(piVar2,0);
iVar6 = *(int *)(*(int *)(param_1 + 0x5fc) + 0x610);
if (*(int *)(param_1 + 0x60c) < iVar6) {
FUN_0046e430(iVar6 + -1);
}
pwVar9 = pwStack_14 + -10;
bVar1 = true;
LVar7 = InterlockedDecrement((LONG *)(pwStack_14 + -8));
if ((LVar7 == 0) && (pwVar9 != (wchar_t *)0x0)) {
(*(code *)**(undefined4 **)pwVar9)(1);
}
}
}
local_c = local_c + 1;
local_10 = local_10 + 0x90;
} while (local_c < *(uint *)(param_1 + 0x608));
if (bVar1) {
if (*(int *)(*(int *)(param_1 + 0x5fc) + 0x610) != 0) {
FUN_0046ed00(0);
}
*(undefined4 *)(param_1 + 0x608) = 0;
}
}
}
return;
}
// --- FUN_004d6ca0 at 0x004D6CA0 (size: 75) ---
undefined1 __thiscall FUN_004d6ca0(int param_1,undefined4 param_2)
{
char cVar1;
uint uVar2;
undefined4 uVar3;
uVar2 = *(uint *)(param_1 + 4) & 0x7fffffff;
if (uVar2 <= *(uint *)(param_1 + 8)) {
uVar3 = FUN_00453850(uVar2 + 1);
cVar1 = FUN_004d6570(uVar3);
if (cVar1 == '\0') {
return 0;
}
}
FUN_0042de30(param_2);
*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
return 1;
}
// --- FUN_004d6d20 at 0x004D6D20 (size: 231) ---
undefined4 * __thiscall FUN_004d6d20(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_004e5db0(param_2,param_3);
*param_1 = &PTR_FUN_007be6c0;
param_1[0x17e] = &PTR_FUN_007be418;
param_1[0x18a] = 0;
param_1[0x18b] = 0;
param_1[0x18c] = 0;
param_1[0x18d] = 0;
param_1[0x18e] = 0;
param_1[400] = 0;
param_1[0x191] = 0;
param_1[0x192] = 0;
param_1[0x193] = 0;
param_1[0x194] = 0;
param_1[0x195] = 0;
param_1[0x196] = 0;
param_1[0x197] = 0;
param_1[0x198] = 0;
param_1[0x199] = 0;
param_1[0x19a] = 0;
param_1[0x19b] = 0;
param_1[0x19c] = 0;
param_1[0x19d] = 0;
param_1[0x19e] = 0;
FUN_004f7720();
param_1[0x1b8] = 0;
param_1[0x1b9] = 0;
param_1[0x1ba] = 0;
param_1[0x1bb] = 0;
param_1[0x1bc] = 0;
param_1[0x1bd] = 0;
param_1[0x1be] = 0;
param_1[0x1bf] = 0;
param_1[0x1c0] = 0;
return param_1;
}
// --- FUN_004d6e50 at 0x004D6E50 (size: 139) ---
void __fastcall FUN_004d6e50(undefined4 *param_1)
{
int *piVar1;
*param_1 = &PTR_FUN_007be6c0;
param_1[0x17e] = &PTR_FUN_007be418;
if (param_1[0x18e] != 0) {
param_1[0x18e] = 0;
}
if (param_1[0x19e] != 0) {
FUN_00454490();
}
if ((undefined4 *)param_1[0x18b] != (undefined4 *)0x0) {
(*(code *)**(undefined4 **)param_1[0x18b])(1);
}
param_1[0x18b] = 0;
FUN_00453c90(1);
piVar1 = (int *)FUN_0043c680();
if (piVar1 != (int *)0x0) {
(**(code **)(*piVar1 + 0xc))(param_1 + 0x17e);
}
FUN_004f6e70();
FUN_004e5e90();
return;
}
// --- FUN_004d6f20 at 0x004D6F20 (size: 62) ---
void FUN_004d6f20(void)
{
int iVar1;
undefined4 uVar2;
iVar1 = *DAT_00870340;
uVar2 = FUN_0069fe70(0);
uVar2 = FUN_0069fe60(uVar2);
uVar2 = FUN_0069fe30(uVar2);
uVar2 = FUN_0069fe00(uVar2);
(**(code **)(iVar1 + 0x40))(uVar2);
return;
}
// --- FUN_004d6f60 at 0x004D6F60 (size: 155) ---
void __thiscall FUN_004d6f60(int param_1,undefined4 param_2)
{
undefined4 uVar1;
float10 fVar2;
if (*(int *)(param_1 + 0x638) == 0) {
fVar2 = (float10)FUN_00451c20();
*(double *)(param_1 + 0x630) = (double)fVar2;
}
*(float *)(param_1 + 0x670) = (float)*(double *)(param_1 + 0x630);
*(undefined4 *)(param_1 + 0x640) = 0;
*(undefined4 *)(param_1 + 0x644) = 0;
*(undefined4 *)(param_1 + 0x648) = 0;
*(undefined4 *)(param_1 + 0x64c) = 0;
*(undefined4 *)(param_1 + 0x650) = 0;
*(undefined4 *)(param_1 + 0x654) = 0;
*(undefined4 *)(param_1 + 0x658) = 0;
*(undefined4 *)(param_1 + 0x65c) = 0;
*(undefined4 *)(param_1 + 0x638) = param_2;
uVar1 = DAT_008379ac;
*(undefined4 *)(param_1 + 0x660) = DAT_008379a8;
*(undefined4 *)(param_1 + 0x664) = uVar1;
FUN_00564d30();
uVar1 = FUN_00564d50();
FUN_00551560(0x6a,uVar1);
return;
}
// --- FUN_004d7000 at 0x004D7000 (size: 147) ---
void FUN_004d7000(void)
{
float fVar1;
float10 fVar2;
undefined4 uVar3;
undefined1 local_90 [144];
FUN_0042dc80();
FUN_0042c9c0();
uVar3 = 2;
fVar2 = (float10)FUN_0054d340(2);
FUN_0042e080(DAT_00841268,(double)fVar2,uVar3);
fVar1 = DAT_00867318;
if (DAT_0081fc78 != '\0') {
fVar1 = DAT_0086731c;
}
FUN_0042e080(DAT_0084126c,(double)fVar1,2);
FUN_0046a350(local_90);
FUN_0042e590();
return;
}
// --- FUN_004d70a0 at 0x004D70A0 (size: 241) ---
void __fastcall FUN_004d70a0(int param_1)
{
char cVar1;
int iVar2;
iVar2 = FUN_0055e1d0();
if (iVar2 != 0) {
FUN_0055e1d0();
cVar1 = FUN_005d4330();
if (cVar1 != '\0') {
(**(code **)(**(int **)(param_1 + 0x6e4) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x6e8) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x6ec) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x6f0) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x6f4) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x6f8) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x6fc) + 0x18))(0);
(**(code **)(**(int **)(param_1 + 0x700) + 0x18))(0);
return;
}
}
(**(code **)(**(int **)(param_1 + 0x6e4) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x6e8) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x6ec) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x6f0) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x6f4) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x6f8) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x6fc) + 0x18))(1);
(**(code **)(**(int **)(param_1 + 0x700) + 0x18))(1);
return;
}
// --- FUN_004d71c0 at 0x004D71C0 (size: 30) ---
void * __thiscall FUN_004d71c0(void *param_1,byte param_2)
{
FUN_004d6e50();
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004d71e0 at 0x004D71E0 (size: 19) ---
void FUN_004d71e0(void)
{
FUN_00460270(0x10000014,&LAB_004d6ee0);
return;
}
// --- FUN_004d7200 at 0x004D7200 (size: 59) ---
void __fastcall FUN_004d7200(int param_1)
{
undefined4 uVar1;
if (*(int *)(param_1 + 0x638) != 0) {
*(undefined4 *)(param_1 + 0x638) = 4;
uVar1 = DAT_008379ac;
*(undefined4 *)(param_1 + 0x660) = DAT_008379a8;
*(undefined4 *)(param_1 + 0x664) = uVar1;
FUN_00451c00(0,0);
}
return;
}
// --- FUN_004d7a90 at 0x004D7A90 (size: 1703) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __fastcall FUN_004d7a90(int param_1)
{
double dVar1;
char cVar2;
char cVar3;
short sVar4;
int iVar5;
LONG LVar6;
double *pdVar7;
undefined4 uVar8;
undefined4 *puVar9;
float10 fVar10;
float local_b8 [3];
undefined4 uStack_ac;
double local_a8;
undefined4 local_a0;
undefined1 auStack_98 [148];
local_b8[2] = (float)DAT_008379a8;
uStack_ac = DAT_008379ac;
iVar5 = FUN_0055e1d0();
if (iVar5 != 0) {
if ((*(char *)(iVar5 + 0x221) != '\0') &&
(*(double *)(iVar5 + 0x1f8) < (double)CONCAT44(uStack_ac,local_b8[2]))) {
FUN_004d6f60(1);
FUN_0055e2a0(1);
FUN_0055e4f0();
}
cVar3 = *(char *)(iVar5 + 0x238);
cVar2 = FUN_00451c60();
if (cVar2 != cVar3) {
cVar3 = FUN_00451c60();
if (cVar3 == '\0') {
if (*(int *)(param_1 + 0x638) == 3) {
FUN_004d7200();
}
}
else {
FUN_0055e2a0(1);
FUN_004d6f60(3);
}
}
iVar5 = *(int *)(param_1 + 0x638);
if (iVar5 == 0) {
iVar5 = FUN_00451c80();
if (iVar5 != 0) {
FUN_00563c30();
}
}
else {
if ((iVar5 == 1) || (iVar5 == 6)) {
FUN_004f6ce0(1);
}
iVar5 = *(int *)(param_1 + 0x638);
if ((((iVar5 == 2) || (iVar5 == 3)) || (iVar5 == 4)) || (iVar5 == 5)) {
cVar3 = FUN_004603a0();
if (cVar3 == '\0') {
FUN_004f6ce0(0);
FUN_00415640(local_b8,0x10000002,7);
FUN_005101c0(local_b8[0],1,1,DAT_007be3f0);
local_a8 = -14.400003387331962;
local_a0 = 0x3f6147ae;
FUN_004523a0(&local_a8);
(**(code **)(**(int **)(param_1 + 0x678) + 0x18))(1);
FUN_00451d80();
}
dVar1 = *(double *)(param_1 + 0x648) + *(double *)(param_1 + 0x640);
if (dVar1 < (double)CONCAT44(uStack_ac,local_b8[2]) ==
(dVar1 == (double)CONCAT44(uStack_ac,local_b8[2]))) {
sVar4 = FUN_004ef1d0((float)(((float10)(double)CONCAT44(uStack_ac,local_b8[2]) -
(float10)*(double *)(param_1 + 0x640)) /
(float10)*(double *)(param_1 + 0x648)));
local_b8[0] = (float)(int)sVar4;
*(double *)(param_1 + 0x668) =
(*(double *)(param_1 + 0x658) - *(double *)(param_1 + 0x650)) *
(double)(int)local_b8[0] * _DAT_007be810 + *(double *)(param_1 + 0x650);
}
else {
*(undefined4 *)(param_1 + 0x668) = *(undefined4 *)(param_1 + 0x658);
*(undefined4 *)(param_1 + 0x66c) = *(undefined4 *)(param_1 + 0x65c);
*(float *)(param_1 + 0x640) = local_b8[2];
*(undefined4 *)(param_1 + 0x644) = uStack_ac;
fVar10 = (float10)FUN_006853d0(0x33333333,0x3fe33333,0xcccccccd,0x3ffccccc);
*(double *)(param_1 + 0x648) = (double)fVar10;
*(undefined4 *)(param_1 + 0x650) = *(undefined4 *)(param_1 + 0x668);
*(undefined4 *)(param_1 + 0x654) = *(undefined4 *)(param_1 + 0x66c);
fVar10 = (float10)FUN_006853d0(0,0,0,0x40768000);
*(double *)(param_1 + 0x658) = (double)fVar10;
FUN_0042dc80();
FUN_00402730(L"In Portal Space - Please Wait...");
FUN_0042cbe0(local_b8,1);
puVar9 = (undefined4 *)((int)local_b8[0] + -0x14);
LVar6 = InterlockedDecrement((LONG *)((int)local_b8[0] + -0x10));
if ((LVar6 == 0) && (puVar9 != (undefined4 *)0x0)) {
(**(code **)*puVar9)(1);
}
FUN_00693500(0x1a,auStack_98);
FUN_0042e590();
}
local_a8 = (double)((ulonglong)(uint)(float)*(double *)(param_1 + 0x668) << 0x20);
local_a0 = 0;
FUN_004537a0(&local_a8);
}
if ((*(int *)(param_1 + 0x638) == 1) || (*(int *)(param_1 + 0x638) == 5)) {
local_b8[0] = 0.0;
local_b8[1] = 1.875;
local_a8 = ((double)CONCAT44(uStack_ac,local_b8[2]) - *(double *)(param_1 + 0x660)) /
_DAT_007be3e8;
pdVar7 = &local_a8;
if (_DAT_007938c0 <= local_a8) {
pdVar7 = (double *)local_b8;
}
sVar4 = FUN_004ef1d0((float)*pdVar7);
fVar10 = ((float10)_DAT_007be3d0 - (float10)*(double *)(param_1 + 0x630)) *
(float10)(int)sVar4 * (float10)_DAT_007be810 +
(float10)*(double *)(param_1 + 0x630);
local_b8[0] = (float)fVar10;
*(float *)(param_1 + 0x670) = (float)fVar10;
FUN_00451c00(1,local_b8[0]);
}
if ((*(int *)(param_1 + 0x638) == 2) || (*(int *)(param_1 + 0x638) == 6)) {
local_b8[0] = 0.0;
local_b8[1] = 1.875;
local_a8 = ((double)CONCAT44(uStack_ac,local_b8[2]) - *(double *)(param_1 + 0x660)) /
_DAT_007be3e8;
pdVar7 = &local_a8;
if (_DAT_007938c0 <= local_a8) {
pdVar7 = (double *)local_b8;
}
sVar4 = FUN_004ef1d0((float)*pdVar7);
fVar10 = ((float10)*(double *)(param_1 + 0x630) - (float10)_DAT_007be3d0) *
(float10)(int)sVar4 * (float10)_DAT_007be810 + (float10)_DAT_007be3d0;
local_b8[0] = (float)fVar10;
*(float *)(param_1 + 0x670) = (float)fVar10;
FUN_00451c00(1,local_b8[0]);
}
if ((*(int *)(param_1 + 0x638) == 4) &&
(_DAT_007be3d8 <= (double)CONCAT44(uStack_ac,local_b8[2]) - *(double *)(param_1 + 0x660)))
{
iVar5 = FUN_00510250();
local_b8[0] = (float)(0x78 - iVar5);
if (0x78 - iVar5 < 0) {
local_b8[0] = local_b8[0] + _DAT_0079920c;
}
local_b8[0] = local_b8[0] / DAT_007be3f0;
if ((_DAT_007be3e0 <= (double)CONCAT44(uStack_ac,local_b8[2]) - *(double *)(param_1 + 0x660)
) || ((_DAT_007be3e8 + _DAT_007be808 < (double)local_b8[0] &&
((double)local_b8[0] < _DAT_007be3e8 + _DAT_007be800)))) {
*(undefined4 *)(param_1 + 0x638) = 5;
*(float *)(param_1 + 0x660) = local_b8[2];
*(undefined4 *)(param_1 + 0x664) = uStack_ac;
}
}
if ((*(int *)(param_1 + 0x638) == 1) &&
(_DAT_007be3e8 <= (double)CONCAT44(uStack_ac,local_b8[2]) - *(double *)(param_1 + 0x660)))
{
*(undefined4 *)(param_1 + 0x638) = 2;
*(float *)(param_1 + 0x660) = local_b8[2];
*(undefined4 *)(param_1 + 0x664) = uStack_ac;
}
if ((*(int *)(param_1 + 0x638) == 2) &&
(_DAT_007be3e8 <= (double)CONCAT44(uStack_ac,local_b8[2]) - *(double *)(param_1 + 0x660)))
{
*(undefined4 *)(param_1 + 0x638) = 3;
*(float *)(param_1 + 0x660) = local_b8[2];
*(undefined4 *)(param_1 + 0x664) = uStack_ac;
}
if ((*(int *)(param_1 + 0x638) == 5) &&
(_DAT_007be3e8 <= (double)CONCAT44(uStack_ac,local_b8[2]) - *(double *)(param_1 + 0x660)))
{
FUN_00451c00(1,*(undefined4 *)(param_1 + 0x670));
(**(code **)(**(int **)(param_1 + 0x678) + 0x18))(0);
FUN_00451d70();
FUN_00510230();
FUN_00564d30();
uVar8 = FUN_00564d50();
FUN_00551560(0x6b,uVar8);
*(undefined4 *)(param_1 + 0x638) = 6;
*(float *)(param_1 + 0x660) = local_b8[2];
*(undefined4 *)(param_1 + 0x664) = uStack_ac;
}
if ((*(int *)(param_1 + 0x638) == 6) &&
(_DAT_007be3e8 <= (double)CONCAT44(uStack_ac,local_b8[2]) - *(double *)(param_1 + 0x660)))
{
*(double *)(param_1 + 0x660) = (double)CONCAT44(uStack_ac,local_b8[2]) - _DAT_007be3e8;
FUN_00563c30();
FUN_0055e2a0(0);
*(undefined4 *)(param_1 + 0x638) = 0;
FUN_00451c00(0,0);
FUN_00451c80();
}
}
}
FUN_00564d30();
iVar5 = FUN_00564f90();
if (iVar5 != 0) {
FUN_00458c00();
}
if (*(int *)(param_1 + 0x674) != 0) {
FUN_004d7000();
}
return;
}
// --- FUN_004d8190 at 0x004D8190 (size: 56) ---
void __thiscall FUN_004d8190(undefined4 *param_1,undefined4 param_2)
{
*param_1 = param_2;
param_1[1] = DAT_00841280;
param_1[2] = DAT_00841284;
param_1[3] = DAT_00841288;
param_1[4] = DAT_0084128c;
param_1[5] = 0;
return;
}
// --- FUN_004d82e0 at 0x004D82E0 (size: 97) ---
void __fastcall FUN_004d82e0(int param_1)
{
char cVar1;
int iVar2;
iVar2 = FUN_0055e1d0();
if (iVar2 != 0) {
FUN_0055e1d0();
cVar1 = FUN_005d4330();
if (cVar1 != '\0') {
(**(code **)(**(int **)(param_1 + 0x654) + 0x9c))(0x10000063);
(**(code **)(**(int **)(param_1 + 0x658) + 0x18))(0);
return;
}
}
(**(code **)(**(int **)(param_1 + 0x654) + 0x9c))(0x10000064);
(**(code **)(**(int **)(param_1 + 0x658) + 0x18))(1);
return;
}
// --- FUN_004d8350 at 0x004D8350 (size: 1084) ---
void FUN_004d8350(undefined4 *param_1,int *param_2)
{
uint uVar1;
char cVar2;
int iVar3;
undefined4 uVar4;
undefined4 uVar5;
undefined4 uVar6;
undefined4 uVar7;
undefined4 uVar8;
undefined4 uVar9;
undefined4 uVar10;
undefined4 uVar11;
if ((param_2 != (int *)0x0) && (uVar1 = param_2[0x40], -1 < (char)uVar1)) {
if (param_2[0x41] != 0) {
switch(param_2[0x41]) {
case 1:
*param_1 = DAT_0081c69c;
param_1[1] = DAT_0081c6a0;
param_1[2] = DAT_0081c6a4;
param_1[3] = DAT_0081c6a8;
return;
case 2:
*param_1 = DAT_0081c6ac;
param_1[1] = DAT_0081c6b0;
param_1[2] = DAT_0081c6b4;
param_1[3] = DAT_0081c6b8;
return;
case 3:
*param_1 = DAT_0081c6cc;
param_1[1] = DAT_0081c6d0;
param_1[2] = DAT_0081c6d4;
param_1[3] = DAT_0081c6d8;
return;
case 4:
*param_1 = DAT_0081c6ec;
param_1[1] = DAT_0081c6f0;
param_1[2] = DAT_0081c6f4;
param_1[3] = DAT_0081c6f8;
return;
case 5:
*param_1 = DAT_0081c6dc;
param_1[1] = DAT_0081c6e0;
param_1[2] = DAT_0081c6e4;
param_1[3] = DAT_0081c6e8;
return;
case 6:
*param_1 = DAT_0081c6fc;
param_1[1] = DAT_0081c700;
param_1[2] = DAT_0081c704;
param_1[3] = DAT_0081c708;
return;
case 7:
*param_1 = DAT_0081c70c;
param_1[1] = DAT_0081c710;
param_1[2] = DAT_0081c714;
param_1[3] = DAT_0081c718;
return;
case 8:
*param_1 = DAT_0081c6bc;
param_1[1] = DAT_0081c6c0;
param_1[2] = DAT_0081c6c4;
param_1[3] = DAT_0081c6c8;
return;
case 9:
*param_1 = DAT_0081c71c;
param_1[1] = DAT_0081c720;
param_1[2] = DAT_0081c724;
param_1[3] = DAT_0081c728;
return;
case 10:
*param_1 = DAT_0081c72c;
param_1[1] = DAT_0081c730;
param_1[2] = DAT_0081c734;
param_1[3] = DAT_0081c738;
return;
default:
*param_1 = DAT_008412e4;
param_1[1] = DAT_008412e8;
param_1[2] = DAT_008412ec;
param_1[3] = DAT_008412f0;
return;
}
}
if ((uVar1 & 0x40000) != 0) {
*param_1 = DAT_00841354;
param_1[1] = DAT_00841358;
param_1[2] = DAT_0084135c;
param_1[3] = DAT_00841360;
return;
}
if ((uVar1 & 0x200) != 0) {
*param_1 = DAT_00841374;
param_1[1] = DAT_00841378;
param_1[2] = DAT_0084137c;
param_1[3] = DAT_00841380;
return;
}
if ((((uVar1 & 0x10) != 0) && (iVar3 = (**(code **)(*param_2 + 0x2c))(), iVar3 != 0)) &&
(iVar3 = (**(code **)(*param_2 + 0x10))(), iVar3 == 0)) {
*param_1 = DAT_00841314;
param_1[1] = DAT_00841318;
param_1[2] = DAT_0084131c;
param_1[3] = DAT_00841320;
return;
}
iVar3 = (**(code **)(*param_2 + 0x10))();
uVar11 = DAT_008412f0;
uVar9 = DAT_008412ec;
uVar7 = DAT_008412e8;
uVar5 = DAT_008412e4;
if (iVar3 != 0) {
if ((((param_2[0x40] & 0x100000U) == 0) ||
(uVar4 = DAT_008412fc, uVar6 = DAT_00841300, uVar8 = DAT_008412f4, uVar10 = DAT_008412f8,
(param_2[0x40] & 0x40U) != 0)) &&
((iVar3 = (**(code **)(*param_2 + 0x20))(), uVar4 = DAT_0084134c, uVar6 = DAT_00841350,
uVar8 = DAT_00841344, uVar10 = DAT_00841348, iVar3 == 0 &&
((iVar3 = (**(code **)(*param_2 + 0x24))(), uVar4 = DAT_008413ac, uVar6 = DAT_008413b0,
uVar8 = DAT_008413a4, uVar10 = DAT_008413a8, iVar3 == 0 &&
(uVar4 = uVar9, uVar6 = uVar11, uVar8 = uVar5, uVar10 = uVar7,
(param_2[0x40] & 0x200000U) != 0)))))) {
uVar4 = DAT_0084131c;
uVar6 = DAT_00841320;
uVar8 = DAT_00841314;
uVar10 = DAT_00841318;
}
FUN_00569e30();
cVar2 = FUN_00569ef0(param_2[2]);
uVar5 = DAT_0084139c;
uVar7 = DAT_008413a0;
uVar9 = DAT_00841394;
uVar11 = DAT_00841398;
if ((cVar2 == '\0') &&
(cVar2 = FUN_00569ed0(param_2[2]), uVar5 = uVar4, uVar7 = uVar6, uVar9 = uVar8,
uVar11 = uVar10, cVar2 != '\0')) {
uVar5 = DAT_0084138c;
uVar7 = DAT_00841390;
uVar9 = DAT_00841384;
uVar11 = DAT_00841388;
}
*param_1 = uVar9;
param_1[1] = uVar11;
param_1[2] = uVar5;
param_1[3] = uVar7;
return;
}
}
*param_1 = DAT_008412e4;
param_1[1] = DAT_008412e8;
param_1[2] = DAT_008412ec;
param_1[3] = DAT_008412f0;
return;
}
// --- FUN_004d87c0 at 0x004D87C0 (size: 200) ---
int FUN_004d87c0(int *param_1)
{
char cVar1;
undefined4 uVar2;
int *piVar3;
int iVar4;
if ((param_1 == (int *)0x0) || ((char)param_1[0x40] < '\0')) {
return 0;
}
FUN_00569e30();
cVar1 = FUN_00569ed0(param_1[2]);
if (cVar1 != '\0') {
cVar1 = FUN_00569ef0(param_1[2]);
return 6 - (uint)(cVar1 != '\0');
}
if (DAT_0083da58 == 0) {
uVar2 = 0;
}
else {
uVar2 = *(undefined4 *)(DAT_0083da58 + 0xf4);
}
piVar3 = (int *)FUN_005583f0(uVar2);
if (piVar3 != (int *)0x0) {
iVar4 = FUN_0058d460(piVar3);
if (iVar4 != 0) {
return 2;
}
iVar4 = (**(code **)(*param_1 + 0x20))();
if ((iVar4 != 0) && (iVar4 = (**(code **)(*piVar3 + 0x20))(), iVar4 != 0)) {
return 3;
}
iVar4 = (**(code **)(*param_1 + 0x24))();
if ((iVar4 != 0) && (iVar4 = (**(code **)(*piVar3 + 0x24))(), iVar4 != 0)) {
return 3;
}
}
return 4;
}
// --- FUN_004d8890 at 0x004D8890 (size: 51) ---
void FUN_004d8890(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
{
if (param_1 != 0) {
FUN_00440d20();
FUN_00443250(param_2,param_3,param_4,param_3,param_4);
}
return;
}
// --- FUN_004d88d0 at 0x004D88D0 (size: 163) ---
void FUN_004d88d0(int param_1,undefined4 param_2,int param_3,int param_4)
{
if (param_1 != 0) {
FUN_00440d20();
FUN_00443250(param_2,param_3,param_4 + -1,param_3,param_4 + -1);
FUN_00440d20();
FUN_00443250(param_2,param_3,param_4 + 1,param_3,param_4 + 1);
if (param_1 != 0) {
FUN_00440d20();
FUN_00443250(param_2,param_3 + -1,param_4,param_3 + -1,param_4);
}
}
if (param_1 != 0) {
FUN_00440d20();
FUN_00443250(param_2,param_3 + 1,param_4,param_3 + 1,param_4);
}
return;
}
// --- FUN_004d8980 at 0x004D8980 (size: 179) ---
void FUN_004d8980(int param_1,undefined4 param_2,int param_3,int param_4)
{
int iVar1;
int iVar2;
iVar1 = param_3 + 1;
iVar2 = param_4 + 1;
param_3 = param_3 + -1;
param_4 = param_4 + -1;
if (param_1 != 0) {
FUN_00440d20();
FUN_00443250(param_2,iVar1,iVar2,iVar1,iVar2);
FUN_00440d20();
FUN_00443250(param_2,param_3,param_4,param_3,param_4);
if (param_1 != 0) {
FUN_00440d20();
FUN_00443250(param_2,param_3,iVar2,param_3,iVar2);
if (param_1 != 0) {
FUN_00440d20();
FUN_00443250(param_2,iVar1,param_4,iVar1,param_4);
}
}
}
return;
}
// --- FUN_004d8a40 at 0x004D8A40 (size: 76) ---
void FUN_004d8a40(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
{
if (param_1 != 0) {
FUN_00440d20();
FUN_00443250(param_2,param_3,param_4,param_3,param_4);
}
FUN_004d88d0(param_1,param_2,param_3,param_4);
return;
}
// --- FUN_004d8a90 at 0x004D8A90 (size: 76) ---
void FUN_004d8a90(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
{
if (param_1 != 0) {
FUN_00440d20();
FUN_00443250(param_2,param_3,param_4,param_3,param_4);
}
FUN_004d8980(param_1,param_2,param_3,param_4);
return;
}
// --- FUN_004d8ae0 at 0x004D8AE0 (size: 162) ---
void FUN_004d8ae0(int param_1,undefined4 param_2,int param_3,int param_4)
{
int iVar1;
iVar1 = param_4 + 1;
if (param_1 != 0) {
FUN_00440d20();
FUN_00443250(param_2,param_3,param_4,param_3,param_4);
FUN_00440d20();
FUN_00443250(param_2,param_3 + -1,iVar1,param_3 + -1,iVar1);
FUN_00440d20();
FUN_00443250(param_2,param_3,iVar1,param_3,iVar1);
FUN_00440d20();
FUN_00443250(param_2,param_3 + 1,iVar1,param_3 + 1,iVar1);
}
return;
}
// --- FUN_004d8b90 at 0x004D8B90 (size: 162) ---
void FUN_004d8b90(int param_1,undefined4 param_2,int param_3,int param_4)
{
int iVar1;
iVar1 = param_4 + -1;
if (param_1 != 0) {
FUN_00440d20();
FUN_00443250(param_2,param_3,param_4,param_3,param_4);
FUN_00440d20();
FUN_00443250(param_2,param_3 + -1,iVar1,param_3 + -1,iVar1);
FUN_00440d20();
FUN_00443250(param_2,param_3,iVar1,param_3,iVar1);
FUN_00440d20();
FUN_00443250(param_2,param_3 + 1,iVar1,param_3 + 1,iVar1);
}
return;
}
// --- FUN_004d8c40 at 0x004D8C40 (size: 185) ---
void FUN_004d8c40(int param_1,undefined4 param_2,int param_3,int param_4)
{
if (param_1 != 0) {
FUN_00440d20();
FUN_00443250(param_2,param_3 + -2,param_4 + 3,param_3 + 2,param_4 + 3);
FUN_00440d20();
FUN_00443250(param_2,param_3 + 3,param_4 + -2,param_3 + 3,param_4 + 2);
FUN_00440d20();
FUN_00443250(param_2,param_3 + -2,param_4 + -3,param_3 + 2,param_4 + -3);
FUN_00440d20();
FUN_00443250(param_2,param_3 + -3,param_4 + -2,param_3 + -3,param_4 + 2);
}
return;
}
// --- FUN_004d8d00 at 0x004D8D00 (size: 75) ---
void __fastcall FUN_004d8d00(int *param_1)
{
int iVar1;
uint uVar2;
iVar1 = param_1[2];
if (iVar1 != 0) {
param_1[3] = iVar1;
param_1[2] = *(int *)(iVar1 + 4);
}
if (param_1[2] == 0) {
while( true ) {
uVar2 = param_1[1] + 1;
param_1[3] = 0;
param_1[1] = uVar2;
if (*(uint *)(*param_1 + 0x10) <= uVar2) break;
iVar1 = *(int *)(*(int *)(*param_1 + 0xc) + uVar2 * 4);
param_1[2] = iVar1;
if (iVar1 != 0) {
return;
}
}
param_1[4] = 1;
}
return;
}
// --- FUN_004d8d50 at 0x004D8D50 (size: 170) ---
undefined4 __thiscall FUN_004d8d50(int *param_1,int *param_2)
{
int iVar1;
int iVar2;
int *piVar3;
undefined4 *puVar4;
int *piVar5;
undefined4 *puVar6;
undefined4 local_18 [4];
undefined4 local_8;
undefined4 local_4;
piVar3 = (int *)*param_1;
if (piVar3 < piVar3 + param_1[2] * 6) {
piVar5 = piVar3;
do {
if (*piVar5 == *param_2) {
iVar2 = param_1[2] + -1;
param_1[2] = iVar2;
piVar3 = piVar3 + iVar2 * 6;
for (iVar1 = 6; iVar1 != 0; iVar1 = iVar1 + -1) {
*piVar5 = *piVar3;
piVar3 = piVar3 + 1;
piVar5 = piVar5 + 1;
}
local_18[1] = DAT_00841280;
local_18[2] = DAT_00841284;
local_18[0] = 0;
local_18[3] = DAT_00841288;
local_4 = 0;
local_8 = DAT_0084128c;
puVar4 = local_18;
puVar6 = (undefined4 *)(*param_1 + param_1[2] * 0x18);
for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
*puVar6 = *puVar4;
puVar4 = puVar4 + 1;
puVar6 = puVar6 + 1;
}
return 1;
}
piVar5 = piVar5 + 6;
} while (piVar5 < (int *)(*param_1 + param_1[2] * 0x18));
}
return 0;
}
// --- FUN_004d8ff0 at 0x004D8FF0 (size: 113) ---
void __thiscall FUN_004d8ff0(int param_1,int param_2)
{
if (param_2 != 0) {
if (param_1 == 0) {
param_1 = 0;
}
else {
param_1 = param_1 + 0x5f8;
}
(**(code **)(*(int *)(param_2 + 0xc) + 0xc))(param_1);
FUN_004d8d50(&stack0xffffffe4);
}
return;
}
// --- FUN_004d9070 at 0x004D9070 (size: 29) ---
undefined4 FUN_004d9070(undefined4 param_1,undefined4 param_2)
{
undefined4 uVar1;
uVar1 = FUN_005583f0(param_2);
FUN_004d8350(param_1,uVar1);
return param_1;
}
// --- FUN_004d9090 at 0x004D9090 (size: 53) ---
void FUN_004d9090(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
{
FUN_004d88d0(param_1,param_2,param_3,param_4);
FUN_004d8980(param_1,param_2,param_3,param_4);
return;
}
// --- FUN_004d90d0 at 0x004D90D0 (size: 205) ---
void FUN_004d90d0(int param_1,undefined4 param_2,int param_3,int param_4)
{
int iVar1;
int iVar2;
FUN_004d88d0(param_1,param_2,param_3,param_4);
FUN_004d8980(param_1,param_2,param_3,param_4);
iVar2 = param_4 + -2;
iVar1 = param_3 + -2;
param_4 = param_4 + 2;
if (param_1 != 0) {
FUN_00440d20();
FUN_00443250(param_2,iVar1,iVar2,iVar1,iVar2);
FUN_00440d20();
FUN_00443250(param_2,param_3 + 2,iVar2,param_3 + 2,iVar2);
FUN_00440d20();
FUN_00443250(param_2,iVar1,param_4,iVar1,param_4);
if (param_1 != 0) {
FUN_00440d20();
FUN_00443250(param_2,param_3 + 2,param_4,param_3 + 2,param_4);
}
}
return;
}
// --- FUN_004d9290 at 0x004D9290 (size: 155) ---
void __fastcall FUN_004d9290(int *param_1)
{
uint uVar1;
int iVar2;
int iVar3;
undefined4 *puVar4;
undefined4 *puVar5;
undefined4 local_18 [4];
undefined4 local_8;
undefined4 local_4;
param_1[2] = 0;
if ((param_1[1] & 0x80000000U) != 0x80000000) {
if (*param_1 != 0) {
uVar1 = param_1[1] & 0x7fffffff;
if (-1 < (int)(uVar1 - 1)) {
local_18[0] = 0;
local_4 = 0;
iVar2 = (uVar1 - 1) * 0x18;
do {
local_18[1] = DAT_00841280;
local_18[2] = DAT_00841284;
local_18[3] = DAT_00841288;
puVar5 = (undefined4 *)(*param_1 + iVar2);
local_8 = DAT_0084128c;
iVar2 = iVar2 + -0x18;
uVar1 = uVar1 - 1;
puVar4 = local_18;
for (iVar3 = 6; iVar3 != 0; iVar3 = iVar3 + -1) {
*puVar5 = *puVar4;
puVar4 = puVar4 + 1;
puVar5 = puVar5 + 1;
}
} while (uVar1 != 0);
}
}
return;
}
operator_delete__((void *)*param_1);
*param_1 = 0;
param_1[1] = 0;
return;
}
// --- FUN_004d9340 at 0x004D9340 (size: 192) ---
undefined4 __thiscall FUN_004d9340(int *param_1,uint param_2)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
undefined4 *puVar5;
undefined4 *puVar6;
if (param_2 < (uint)param_1[2]) {
return 0;
}
if ((param_1[1] & 0x7fffffffU) < param_2) {
if (param_2 == 0) {
FUN_004d9290();
return 1;
}
iVar1 = thunk_FUN_005df0f5(param_2 * 0x18);
if (iVar1 == 0) {
return 0;
}
FUN_00401000(iVar1,0x18,param_2,&LAB_004d81d0);
if (*param_1 != 0) {
iVar4 = param_1[2];
if (-1 < iVar4 + -1) {
iVar2 = (iVar4 + -1) * 0x18;
do {
puVar5 = (undefined4 *)(*param_1 + iVar2);
puVar6 = (undefined4 *)(iVar2 + iVar1);
iVar2 = iVar2 + -0x18;
iVar4 = iVar4 + -1;
for (iVar3 = 6; iVar3 != 0; iVar3 = iVar3 + -1) {
*puVar6 = *puVar5;
puVar5 = puVar5 + 1;
puVar6 = puVar6 + 1;
}
} while (iVar4 != 0);
}
if ((param_1[1] & 0x80000000U) == 0x80000000) {
operator_delete__((void *)*param_1);
}
}
*param_1 = iVar1;
param_1[1] = param_2 | 0x80000000;
}
return 1;
}
// --- FUN_004d9400 at 0x004D9400 (size: 263) ---
undefined4 * __thiscall FUN_004d9400(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
undefined4 uVar1;
FUN_00472670(param_2,param_3);
uVar1 = DAT_007be9a0;
param_1[0x17e] = &PTR_FUN_007ccb60;
param_1[0x17f] = &PTR_LAB_007a6af4;
*param_1 = &PTR_LAB_007bed30;
param_1[0x17e] = &PTR_FUN_007bea88;
param_1[0x17f] = &PTR_LAB_007bea7c;
param_1[0x180] = uVar1;
param_1[0x181] = 0;
param_1[0x182] = 0;
param_1[0x183] = 0;
param_1[0x184] = 0;
param_1[0x185] = 0;
FUN_0065e890(0,0);
param_1[0x188] = 0;
param_1[0x189] = 0;
param_1[0x18a] = 0;
param_1[0x18b] = 0;
param_1[0x18c] = 0;
param_1[0x18d] = 0;
param_1[0x18e] = 0;
param_1[399] = 0;
param_1[400] = 0;
param_1[0x191] = 0;
param_1[0x192] = 0;
param_1[0x193] = 0;
param_1[0x194] = 0;
param_1[0x195] = 0;
param_1[0x196] = 0;
param_1[0x198] = 0;
param_1[0x199] = 0;
param_1[0x19a] = 0;
param_1[0x19b] = 0;
param_1[0x19c] = 0;
param_1[0x19d] = 0;
param_1[0x19e] = 0;
return param_1;
}
// --- FUN_004d9540 at 0x004D9540 (size: 138) ---
void __fastcall FUN_004d9540(undefined4 *param_1)
{
undefined4 *puVar1;
int *piVar2;
puVar1 = param_1 + 0x17e;
*param_1 = &PTR_LAB_007bed30;
*puVar1 = &PTR_FUN_007bea88;
param_1[0x17f] = &PTR_LAB_007bea7c;
FUN_00465fb0(3);
(**(code **)(*DAT_008f958c + 0x14))(param_1 + 0x17f);
piVar2 = (int *)FUN_0043c680();
if (piVar2 != (int *)0x0) {
(**(code **)(*piVar2 + 0xc))(puVar1);
}
FUN_0040e900();
if ((param_1[0x182] & 0x80000000) == 0x80000000) {
operator_delete__((void *)param_1[0x181]);
}
*puVar1 = &PTR_FUN_007ccb60;
FUN_0043c610();
FUN_004726c0();
return;
}
// --- FUN_004d9610 at 0x004D9610 (size: 114) ---
void __thiscall FUN_004d9610(int param_1,int param_2)
{
uint uVar1;
int *piVar2;
int iVar3;
int *piVar4;
undefined1 local_10 [16];
if (param_2 != 0) {
uVar1 = 0;
if (*(uint *)(param_1 + 0x60c) != 0) {
piVar4 = *(int **)(param_1 + 0x604);
while (*piVar4 != param_2) {
uVar1 = uVar1 + 1;
piVar4 = piVar4 + 6;
if (*(uint *)(param_1 + 0x60c) <= uVar1) {
return;
}
}
piVar2 = (int *)FUN_004d8350(local_10,param_2);
piVar4[1] = *piVar2;
piVar4[2] = piVar2[1];
piVar4[3] = piVar2[2];
piVar4[4] = piVar2[3];
iVar3 = FUN_004d87c0(param_2);
piVar4[5] = iVar3;
}
}
return;
}
// --- FUN_004d9690 at 0x004D9690 (size: 273) ---
void FUN_004d9690(undefined4 param_1,int param_2,float param_3,undefined4 param_4,undefined4 param_5
,char param_6)
{
int iVar1;
float local_10;
float local_c;
float local_8;
undefined4 local_4;
iVar1 = FUN_00564d30();
if (*(char *)(iVar1 + 0x41) == '\0') {
local_10 = *(float *)(param_2 + 4) * param_3;
local_4 = *(undefined4 *)(param_2 + 0x10);
local_c = *(float *)(param_2 + 8) * param_3;
local_8 = *(float *)(param_2 + 0xc) * param_3;
switch(*(undefined4 *)(param_2 + 0x14)) {
case 1:
FUN_004d8890(param_1,&local_10,param_4,param_5);
break;
case 2:
FUN_004d9090(param_1,&local_10,param_4,param_5);
break;
case 3:
FUN_004d8a90(param_1,&local_10,param_4,param_5);
break;
case 4:
FUN_004d8a40(param_1,&local_10,param_4,param_5);
break;
case 5:
FUN_004d8ae0(param_1,&local_10,param_4,param_5);
break;
case 6:
FUN_004d8b90(param_1,&local_10,param_4,param_5);
break;
case 7:
FUN_004d90d0(param_1,&local_10,param_4,param_5);
}
if (param_6 != '\0') {
FUN_004d8c40(param_1,&local_10,param_4,param_5);
}
}
return;
}
// --- FUN_004d97e0 at 0x004D97E0 (size: 19) ---
void FUN_004d97e0(void)
{
FUN_00460270(0x10000010,&LAB_004d95d0);
return;
}
// --- FUN_004d98e0 at 0x004D98E0 (size: 881) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __fastcall FUN_004d98e0(int param_1)
{
uint uVar1;
char cVar2;
int iVar3;
undefined *puVar4;
undefined *puVar5;
undefined8 local_30;
uint local_24;
undefined4 local_20;
undefined4 uStack_1c;
undefined4 local_18;
undefined4 uStack_14;
undefined8 local_10;
iVar3 = FUN_0055e1d0();
if (iVar3 != 0) {
local_24 = local_24 & 0xffffff00;
cVar2 = FUN_005d40c0();
if (cVar2 != '\0') {
local_18 = 0;
uStack_14 = 0;
local_20 = 0;
uStack_1c = 0;
cVar2 = FUN_00560e00(&local_18,&local_20);
if ((cVar2 != '\0') &&
((local_24 = CONCAT31(local_24._1_3_,1),
(double)CONCAT44(uStack_14,local_18) != *(double *)(param_1 + 0x668) ||
((double)CONCAT44(uStack_1c,local_20) != *(double *)(param_1 + 0x670))))) {
*(undefined4 *)(param_1 + 0x66c) = uStack_14;
*(undefined4 *)(param_1 + 0x668) = local_18;
*(undefined4 *)(param_1 + 0x670) = local_20;
*(undefined4 *)(param_1 + 0x674) = uStack_1c;
if (*(int *)(param_1 + 0x648) != 0) {
if (_DAT_00795610 <= (double)CONCAT44(uStack_14,local_18)) {
puVar5 = &DAT_007a75f4;
if ((double)CONCAT44(uStack_14,local_18) <= _DAT_00795610) {
puVar5 = &DAT_00795320;
}
}
else {
puVar5 = &DAT_007a75f8;
}
if (_DAT_00795610 <= (double)CONCAT44(uStack_1c,local_20)) {
puVar4 = &DAT_007a75ec;
if ((double)CONCAT44(uStack_1c,local_20) <= _DAT_00795610) {
puVar4 = &DAT_00795320;
}
}
else {
puVar4 = &DAT_007a75f0;
}
if ((double)CONCAT44(uStack_14,local_18) < _DAT_00795610) {
local_30 = -(double)CONCAT44(uStack_14,local_18);
}
else {
local_30 = (double)CONCAT44(uStack_14,local_18);
}
if ((double)CONCAT44(uStack_1c,local_20) < _DAT_00795610) {
local_10 = -(double)CONCAT44(uStack_1c,local_20);
}
else {
local_10 = (double)CONCAT44(uStack_1c,local_20);
}
FUN_00480980(&local_30,0,L"%.1f%s,%.1f%s",(undefined4)local_10,local_10._4_4_,puVar4,
(undefined4)local_30,local_30._4_4_,puVar5);
FUN_0046a740(&local_30);
FUN_004011b0();
}
if (*(int *)(param_1 + 0x650) != 0) {
if (_DAT_00795610 <= (double)CONCAT44(uStack_1c,local_20)) {
puVar5 = &DAT_007a75ec;
if ((double)CONCAT44(uStack_1c,local_20) <= _DAT_00795610) {
puVar5 = &DAT_00795320;
}
}
else {
puVar5 = &DAT_007a75f0;
}
if ((double)CONCAT44(uStack_1c,local_20) < _DAT_00795610) {
local_10 = -(double)CONCAT44(uStack_1c,local_20);
}
else {
local_10 = (double)CONCAT44(uStack_1c,local_20);
}
FUN_00480980(&local_30,0,L"%.1f%s",(undefined4)local_10,local_10._4_4_,puVar5);
FUN_0046a740(&local_30);
FUN_004011b0();
}
if (*(int *)(param_1 + 0x64c) != 0) {
if (_DAT_00795610 <= (double)CONCAT44(uStack_14,local_18)) {
puVar5 = &DAT_007a75f4;
if ((double)CONCAT44(uStack_14,local_18) <= _DAT_00795610) {
puVar5 = &DAT_00795320;
}
}
else {
puVar5 = &DAT_007a75f8;
}
if ((double)CONCAT44(uStack_14,local_18) < _DAT_00795610) {
local_10 = -(double)CONCAT44(uStack_14,local_18);
}
else {
local_10 = (double)CONCAT44(uStack_14,local_18);
}
FUN_00480980(&local_30,0,L"%.1f%s",(undefined4)local_10,local_10._4_4_,puVar5);
FUN_0046a740(&local_30);
FUN_004011b0();
}
}
}
uVar1 = local_24;
if (*(int **)(param_1 + 0x644) != (int *)0x0) {
(**(code **)(**(int **)(param_1 + 0x644) + 0x18))(local_24);
}
if (*(int **)(param_1 + 0x648) != (int *)0x0) {
(**(code **)(**(int **)(param_1 + 0x648) + 0x18))(uVar1);
}
if (*(int **)(param_1 + 0x64c) != (int *)0x0) {
(**(code **)(**(int **)(param_1 + 0x64c) + 0x18))(uVar1);
}
if (*(int **)(param_1 + 0x650) != (int *)0x0) {
(**(code **)(**(int **)(param_1 + 0x650) + 0x18))(uVar1);
}
(**(code **)(**(int **)(param_1 + 0x654) + 0x18))(1);
}
return;
}
// --- FUN_004d9c60 at 0x004D9C60 (size: 82) ---
undefined4 __thiscall FUN_004d9c60(int *param_1,undefined4 *param_2)
{
undefined4 uVar1;
int iVar2;
undefined4 *puVar3;
if ((param_1[1] & 0x7fffffffU) <= (uint)param_1[2]) {
uVar1 = FUN_00453850((param_1[1] & 0x7fffffffU) + 1);
uVar1 = FUN_004d9340(uVar1);
if ((char)uVar1 == '\0') {
return uVar1;
}
}
puVar3 = (undefined4 *)(*param_1 + param_1[2] * 0x18);
for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
*puVar3 = *param_2;
param_2 = param_2 + 1;
puVar3 = puVar3 + 1;
}
iVar2 = param_1[2];
param_1[2] = iVar2 + 1;
return CONCAT31((int3)((uint)(iVar2 + 1) >> 8),1);
}
// --- FUN_004d9cc0 at 0x004D9CC0 (size: 799) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __fastcall FUN_004d9cc0(int param_1)
{
int iVar1;
int *piVar2;
int *piVar3;
float10 fVar4;
float *pfVar5;
undefined *puVar6;
int **ppiVar7;
undefined4 uVar8;
int *local_14;
int *local_10;
undefined4 local_c;
float local_8;
float local_4;
ppiVar7 = &local_14;
pfVar5 = &local_4;
puVar6 = &DAT_007be928;
local_14 = (int *)0x0;
FUN_00406d10(pfVar5,&DAT_007be928,ppiVar7);
FUN_00406570(pfVar5,puVar6,ppiVar7);
piVar2 = local_14;
uVar8 = 0;
local_10 = (int *)0x0;
local_c = 0;
piVar3 = local_14;
if (local_14 != (int *)0x0) {
(**(code **)(*local_14 + 0x10))(local_14,0);
}
piVar3 = (int *)FUN_0048bb00(&local_8,piVar3,uVar8);
iVar1 = *piVar3;
if (piVar2 != (int *)0x0) {
(**(code **)(*piVar2 + 0x14))();
}
piVar2 = local_10;
if (local_10 != (int *)0x0) {
if (-1 < iVar1) {
if (*(int *)(DAT_0083da58 + 0xf8) == 0) {
(**(code **)(*local_10 + 0x14))();
return;
}
fVar4 = (float10)FUN_00512010();
if (fVar4 != (float10)*(float *)(param_1 + 0x614)) {
*(float *)(param_1 + 0x614) = (float)fVar4;
local_14 = (int *)(float)(fVar4 * (float10)_DAT_0079c504);
if (*(int **)(param_1 + 0x634) != (int *)0x0) {
iVar1 = **(int **)(param_1 + 0x634);
fVar4 = (float10)fsin((float10)(float)local_14 + (float10)_DAT_007beea0);
local_4 = (float)(fVar4 * (float10)*(float *)(param_1 + 0x624));
fVar4 = (float10)fcos((float10)(float)local_14 + (float10)_DAT_007beea0);
local_8 = (float)(fVar4 * (float10)*(float *)(param_1 + 0x624) +
(float10)*(float *)(param_1 + 0x61c));
local_10 = (int *)FUN_0069fe70();
uVar8 = FUN_005df4c4();
local_8 = local_4 + *(float *)(param_1 + 0x618);
local_4 = (float)FUN_0069fe60(uVar8);
uVar8 = FUN_005df4c4();
(**(code **)(iVar1 + 0x2c))(uVar8);
}
if (*(int **)(param_1 + 0x638) != (int *)0x0) {
iVar1 = **(int **)(param_1 + 0x638);
fVar4 = (float10)fsin((float10)(float)local_14 + (float10)_DAT_007bee9c);
local_10 = (int *)(float)(fVar4 * (float10)*(float *)(param_1 + 0x628));
fVar4 = (float10)fcos((float10)(float)local_14 + (float10)_DAT_007bee9c);
local_8 = (float)(fVar4 * (float10)*(float *)(param_1 + 0x628) +
(float10)*(float *)(param_1 + 0x61c));
local_4 = (float)FUN_0069fe70();
uVar8 = FUN_005df4c4();
local_8 = (float)local_10 + *(float *)(param_1 + 0x618);
local_4 = (float)FUN_0069fe60(uVar8);
uVar8 = FUN_005df4c4();
(**(code **)(iVar1 + 0x2c))(uVar8);
}
if (*(int **)(param_1 + 0x63c) != (int *)0x0) {
iVar1 = **(int **)(param_1 + 0x63c);
fVar4 = (float10)fsin((float10)(float)local_14);
local_10 = (int *)(float)(fVar4 * (float10)*(float *)(param_1 + 0x62c));
fVar4 = (float10)fcos((float10)(float)local_14);
local_8 = (float)(fVar4 * (float10)*(float *)(param_1 + 0x62c) +
(float10)*(float *)(param_1 + 0x61c));
local_4 = (float)FUN_0069fe70();
uVar8 = FUN_005df4c4();
local_8 = (float)local_10 + *(float *)(param_1 + 0x618);
local_4 = (float)FUN_0069fe60(uVar8);
uVar8 = FUN_005df4c4();
(**(code **)(iVar1 + 0x2c))(uVar8);
}
if (*(int **)(param_1 + 0x640) != (int *)0x0) {
iVar1 = **(int **)(param_1 + 0x640);
fVar4 = (float10)fsin((float10)(float)local_14 + (float10)_DAT_007bee98);
local_10 = (int *)(float)(fVar4 * (float10)*(float *)(param_1 + 0x630));
fVar4 = (float10)fcos((float10)(float)local_14 + (float10)_DAT_007bee98);
local_8 = (float)(fVar4 * (float10)*(float *)(param_1 + 0x630) +
(float10)*(float *)(param_1 + 0x61c));
local_4 = (float)FUN_0069fe70();
uVar8 = FUN_005df4c4();
local_8 = (float)local_10 + *(float *)(param_1 + 0x618);
local_4 = (float)FUN_0069fe60(uVar8);
uVar8 = FUN_005df4c4();
(**(code **)(iVar1 + 0x2c))(uVar8);
(**(code **)(*piVar2 + 0x14))();
return;
}
}
}
(**(code **)(*piVar2 + 0x14))();
}
return;
}
// --- FUN_004d9fe0 at 0x004D9FE0 (size: 913) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __thiscall FUN_004d9fe0(int param_1,undefined4 param_2)
{
int *piVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
int iVar6;
int iVar7;
uint uVar8;
int *piVar9;
undefined1 *puVar10;
undefined *puVar11;
int *piVar12;
int **ppiVar13;
undefined4 uVar14;
int *local_dc;
float fStack_d8;
int local_d4;
int local_d0;
uint local_cc;
undefined1 auStack_c8 [4];
undefined4 uStack_c4;
int *local_c0;
int *local_bc;
int local_b8;
uint local_b4;
float fStack_b0;
float fStack_ac;
float fStack_a8;
float local_a4;
int *local_a0;
int iStack_9c;
undefined1 local_98 [4];
undefined1 local_94 [4];
undefined1 auStack_90 [144];
local_a4 = *(float *)(param_1 + 0x600) - _DAT_007938b0;
*(undefined4 *)(param_1 + 0x610) = 0;
local_a4 = local_a4 * local_a4;
local_b8 = 0;
local_b4 = 0xffffffff;
local_cc = 0;
if (*(int *)(param_1 + 0x60c) != 0) {
local_d4 = 0;
do {
local_d0 = *(int *)(*(int *)(param_1 + 0x604) + local_d4);
piVar9 = (int *)(*(int *)(param_1 + 0x604) + local_d4);
local_a0 = piVar9;
if (local_d0 != 0) {
ppiVar13 = &local_dc;
puVar10 = local_94;
puVar11 = &DAT_007be8b8;
local_dc = (int *)0x0;
FUN_00406d10(puVar10,&DAT_007be8b8,ppiVar13);
FUN_00406570(puVar10,puVar11,ppiVar13);
piVar1 = local_dc;
uVar14 = 0;
local_c0 = (int *)0x0;
local_bc = (int *)0x0;
piVar12 = local_dc;
if (local_dc != (int *)0x0) {
(**(code **)(*local_dc + 0x10))(local_dc,0);
}
local_dc = (int *)FUN_00454590(local_98,piVar12,uVar14);
local_dc = (int *)*local_dc;
local_bc = local_dc;
if (piVar1 != (int *)0x0) {
(**(code **)(*piVar1 + 0x14))();
}
piVar1 = local_c0;
if (local_c0 == (int *)0x0) {
return;
}
if ((int)local_dc < 0) {
if (local_c0 == (int *)0x0) {
return;
}
(**(code **)(*local_c0 + 0x14))();
return;
}
iVar3 = FUN_00508890(*(undefined4 *)(*piVar9 + 8));
if (((iVar3 == 0) || (*(int *)(iVar3 + 0x90) == 0)) || (*(int *)(iVar3 + 0x4c) == 0)) {
iVar3 = *piVar1;
LAB_004da2f9:
(**(code **)(iVar3 + 0x14))();
}
else {
FUN_00452de0(iVar3,&fStack_b0);
if (fStack_b0 * fStack_b0 + fStack_ac * fStack_ac < local_a4) {
fStack_d8 = (float)*(int *)(param_1 + 0x620);
iVar3 = FUN_005df4c4();
iStack_9c = iVar3;
local_dc = (int *)FUN_005df4c4();
if (((*(float *)(param_1 + 0x618) - fStack_d8 <= (float)iStack_9c) &&
((float)iStack_9c <= fStack_d8 + *(float *)(param_1 + 0x618))) &&
((*(float *)(param_1 + 0x61c) - fStack_d8 <= (float)(int)local_dc &&
((float)(int)local_dc <= fStack_d8 + *(float *)(param_1 + 0x61c))))) {
iVar4 = (**(code **)(*DAT_00837ff4 + 0x18))();
iVar5 = FUN_0069fe00();
iVar6 = (**(code **)(*DAT_00837ff4 + 0x1c))();
iVar7 = FUN_0069fe30();
iVar2 = local_d0;
iVar6 = (iVar6 - iVar7) - (int)local_dc;
iVar4 = (iVar4 - iVar5) - iVar3;
uVar8 = iVar4 * iVar4 + iVar6 * iVar6;
if ((uVar8 < 0x25) && (uVar8 < local_b4)) {
local_b8 = *(int *)(local_d0 + 8);
local_b4 = uVar8;
FUN_0058f8b0(auStack_c8,2,0);
FUN_0042dc80();
FUN_0042cbe0(auStack_c8,1);
FUN_004618a0(auStack_90);
*(uint *)(param_1 + 0xa4) = *(uint *)(param_1 + 0xa4) | 0x20;
FUN_0042e590();
FUN_004011b0();
}
uStack_c4 = 0x3f266666;
if (ABS(fStack_a8) < (float)_DAT_0079a1b0) {
uStack_c4 = 0x3f800000;
}
FUN_004d9690(param_2,local_a0,uStack_c4,iVar3,local_dc,
*(int *)(iVar2 + 8) == DAT_00871e54);
iVar3 = *local_c0;
goto LAB_004da2f9;
}
(**(code **)(*piVar1 + 0x14))();
}
else {
(**(code **)(*piVar1 + 0x14))();
}
}
}
local_cc = local_cc + 1;
local_d4 = local_d4 + 0x18;
} while (local_cc < *(uint *)(param_1 + 0x60c));
if (local_b8 != 0) {
*(int *)(param_1 + 0x610) = local_b8;
}
}
if (*(int *)(param_1 + 0x610) == 0) {
*(uint *)(param_1 + 0xa4) = *(uint *)(param_1 + 0xa4) & 0xffffffdf;
FUN_004626c0();
}
return;
}
// --- FUN_004da500 at 0x004DA500 (size: 243) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __fastcall FUN_004da500(int param_1)
{
int iVar1;
int *piVar2;
int *piVar3;
float10 fVar4;
undefined1 *puVar5;
undefined *puVar6;
int **ppiVar7;
undefined4 uVar8;
int *local_1c;
undefined1 local_18 [4];
undefined1 local_14 [4];
int *local_10;
undefined4 local_c;
double local_8;
local_8 = _DAT_008379a8;
if (*(double *)(param_1 + 0x660) <= _DAT_008379a8) {
ppiVar7 = &local_1c;
puVar5 = local_18;
puVar6 = &DAT_007be928;
local_1c = (int *)0x0;
FUN_00406d10(puVar5,&DAT_007be928,ppiVar7);
FUN_00406570(puVar5,puVar6,ppiVar7);
piVar2 = local_1c;
uVar8 = 0;
local_10 = (int *)0x0;
local_c = 0;
piVar3 = local_1c;
if (local_1c != (int *)0x0) {
(**(code **)(*local_1c + 0x10))(local_1c,0);
}
piVar3 = (int *)FUN_0048bb00(local_14,piVar3,uVar8);
iVar1 = *piVar3;
if (piVar2 != (int *)0x0) {
(**(code **)(*piVar2 + 0x14))();
}
piVar2 = local_10;
if (((local_10 != (int *)0x0) && (-1 < iVar1)) && (*(int *)(DAT_0083da58 + 0xf8) != 0)) {
FUN_0055e1d0();
fVar4 = (float10)FUN_0055e5a0();
*(float *)(param_1 + 0x600) = (float)fVar4;
FUN_004d9cc0();
FUN_004d98e0();
(**(code **)(**(int **)(param_1 + 0x654) + 0x18))(1);
FUN_006a0430();
}
*(double *)(param_1 + 0x660) = _DAT_007bea58 + local_8;
if (piVar2 != (int *)0x0) {
(**(code **)(*piVar2 + 0x14))();
}
}
return;
}
// --- FUN_004da600 at 0x004DA600 (size: 57) ---
uint __thiscall FUN_004da600(undefined4 *param_1,int *param_2)
{
uint uVar1;
int *piVar2;
uVar1 = 0;
if (param_1[2] != 0) {
piVar2 = (int *)*param_1;
do {
if (*piVar2 == *param_2) {
if (uVar1 != 0xffffffff) {
return uVar1 & 0xffffff00;
}
break;
}
uVar1 = uVar1 + 1;
piVar2 = piVar2 + 6;
} while (uVar1 < (uint)param_1[2]);
}
uVar1 = FUN_004d9c60(param_2);
return uVar1;
}
// --- FUN_004da660 at 0x004DA660 (size: 349) ---
void __thiscall FUN_004da660(int param_1,int param_2)
{
undefined4 uVar1;
int iVar2;
undefined4 *puVar3;
int *local_3c;
int local_38;
int *local_34 [4];
undefined1 auStack_24 [12];
undefined1 auStack_18 [4];
undefined4 uStack_14;
undefined4 uStack_10;
undefined4 uStack_c;
undefined4 uStack_8;
int iStack_4;
if ((param_2 != 0) && (-1 < *(char *)(param_2 + 0x100))) {
if (DAT_0083da58 == 0) {
iVar2 = 0;
}
else {
iVar2 = *(int *)(DAT_0083da58 + 0xf4);
}
if (iVar2 != *(int *)(param_2 + 8)) {
uVar1 = FUN_00485200(local_34,&DAT_007be8b8);
FUN_00455250(uVar1);
if (local_34[0] != (int *)0x0) {
(**(code **)(*local_34[0] + 0x14))();
}
if (local_3c != (int *)0x0) {
if (local_38 < 0) {
(**(code **)(*local_3c + 0x14))();
return;
}
iVar2 = FUN_00508890(*(undefined4 *)(param_2 + 8));
if ((iVar2 != 0) && (iVar2 = FUN_0058d080(auStack_24), iVar2 != 0)) {
FUN_004d8190(param_2);
puVar3 = (undefined4 *)FUN_004d8350(local_34,param_2);
uStack_14 = *puVar3;
uStack_10 = puVar3[1];
uStack_c = puVar3[2];
uStack_8 = puVar3[3];
iStack_4 = FUN_004d87c0(param_2);
if (iStack_4 == 0) {
(**(code **)(*local_3c + 0x14))();
return;
}
if (param_1 == 0) {
iVar2 = 0;
}
else {
iVar2 = param_1 + 0x5f8;
}
(**(code **)(*(int *)(param_2 + 0xc) + 4))(0x4dd245,iVar2);
if (param_1 == 0) {
param_1 = 0;
}
else {
param_1 = param_1 + 0x5f8;
}
(**(code **)(*(int *)(param_2 + 0xc) + 4))(0x186af,param_1);
FUN_004da600(auStack_18);
}
(**(code **)(*local_3c + 0x14))();
}
}
}
return;
}
// --- FUN_004da7f0 at 0x004DA7F0 (size: 407) ---
void __fastcall FUN_004da7f0(int param_1)
{
char cVar1;
int *piVar2;
int iVar3;
int *piVar4;
float10 fVar5;
undefined1 *puVar6;
undefined *puVar7;
int **ppiVar8;
undefined4 uVar9;
int *piStack_2c;
int local_28;
undefined1 auStack_24 [4];
undefined1 auStack_20 [4];
int *piStack_1c;
undefined4 uStack_18;
int *piStack_14;
undefined4 uStack_10;
int iStack_c;
undefined4 uStack_8;
int iStack_4;
local_28 = param_1;
piVar2 = (int *)FUN_0043c680();
if (piVar2 != (int *)0x0) {
if (param_1 == 0) {
iVar3 = 0;
}
else {
iVar3 = param_1 + 0x5f8;
}
(**(code **)(*piVar2 + 4))(0x186ae,iVar3);
}
FUN_004d9290();
iVar3 = FUN_0055e1d0();
if (iVar3 != 0) {
FUN_0055e1d0();
fVar5 = (float10)FUN_0055e5a0();
*(float *)(param_1 + 0x600) = (float)fVar5;
}
ppiVar8 = &piStack_2c;
puVar6 = auStack_24;
puVar7 = &DAT_007be8b8;
piStack_2c = (int *)0x0;
FUN_00406d10(puVar6,&DAT_007be8b8,ppiVar8);
FUN_00406570(puVar6,puVar7,ppiVar8);
piVar2 = piStack_2c;
uVar9 = 0;
piStack_1c = (int *)0x0;
uStack_18 = 0;
piVar4 = piStack_2c;
if (piStack_2c != (int *)0x0) {
(**(code **)(*piStack_2c + 0x10))(piStack_2c,0);
}
piVar4 = (int *)FUN_00454590(auStack_20,piVar4,uVar9);
iVar3 = *piVar4;
if (piVar2 != (int *)0x0) {
(**(code **)(*piVar2 + 0x14))();
}
piVar2 = piStack_1c;
if (piStack_1c != (int *)0x0) {
if (iVar3 < 0) {
(**(code **)(*piStack_1c + 0x14))();
return;
}
piStack_14 = piStack_1c + 0x21;
uStack_8 = 0;
uStack_10 = 0;
if (piStack_14 != (int *)0x0) {
iVar3 = *(int *)piStack_1c[0x24];
iStack_4 = 0;
iStack_c = iVar3;
if (iVar3 != 0) goto LAB_004da901;
FUN_004d8d00();
iVar3 = iStack_c;
joined_r0x004da8f9:
do {
if (iStack_4 != 0) break;
LAB_004da901:
param_1 = local_28;
if (iVar3 != 0) {
if ((*(byte *)(iVar3 + 0xa8) & 1) == 0) {
if (*(int *)(iVar3 + 300) == 0) goto joined_r0x004da8f9;
FUN_004da660(*(int *)(iVar3 + 300));
}
FUN_004d8d00();
param_1 = local_28;
iVar3 = iStack_c;
}
} while( true );
}
FUN_0055e1d0();
cVar1 = FUN_005d4330();
if (cVar1 != '\0') {
(**(code **)(**(int **)(param_1 + 0x654) + 0x9c))(0x10000063);
(**(code **)(*piVar2 + 0x14))();
return;
}
(**(code **)(**(int **)(param_1 + 0x654) + 0x9c))(0x10000064);
(**(code **)(*piVar2 + 0x14))();
}
return;
}
// --- FUN_004db000 at 0x004DB000 (size: 62) ---
undefined4 * __thiscall FUN_004db000(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_00472670(param_2,param_3);
param_1[0x17e] = &PTR_FUN_007ccb60;
*param_1 = &PTR_FUN_007bf248;
param_1[0x17e] = &PTR_FUN_007befa0;
param_1[0x17f] = 0;
return param_1;
}
// --- FUN_004db070 at 0x004DB070 (size: 40) ---
void __fastcall FUN_004db070(undefined4 *param_1)
{
*param_1 = &PTR_FUN_007bf248;
param_1[0x17e] = &PTR_FUN_007befa0;
param_1[0x17e] = &PTR_FUN_007ccb60;
FUN_0043c610();
FUN_004726c0();
return;
}
// --- FUN_004db100 at 0x004DB100 (size: 61) ---
undefined4 * __thiscall FUN_004db100(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007bf248;
param_1[0x17e] = &PTR_FUN_007befa0;
param_1[0x17e] = &PTR_FUN_007ccb60;
FUN_0043c610();
FUN_004726c0();
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004db140 at 0x004DB140 (size: 71) ---
void __fastcall FUN_004db140(int param_1)
{
int *piVar1;
FUN_004639a0();
piVar1 = (int *)FUN_00463c00(0x100005ee);
if (piVar1 != (int *)0x0) {
piVar1 = (int *)(**(code **)(*piVar1 + 0x94))(3);
*(int **)(param_1 + 0x600) = piVar1;
(**(code **)(*piVar1 + 0x18))(0);
return;
}
*(undefined4 *)(param_1 + 0x600) = 0;
(**(code **)(iRam00000000 + 0x18))(0);
return;
}
// --- FUN_004db190 at 0x004DB190 (size: 19) ---
void FUN_004db190(void)
{
FUN_00460270(0x1000000f,&LAB_004db0a0);
return;
}
// --- FUN_004db4f0 at 0x004DB4F0 (size: 65) ---
void __fastcall FUN_004db4f0(int param_1)
{
char cVar1;
if (*(int *)(param_1 + 0x24) == 0) {
return;
}
cVar1 = FUN_004f39c0();
if (cVar1 != '\0') {
/* WARNING: Could not recover jumptable at 0x004db517. Too many branches */
/* WARNING: Treating indirect jump as call */
(**(code **)(**(int **)(param_1 + 0x24) + 0x9c))();
return;
}
/* WARNING: Could not recover jumptable at 0x004db527. Too many branches */
/* WARNING: Treating indirect jump as call */
(**(code **)(**(int **)(param_1 + 0x24) + 0x9c))();
return;
}
// --- FUN_004db540 at 0x004DB540 (size: 151) ---
undefined4 * FUN_004db540(undefined4 *param_1)
{
LONG LVar1;
undefined4 *puVar2;
undefined *local_8;
int local_4;
local_4 = DAT_00838188;
InterlockedIncrement((LONG *)(DAT_00838188 + -0x10));
local_8 = PTR_DAT_00818344;
InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10));
thunk_FUN_0040c780(&local_8,&local_4);
*param_1 = local_8;
InterlockedIncrement((LONG *)(local_8 + -0x10));
puVar2 = (undefined4 *)(local_8 + -0x14);
LVar1 = InterlockedDecrement((LONG *)(local_8 + -0x10));
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
(**(code **)*puVar2)(1);
}
puVar2 = (undefined4 *)(local_4 + -0x14);
LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10));
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
(**(code **)*puVar2)(1);
}
return param_1;
}
// --- FUN_004db5e0 at 0x004DB5E0 (size: 325) ---
undefined4 FUN_004db5e0(undefined4 param_1,uint param_2)
{
undefined4 uVar1;
char *pcVar2;
undefined4 uVar3;
undefined1 local_90 [144];
FUN_0042dc80();
if (param_2 < 0x10000003) {
if (param_2 != 0x10000002) {
switch(param_2) {
case 4:
pcVar2 = "ID_InputMap_MovementCommands";
break;
case 5:
pcVar2 = "ID_InputMap_CameraControls";
break;
case 6:
pcVar2 = "ID_InputMap_CameraAlternateControls";
break;
default:
goto switchD_004db60f_caseD_7;
case 9:
pcVar2 = "ID_InputMap_DialogBoxes";
break;
case 0xb:
pcVar2 = "ID_InputMap_DebugConsole";
break;
case 0xc:
pcVar2 = "ID_InputMap_ProfilerUI";
break;
case 0xd:
pcVar2 = "ID_InputMap_UIDebugger";
break;
case 0xe:
pcVar2 = "ID_InputMap_DebugCommands";
}
goto LAB_004db6ea;
}
uVar3 = 7;
uVar1 = FUN_004016b0("ID_InputMap_Combat",7);
}
else {
switch(param_2) {
case 0x10000003:
pcVar2 = "ID_InputMap_MeleeCombat";
break;
case 0x10000004:
pcVar2 = "ID_InputMap_MissileCombat";
break;
case 0x10000005:
pcVar2 = "ID_InputMap_MagicCombat";
break;
case 0x10000006:
pcVar2 = "ID_InputMap_Emotes";
break;
case 0x10000007:
pcVar2 = "ID_InputMap_ItemSelectionCommands";
break;
case 0x10000008:
pcVar2 = "ID_InputMap_CharacterOptionCommands";
break;
case 0x10000009:
pcVar2 = "ID_InputMap_UICommands";
break;
case 0x1000000a:
pcVar2 = "ID_InputMap_ChatCommands";
break;
default:
goto switchD_004db60f_caseD_7;
case 0x1000000c:
pcVar2 = "ID_InputMap_QuickslotCommands";
break;
case 0x1000000d:
pcVar2 = "ID_InputMap_ToggleChatEntry";
}
LAB_004db6ea:
uVar3 = 7;
uVar1 = FUN_00401a20(pcVar2,7);
}
FUN_0042c9c0(uVar1,uVar3);
switchD_004db60f_caseD_7:
FUN_0042e510(local_90);
FUN_0042e590();
return param_1;
}
// --- FUN_004db7c0 at 0x004DB7C0 (size: 64) ---
undefined4 * __thiscall FUN_004db7c0(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007bf7dc;
if ((undefined4 *)param_1[0x18] != param_1 + 1) {
operator_delete__((undefined4 *)param_1[0x18]);
}
param_1[0x18] = 0;
param_1[0x19] = 0;
param_1[0x1a] = 0;
param_1[0x1b] = 0;
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004db800 at 0x004DB800 (size: 64) ---
undefined4 * __thiscall FUN_004db800(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007bf7e0;
if ((undefined4 *)param_1[0x18] != param_1 + 1) {
operator_delete__((undefined4 *)param_1[0x18]);
}
param_1[0x18] = 0;
param_1[0x19] = 0;
param_1[0x1a] = 0;
param_1[0x1b] = 0;
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004db840 at 0x004DB840 (size: 64) ---
undefined4 * __thiscall FUN_004db840(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007bf7e4;
if ((undefined4 *)param_1[0x18] != param_1 + 1) {
operator_delete__((undefined4 *)param_1[0x18]);
}
param_1[0x18] = 0;
param_1[0x19] = 0;
param_1[0x1a] = 0;
param_1[0x1b] = 0;
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004db880 at 0x004DB880 (size: 113) ---
void __thiscall FUN_004db880(int *param_1,uint param_2)
{
int *piVar1;
uint uVar2;
param_1[0x1a5] = 0;
if (((param_2 != 0xffffffff) && (piVar1 = (int *)param_1[0x1aa], piVar1 != (int *)0x0)) &&
(param_2 < (uint)param_1[0x1ac])) {
uVar2 = 0;
while (uVar2 != param_2) {
if (piVar1 != (int *)0x0) {
piVar1 = (int *)piVar1[1];
}
uVar2 = uVar2 + 1;
if (piVar1 == (int *)0x0) {
return;
}
}
if (((piVar1 != (int *)0x0) && (*(int *)(*piVar1 + -4) != 1)) && (DAT_008379e4 != (int *)0x0)) {
(**(code **)(*DAT_008379e4 + 0x90))(piVar1);
(**(code **)(*param_1 + 0x144))();
}
}
return;
}
// --- FUN_004db900 at 0x004DB900 (size: 97) ---
int __thiscall FUN_004db900(int param_1,int param_2)
{
undefined4 *puVar1;
int iVar2;
undefined4 *puVar3;
if (param_1 != param_2) {
FUN_0049f850();
for (puVar1 = *(undefined4 **)(param_2 + 4); puVar1 != (undefined4 *)0x0;
puVar1 = (undefined4 *)puVar1[1]) {
puVar3 = (undefined4 *)FUN_005df0f5(0xc);
if (puVar3 != (undefined4 *)0x0) {
*puVar3 = *puVar1;
puVar3[1] = 0;
puVar3[2] = 0;
if (*(int *)(param_1 + 4) == 0) {
*(undefined4 **)(param_1 + 4) = puVar3;
}
else {
iVar2 = *(int *)(param_1 + 8);
*(undefined4 **)(iVar2 + 4) = puVar3;
puVar3[2] = iVar2;
}
*(undefined4 **)(param_1 + 8) = puVar3;
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
}
if (puVar1 == (undefined4 *)0x0) {
return param_1;
}
}
}
return param_1;
}
// --- FUN_004db970 at 0x004DB970 (size: 73) ---
void __fastcall FUN_004db970(int param_1)
{
undefined *puVar1;
undefined4 *puVar2;
undefined4 local_4;
puVar1 = PTR_DAT_00818558;
local_4 = *(undefined4 *)(param_1 + 0x68);
puVar2 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,local_4,0);
if ((puVar2 != (undefined4 *)puVar1) || (puVar2 = puVar2 + -1, puVar2 != (undefined4 *)puVar1)) {
puVar2 = puVar2 + 1;
}
FUN_004dbcd0(*puVar2);
return;
}
// --- FUN_004db9c0 at 0x004DB9C0 (size: 143) ---
undefined4 * __thiscall FUN_004db9c0(undefined4 *param_1,undefined4 param_2)
{
undefined *puVar1;
uint *puVar2;
undefined4 uVar3;
uint uVar4;
int iVar5;
undefined4 *puVar6;
param_1[0x18] = 0;
param_1[0x19] = 0;
param_1[0x1a] = 0;
param_1[0x1b] = 0;
*param_1 = &PTR_LAB_007bf7d8;
puVar1 = PTR_DAT_00818558;
puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,&param_2,param_2,0);
if (puVar2 == (uint *)puVar1) {
puVar2 = puVar2 + -1;
}
uVar4 = *puVar2;
param_1[0x1a] = uVar4;
if (uVar4 < 0x18) {
param_1[0x18] = param_1 + 1;
}
else {
uVar3 = thunk_FUN_005df0f5(uVar4 << 2);
param_1[0x18] = uVar3;
}
param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a];
puVar6 = (undefined4 *)param_1[0x18];
for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) {
*puVar6 = 0;
puVar6 = puVar6 + 1;
}
for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) {
*(undefined1 *)puVar6 = 0;
puVar6 = (undefined4 *)((int)puVar6 + 1);
}
return param_1;
}
// --- FUN_004dba50 at 0x004DBA50 (size: 143) ---
undefined4 * __thiscall FUN_004dba50(undefined4 *param_1,undefined4 param_2)
{
undefined *puVar1;
uint *puVar2;
undefined4 uVar3;
uint uVar4;
int iVar5;
undefined4 *puVar6;
param_1[0x18] = 0;
param_1[0x19] = 0;
param_1[0x1a] = 0;
param_1[0x1b] = 0;
*param_1 = &PTR_FUN_007bf7dc;
puVar1 = PTR_DAT_00818558;
puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,&param_2,param_2,0);
if (puVar2 == (uint *)puVar1) {
puVar2 = puVar2 + -1;
}
uVar4 = *puVar2;
param_1[0x1a] = uVar4;
if (uVar4 < 0x18) {
param_1[0x18] = param_1 + 1;
}
else {
uVar3 = thunk_FUN_005df0f5(uVar4 << 2);
param_1[0x18] = uVar3;
}
param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a];
puVar6 = (undefined4 *)param_1[0x18];
for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) {
*puVar6 = 0;
puVar6 = puVar6 + 1;
}
for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) {
*(undefined1 *)puVar6 = 0;
puVar6 = (undefined4 *)((int)puVar6 + 1);
}
return param_1;
}
// --- FUN_004dbae0 at 0x004DBAE0 (size: 143) ---
undefined4 * __thiscall FUN_004dbae0(undefined4 *param_1,undefined4 param_2)
{
undefined *puVar1;
uint *puVar2;
undefined4 uVar3;
uint uVar4;
int iVar5;
undefined4 *puVar6;
param_1[0x18] = 0;
param_1[0x19] = 0;
param_1[0x1a] = 0;
param_1[0x1b] = 0;
*param_1 = &PTR_FUN_007bf7e0;
puVar1 = PTR_DAT_00818558;
puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,&param_2,param_2,0);
if (puVar2 == (uint *)puVar1) {
puVar2 = puVar2 + -1;
}
uVar4 = *puVar2;
param_1[0x1a] = uVar4;
if (uVar4 < 0x18) {
param_1[0x18] = param_1 + 1;
}
else {
uVar3 = thunk_FUN_005df0f5(uVar4 << 2);
param_1[0x18] = uVar3;
}
param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a];
puVar6 = (undefined4 *)param_1[0x18];
for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) {
*puVar6 = 0;
puVar6 = puVar6 + 1;
}
for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) {
*(undefined1 *)puVar6 = 0;
puVar6 = (undefined4 *)((int)puVar6 + 1);
}
return param_1;
}
// --- FUN_004dbb70 at 0x004DBB70 (size: 143) ---
undefined4 * __thiscall FUN_004dbb70(undefined4 *param_1,undefined4 param_2)
{
undefined *puVar1;
uint *puVar2;
undefined4 uVar3;
uint uVar4;
int iVar5;
undefined4 *puVar6;
param_1[0x18] = 0;
param_1[0x19] = 0;
param_1[0x1a] = 0;
param_1[0x1b] = 0;
*param_1 = &PTR_FUN_007bf7e4;
puVar1 = PTR_DAT_00818558;
puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,&param_2,param_2,0);
if (puVar2 == (uint *)puVar1) {
puVar2 = puVar2 + -1;
}
uVar4 = *puVar2;
param_1[0x1a] = uVar4;
if (uVar4 < 0x18) {
param_1[0x18] = param_1 + 1;
}
else {
uVar3 = thunk_FUN_005df0f5(uVar4 << 2);
param_1[0x18] = uVar3;
}
param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a];
puVar6 = (undefined4 *)param_1[0x18];
for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) {
*puVar6 = 0;
puVar6 = puVar6 + 1;
}
for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) {
*(undefined1 *)puVar6 = 0;
puVar6 = (undefined4 *)((int)puVar6 + 1);
}
return param_1;
}
// --- FUN_004dbc00 at 0x004DBC00 (size: 202) ---
uint __thiscall FUN_004dbc00(int param_1,uint param_2)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
int *piVar5;
if (param_2 == *(uint *)(param_1 + 0x68)) {
return param_2 & 0xffffff00;
}
iVar3 = *(int *)(param_1 + 0x6c);
iVar1 = 0;
do {
if (iVar3 == 0) {
if (*(void **)(param_1 + 0x60) != (void *)(param_1 + 4)) {
operator_delete__(*(void **)(param_1 + 0x60));
}
*(undefined4 *)(param_1 + 0x60) = 0;
*(undefined4 *)(param_1 + 100) = 0;
*(undefined4 *)(param_1 + 0x68) = 0;
*(undefined4 *)(param_1 + 0x6c) = 0;
FUN_00693b20(param_2);
while (iVar1 != 0) {
iVar3 = *(int *)(iVar1 + 4);
FUN_004dc0e0(iVar1);
iVar1 = iVar3;
}
return 1;
}
piVar5 = *(int **)(param_1 + 100);
while (piVar5 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) {
if (**(int **)(param_1 + 100) != 0) {
piVar5 = *(int **)(param_1 + 100);
iVar4 = *piVar5;
goto LAB_004dbc4e;
}
piVar5 = *(int **)(param_1 + 100) + 1;
*(int **)(param_1 + 100) = piVar5;
}
piVar5 = (int *)0x0;
iVar4 = 0;
LAB_004dbc4e:
iVar3 = *piVar5;
if (iVar3 == iVar4) {
LAB_004dbc61:
*piVar5 = *(int *)(iVar3 + 4);
}
else {
do {
iVar2 = iVar3;
iVar3 = *(int *)(iVar2 + 4);
} while (iVar3 != iVar4);
if (iVar2 == 0) goto LAB_004dbc61;
*(undefined4 *)(iVar2 + 4) = *(undefined4 *)(iVar3 + 4);
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
*(int *)(iVar4 + 4) = iVar1;
iVar3 = *(int *)(param_1 + 0x6c);
iVar1 = iVar4;
} while( true );
}
// --- FUN_004dbcd0 at 0x004DBCD0 (size: 289) ---
undefined4 __thiscall FUN_004dbcd0(int param_1,int param_2)
{
uint *puVar1;
int iVar2;
uint *puVar3;
int *piVar4;
undefined4 *puVar5;
undefined4 *puVar6;
uint *puVar7;
if (param_2 == *(int *)(param_1 + 0x68)) {
return 0;
}
iVar2 = *(int *)(param_1 + 0x6c);
puVar3 = (uint *)0x0;
do {
if (iVar2 == 0) {
if (*(void **)(param_1 + 0x60) != (void *)(param_1 + 4)) {
operator_delete__(*(void **)(param_1 + 0x60));
}
*(undefined4 *)(param_1 + 0x60) = 0;
*(undefined4 *)(param_1 + 100) = 0;
*(undefined4 *)(param_1 + 0x68) = 0;
*(undefined4 *)(param_1 + 0x6c) = 0;
FUN_00693b20(param_2);
puVar6 = (undefined4 *)PTR_DAT_00818558;
while (puVar3 != (uint *)0x0) {
param_2 = *(int *)(param_1 + 0x68);
puVar7 = (uint *)puVar3[1];
PTR_DAT_00818558 = (undefined *)puVar6;
if (param_2 * 2 < *(int *)(param_1 + 0x6c) + 1) {
puVar5 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,puVar6,&param_2,param_2,0);
if ((puVar5 != puVar6) || (puVar5 = puVar5 + -1, puVar5 != puVar6)) {
puVar5 = puVar5 + 1;
}
FUN_004dbcd0(*puVar5);
}
puVar1 = (uint *)(*(int *)(param_1 + 0x60) + (*puVar3 % *(uint *)(param_1 + 0x68)) * 4);
puVar3[1] = *puVar1;
*puVar1 = (uint)puVar3;
if (puVar1 < *(uint **)(param_1 + 100)) {
*(uint **)(param_1 + 100) = puVar1;
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1;
puVar6 = (undefined4 *)PTR_DAT_00818558;
puVar3 = puVar7;
}
PTR_DAT_00818558 = (undefined *)puVar6;
return 1;
}
piVar4 = *(int **)(param_1 + 100);
while (piVar4 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) {
if (**(int **)(param_1 + 100) != 0) {
puVar6 = *(undefined4 **)(param_1 + 100);
puVar7 = (uint *)*puVar6;
goto LAB_004dbd21;
}
piVar4 = *(int **)(param_1 + 100) + 1;
*(int **)(param_1 + 100) = piVar4;
}
puVar6 = (undefined4 *)0x0;
puVar7 = (uint *)0x0;
LAB_004dbd21:
FUN_00428ba0(param_1,puVar6,puVar7);
puVar7[1] = (uint)puVar3;
iVar2 = *(int *)(param_1 + 0x6c);
puVar3 = puVar7;
} while( true );
}
// --- FUN_004dbe00 at 0x004DBE00 (size: 202) ---
uint __thiscall FUN_004dbe00(int param_1,uint param_2)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
int *piVar5;
if (param_2 == *(uint *)(param_1 + 0x68)) {
return param_2 & 0xffffff00;
}
iVar3 = *(int *)(param_1 + 0x6c);
iVar1 = 0;
do {
if (iVar3 == 0) {
if (*(void **)(param_1 + 0x60) != (void *)(param_1 + 4)) {
operator_delete__(*(void **)(param_1 + 0x60));
}
*(undefined4 *)(param_1 + 0x60) = 0;
*(undefined4 *)(param_1 + 100) = 0;
*(undefined4 *)(param_1 + 0x68) = 0;
*(undefined4 *)(param_1 + 0x6c) = 0;
FUN_00693b20(param_2);
while (iVar1 != 0) {
iVar3 = *(int *)(iVar1 + 4);
FUN_004dc310(iVar1);
iVar1 = iVar3;
}
return 1;
}
piVar5 = *(int **)(param_1 + 100);
while (piVar5 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) {
if (**(int **)(param_1 + 100) != 0) {
piVar5 = *(int **)(param_1 + 100);
iVar4 = *piVar5;
goto LAB_004dbe4e;
}
piVar5 = *(int **)(param_1 + 100) + 1;
*(int **)(param_1 + 100) = piVar5;
}
piVar5 = (int *)0x0;
iVar4 = 0;
LAB_004dbe4e:
iVar3 = *piVar5;
if (iVar3 == iVar4) {
LAB_004dbe61:
*piVar5 = *(int *)(iVar3 + 4);
}
else {
do {
iVar2 = iVar3;
iVar3 = *(int *)(iVar2 + 4);
} while (iVar3 != iVar4);
if (iVar2 == 0) goto LAB_004dbe61;
*(undefined4 *)(iVar2 + 4) = *(undefined4 *)(iVar3 + 4);
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
*(int *)(iVar4 + 4) = iVar1;
iVar3 = *(int *)(param_1 + 0x6c);
iVar1 = iVar4;
} while( true );
}
// --- FUN_004dbed0 at 0x004DBED0 (size: 73) ---
void __fastcall FUN_004dbed0(int param_1)
{
undefined *puVar1;
undefined4 *puVar2;
undefined4 local_4;
puVar1 = PTR_DAT_00818558;
local_4 = *(undefined4 *)(param_1 + 0x68);
puVar2 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,local_4,0);
if ((puVar2 != (undefined4 *)puVar1) || (puVar2 = puVar2 + -1, puVar2 != (undefined4 *)puVar1)) {
puVar2 = puVar2 + 1;
}
FUN_004dbc00(*puVar2);
return;
}
// --- FUN_004dbf20 at 0x004DBF20 (size: 92) ---
void __fastcall FUN_004dbf20(int param_1)
{
LONG LVar1;
undefined4 *puVar2;
int local_4;
if ((*(int *)(param_1 + 0x60c) != 0) && (DAT_008379e4 != 0)) {
local_4 = param_1;
FUN_004a2170(0,DAT_008379e4 + 0x144);
FUN_0046a740(&local_4);
puVar2 = (undefined4 *)(local_4 + -0x14);
LVar1 = InterlockedDecrement((LONG *)(local_4 + -0x10));
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
(**(code **)*puVar2)(1);
}
}
return;
}
// --- FUN_004dbf80 at 0x004DBF80 (size: 143) ---
int FUN_004dbf80(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
undefined4 param_5,undefined **param_6)
{
int *piVar1;
int iVar2;
if (param_1 == 0) {
param_6 = &PTR_FUN_007a3c38;
FUN_00431730();
return 0;
}
iVar2 = 0;
piVar1 = (int *)FUN_0046f670(1,0);
if (piVar1 != (int *)0x0) {
iVar2 = (**(code **)(*piVar1 + 0x94))(0x10000034);
if (iVar2 == 0) {
iVar2 = 0;
}
else {
iVar2 = iVar2 + -0x20;
if (iVar2 != 0) {
FUN_00488c10(param_2,param_3,param_4,param_5,&param_6);
FUN_004f3af0(iVar2);
}
}
}
param_6 = &PTR_FUN_007a3c38;
FUN_00431730();
return iVar2;
}
// --- FUN_004dc010 at 0x004DC010 (size: 120) ---
uint __thiscall FUN_004dc010(int param_1,uint *param_2)
{
uint *puVar1;
int iVar2;
uint uVar3;
puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
do {
if (puVar1 == (uint *)0x0) {
LAB_004dc03b:
if ((int)(*(uint *)(param_1 + 0x68) * 2) < *(int *)(param_1 + 0x6c) + 1) {
FUN_004db970();
}
uVar3 = *param_2 % *(uint *)(param_1 + 0x68);
iVar2 = *(int *)(param_1 + 0x60);
param_2[1] = *(uint *)(iVar2 + uVar3 * 4);
*(uint **)(iVar2 + uVar3 * 4) = param_2;
uVar3 = iVar2 + uVar3 * 4;
if (uVar3 < *(uint *)(param_1 + 100)) {
*(uint *)(param_1 + 100) = uVar3;
}
iVar2 = *(int *)(param_1 + 0x6c) + 1;
*(int *)(param_1 + 0x6c) = iVar2;
return CONCAT31((int3)((uint)iVar2 >> 8),1);
}
if (*puVar1 == *param_2) {
if (puVar1 != (uint *)0x0) {
return (uint)puVar1 & 0xffffff00;
}
goto LAB_004dc03b;
}
puVar1 = (uint *)puVar1[1];
} while( true );
}
// --- FUN_004dc090 at 0x004DC090 (size: 73) ---
void __fastcall FUN_004dc090(int param_1)
{
undefined *puVar1;
undefined4 *puVar2;
undefined4 local_4;
puVar1 = PTR_DAT_00818558;
local_4 = *(undefined4 *)(param_1 + 0x68);
puVar2 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,&local_4,local_4,0);
if ((puVar2 != (undefined4 *)puVar1) || (puVar2 = puVar2 + -1, puVar2 != (undefined4 *)puVar1)) {
puVar2 = puVar2 + 1;
}
FUN_004dbe00(*puVar2);
return;
}
// --- FUN_004dc0e0 at 0x004DC0E0 (size: 62) ---
void __thiscall FUN_004dc0e0(int param_1,uint *param_2)
{
uint *puVar1;
if (*(int *)(param_1 + 0x68) * 2 < *(int *)(param_1 + 0x6c) + 1) {
FUN_004dbed0();
}
puVar1 = (uint *)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
param_2[1] = *puVar1;
*puVar1 = (uint)param_2;
if (puVar1 < *(uint **)(param_1 + 100)) {
*(uint **)(param_1 + 100) = puVar1;
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1;
return;
}
// --- FUN_004dc120 at 0x004DC120 (size: 92) ---
undefined4 __thiscall FUN_004dc120(int param_1,uint *param_2)
{
uint *puVar1;
puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
do {
if (puVar1 == (uint *)0x0) {
LAB_004dc14b:
FUN_004dc010(param_2);
LAB_004dc153:
FUN_00410820(param_2 + 2,*(undefined4 *)(param_1 + 0x74));
return 1;
}
if (*puVar1 == *param_2) {
if (puVar1 != (uint *)0x0) {
FUN_00410880(param_2 + 2);
goto LAB_004dc153;
}
goto LAB_004dc14b;
}
puVar1 = (uint *)puVar1[1];
} while( true );
}
// --- FUN_004dc180 at 0x004DC180 (size: 120) ---
uint __thiscall FUN_004dc180(int param_1,uint *param_2)
{
uint *puVar1;
int iVar2;
uint uVar3;
puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
do {
if (puVar1 == (uint *)0x0) {
LAB_004dc1ab:
if ((int)(*(uint *)(param_1 + 0x68) * 2) < *(int *)(param_1 + 0x6c) + 1) {
FUN_004dbed0();
}
uVar3 = *param_2 % *(uint *)(param_1 + 0x68);
iVar2 = *(int *)(param_1 + 0x60);
param_2[1] = *(uint *)(iVar2 + uVar3 * 4);
*(uint **)(iVar2 + uVar3 * 4) = param_2;
uVar3 = iVar2 + uVar3 * 4;
if (uVar3 < *(uint *)(param_1 + 100)) {
*(uint *)(param_1 + 100) = uVar3;
}
iVar2 = *(int *)(param_1 + 0x6c) + 1;
*(int *)(param_1 + 0x6c) = iVar2;
return CONCAT31((int3)((uint)iVar2 >> 8),1);
}
if (*puVar1 == *param_2) {
if (puVar1 != (uint *)0x0) {
return (uint)puVar1 & 0xffffff00;
}
goto LAB_004dc1ab;
}
puVar1 = (uint *)puVar1[1];
} while( true );
}
// --- FUN_004dc200 at 0x004DC200 (size: 92) ---
undefined4 __thiscall FUN_004dc200(int param_1,uint *param_2)
{
uint *puVar1;
puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
do {
if (puVar1 == (uint *)0x0) {
LAB_004dc22b:
FUN_004dc180(param_2);
LAB_004dc233:
FUN_00410820(param_2 + 2,*(undefined4 *)(param_1 + 0x74));
return 1;
}
if (*puVar1 == *param_2) {
if (puVar1 != (uint *)0x0) {
FUN_00410880(param_2 + 2);
goto LAB_004dc233;
}
goto LAB_004dc22b;
}
puVar1 = (uint *)puVar1[1];
} while( true );
}
// --- FUN_004dc260 at 0x004DC260 (size: 85) ---
undefined4 __thiscall FUN_004dc260(int param_1,uint *param_2)
{
uint *puVar1;
puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
do {
if (puVar1 == (uint *)0x0) {
LAB_004dc28b:
FUN_004dc010(param_2);
FUN_00410820(param_2 + 2,*(undefined4 *)(param_1 + 0x74));
return 1;
}
if (*puVar1 == *param_2) {
if (puVar1 != (uint *)0x0) {
return 0;
}
goto LAB_004dc28b;
}
puVar1 = (uint *)puVar1[1];
} while( true );
}
// --- FUN_004dc2c0 at 0x004DC2C0 (size: 69) ---
undefined4 __thiscall FUN_004dc2c0(int param_1,uint *param_2)
{
uint *puVar1;
undefined4 uVar2;
puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
if (puVar1 != (uint *)0x0) {
while (*puVar1 != *param_2) {
puVar1 = (uint *)puVar1[1];
if (puVar1 == (uint *)0x0) {
return 0;
}
}
if (puVar1 != (uint *)0x0) {
uVar2 = FUN_004dc120();
return uVar2;
}
}
return 0;
}
// --- FUN_004dc310 at 0x004DC310 (size: 62) ---
void __thiscall FUN_004dc310(int param_1,uint *param_2)
{
uint *puVar1;
if (*(int *)(param_1 + 0x68) * 2 < *(int *)(param_1 + 0x6c) + 1) {
FUN_004dc090();
}
puVar1 = (uint *)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
param_2[1] = *puVar1;
*puVar1 = (uint)param_2;
if (puVar1 < *(uint **)(param_1 + 100)) {
*(uint **)(param_1 + 100) = puVar1;
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1;
return;
}
// --- FUN_004dc350 at 0x004DC350 (size: 85) ---
undefined4 __thiscall FUN_004dc350(int param_1,uint *param_2)
{
uint *puVar1;
puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
do {
if (puVar1 == (uint *)0x0) {
LAB_004dc37b:
FUN_004dc180(param_2);
FUN_00410820(param_2 + 2,*(undefined4 *)(param_1 + 0x74));
return 1;
}
if (*puVar1 == *param_2) {
if (puVar1 != (uint *)0x0) {
return 0;
}
goto LAB_004dc37b;
}
puVar1 = (uint *)puVar1[1];
} while( true );
}
// --- FUN_004dc3b0 at 0x004DC3B0 (size: 69) ---
undefined4 __thiscall FUN_004dc3b0(int param_1,uint *param_2)
{
uint *puVar1;
undefined4 uVar2;
puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
if (puVar1 != (uint *)0x0) {
while (*puVar1 != *param_2) {
puVar1 = (uint *)puVar1[1];
if (puVar1 == (uint *)0x0) {
return 0;
}
}
if (puVar1 != (uint *)0x0) {
uVar2 = FUN_004dc200();
return uVar2;
}
}
return 0;
}
// --- FUN_004dc7d0 at 0x004DC7D0 (size: 82) ---
undefined4 * __thiscall FUN_004dc7d0(undefined4 *param_1,byte param_2)
{
*param_1 = &PTR_FUN_007bf7e8;
FUN_005870f0();
param_1[1] = &PTR_LAB_007bf7d8;
if ((undefined4 *)param_1[0x19] != param_1 + 2) {
operator_delete__((undefined4 *)param_1[0x19]);
}
param_1[0x19] = 0;
param_1[0x1a] = 0;
param_1[0x1b] = 0;
param_1[0x1c] = 0;
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004dc830 at 0x004DC830 (size: 178) ---
char __thiscall FUN_004dc830(int param_1,uint *param_2,undefined4 param_3)
{
char cVar1;
uint *puVar2;
puVar2 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
do {
if (puVar2 == (uint *)0x0) {
LAB_004dc85b:
puVar2 = (uint *)FUN_005df0f5(0x20);
if (puVar2 == (uint *)0x0) {
puVar2 = (uint *)0x0;
}
else {
*puVar2 = *param_2;
puVar2[1] = 0;
puVar2[2] = 0;
puVar2[3] = 0;
puVar2[4] = (uint)&PTR_FUN_007a3c34;
puVar2[5] = 0;
puVar2[6] = 0;
puVar2[7] = 0;
FUN_004db900(param_3);
}
cVar1 = FUN_004dc260(puVar2);
if ((cVar1 == '\0') && (puVar2 != (uint *)0x0)) {
puVar2[4] = (uint)&PTR_FUN_007a3c34;
FUN_0049f850();
operator_delete(puVar2);
cVar1 = '\0';
}
return cVar1;
}
if (*puVar2 == *param_2) {
if (puVar2 != (uint *)0x0) {
cVar1 = FUN_004dc2c0(param_2);
return cVar1;
}
goto LAB_004dc85b;
}
puVar2 = (uint *)puVar2[1];
} while( true );
}
// --- FUN_004dc8f0 at 0x004DC8F0 (size: 167) ---
char __thiscall FUN_004dc8f0(int param_1,uint *param_2,uint *param_3)
{
char cVar1;
uint *puVar2;
puVar2 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
do {
if (puVar2 == (uint *)0x0) {
LAB_004dc91b:
puVar2 = (uint *)FUN_005df0f5(0x20);
if (puVar2 == (uint *)0x0) {
puVar2 = (uint *)0x0;
}
else {
*puVar2 = *param_2;
puVar2[1] = 0;
puVar2[2] = 0;
puVar2[3] = 0;
puVar2[4] = *param_3;
puVar2[5] = param_3[1];
puVar2[6] = param_3[2];
puVar2[7] = param_3[3];
}
cVar1 = FUN_004dc350(puVar2);
if ((cVar1 == '\0') && (puVar2 != (uint *)0x0)) {
operator_delete(puVar2);
}
return cVar1;
}
if (*puVar2 == *param_2) {
if (puVar2 != (uint *)0x0) {
cVar1 = FUN_004dc3b0(param_2);
return cVar1;
}
goto LAB_004dc91b;
}
puVar2 = (uint *)puVar2[1];
} while( true );
}
// --- FUN_004dc9a0 at 0x004DC9A0 (size: 177) ---
void __fastcall FUN_004dc9a0(int param_1)
{
int iVar1;
void *pvVar2;
void *pvVar3;
int *piVar4;
void *pvVar5;
iVar1 = *(int *)(param_1 + 0x6c);
do {
if (iVar1 == 0) {
return;
}
piVar4 = *(int **)(param_1 + 100);
while (piVar4 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) {
if (**(int **)(param_1 + 100) != 0) {
piVar4 = *(int **)(param_1 + 100);
pvVar5 = (void *)*piVar4;
goto LAB_004dc9de;
}
piVar4 = *(int **)(param_1 + 100) + 1;
*(int **)(param_1 + 100) = piVar4;
}
piVar4 = (int *)0x0;
pvVar5 = (void *)0x0;
LAB_004dc9de:
pvVar3 = (void *)*piVar4;
if (pvVar3 == pvVar5) {
LAB_004dc9f1:
*piVar4 = *(int *)((int)pvVar3 + 4);
}
else {
do {
pvVar2 = pvVar3;
pvVar3 = *(void **)((int)pvVar2 + 4);
} while (pvVar3 != pvVar5);
if (pvVar2 == (void *)0x0) goto LAB_004dc9f1;
*(undefined4 *)((int)pvVar2 + 4) = *(undefined4 *)((int)pvVar3 + 4);
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
if (pvVar5 != (void *)0x0) {
*(undefined ***)((int)pvVar5 + 0x10) = &PTR_FUN_007a3c34;
while (pvVar3 = *(void **)((int)pvVar5 + 0x14), pvVar3 != (void *)0x0) {
iVar1 = *(int *)((int)pvVar3 + 4);
*(int *)((int)pvVar5 + 0x14) = iVar1;
if (iVar1 == 0) {
*(undefined4 *)((int)pvVar5 + 0x18) = 0;
}
else {
*(undefined4 *)(iVar1 + 8) = 0;
}
if (pvVar3 != (void *)0x0) {
operator_delete(pvVar3);
}
*(int *)((int)pvVar5 + 0x1c) = *(int *)((int)pvVar5 + 0x1c) + -1;
}
operator_delete(pvVar5);
}
iVar1 = *(int *)(param_1 + 0x6c);
} while( true );
}
// --- FUN_004dca60 at 0x004DCA60 (size: 120) ---
uint __thiscall FUN_004dca60(int param_1,uint *param_2)
{
uint *puVar1;
int iVar2;
uint uVar3;
puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
do {
if (puVar1 == (uint *)0x0) {
LAB_004dca8b:
if ((int)(*(uint *)(param_1 + 0x68) * 2) < *(int *)(param_1 + 0x6c) + 1) {
FUN_004dc090();
}
uVar3 = *param_2 % *(uint *)(param_1 + 0x68);
iVar2 = *(int *)(param_1 + 0x60);
param_2[1] = *(uint *)(iVar2 + uVar3 * 4);
*(uint **)(iVar2 + uVar3 * 4) = param_2;
uVar3 = iVar2 + uVar3 * 4;
if (uVar3 < *(uint *)(param_1 + 100)) {
*(uint *)(param_1 + 100) = uVar3;
}
iVar2 = *(int *)(param_1 + 0x6c) + 1;
*(int *)(param_1 + 0x6c) = iVar2;
return CONCAT31((int3)((uint)iVar2 >> 8),1);
}
if (*puVar1 == *param_2) {
if (puVar1 != (uint *)0x0) {
return (uint)puVar1 & 0xffffff00;
}
goto LAB_004dca8b;
}
puVar1 = (uint *)puVar1[1];
} while( true );
}
// --- FUN_004dcae0 at 0x004DCAE0 (size: 92) ---
undefined4 __thiscall FUN_004dcae0(int param_1,uint *param_2)
{
uint *puVar1;
puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
do {
if (puVar1 == (uint *)0x0) {
LAB_004dcb0b:
FUN_004dca60(param_2);
LAB_004dcb13:
FUN_00410820(param_2 + 2,*(undefined4 *)(param_1 + 0x74));
return 1;
}
if (*puVar1 == *param_2) {
if (puVar1 != (uint *)0x0) {
FUN_00410880(param_2 + 2);
goto LAB_004dcb13;
}
goto LAB_004dcb0b;
}
puVar1 = (uint *)puVar1[1];
} while( true );
}
// --- FUN_004dcb40 at 0x004DCB40 (size: 183) ---
undefined4 * __thiscall FUN_004dcb40(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_004f3a00(param_2,param_3);
param_1[0x180] = &PTR_FUN_007ccb60;
*param_1 = &PTR_FUN_007bfaa0;
param_1[0x17c] = &PTR_FUN_007bfa98;
param_1[0x180] = &PTR_FUN_007bf7f0;
param_1[0x181] = 0;
param_1[0x182] = 0;
param_1[0x183] = 0;
param_1[0x184] = 0;
param_1[0x185] = 0;
param_1[0x186] = 0;
param_1[0x187] = 0;
param_1[0x188] = &PTR_FUN_007bf7e8;
FUN_004db9c0(0x17);
param_1[0x1a5] = 0;
param_1[0x1a6] = 0;
param_1[0x1a7] = 0;
param_1[0x1a8] = 0;
param_1[0x1aa] = 0;
param_1[0x1ab] = 0;
param_1[0x1ac] = 0;
param_1[0x1a9] = &PTR_FUN_00795074;
return param_1;
}
// --- FUN_004dcc30 at 0x004DCC30 (size: 212) ---
void __fastcall FUN_004dcc30(undefined4 *param_1)
{
*param_1 = &PTR_FUN_007bfaa0;
param_1[0x17c] = &PTR_FUN_007bfa98;
param_1[0x180] = &PTR_FUN_007bf7f0;
FUN_00478560(param_1[0x1a5]);
param_1[0x1a5] = 0;
FUN_00478560(param_1[0x1a6]);
param_1[0x1a6] = 0;
FUN_00478560(param_1[0x1a7]);
param_1[0x1a7] = 0;
FUN_00478560(param_1[0x1a8]);
param_1[0x1a8] = 0;
param_1[0x1a9] = &PTR_FUN_00795074;
FUN_00405210();
param_1[0x188] = &PTR_FUN_007bf7e8;
FUN_005870f0();
param_1[0x189] = &PTR_LAB_007bf7d8;
if ((undefined4 *)param_1[0x1a1] != param_1 + 0x18a) {
operator_delete__((undefined4 *)param_1[0x1a1]);
}
param_1[0x1a1] = 0;
param_1[0x1a2] = 0;
param_1[0x1a3] = 0;
param_1[0x1a4] = 0;
param_1[0x180] = &PTR_FUN_007ccb60;
FUN_0043c610();
FUN_004f3a50();
return;
}
// --- FUN_004dcd40 at 0x004DCD40 (size: 1269) ---
undefined4 __fastcall FUN_004dcd40(int param_1)
{
char *pcVar1;
char *pcVar2;
int iVar3;
int *piVar4;
LONG LVar5;
undefined4 uVar6;
undefined4 *puVar7;
undefined4 *puVar8;
undefined4 *local_1d0;
int *local_1cc;
int iStack_1c8;
undefined *puStack_1c4;
undefined4 *puStack_1c0;
int *piStack_1bc;
undefined4 *puStack_1b8;
int *piStack_1b4;
int local_1b0;
int iStack_1ac;
int iStack_1a8;
char *pcStack_1a4;
undefined1 local_1a0 [120];
undefined1 auStack_128 [144];
undefined1 auStack_98 [148];
if (*(int *)(param_1 + 0x694) != 0) {
return 0;
}
local_1b0 = param_1;
FUN_006823d0();
local_1d0 = (undefined4 *)0x0;
local_1cc = (int *)0x0;
FUN_0042a2d0(0x8e);
if (local_1cc != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_1cc + 0xac))(7);
}
iStack_1c8 = FUN_00429a00();
FUN_0042c290(&iStack_1c8,&local_1d0);
FUN_0042a2d0(0xc3);
if (local_1cc != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_1cc + 0xac))(0x10000001);
}
iStack_1c8 = FUN_00429a00();
FUN_0042c290(&iStack_1c8,&local_1d0);
FUN_0042a2d0(0xac);
if (local_1cc != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_1cc + 0x74))(1);
}
iStack_1c8 = FUN_00429a00();
FUN_0042c290(&iStack_1c8,&local_1d0);
FUN_0042dc80();
FUN_0042c9c0(DAT_0084152c,0x10000004);
FUN_0042a2d0(0xc5);
if (local_1cc != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_1cc + 0xc4))(auStack_98);
}
iStack_1c8 = FUN_00429a00();
FUN_0042c290(&iStack_1c8,&local_1d0);
FUN_0042a2d0(0xa6);
FUN_004db540(&iStack_1ac);
pcVar1 = "\\*.keymap";
do {
pcVar2 = pcVar1;
pcVar1 = pcVar2 + 1;
} while (*pcVar2 != '\0');
FUN_00404ef0("\\*.keymap",pcVar2 + -0x7bfbe8);
FUN_00405210();
FUN_0040d4a0(&iStack_1ac,param_1 + 0x6a4,0,0);
puVar7 = *(undefined4 **)(param_1 + 0x6a8);
iStack_1c8 = 0;
for (; puVar7 != (undefined4 *)0x0; puVar7 = (undefined4 *)puVar7[1]) {
thunk_FUN_0040c720(puVar7);
pcVar1 = (char *)*puVar7;
pcStack_1a4 = pcVar1;
InterlockedIncrement((LONG *)(pcVar1 + -0x10));
iVar3 = _stricmp(pcVar1,*(char **)(DAT_008379e4 + 0x144));
if (iVar3 == 0) {
puStack_1c0 = (undefined4 *)0x0;
piStack_1bc = (int *)0x0;
FUN_0042a2d0(0xab);
if (piStack_1bc != (int *)0x0) {
FUN_00429b10();
(**(code **)(*piStack_1bc + 0x7c))(iStack_1c8);
}
puStack_1c4 = (undefined *)FUN_00429a00();
FUN_0042c290(&puStack_1c4,&puStack_1c0);
if (puStack_1c0 != (undefined4 *)0x0) {
iVar3 = puStack_1c0[1];
puStack_1c0[1] = iVar3 + -1;
if (iVar3 + -1 == 0) {
(**(code **)*puStack_1c0)(1);
}
puStack_1c0 = (undefined4 *)0x0;
}
if (piStack_1bc != (int *)0x0) {
iVar3 = piStack_1bc[1];
piStack_1bc[1] = iVar3 + -1;
if (iVar3 + -1 == 0) {
(**(code **)*piStack_1bc)(1);
}
piStack_1bc = (int *)0x0;
}
}
puStack_1b8 = (undefined4 *)0x0;
piStack_1b4 = (int *)0x0;
FUN_0042a2d0(0xa7);
FUN_0042dc80();
puStack_1c4 = PTR_DAT_00818340;
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
piVar4 = (int *)FUN_00403350(&iStack_1a8,0);
iVar3 = *(int *)(*piVar4 + -4);
if (iVar3 != 1) {
FUN_00402490(*piVar4,iVar3 + -1);
}
puVar8 = (undefined4 *)(iStack_1a8 + -0x14);
LVar5 = InterlockedDecrement((LONG *)(iStack_1a8 + -0x10));
if ((LVar5 == 0) && (puVar8 != (undefined4 *)0x0)) {
(**(code **)*puVar8)(1);
}
FUN_0042cbe0(&puStack_1c4,1);
puVar8 = (undefined4 *)(puStack_1c4 + -0x14);
LVar5 = InterlockedDecrement((LONG *)(puStack_1c4 + -0x10));
if ((LVar5 == 0) && (puVar8 != (undefined4 *)0x0)) {
(**(code **)*puVar8)(1);
}
if (piStack_1b4 != (int *)0x0) {
FUN_00429b10();
(**(code **)(*piStack_1b4 + 0xc4))(auStack_128);
}
if (local_1cc != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_1cc + 0xfc))(&puStack_1b8);
}
iStack_1c8 = iStack_1c8 + 1;
FUN_0042e590();
if (puStack_1b8 != (undefined4 *)0x0) {
iVar3 = puStack_1b8[1];
puStack_1b8[1] = iVar3 + -1;
if (iVar3 + -1 == 0) {
(**(code **)*puStack_1b8)(1);
}
puStack_1b8 = (undefined4 *)0x0;
}
if (piStack_1b4 != (int *)0x0) {
iVar3 = piStack_1b4[1];
piStack_1b4[1] = iVar3 + -1;
if (iVar3 + -1 == 0) {
(**(code **)*piStack_1b4)(1);
}
piStack_1b4 = (int *)0x0;
}
LVar5 = InterlockedDecrement((LONG *)(pcVar1 + -0x10));
if ((LVar5 == 0) && (pcVar1 + -0x14 != (char *)0x0)) {
(*(code *)**(undefined4 **)(pcVar1 + -0x14))(1);
}
param_1 = local_1b0;
}
local_1b0 = FUN_00429a00();
FUN_0042c290(&local_1b0,&local_1d0);
uVar6 = FUN_00478810(local_1a0);
*(undefined4 *)(param_1 + 0x694) = uVar6;
LVar5 = InterlockedDecrement((LONG *)(iStack_1ac + -0x10));
if ((LVar5 == 0) && ((undefined4 *)(iStack_1ac + -0x14) != (undefined4 *)0x0)) {
(*(code *)**(undefined4 **)(iStack_1ac + -0x14))(1);
}
FUN_0042e590();
if (local_1d0 != (undefined4 *)0x0) {
iVar3 = local_1d0[1];
local_1d0[1] = iVar3 + -1;
if (iVar3 + -1 == 0) {
(**(code **)*local_1d0)(1);
}
local_1d0 = (undefined4 *)0x0;
}
if (local_1cc != (int *)0x0) {
iVar3 = local_1cc[1];
local_1cc[1] = iVar3 + -1;
if (iVar3 + -1 == 0) {
(**(code **)*local_1cc)(1);
}
local_1cc = (int *)0x0;
}
FUN_00681f60();
return 1;
}
// --- FUN_004dd240 at 0x004DD240 (size: 512) ---
undefined4 __fastcall FUN_004dd240(int param_1)
{
int iVar1;
undefined4 uVar2;
undefined4 *local_11c;
int *local_118;
undefined4 uStack_114;
undefined1 local_110 [120];
undefined1 auStack_98 [148];
if (*(int *)(param_1 + 0x698) != 0) {
return 0;
}
FUN_006823d0();
local_11c = (undefined4 *)0x0;
local_118 = (int *)0x0;
FUN_0042a2d0(0x8e);
if (local_118 != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_118 + 0xac))(5);
}
uStack_114 = FUN_00429a00();
FUN_0042c290(&uStack_114,&local_11c);
FUN_0042a2d0(0xc3);
if (local_118 != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_118 + 0xac))(0x10000001);
}
uStack_114 = FUN_00429a00();
FUN_0042c290(&uStack_114,&local_11c);
FUN_0042a2d0(0xac);
if (local_118 != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_118 + 0x74))(1);
}
uStack_114 = FUN_00429a00();
FUN_0042c290(&uStack_114,&local_11c);
FUN_0042dc80();
FUN_0042c9c0(DAT_00841534,0x10000004);
FUN_0042a2d0(0xc5);
if (local_118 != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_118 + 0xc4))(auStack_98);
}
uStack_114 = FUN_00429a00();
FUN_0042c290(&uStack_114,&local_11c);
uVar2 = FUN_00478810(local_110);
*(undefined4 *)(param_1 + 0x698) = uVar2;
FUN_0042e590();
if (local_11c != (undefined4 *)0x0) {
iVar1 = local_11c[1];
local_11c[1] = iVar1 + -1;
if (iVar1 + -1 == 0) {
(**(code **)*local_11c)(1);
}
local_11c = (undefined4 *)0x0;
}
if (local_118 != (int *)0x0) {
iVar1 = local_118[1];
local_118[1] = iVar1 + -1;
if (iVar1 + -1 == 0) {
(**(code **)*local_118)(1);
}
local_118 = (int *)0x0;
}
FUN_00681f60();
return 1;
}
// --- FUN_004dd440 at 0x004DD440 (size: 617) ---
undefined4 __thiscall FUN_004dd440(int param_1,int param_2)
{
LONG LVar1;
undefined4 uVar2;
int iVar3;
undefined4 *local_11c;
int *local_118;
undefined4 uStack_114;
undefined1 local_110 [120];
undefined1 auStack_98 [148];
if (*(int *)(param_1 + 0x69c) != 0) {
LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10));
if ((LVar1 == 0) && ((undefined4 *)(param_2 + -0x14) != (undefined4 *)0x0)) {
(*(code *)**(undefined4 **)(param_2 + -0x14))(1);
}
return 0;
}
FUN_006823d0();
local_11c = (undefined4 *)0x0;
local_118 = (int *)0x0;
FUN_0042a2d0(0x8e);
if (local_118 != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_118 + 0xac))(3);
}
uStack_114 = FUN_00429a00();
FUN_0042c290(&uStack_114,&local_11c);
FUN_0042a2d0(0xc3);
if (local_118 != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_118 + 0xac))(0x10000001);
}
uStack_114 = FUN_00429a00();
FUN_0042c290(&uStack_114,&local_11c);
FUN_0042a2d0(0xac);
if (local_118 != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_118 + 0x74))(1);
}
uStack_114 = FUN_00429a00();
FUN_0042c290(&uStack_114,&local_11c);
FUN_0042dc80();
FUN_0042c9c0(DAT_00841528,0x10000004);
iVar3 = param_2;
InterlockedIncrement((LONG *)(param_2 + -0x10));
FUN_0042e9f0(DAT_00841538,iVar3);
FUN_0042a2d0(0xc5);
if (local_118 != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_118 + 0xc4))(auStack_98);
}
uStack_114 = FUN_00429a00();
FUN_0042c290(&uStack_114,&local_11c);
uVar2 = FUN_00478810(local_110);
*(undefined4 *)(param_1 + 0x69c) = uVar2;
FUN_0042e590();
if (local_11c != (undefined4 *)0x0) {
iVar3 = local_11c[1];
local_11c[1] = iVar3 + -1;
if (iVar3 + -1 == 0) {
(**(code **)*local_11c)(1);
}
local_11c = (undefined4 *)0x0;
}
if (local_118 != (int *)0x0) {
iVar3 = local_118[1];
local_118[1] = iVar3 + -1;
if (iVar3 + -1 == 0) {
(**(code **)*local_118)(1);
}
local_118 = (int *)0x0;
}
FUN_00681f60();
LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10));
if ((LVar1 == 0) && ((undefined4 *)(param_2 + -0x14) != (undefined4 *)0x0)) {
(*(code *)**(undefined4 **)(param_2 + -0x14))(1);
}
return 1;
}
// --- FUN_004dd6b0 at 0x004DD6B0 (size: 697) ---
undefined4 __thiscall FUN_004dd6b0(int param_1,int param_2)
{
LONG LVar1;
undefined4 uVar2;
undefined4 *puVar3;
int iVar4;
undefined4 *local_11c;
int *local_118;
undefined4 uStack_114;
undefined1 local_110 [120];
undefined1 auStack_98 [148];
if (*(int *)(param_1 + 0x6a0) != 0) {
puVar3 = (undefined4 *)(param_2 + -0x14);
LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10));
if ((LVar1 == 0) && (puVar3 != (undefined4 *)0x0)) {
(**(code **)*puVar3)(1);
}
return 0;
}
FUN_006823d0();
local_11c = (undefined4 *)0x0;
local_118 = (int *)0x0;
FUN_0042a2d0(0x8e);
if (local_118 != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_118 + 0xac))(1);
}
uStack_114 = FUN_00429a00();
FUN_0042c290(&uStack_114,&local_11c);
FUN_0042a2d0(0xc3);
if (local_118 != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_118 + 0xac))(0x10000001);
}
uStack_114 = FUN_00429a00();
FUN_0042c290(&uStack_114,&local_11c);
FUN_0042a2d0(0xac);
if (local_118 != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_118 + 0x74))(1);
}
uStack_114 = FUN_00429a00();
FUN_0042c290(&uStack_114,&local_11c);
FUN_0042a2d0(0x10000020);
if (local_118 != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_118 + 0xa4))(&param_2);
}
uStack_114 = FUN_00429a00();
FUN_0042c290(&uStack_114,&local_11c);
FUN_0042dc80();
FUN_0042c9c0(DAT_00841530,0x10000004);
iVar4 = param_2;
InterlockedIncrement((LONG *)(param_2 + -0x10));
FUN_0042e9f0(DAT_00841538,iVar4);
FUN_0042a2d0(0xc5);
if (local_118 != (int *)0x0) {
FUN_00429b10();
(**(code **)(*local_118 + 0xc4))(auStack_98);
}
uStack_114 = FUN_00429a00();
FUN_0042c290(&uStack_114,&local_11c);
uVar2 = FUN_00478810(local_110);
*(undefined4 *)(param_1 + 0x6a0) = uVar2;
FUN_0042e590();
if (local_11c != (undefined4 *)0x0) {
iVar4 = local_11c[1];
local_11c[1] = iVar4 + -1;
if (iVar4 + -1 == 0) {
(**(code **)*local_11c)(1);
}
local_11c = (undefined4 *)0x0;
}
if (local_118 != (int *)0x0) {
iVar4 = local_118[1];
local_118[1] = iVar4 + -1;
if (iVar4 + -1 == 0) {
(**(code **)*local_118)(1);
}
local_118 = (int *)0x0;
}
FUN_00681f60();
puVar3 = (undefined4 *)(param_2 + -0x14);
LVar1 = InterlockedDecrement((LONG *)(param_2 + -0x10));
if ((LVar1 == 0) && (puVar3 != (undefined4 *)0x0)) {
(**(code **)*puVar3)(1);
}
return 1;
}
// --- FUN_004dd970 at 0x004DD970 (size: 84) ---
undefined4 __thiscall FUN_004dd970(undefined4 param_1,int param_2)
{
int iVar1;
FUN_00448cd0();
iVar1 = 0;
if (*(int *)(param_2 + 0x6c) != 0) {
if (*(int *)(param_2 + 0x70) == 0) {
iVar1 = 0;
}
else {
iVar1 = *(int *)(param_2 + 0x70) + -8;
}
}
while( true ) {
if (iVar1 == 0) {
return param_1;
}
FUN_004dc8f0(iVar1,iVar1 + 0x10);
if (*(int *)(iVar1 + 8) == 0) break;
iVar1 = *(int *)(iVar1 + 8) + -8;
}
return param_1;
}
// --- FUN_004dd9d0 at 0x004DD9D0 (size: 81) ---
void __fastcall FUN_004dd9d0(int param_1)
{
int *piVar1;
int iVar2;
undefined4 *puVar3;
do {
piVar1 = *(int **)(param_1 + 0x70);
if (piVar1 == (int *)0x0) break;
if ((int *)piVar1[1] == (int *)0x0) {
iVar2 = *piVar1;
*(int *)(param_1 + 0x70) = iVar2;
if (iVar2 != 0) {
*(undefined4 *)(iVar2 + 4) = 0;
}
}
else {
*(int *)piVar1[1] = *piVar1;
}
if (*piVar1 == 0) {
puVar3 = *(undefined4 **)(*(int *)(param_1 + 0x74) + 4);
*(undefined4 **)(param_1 + 0x74) = puVar3;
if (puVar3 != (undefined4 *)0x0) {
*puVar3 = 0;
}
}
else {
*(int *)(*piVar1 + 4) = piVar1[1];
}
*piVar1 = 0;
piVar1[1] = 0;
} while (piVar1 != (int *)0x0);
FUN_004dc9a0();
return;
}
// --- FUN_004dda30 at 0x004DDA30 (size: 244) ---
void __fastcall FUN_004dda30(int param_1)
{
int *piVar1;
int iVar2;
undefined4 *puVar3;
uint *puVar4;
void *pvVar5;
uint *puVar6;
uint *puVar7;
uint uVar8;
uint *puVar9;
do {
puVar9 = (uint *)0x0;
if (*(int *)(param_1 + 0x6c) == 0) {
return;
}
piVar1 = *(int **)(param_1 + 0x70);
if (piVar1 != (int *)0x0) {
if ((int *)piVar1[1] == (int *)0x0) {
iVar2 = *piVar1;
*(int *)(param_1 + 0x70) = iVar2;
if (iVar2 != 0) {
*(undefined4 *)(iVar2 + 4) = 0;
}
}
else {
*(int *)piVar1[1] = *piVar1;
}
if (*piVar1 == 0) {
puVar3 = *(undefined4 **)(*(int *)(param_1 + 0x74) + 4);
*(undefined4 **)(param_1 + 0x74) = puVar3;
if (puVar3 != (undefined4 *)0x0) {
*puVar3 = 0;
}
}
else {
*(int *)(*piVar1 + 4) = piVar1[1];
}
*piVar1 = 0;
piVar1[1] = 0;
if (piVar1 != (int *)0x0) {
puVar9 = (uint *)(piVar1 + -2);
}
}
uVar8 = *puVar9 % *(uint *)(param_1 + 0x68);
puVar7 = *(uint **)(*(int *)(param_1 + 0x60) + uVar8 * 4);
for (puVar4 = puVar7; puVar4 != (uint *)0x0; puVar4 = (uint *)puVar4[1]) {
if (*puVar4 == *puVar9) {
if (puVar4 != (uint *)0x0) {
if (puVar7 == puVar4) goto LAB_004ddacd;
do {
puVar6 = puVar7;
puVar7 = (uint *)puVar6[1];
} while (puVar7 != puVar4);
if (puVar6 == (uint *)0x0) {
LAB_004ddacd:
*(uint *)(*(int *)(param_1 + 0x60) + uVar8 * 4) = puVar7[1];
}
else {
puVar6[1] = puVar7[1];
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
}
break;
}
}
puVar9[4] = (uint)&PTR_FUN_007a3c34;
while (pvVar5 = (void *)puVar9[5], pvVar5 != (void *)0x0) {
uVar8 = *(uint *)((int)pvVar5 + 4);
puVar9[5] = uVar8;
if (uVar8 == 0) {
puVar9[6] = 0;
}
else {
*(undefined4 *)(uVar8 + 8) = 0;
}
if (pvVar5 != (void *)0x0) {
operator_delete(pvVar5);
}
puVar9[7] = puVar9[7] - 1;
}
operator_delete(puVar9);
} while( true );
}
// --- FUN_004ddb30 at 0x004DDB30 (size: 69) ---
undefined4 __thiscall FUN_004ddb30(int param_1,uint *param_2)
{
uint *puVar1;
undefined4 uVar2;
puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
if (puVar1 != (uint *)0x0) {
while (*puVar1 != *param_2) {
puVar1 = (uint *)puVar1[1];
if (puVar1 == (uint *)0x0) {
return 0;
}
}
if (puVar1 != (uint *)0x0) {
uVar2 = FUN_004dcae0();
return uVar2;
}
}
return 0;
}
// --- FUN_004ddb80 at 0x004DDB80 (size: 85) ---
undefined4 __thiscall FUN_004ddb80(int param_1,uint *param_2)
{
uint *puVar1;
puVar1 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
do {
if (puVar1 == (uint *)0x0) {
LAB_004ddbab:
FUN_004dca60(param_2);
FUN_00410820(param_2 + 2,*(undefined4 *)(param_1 + 0x74));
return 1;
}
if (*puVar1 == *param_2) {
if (puVar1 != (uint *)0x0) {
return 0;
}
goto LAB_004ddbab;
}
puVar1 = (uint *)puVar1[1];
} while( true );
}
// --- FUN_004ddbe0 at 0x004DDBE0 (size: 30) ---
void * __thiscall FUN_004ddbe0(void *param_1,byte param_2)
{
FUN_004dcc30();
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004ddc00 at 0x004DDC00 (size: 19) ---
void FUN_004ddc00(void)
{
FUN_00460270(0x1000000e,&LAB_004dcd10);
return;
}
// --- FUN_004ddc20 at 0x004DDC20 (size: 457) ---
void FUN_004ddc20(int *param_1,char param_2)
{
char *pcVar1;
char cVar2;
LONG LVar3;
char *pcVar4;
undefined4 *puVar5;
int *piVar6;
int iVar7;
int iStack_c;
int local_8;
int local_4;
param_1 = (int *)*param_1;
InterlockedIncrement((LONG *)((int)param_1 + -0x10));
FUN_00401340(&DAT_007bfbf4);
piVar6 = &local_8;
FUN_0040ce00(&local_4,&param_1,piVar6);
cVar2 = FUN_00426520(piVar6);
LVar3 = InterlockedDecrement((LONG *)(local_4 + -0x10));
if ((LVar3 == 0) && ((undefined4 *)(local_4 + -0x14) != (undefined4 *)0x0)) {
(*(code *)**(undefined4 **)(local_4 + -0x14))(1);
}
LVar3 = InterlockedDecrement((LONG *)(local_8 + -0x10));
if ((LVar3 == 0) && ((undefined4 *)(local_8 + -0x14) != (undefined4 *)0x0)) {
(*(code *)**(undefined4 **)(local_8 + -0x14))(1);
}
if (cVar2 != '\0') {
pcVar1 = ".keymap";
do {
pcVar4 = pcVar1;
pcVar1 = pcVar4 + 1;
} while (*pcVar4 != '\0');
FUN_00404ef0(&DAT_007bfbf4,pcVar4 + -0x7bfbf4);
}
FUN_004db540(&iStack_c);
FUN_0040cb70(&iStack_c,&param_1);
cVar2 = FUN_0040b320(&iStack_c,0);
if (cVar2 != '\0') {
cVar2 = FUN_0040b320(&iStack_c,2);
if (cVar2 == '\0') {
iVar7 = (int)param_1;
InterlockedIncrement((LONG *)((int)param_1 + -0x10));
FUN_004dd440(iVar7);
goto LAB_004ddda2;
}
if (param_2 != '\0') {
iVar7 = (int)param_1;
InterlockedIncrement((LONG *)((int)param_1 + -0x10));
FUN_004dd6b0(iVar7);
goto LAB_004ddda2;
}
}
if ((DAT_008379e4 != 0) && (DAT_00837ff4 != (int *)0x0)) {
FUN_00402020(&param_1);
piVar6 = DAT_00837ff4;
iVar7 = iStack_c;
InterlockedIncrement((LONG *)(iStack_c + -0x10));
(**(code **)(*piVar6 + 0x30))(iVar7);
FUN_004dbf20();
FUN_00438230();
}
LAB_004ddda2:
LVar3 = InterlockedDecrement((LONG *)(iStack_c + -0x10));
if ((LVar3 == 0) && ((undefined4 *)(iStack_c + -0x14) != (undefined4 *)0x0)) {
(*(code *)**(undefined4 **)(iStack_c + -0x14))(1);
}
puVar5 = (undefined4 *)((int)param_1 + -0x14);
LVar3 = InterlockedDecrement((LONG *)((int)param_1 + -0x10));
if ((LVar3 == 0) && (puVar5 != (undefined4 *)0x0)) {
(**(code **)*puVar5)(1);
}
return;
}
// --- FUN_004dddf0 at 0x004DDDF0 (size: 49) ---
void __thiscall FUN_004dddf0(int param_1,undefined4 param_2)
{
char cVar1;
*(undefined4 *)(param_1 + 0x698) = 0;
cVar1 = FUN_00426520(&PTR_DAT_008183b4);
if (cVar1 != '\0') {
FUN_004ddc20(param_2,1);
}
return;
}
// --- FUN_004dde30 at 0x004DDE30 (size: 33) ---
void __thiscall FUN_004dde30(int param_1,char param_2,undefined4 param_3)
{
*(undefined4 *)(param_1 + 0x6a0) = 0;
if (param_2 != '\0') {
FUN_004ddc20(param_3,0);
}
return;
}
// --- FUN_004dde60 at 0x004DDE60 (size: 84) ---
undefined4 __thiscall FUN_004dde60(undefined4 param_1,int param_2)
{
int iVar1;
FUN_004dda30();
iVar1 = 0;
if (*(int *)(param_2 + 0x6c) != 0) {
if (*(int *)(param_2 + 0x70) == 0) {
iVar1 = 0;
}
else {
iVar1 = *(int *)(param_2 + 0x70) + -8;
}
}
while( true ) {
if (iVar1 == 0) {
return param_1;
}
FUN_004dc830(iVar1,iVar1 + 0x10);
if (*(int *)(iVar1 + 8) == 0) break;
iVar1 = *(int *)(iVar1 + 8) + -8;
}
return param_1;
}
// --- FUN_004de3f0 at 0x004DE3F0 (size: 228) ---
char __thiscall FUN_004de3f0(int param_1,uint *param_2,int param_3)
{
char cVar1;
uint *puVar2;
puVar2 = *(uint **)(*(int *)(param_1 + 0x60) + (*param_2 % *(uint *)(param_1 + 0x68)) * 4);
do {
if (puVar2 == (uint *)0x0) {
LAB_004de41f:
puVar2 = (uint *)FUN_005df0f5(0x88);
if (puVar2 == (uint *)0x0) {
puVar2 = (uint *)0x0;
}
else {
*puVar2 = *param_2;
puVar2[1] = 0;
puVar2[2] = 0;
puVar2[3] = 0;
FUN_004dbae0(*(undefined4 *)(param_3 + 0x68));
puVar2[0x20] = 0;
puVar2[0x21] = 0;
FUN_004dde60(param_3);
}
cVar1 = FUN_004ddb80(puVar2);
if ((cVar1 == '\0') && (puVar2 != (uint *)0x0)) {
FUN_004dd9d0();
puVar2[4] = (uint)&PTR_FUN_007bf7e0;
if ((uint *)puVar2[0x1c] != puVar2 + 5) {
operator_delete__((uint *)puVar2[0x1c]);
}
puVar2[0x1c] = 0;
puVar2[0x1d] = 0;
puVar2[0x1e] = 0;
puVar2[0x1f] = 0;
operator_delete(puVar2);
cVar1 = '\0';
}
return cVar1;
}
if (*puVar2 == *param_2) {
if (puVar2 != (uint *)0x0) {
cVar1 = FUN_004ddb30(param_2);
return cVar1;
}
goto LAB_004de41f;
}
puVar2 = (uint *)puVar2[1];
} while( true );
}
// --- FUN_004de4e0 at 0x004DE4E0 (size: 257) ---
void __fastcall FUN_004de4e0(int param_1)
{
int iVar1;
undefined4 *puVar2;
void *pvVar3;
void *pvVar4;
int *piVar5;
void *pvVar6;
do {
piVar5 = *(int **)(param_1 + 0x70);
if (piVar5 == (int *)0x0) break;
if ((int *)piVar5[1] == (int *)0x0) {
iVar1 = *piVar5;
*(int *)(param_1 + 0x70) = iVar1;
if (iVar1 != 0) {
*(undefined4 *)(iVar1 + 4) = 0;
}
}
else {
*(int *)piVar5[1] = *piVar5;
}
if (*piVar5 == 0) {
puVar2 = *(undefined4 **)(*(int *)(param_1 + 0x74) + 4);
*(undefined4 **)(param_1 + 0x74) = puVar2;
if (puVar2 != (undefined4 *)0x0) {
*puVar2 = 0;
}
}
else {
*(int *)(*piVar5 + 4) = piVar5[1];
}
*piVar5 = 0;
piVar5[1] = 0;
} while (piVar5 != (int *)0x0);
iVar1 = *(int *)(param_1 + 0x6c);
do {
if (iVar1 == 0) {
return;
}
piVar5 = *(int **)(param_1 + 100);
while (piVar5 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) {
if (**(int **)(param_1 + 100) != 0) {
piVar5 = *(int **)(param_1 + 100);
pvVar6 = (void *)*piVar5;
goto LAB_004de37f;
}
piVar5 = *(int **)(param_1 + 100) + 1;
*(int **)(param_1 + 100) = piVar5;
}
piVar5 = (int *)0x0;
pvVar6 = (void *)0x0;
LAB_004de37f:
pvVar4 = (void *)*piVar5;
if (pvVar4 == pvVar6) {
LAB_004de392:
*piVar5 = *(int *)((int)pvVar4 + 4);
}
else {
do {
pvVar3 = pvVar4;
pvVar4 = *(void **)((int)pvVar3 + 4);
} while (pvVar4 != pvVar6);
if (pvVar3 == (void *)0x0) goto LAB_004de392;
*(undefined4 *)((int)pvVar3 + 4) = *(undefined4 *)((int)pvVar4 + 4);
}
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
if (pvVar6 != (void *)0x0) {
FUN_004dd9d0();
*(undefined ***)((int)pvVar6 + 0x10) = &PTR_FUN_007bf7e0;
if (*(void **)((int)pvVar6 + 0x70) != (void *)((int)pvVar6 + 0x14)) {
operator_delete__(*(void **)((int)pvVar6 + 0x70));
}
*(undefined4 *)((int)pvVar6 + 0x70) = 0;
*(undefined4 *)((int)pvVar6 + 0x74) = 0;
*(undefined4 *)((int)pvVar6 + 0x78) = 0;
*(undefined4 *)((int)pvVar6 + 0x7c) = 0;
operator_delete(pvVar6);
}
iVar1 = *(int *)(param_1 + 0x6c);
} while( true );
}
// --- FUN_004dedd0 at 0x004DEDD0 (size: 101) ---
void __fastcall FUN_004dedd0(undefined4 *param_1)
{
*param_1 = DAT_0084155c;
param_1[1] = DAT_0084155c;
param_1[2] = DAT_0084155c;
param_1[3] = DAT_0084155c;
param_1[4] = DAT_0084155c;
param_1[5] = DAT_0084155c;
param_1[6] = DAT_0084155c;
param_1[7] = DAT_0084155c;
param_1[8] = DAT_0084155c;
param_1[9] = DAT_0084155c;
param_1[10] = DAT_0084155c;
return;
}
// --- FUN_004dee40 at 0x004DEE40 (size: 256) ---
undefined4 * __thiscall FUN_004dee40(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
undefined4 *puVar1;
int iVar2;
FUN_00472670(param_2,param_3);
param_1[0x17e] = &PTR_FUN_007ccb60;
*param_1 = &PTR_FUN_007c0118;
param_1[0x17e] = &PTR_FUN_007bfe70;
param_1[0x180] = 0;
param_1[0x181] = 0;
param_1[0x18c] = 0;
param_1[0x18e] = 0;
param_1[399] = 0;
param_1[400] = 0;
param_1[0x194] = 0xffffffff;
param_1[0x196] = 0xfffffc19;
*(undefined1 *)(param_1 + 0x197) = 0;
param_1[0x198] = 0;
param_1[0x19a] = 0;
param_1[0x19b] = 0;
param_1[0x19c] = 0;
param_1[0x19d] = 0;
param_1[0x1a0] = 0;
param_1[0x1a1] = 0x40080000;
param_1[0x1a2] = 0;
puVar1 = param_1 + 0x1a4;
iVar2 = 9;
do {
*puVar1 = 0;
puVar1[1] = 0;
puVar1[2] = 0;
puVar1[3] = 0;
puVar1[4] = 0;
puVar1[5] = 0;
puVar1 = puVar1 + 6;
iVar2 = iVar2 + -1;
} while (iVar2 != 0);
param_1[0x1da] = 1;
puVar1 = param_1 + 0x1db;
iVar2 = 9;
do {
*puVar1 = 0;
puVar1[1] = 0;
puVar1[2] = 0;
puVar1[3] = 0;
puVar1[4] = 0;
puVar1[5] = 0;
puVar1[6] = 0;
puVar1 = puVar1 + 7;
iVar2 = iVar2 + -1;
} while (iVar2 != 0);
return param_1;
}
// --- FUN_004def70 at 0x004DEF70 (size: 92) ---
void __fastcall FUN_004def70(int param_1)
{
int *piVar1;
int iVar2;
FUN_004639a0();
piVar1 = (int *)FUN_0043c680();
if (param_1 == 0) {
iVar2 = 0;
}
else {
iVar2 = param_1 + 0x5f8;
}
(**(code **)(*piVar1 + 4))(0x186b0,iVar2);
if (param_1 == 0) {
iVar2 = 0;
}
else {
iVar2 = param_1 + 0x5f8;
}
(**(code **)(*piVar1 + 4))(0x4dd27e,iVar2);
FUN_00465f90(3);
*(undefined4 *)(param_1 + 0x660) = 0x43340000;
return;
}
// --- FUN_004df000 at 0x004DF000 (size: 49) ---
undefined4 * __thiscall FUN_004df000(undefined4 *param_1,int param_2)
{
*param_1 = &PTR_FUN_007a0ad0;
param_1[1] = *(undefined4 *)(param_2 + 4);
*(undefined1 *)(param_1 + 2) = *(undefined1 *)(param_2 + 8);
param_1[3] = *(undefined4 *)(param_2 + 0xc);
FUN_005ad590(param_2 + 0x10);
return param_1;
}
// --- FUN_004df040 at 0x004DF040 (size: 29) ---
void FUN_004df040(void)
{
char cVar1;
cVar1 = FUN_004603a0();
if (cVar1 != '\0') {
FUN_004ef660();
return;
}
return;
}
// --- FUN_004df060 at 0x004DF060 (size: 121) ---
void __thiscall FUN_004df060(int param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
char cVar2;
FUN_00460760(0x86,(float)(double)CONCAT44(param_3,param_2));
FUN_0055e1e0();
iVar1 = *(int *)(param_1 + 0x768);
if (iVar1 == 1) {
FUN_005c4860(param_2,param_3);
}
else if ((2 < iVar1) && (iVar1 < 6)) {
FUN_005c4830(param_2,param_3);
}
cVar2 = FUN_004603a0();
if (cVar2 != '\0') {
FUN_004ef660();
}
return;
}
// --- FUN_004df0e0 at 0x004DF0E0 (size: 208) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __fastcall FUN_004df0e0(int param_1)
{
double dVar1;
undefined4 uVar2;
float10 fVar3;
uVar2 = DAT_008379ac;
if (*(double *)(param_1 + 0x678) < _DAT_00795610) {
*(undefined4 *)(param_1 + 0x678) = DAT_008379a8;
*(undefined4 *)(param_1 + 0x67c) = uVar2;
}
dVar1 = (double)CONCAT44(DAT_008379ac,DAT_008379a8);
fVar3 = (((float10)dVar1 - (float10)*(double *)(param_1 + 0x678)) /
(float10)*(double *)(param_1 + 0x680)) * (float10)_DAT_0079c6b8;
if (*(int *)(param_1 + 0x688) == 1) {
*(float *)(param_1 + 0x660) = (float)(fVar3 + (float10)*(float *)(param_1 + 0x660));
}
else {
*(float *)(param_1 + 0x660) = (float)((float10)*(float *)(param_1 + 0x660) - fVar3);
}
if (*(float *)(param_1 + 0x660) < DAT_00796344) {
*(float *)(param_1 + 0x660) = *(float *)(param_1 + 0x660) + _DAT_0079cc60;
}
if (_DAT_0079cc60 < *(float *)(param_1 + 0x660)) {
*(float *)(param_1 + 0x660) = *(float *)(param_1 + 0x660) - _DAT_0079cc60;
}
*(double *)(param_1 + 0x678) = dVar1;
FUN_004ef220(*(undefined4 *)(param_1 + 0x660));
return;
}
// --- FUN_004df1b0 at 0x004DF1B0 (size: 118) ---
void __thiscall FUN_004df1b0(int param_1,int param_2)
{
if ((*(char *)(param_1 + 0x65c) != '\0') && (param_2 == *(int *)(param_1 + 0x688))) {
*(undefined1 *)(param_1 + 0x65c) = 0;
return;
}
if (param_2 == 1) {
(**(code **)(**(int **)(param_1 + 0x604) + 0x9c))(1);
}
else if (param_2 == 2) {
(**(code **)(**(int **)(param_1 + 0x600) + 0x9c))(1);
}
*(int *)(param_1 + 0x688) = param_2;
*(undefined4 *)(param_1 + 0x678) = 0;
*(undefined4 *)(param_1 + 0x67c) = 0xbff00000;
*(undefined1 *)(param_1 + 0x65c) = 1;
return;
}
// --- FUN_004df230 at 0x004DF230 (size: 82) ---
undefined4 * __thiscall FUN_004df230(undefined4 *param_1,byte param_2)
{
undefined4 *puVar1;
int *piVar2;
puVar1 = param_1 + 0x17e;
*param_1 = &PTR_FUN_007c0118;
*puVar1 = &PTR_FUN_007bfe70;
piVar2 = (int *)FUN_0043c680();
if (piVar2 != (int *)0x0) {
(**(code **)(*piVar2 + 0xc))(puVar1);
}
*puVar1 = &PTR_FUN_007ccb60;
FUN_0043c610();
FUN_004726c0();
if ((param_2 & 1) != 0) {
operator_delete(param_1);
}
return param_1;
}
// --- FUN_004df290 at 0x004DF290 (size: 19) ---
void FUN_004df290(void)
{
FUN_00460270(0x1000004a,&LAB_004defd0);
return;
}
// --- FUN_004df2d0 at 0x004DF2D0 (size: 565) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __thiscall FUN_004df2d0(int param_1,int param_2)
{
undefined4 uVar1;
int *piVar2;
int *piVar3;
int *piVar4;
int iVar5;
int *piVar6;
int local_4c;
undefined4 local_48;
undefined4 local_44;
int iStack_40;
int iStack_3c;
int *piStack_38;
int local_34;
float fStack_20;
float fStack_1c;
float fStack_18;
undefined4 uStack_14;
undefined4 uStack_10;
undefined4 uStack_c;
undefined4 uStack_8;
undefined4 uStack_4;
local_4c = 0;
piVar6 = (int *)(param_1 + 0x780);
local_34 = param_1;
do {
FUN_00415640(&local_48,0x1000000d,7);
FUN_00415640(&local_44,0x1000000f,7);
(**(code **)(*(int *)piVar6[-2] + 0x18))(1);
uVar1 = FUN_004220b0(local_48,0xc);
piVar2 = (int *)FUN_00415430(uVar1);
uVar1 = FUN_004220b0(local_44,0xc);
piVar3 = (int *)FUN_00415430(uVar1);
piStack_38 = piVar3;
if (piVar2 != (int *)0x0) {
fStack_20 = (float)piVar6[-5];
uStack_10 = 0;
uStack_c = 0;
uStack_8 = 0;
uStack_4 = 0x3f800000;
if (piVar6[-5] < 0) {
fStack_20 = fStack_20 + _DAT_0079920c;
}
fStack_20 = fStack_20 * _DAT_00799208;
fStack_1c = (float)piVar6[-4];
if (piVar6[-4] < 0) {
fStack_1c = fStack_1c + _DAT_0079920c;
}
fStack_1c = fStack_1c * _DAT_00799208;
fStack_18 = (float)piVar6[-3];
if (piVar6[-3] < 0) {
fStack_18 = fStack_18 + _DAT_0079920c;
}
fStack_18 = fStack_18 * _DAT_00799208;
uStack_14 = 0x3f800000;
if (*piVar6 == 0) {
piVar4 = (int *)(**(code **)(*DAT_00870340 + 0xc))();
if (piVar4 != (int *)0x0) {
iStack_3c = piVar2[0x28];
iStack_40 = piVar2[0x29];
iVar5 = *piVar4;
uVar1 = FUN_0054fe80(1);
(**(code **)(iVar5 + 0x58))(iStack_3c,iStack_40,uVar1);
iVar5 = FUN_005df0f5(0xc);
if (iVar5 == 0) {
iVar5 = 0;
}
else {
iVar5 = FUN_00694d80(piVar4);
}
*piVar6 = iVar5;
piVar3 = piStack_38;
}
}
if (local_4c < *(int *)(local_34 + 0x698 + param_2 * 0x18)) {
FUN_00442c70(piVar2 + 0x2b,0,0x3f800000);
FUN_004416d0(&uStack_10,&fStack_20);
}
else {
FUN_00442c70(piVar3 + 0x2b,0,0x3f800000);
}
FUN_006a0660();
iVar5 = FUN_005df0f5(0xc);
if (iVar5 == 0) {
uVar1 = 0;
}
else {
uVar1 = FUN_00694d80(*(undefined4 *)(*piVar6 + 8));
}
FUN_006a0610(uVar1);
}
if (piVar3 != (int *)0x0) {
(**(code **)(*piVar3 + 0x14))();
}
if (piVar2 != (int *)0x0) {
(**(code **)(*piVar2 + 0x14))();
}
local_4c = local_4c + 1;
piVar6 = piVar6 + 7;
} while (local_4c < 9);
return;
}
// --- FUN_004df510 at 0x004DF510 (size: 699) ---
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __thiscall FUN_004df510(int param_1,char param_2)
{
int iVar1;
undefined4 uVar2;
int *piVar3;
int *piVar4;
int *piVar5;
int iVar6;
undefined4 local_2c;
undefined4 local_28;
int local_24;
float local_10;
float local_c;
float local_8;
undefined4 local_4;
FUN_00415640(&local_2c,0x1000000e,7);
FUN_00415640(&local_28,0x10000010,7);
uVar2 = FUN_004220b0(local_2c,0xc);
piVar3 = (int *)FUN_00415430(uVar2);
uVar2 = FUN_004220b0(local_28,0xc);
piVar4 = (int *)FUN_00415430(uVar2);
if (piVar3 != (int *)0x0) {
if (piVar4 == (int *)0x0) goto LAB_004df7b6;
iVar6 = *(int *)(param_1 + 0x650) * 0x1c;
local_10 = (float)*(int *)(iVar6 + 0x76c + param_1);
if (*(int *)(iVar6 + 0x76c + param_1) < 0) {
local_10 = local_10 + _DAT_0079920c;
}
local_10 = local_10 * _DAT_00799208;
iVar1 = *(int *)((*(int *)(param_1 + 0x650) + 0x44) * 0x1c + param_1);
local_c = (float)iVar1;
if (iVar1 < 0) {
local_c = local_c + _DAT_0079920c;
}
local_c = local_c * _DAT_00799208;
local_24 = *(int *)(iVar6 + param_1 + 0x774);
local_8 = (float)local_24;
if (local_24 < 0) {
local_8 = local_8 + _DAT_0079920c;
}
local_8 = local_8 * _DAT_00799208;
local_4 = 0x3f800000;
if (*(int *)(param_1 + 0x63c) == 0) {
piVar5 = (int *)(**(code **)(*DAT_00870340 + 0xc))();
if (piVar5 != (int *)0x0) {
local_24 = piVar3[0x28];
iVar6 = piVar3[0x29];
iVar1 = *piVar5;
uVar2 = FUN_0054fe80(1);
(**(code **)(iVar1 + 0x58))(local_24,iVar6,uVar2);
iVar6 = FUN_005df0f5(0xc);
if (iVar6 == 0) {
uVar2 = 0;
}
else {
uVar2 = FUN_00694d80(piVar5);
}
*(undefined4 *)(param_1 + 0x63c) = uVar2;
}
}
if (*(int *)(param_1 + 0x640) == 0) {
piVar5 = (int *)(**(code **)(*DAT_00870340 + 0xc))();
if (piVar5 != (int *)0x0) {
local_24 = piVar4[0x28];
iVar6 = piVar4[0x29];
iVar1 = *piVar5;
uVar2 = FUN_0054fe80(1);
(**(code **)(iVar1 + 0x58))(local_24,iVar6,uVar2);
iVar6 = FUN_005df0f5(0xc);
if (iVar6 == 0) {
uVar2 = 0;
}
else {
uVar2 = FUN_00694d80(piVar5);
}
*(undefined4 *)(param_1 + 0x640) = uVar2;
}
}
if (param_2 == '\0') {
uVar2 = FUN_00424000();
FUN_004428b0(piVar3 + 0x2b,0,0x3f800000,0,4,uVar2);
FUN_006a0660();
iVar6 = FUN_005df0f5(0xc);
if (iVar6 == 0) {
LAB_004df79d:
uVar2 = 0;
}
else {
uVar2 = FUN_00694d80(*(undefined4 *)(*(int *)(param_1 + 0x63c) + 8));
}
}
else {
FUN_00442c70(piVar4 + 0x2b,0,0x3f800000);
FUN_006a0660();
iVar6 = FUN_005df0f5(0xc);
if (iVar6 == 0) goto LAB_004df79d;
uVar2 = FUN_00694d80(*(undefined4 *)(*(int *)(param_1 + 0x640) + 8));
}
FUN_006a0610(uVar2);
}
if (piVar4 != (int *)0x0) {
(**(code **)(*piVar4 + 0x14))();
}
LAB_004df7b6:
if (piVar3 != (int *)0x0) {
(**(code **)(*piVar3 + 0x14))();
}
return;
}
// --- FUN_004df7d0 at 0x004DF7D0 (size: 168) ---
void __thiscall FUN_004df7d0(int param_1,int param_2)
{
char cVar1;
if (*(int *)(param_1 + 0x650) != -1) {
(**(code **)(**(int **)(*(int *)(param_1 + 0x650) * 0x1c + 0x77c + param_1) + 0x18))(0);
}
if (param_2 != -1) {
(**(code **)(**(int **)(param_2 * 0x1c + 0x77c + param_1) + 0x18))(1);
}
*(int *)(param_1 + 0x650) = param_2;
FUN_0055e1e0();
param_2 = 0;
if (*(int *)(param_1 + 0x768) == 1) {
FUN_005c4890(*(undefined4 *)(param_1 + 0x650));
}
else if (*(int *)(param_1 + 0x768) == 2) {
FUN_005c48b0(*(undefined4 *)(param_1 + 0x650));
param_2 = 1;
}
FUN_004df510(param_2);
cVar1 = FUN_004603a0();
if (cVar1 != '\0') {
FUN_004ef660();
}
return;
}
// --- FUN_004df880 at 0x004DF880 (size: 510) ---
void __fastcall FUN_004df880(int param_1)
{
undefined4 uVar1;
int iVar2;
undefined1 local_1a8 [96];
undefined4 local_148;
undefined4 local_13c;
undefined4 local_130;
undefined4 local_124;
undefined4 local_118;
undefined4 local_10c;
undefined4 local_f4;
undefined4 local_e8;
undefined4 local_dc;
undefined1 local_c8 [196];
iVar2 = FUN_0055e1e0();
FUN_005c3380(local_c8,*(undefined4 *)(iVar2 + 0xd4));
FUN_005c2b30(local_1a8,*(undefined4 *)(iVar2 + 0xd8));
uVar1 = *(undefined4 *)(iVar2 + 0xf0);
*(undefined4 *)(param_1 + 0x690) = local_13c;
*(undefined4 *)(param_1 + 0x694) = uVar1;
*(undefined4 *)(param_1 + 0x69c) = *(undefined4 *)(iVar2 + 0xe8);
*(undefined4 *)(param_1 + 0x698) = local_148;
*(undefined8 *)(param_1 + 0x6a0) = *(undefined8 *)(iVar2 + 0x150);
*(undefined4 *)(param_1 + 0x6ac) = *(undefined4 *)(iVar2 + 0xdc);
*(undefined4 *)(param_1 + 0x6a8) = local_124;
uVar1 = *(undefined4 *)(iVar2 + 0xec);
*(undefined4 *)(param_1 + 0x6b0) = local_130;
*(undefined4 *)(param_1 + 0x6b4) = uVar1;
*(undefined4 *)(param_1 + 0x6b8) = 0;
*(undefined4 *)(param_1 + 0x6bc) = 0;
*(undefined4 *)(param_1 + 0x6c4) = *(undefined4 *)(iVar2 + 0xe0);
*(undefined4 *)(param_1 + 0x6c0) = local_118;
*(undefined4 *)(param_1 + 0x6c8) = 0;
*(undefined4 *)(param_1 + 0x6d0) = 0;
*(undefined4 *)(param_1 + 0x6d4) = 0;
*(undefined4 *)(param_1 + 0x6cc) = 0xffffffff;
*(undefined4 *)(param_1 + 0x6dc) = *(undefined4 *)(iVar2 + 0xe4);
*(undefined4 *)(param_1 + 0x6d8) = local_10c;
*(undefined4 *)(param_1 + 0x6e4) = 0xffffffff;
*(undefined4 *)(param_1 + 0x6e0) = 0;
*(undefined4 *)(param_1 + 0x6e8) = 0;
*(undefined4 *)(param_1 + 0x6ec) = 0;
*(undefined4 *)(param_1 + 0x724) = *(undefined4 *)(iVar2 + 0xfc);
*(undefined4 *)(param_1 + 0x720) = local_f4;
*(undefined4 *)(param_1 + 0x72c) = *(undefined4 *)(iVar2 + 0x100);
*(undefined4 *)(param_1 + 0x728) = *(undefined4 *)(iVar2 + 0x118);
*(undefined8 *)(param_1 + 0x730) = *(undefined8 *)(iVar2 + 0x160);
*(undefined4 *)(param_1 + 0x73c) = *(undefined4 *)(iVar2 + 0x104);
*(undefined4 *)(param_1 + 0x738) = local_e8;
*(undefined4 *)(param_1 + 0x744) = *(undefined4 *)(iVar2 + 0x108);
*(undefined4 *)(param_1 + 0x740) = *(undefined4 *)(iVar2 + 0x11c);
*(undefined8 *)(param_1 + 0x748) = *(undefined8 *)(iVar2 + 0x168);
*(undefined4 *)(param_1 + 0x754) = *(undefined4 *)(iVar2 + 0x10c);
*(undefined4 *)(param_1 + 0x750) = local_dc;
*(undefined4 *)(param_1 + 0x75c) = *(undefined4 *)(iVar2 + 0x110);
*(undefined4 *)(param_1 + 0x758) = *(undefined4 *)(iVar2 + 0x120);
*(undefined8 *)(param_1 + 0x760) = *(undefined8 *)(iVar2 + 0x170);
FUN_0047daa0();
FUN_0047e300();
return;
}
// --- FUN_004dfa80 at 0x004DFA80 (size: 1091) ---
void __thiscall FUN_004dfa80(int param_1,undefined4 param_2)
{
int iVar1;
int iVar2;
undefined4 uVar3;
undefined4 *puVar4;
uint uVar5;
undefined4 unaff_EBX;
int iVar6;
uint *puVar7;
int unaff_retaddr;
int local_1e8;
int local_1dc;
uint local_1d8;
undefined4 local_1d4;
int iStack_1d0;
undefined1 auStack_1c4 [4];
int aiStack_1c0 [9];
undefined1 local_19c [84];
undefined4 uStack_148;
int iStack_144;
int iStack_13c;
int iStack_12c;
int iStack_124;
undefined1 local_c0 [192];
local_1dc = 0;
local_1d4 = 0;
local_1e8 = 0;
local_1d8 = 0;
iVar1 = FUN_0055e1e0();
FUN_005c3380(local_c0,*(undefined4 *)(iVar1 + 0xd4));
FUN_005c2b30(local_19c,*(undefined4 *)(iVar1 + 0xd8));
*(undefined4 *)(param_1 + 0x768) = param_2;
puVar4 = (undefined4 *)(param_1 + 0x77c);
iVar6 = 9;
do {
(**(code **)(*(int *)puVar4[-1] + 0x18))(1);
(**(code **)(*(int *)*puVar4 + 0x18))(0);
puVar4 = puVar4 + 7;
iVar6 = iVar6 + -1;
} while (iVar6 != 0);
iVar6 = 0;
if (*(int **)(param_1 + 0x644) != (int *)0x0) {
(**(code **)(**(int **)(param_1 + 0x644) + 0x9c))(1);
}
switch(param_2) {
case 1:
local_1e8 = iStack_13c;
if (0 < iStack_13c) {
do {
uVar3 = FUN_004220b0(*(undefined4 *)(iStack_144 + iVar6 * 4),0x18);
iVar2 = FUN_00415430(uVar3);
aiStack_1c0[iVar6] = iVar2;
iVar6 = iVar6 + 1;
} while (iVar6 < iStack_13c);
}
*(undefined4 *)(param_1 + 0x644) = *(undefined4 *)(param_1 + 0x608);
local_1d4 = 0xd0;
local_1dc = 0;
local_1d8 = (*(uint *)(iVar1 + 0xe8) == 0xffffffff) - 1 & *(uint *)(iVar1 + 0xe8);
goto switchD_004dfb35_default;
case 2:
iVar6 = 0;
if (0 < iStack_124) {
puVar7 = (uint *)(param_1 + 0x770);
do {
uVar5 = FUN_00564730(*(undefined4 *)(iStack_12c + iVar6 * 4),0x103);
puVar7[-1] = uVar5 >> 0x10 & 0xff;
puVar7[1] = uVar5 & 0xff;
*puVar7 = uVar5 >> 8 & 0xff;
iVar6 = iVar6 + 1;
puVar7 = puVar7 + 7;
} while (iVar6 < iStack_124);
}
*(undefined4 *)(param_1 + 0x644) = *(undefined4 *)(param_1 + 0x60c);
local_1d8 = *(uint *)(iVar1 + 0xec);
local_1dc = 1;
local_1e8 = iStack_124;
goto LAB_004dfe25;
case 3:
uVar3 = FUN_004220b0(uStack_148,0x18);
aiStack_1c0[0] = FUN_00415430(uVar3);
*(undefined4 *)(param_1 + 0x644) = *(undefined4 *)(param_1 + 0x610);
local_1dc = 2;
break;
case 4:
uVar3 = FUN_004220b0(uStack_148,0x18);
aiStack_1c0[0] = FUN_00415430(uVar3);
*(undefined4 *)(param_1 + 0x644) = *(undefined4 *)(param_1 + 0x614);
local_1dc = 3;
break;
case 5:
uVar3 = FUN_004220b0(uStack_148,0x18);
aiStack_1c0[0] = FUN_00415430(uVar3);
*(undefined4 *)(param_1 + 0x644) = *(undefined4 *)(param_1 + 0x618);
local_1dc = 4;
break;
default:
goto switchD_004dfb35_default;
}
local_1e8 = 1;
local_1d4 = 0xb0;
local_1d8 = 0;
switchD_004dfb35_default:
iStack_1d0 = 0;
if (0 < local_1e8) {
puVar7 = (uint *)(param_1 + 0x770);
do {
iVar1 = aiStack_1c0[iStack_1d0];
iVar6 = 0;
if (iVar1 != 0) {
puVar7[1] = 0;
*puVar7 = 0;
puVar7[-1] = 0;
if (0 < *(int *)(iVar1 + 0x38)) {
do {
puVar4 = (undefined4 *)FUN_005ad6a0(auStack_1c4,iVar6);
uVar5 = FUN_00564730(*puVar4,local_1d4);
puVar7[-1] = puVar7[-1] + (uVar5 >> 0x10 & 0xff);
*puVar7 = *puVar7 + (uVar5 >> 8 & 0xff);
puVar7[1] = puVar7[1] + (uVar5 & 0xff);
iVar6 = iVar6 + 1;
} while (iVar6 < *(int *)(iVar1 + 0x38));
}
puVar7[-1] = puVar7[-1] / *(uint *)(iVar1 + 0x38);
*puVar7 = *puVar7 / *(uint *)(iVar1 + 0x38);
puVar7[1] = puVar7[1] / *(uint *)(iVar1 + 0x38);
}
iStack_1d0 = iStack_1d0 + 1;
puVar7 = puVar7 + 7;
} while (iStack_1d0 < local_1e8);
}
LAB_004dfe25:
*(uint *)(param_1 + 0x650) = local_1d8;
*(int *)(param_1 + 0x654) = local_1dc;
*(int *)(param_1 + 0x698 + local_1dc * 0x18) = local_1e8;
(**(code **)(**(int **)(param_1 + 0x644) + 0x9c))(6);
FUN_004df2d0(local_1dc);
if (unaff_retaddr == 2) {
FUN_004df510(1);
(**(code **)(**(int **)(param_1 + 0x630) + 0x18))(0);
}
else {
FUN_004df510(0);
(**(code **)(**(int **)(param_1 + 0x630) + 0x18))(1);
FUN_004df060(unaff_EBX,local_1e8);
}
FUN_004df7d0(local_1d8);
FUN_0047daa0();
FUN_0047e300();
return;
}