/* @0041f98c file=? name=FUN_0041f98c */ undefined4 __cdecl FUN_0041f98c(int param_1,char *param_2) { int iVar1; int iVar2; iVar2 = 0; while( true ) { if (*(int *)(param_1 + 0x124) <= iVar2) { return 0; } iVar1 = *(int *)(*(int *)(param_1 + 0x128) + iVar2 * 4); if ((iVar1 != 0) && (iVar1 = FUN_004d4b58(*(char **)(iVar1 + 0xd4),param_2), iVar1 == 0)) break; iVar2 = iVar2 + 1; } return *(undefined4 *)(*(int *)(param_1 + 0x128) + iVar2 * 4); } /* @0041f9e0 file=? name=FUN_0041f9e0 */ int __cdecl FUN_0041f9e0(undefined4 param_1,char *param_2) { int *piVar1; undefined4 *puVar2; uint *puVar3; int iVar4; int iVar5; int iVar6; int local_78 [8]; uint local_58 [2]; char *local_50; uint local_48 [2]; char *local_40; int *local_38; uint *local_34; int *local_30; uint *local_2c; uint *local_28; char *local_24; uint *local_20; char *local_1c; int *local_18; uint *local_14; uint *local_10; uint *local_c; int *local_8; iVar5 = 0; puVar2 = (undefined4 *)FUN_00402298(0x10); if (puVar2 == (undefined4 *)0x0) { local_8 = (int *)0x0; } else { local_8 = (int *)FUN_004023f4(puVar2); } local_8[3] = local_8[3] + 1; puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_c = (uint *)0x0; } else { local_c = FUN_00402460(puVar3,s_models__004e404d); } local_c[3] = local_c[3] + 1; puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_10 = (uint *)0x0; } else { local_10 = FUN_00402460(puVar3,s_model_name_004e4055); } local_10[3] = local_10[3] + 1; puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_14 = (uint *)0x0; } else { local_14 = FUN_00402460(puVar3,&DAT_004e4060); } local_14[3] = local_14[3] + 1; FUN_00402624(local_48,(int)local_c,(int)local_10); local_1c = local_40; puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_20 = (uint *)0x0; } else { local_20 = FUN_00402460(puVar3,local_1c); } local_20[3] = local_20[3] + 1; FUN_004024d8((int *)local_48,2); FUN_00402624(local_58,(int)local_20,(int)local_14); local_24 = local_50; local_2c = (uint *)FUN_00402298(0x10); if (local_2c == (uint *)0x0) { local_28 = (uint *)0x0; } else { local_28 = FUN_00402460(local_2c,local_24); } local_28[3] = local_28[3] + 1; FUN_004024d8((int *)local_58,2); FUN_00402a4c((int *)&local_18,(int *)&local_8,(int *)&local_28); piVar1 = local_18 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_18,3); } puVar3 = local_28 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_28,3); } puVar3 = local_20 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_20,3); } FUN_00403e84(local_78,(char *)local_8[2],1); local_30 = FUN_0040485c((int)local_78,(char *)0x0); puVar2 = (undefined4 *)local_30[1]; while ((iVar6 = -1, puVar2 != (undefined4 *)0x0 && (iVar4 = FUN_004d4b58(param_2,(char *)(puVar2 + 2)), iVar6 = iVar5, iVar4 != 0))) { iVar5 = iVar5 + 1; puVar2 = (undefined4 *)*puVar2; } if (local_30 != (int *)0x0) { (**(code **)*local_30)(local_30,3); } FUN_00403ecc(local_78,2); puVar3 = local_14 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_14,3); } puVar3 = local_10 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_10,3); } local_34 = local_c; puVar3 = local_c + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_c,3); } local_38 = local_8; piVar1 = local_8 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_8,3); } return iVar6; } /* @0041fc58 file=? name=FUN_0041fc58 */ void __cdecl FUN_0041fc58(int *param_1,int *param_2,int *param_3) { int *piVar1; bool bVar2; int iVar3; if (param_1[0x4a] != 0) { if ((param_1[10] & 0xcU) == 4) { for (iVar3 = 0; iVar3 < param_1[0x49]; iVar3 = iVar3 + 1) { piVar1 = *(int **)(param_1[0x4a] + iVar3 * 4); if (piVar1 != (int *)0x0) { if (((*(byte *)(piVar1 + 10) & 2) == 0) || (piVar1[4] <= piVar1[5])) { bVar2 = true; } else { bVar2 = false; } if (bVar2) { (**(code **)(*piVar1 + 0x14))(piVar1,param_2,param_3); } } } } else { for (iVar3 = 0; iVar3 < param_1[0x49]; iVar3 = iVar3 + 1) { piVar1 = *(int **)(param_1[0x4a] + iVar3 * 4); if ((piVar1 != (int *)0x0) && ((*(byte *)(piVar1 + 10) & 2) == 0)) { (**(code **)(*piVar1 + 0x14))(piVar1,param_2,param_3); } } } } FUN_0041c018(param_1,param_2,param_3); return; } /* @0041fd18 file=? name=FUN_0041fd18 */ void __cdecl FUN_0041fd18(int param_1,int param_2) { undefined4 uVar1; uVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 0x1c); *(undefined4 *)(param_1 + 400) = uVar1; return; } /* @0041fd48 file=? name=FUN_0041fd48 */ void __cdecl FUN_0041fd48(int *param_1,undefined4 *param_2) { int iVar1; int iVar2; int *piVar3; int iVar4; undefined4 local_c4; undefined4 local_c0; undefined4 local_bc; undefined4 local_b8 [2]; undefined4 local_b0; undefined4 local_ac; undefined4 local_a8 [2]; int local_a0; uint local_9c; undefined4 local_98; undefined4 local_94; undefined4 local_90; undefined4 local_8c; undefined4 local_88; undefined4 local_84; undefined4 local_80; undefined4 local_7c; undefined4 local_78; undefined4 local_74; undefined4 local_70; undefined4 local_6c; int local_68; uint local_64; undefined **local_60 [6]; undefined4 local_48; undefined4 local_44; undefined4 local_40; undefined4 local_3c; undefined4 local_38; undefined4 local_34; undefined4 local_30; undefined4 local_2c; undefined4 local_28; undefined4 local_24; undefined4 local_20; undefined4 local_1c; int local_18; int local_14; int local_10; undefined4 local_c [2]; FUN_0041db7c((int)&local_48); FUN_00420ea4(local_c,param_2 + 0xb); local_10 = param_2[10]; FUN_00408440(&local_28,param_2 + 7); FUN_004032dc(local_60,param_2,*param_2,0x34); local_60[0] = &PTR_FUN_004e42ac; (*(code *)PTR_FUN_004e42c8)(local_60,&local_14,4); iVar4 = 0; if (0 < local_14) { do { piVar3 = (int *)(*(code *)local_60[0][7])(local_60,&local_48,4); (**(code **)(*piVar3 + 0x1c))(piVar3,&local_44,4); (*(code *)local_60[0][7])(local_60,&local_18,4); iVar2 = local_10; iVar1 = local_18; local_c4 = 100; local_c0 = 0x12; local_bc = 1; FUN_00420ea4(local_b8,(undefined4 *)&DAT_00522524); local_b0 = 0; local_ac = 0; FUN_00420ea4(local_a8,local_c); local_a0 = iVar2; local_9c = (uint)(iVar2 < 0); local_98 = local_48; local_94 = local_44; local_90 = local_40; local_8c = local_3c; local_88 = local_38; local_84 = local_34; local_80 = local_30; local_7c = local_2c; local_78 = local_28; local_74 = local_24; local_70 = local_20; local_6c = local_1c; local_68 = iVar1; local_64 = (uint)(iVar1 < 0); (**(code **)(*param_1 + 0xc))(param_1,&local_c4); iVar4 = iVar4 + 1; } while (iVar4 < local_14); } FUN_00403310((int *)local_60,0); return; } /* @0041ff08 file=? name=FUN_0041ff08 */ void __cdecl FUN_0041ff08(int param_1,int param_2) { int *piVar1; if ((*(int *)(param_1 + 0x120) != 0) && (*(int *)(param_2 + 0x24) != -1)) { piVar1 = *(int **)(*(int *)(param_1 + 0x120) + *(int *)(param_2 + 0x24) * 4); (**(code **)(*piVar1 + 0x18))(piVar1,param_2 + 0x2c); } return; } /* @0041ff38 file=? name=FUN_0041ff38 */ undefined4 * FUN_0041ff38(undefined4 *param_1,int param_2,undefined4 param_3) { int iVar1; int iVar2; undefined4 uVar3; int aiStack_38 [6]; undefined4 auStack_20 [2]; int iStack_18; undefined4 *puStack_14; float *pfStack_10; undefined4 *puStack_c; int iStack_8; FUN_0041bdf0(param_1,*(undefined4 *)(param_2 + 0x1c),param_3); *param_1 = &PTR_FUN_004e4278; FUN_0040aadc(param_1 + 0x34); FUN_0041c42c(param_1 + 0x52,0); FUN_0041c42c(param_1 + 0x57,0); FUN_0041c42c(param_1 + 0x5c,0); FUN_00420e8c(param_1 + 0x61); iVar1 = *(int *)(DAT_004efc94 + 0x2c); param_1[100] = 0; iStack_8 = param_2 + 0x20; param_1[0x6f] = *(undefined4 *)(param_2 + 0x28); uVar3 = (**(code **)(*(int *)(iVar1 + 0x54) + 0xc))(iVar1 + 0x54,iStack_8); param_1[0x70] = uVar3; param_1[10] = *(undefined4 *)(param_2 + 0x2c); FUN_00420ef4(param_1 + 0x61,(undefined4 *)(param_2 + 0xc)); param_1[99] = *(undefined4 *)(param_2 + 0x18); puStack_c = (undefined4 *)FUN_00414b60(); param_1[0x67] = *puStack_c; param_1[0x65] = *(undefined4 *)(param_2 + 0x14); param_1[0x66] = 0; FUN_0040a938(param_1 + 0x40,(undefined4 *)(param_2 + 0x30)); FUN_0040a938(param_1 + 0x4b,param_1 + 0x40); pfStack_10 = (float *)(param_1 + 0x34); FUN_0040ab44(pfStack_10,param_1 + 0x40); FUN_0040a938(param_1 + 0x68,&DAT_004e0fec); param_1[10] = param_1[10] & 0xffffffef; puStack_14 = param_1 + 0x67; param_1[4] = *puStack_14; param_1[0x49] = 0; param_1[0x4a] = 0; param_1[0x48] = 0; param_1[0x47] = 0; if (param_1[0x6f] != -1) { iStack_18 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0x14); if (iStack_18 != 0) { iVar2 = *(int *)(iStack_18 + 4); *(int *)(iStack_18 + 4) = *(int *)(iStack_18 + 4) + 1; if (iVar2 == 0) { FUN_00406cd0(iStack_18); } FUN_004032dc(aiStack_38,*(undefined4 *)(iStack_18 + 0x3c),*(undefined4 *)(iStack_18 + 0x40),0) ; (**(code **)(aiStack_38[0] + 0x1c))(aiStack_38,param_1 + 0x47,4); uVar3 = FUN_004022b0(param_1[0x47] << 2); param_1[0x48] = uVar3; *(int *)(iStack_18 + 4) = *(int *)(iStack_18 + 4) + -1; FUN_00403310(aiStack_38,2); } } if ((((param_1[10] & 0xc) == 0) || (((param_1[10] & 0xc) == 0xc && ((param_1[10] & 0x100) != 0)))) || (((param_1[10] & 0xc) == 8 && ((*(int *)(param_2 + 0x18) == 0 || (*(int *)(param_2 + 0x18) == -1)))))) { FUN_0042913c(auStack_20,iVar1); FUN_00420ef4(param_1 + 0x61,auStack_20); uVar3 = FUN_0042904c(iVar1); param_1[99] = uVar3; FUN_00420ef4((undefined4 *)(param_2 + 0xc),param_1 + 0x61); *(undefined4 *)(param_2 + 0x18) = param_1[99]; } FUN_00429168(iVar1,(int)param_1,param_2); return param_1; } /* @0041ff3e file=? name=FUN_0041ff3e */ undefined4 * FUN_0041ff3e(void) { int *piVar1; int iVar2; undefined4 *puVar3; int iVar4; undefined4 uVar5; undefined *puVar6; int iVar7; int unaff_EBP; iVar2 = *(int *)(unaff_EBP + 0xc); puVar3 = *(undefined4 **)(unaff_EBP + 8); FUN_0041bdf0(puVar3,*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(unaff_EBP + 0x10)); *puVar3 = &PTR_FUN_004e4278; FUN_0040aadc(puVar3 + 0x34); FUN_0041c42c(puVar3 + 0x52,0); FUN_0041c42c(puVar3 + 0x57,0); FUN_0041c42c(puVar3 + 0x5c,0); FUN_00420e8c(puVar3 + 0x61); iVar4 = *(int *)(DAT_004efc94 + 0x2c); puVar3[100] = 0; puVar3[0x6f] = *(undefined4 *)(iVar2 + 0x28); *(int *)(unaff_EBP + -4) = iVar2 + 0x20; uVar5 = (**(code **)(*(int *)(iVar4 + 0x54) + 0xc))(iVar4 + 0x54,*(undefined4 *)(unaff_EBP + -4)); puVar3[0x70] = uVar5; puVar3[10] = *(undefined4 *)(iVar2 + 0x2c); FUN_00420ef4(puVar3 + 0x61,(undefined4 *)(iVar2 + 0xc)); puVar3[99] = *(undefined4 *)(iVar2 + 0x18); puVar6 = FUN_00414b60(); *(undefined **)(unaff_EBP + -8) = puVar6; puVar3[0x67] = **(undefined4 **)(unaff_EBP + -8); puVar3[0x65] = *(undefined4 *)(iVar2 + 0x14); puVar3[0x66] = 0; FUN_0040a938(puVar3 + 0x40,(undefined4 *)(iVar2 + 0x30)); FUN_0040a938(puVar3 + 0x4b,puVar3 + 0x40); *(undefined4 **)(unaff_EBP + -0xc) = puVar3 + 0x34; FUN_0040ab44(*(float **)(unaff_EBP + -0xc),puVar3 + 0x40); FUN_0040a938(puVar3 + 0x68,&DAT_004e0fec); puVar3[10] = puVar3[10] & 0xffffffef; *(undefined4 **)(unaff_EBP + -0x10) = puVar3 + 0x67; puVar3[4] = **(undefined4 **)(unaff_EBP + -0x10); puVar3[0x49] = 0; puVar3[0x4a] = 0; puVar3[0x48] = 0; puVar3[0x47] = 0; if (puVar3[0x6f] != -1) { iVar7 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),puVar3[0x6f],0x14); *(int *)(unaff_EBP + -0x14) = iVar7; if (*(int *)(unaff_EBP + -0x14) != 0) { iVar7 = *(int *)(*(int *)(unaff_EBP + -0x14) + 4); piVar1 = (int *)(*(int *)(unaff_EBP + -0x14) + 4); *piVar1 = *piVar1 + 1; if (iVar7 == 0) { FUN_00406cd0(*(int *)(unaff_EBP + -0x14)); } FUN_004032dc((undefined4 *)(unaff_EBP + -0x34), *(undefined4 *)(*(int *)(unaff_EBP + -0x14) + 0x3c), *(undefined4 *)(*(int *)(unaff_EBP + -0x14) + 0x40),0); (**(code **)(*(int *)(unaff_EBP + -0x34) + 0x1c))(unaff_EBP + -0x34,puVar3 + 0x47,4); uVar5 = FUN_004022b0(puVar3[0x47] << 2); puVar3[0x48] = uVar5; piVar1 = (int *)(*(int *)(unaff_EBP + -0x14) + 4); *piVar1 = *piVar1 + -1; FUN_00403310((int *)(unaff_EBP + -0x34),2); } } if ((((puVar3[10] & 0xc) == 0) || (((puVar3[10] & 0xc) == 0xc && ((puVar3[10] & 0x100) != 0)))) || (((puVar3[10] & 0xc) == 8 && ((*(int *)(iVar2 + 0x18) == 0 || (*(int *)(iVar2 + 0x18) == -1)))) )) { FUN_0042913c((undefined4 *)(unaff_EBP + -0x1c),iVar4); FUN_00420ef4(puVar3 + 0x61,(undefined4 *)(unaff_EBP + -0x1c)); uVar5 = FUN_0042904c(iVar4); puVar3[99] = uVar5; FUN_00420ef4((undefined4 *)(iVar2 + 0xc),puVar3 + 0x61); *(undefined4 *)(iVar2 + 0x18) = puVar3[99]; } FUN_00429168(iVar4,(int)puVar3,iVar2); return puVar3; } /* @00420204 file=? name=FUN_00420204 */ undefined4 * __cdecl FUN_00420204(int param_1) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_00402298(0x1c4); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_0041ff38(puVar1,param_1,&DAT_004e3d40); } return puVar1; } /* @00420234 file=? name=FUN_00420234 */ undefined4 __cdecl FUN_00420234(undefined4 *param_1) { char *pcVar1; undefined4 uVar2; float10 fVar3; float local_1c; float local_18; float local_14; float local_10; float local_c; float local_8; *param_1 = 0x4c; param_1[1] = 3; FUN_00420ef4(param_1 + 8,(undefined4 *)&DAT_00522524); param_1[2] = 0; param_1[7] = 0x10; param_1[0xb] = 0; pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e4065); if (pcVar1 == (char *)0x0) { FUN_004dbb24((int *)&DAT_00524e68,s_X_position_coordinate_missing__004e4067,(char *)0x0); uVar2 = 0; } else { fVar3 = (float10)FUN_004dd1cc(pcVar1); param_1[0xc] = (float)fVar3; pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e4087); if (pcVar1 == (char *)0x0) { FUN_004dbb24((int *)&DAT_00524e68,s_Y_position_coordinate_missing__004e4089,(char *)0x0); uVar2 = 0; } else { fVar3 = (float10)FUN_004dd1cc(pcVar1); param_1[0xd] = (float)fVar3; pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e40a9); if (pcVar1 == (char *)0x0) { FUN_004dbb24((int *)&DAT_00524e68,s_Z_position_coordinate_missing__004e40ab,(char *)0x0); uVar2 = 0; } else { fVar3 = (float10)FUN_004dd1cc(pcVar1); param_1[0xe] = (float)fVar3; pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e40cb); if (pcVar1 == (char *)0x0) { FUN_004dbb24((int *)&DAT_00524e68,s_Pitch_missing__004e40cd,(char *)0x0); uVar2 = 0; } else { fVar3 = (float10)FUN_004dd1cc(pcVar1); local_1c = (float)fVar3; local_8 = local_1c; pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e40dd); if (pcVar1 == (char *)0x0) { FUN_004dbb24((int *)&DAT_00524e68,s_Yaw_missing__004e40df,(char *)0x0); uVar2 = 0; } else { fVar3 = (float10)FUN_004dd1cc(pcVar1); local_18 = (float)fVar3; local_c = local_18; pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e40ed); if (pcVar1 == (char *)0x0) { FUN_004dbb24((int *)&DAT_00524e68,s_Roll_missing__004e40ef,(char *)0x0); uVar2 = 0; } else { fVar3 = (float10)FUN_004dd1cc(pcVar1); local_14 = (float)fVar3; local_10 = local_14; FUN_00409a00((float *)(param_1 + 0xf),&local_1c); uVar2 = 1; } } } } } } return uVar2; } /* @004203f4 file=? name=FUN_004203f4 */ undefined4 __cdecl FUN_004203f4(undefined4 *param_1,undefined4 param_2) { char *pcVar1; undefined4 uVar2; float10 fVar3; float local_10; undefined4 local_c; undefined4 local_8; *param_1 = 0x2c; param_1[1] = 3; param_1[2] = 4; pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e40fe); if (pcVar1 == (char *)0x0) { FUN_004dbb24((int *)&DAT_00524e68,s_X_position_coordinate_missing__004e4100,(char *)0x0); uVar2 = 0; } else { fVar3 = (float10)FUN_004dd1cc(pcVar1); param_1[4] = (float)fVar3; pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e4120); if (pcVar1 == (char *)0x0) { FUN_004dbb24((int *)&DAT_00524e68,s_Y_position_coordinate_missing__004e4122,(char *)0x0); uVar2 = 0; } else { fVar3 = (float10)FUN_004dd1cc(pcVar1); param_1[5] = (float)fVar3; pcVar1 = FUN_004d4d1c((char *)0x0,&DAT_004e4142); if (pcVar1 == (char *)0x0) { FUN_004dbb24((int *)&DAT_00524e68,s_Z_position_coordinate_missing__004e4144,(char *)0x0); uVar2 = 0; } else { fVar3 = (float10)FUN_004dd1cc(pcVar1); param_1[6] = (float)fVar3; local_10 = DAT_004e0f8c; local_c = DAT_004e0f90; local_8 = DAT_004e0f94; FUN_00409a00((float *)(param_1 + 7),&local_10); param_1[3] = param_2; uVar2 = 1; } } } return uVar2; } /* @004204f8 file=? name=FUN_004204f8 */ void __cdecl FUN_004204f8(int param_1) { FUN_0042061c(param_1); return; } /* @00420508 file=? name=FUN_00420508 */ void __cdecl FUN_00420508(int *param_1,byte param_2) { undefined4 *puVar1; int iVar2; if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4278; FUN_004291d0(*(undefined4 *)(DAT_004efc94 + 0x2c),(int)param_1); if (param_1[0x4a] != 0) { for (iVar2 = 0; iVar2 < param_1[0x49]; iVar2 = iVar2 + 1) { puVar1 = *(undefined4 **)(param_1[0x4a] + iVar2 * 4); if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(puVar1,3); } } FUN_004022d0((int *)param_1[0x4a]); } if (param_1[0x48] != 0) { for (iVar2 = 0; iVar2 < param_1[0x47]; iVar2 = iVar2 + 1) { puVar1 = *(undefined4 **)(param_1[0x48] + iVar2 * 4); if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(puVar1,3); } } FUN_004022d0((int *)param_1[0x48]); } FUN_0041c44b(param_1 + 0x5c,2); FUN_0041c44b(param_1 + 0x57,2); FUN_0041c44b(param_1 + 0x52,2); FUN_0041bec4(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042061c file=? name=FUN_0042061c */ void __cdecl FUN_0042061c(int param_1) { int iVar1; if ((*(byte *)(param_1 + 0x29) & 0x20) == 0) { iVar1 = *(int *)(*(int *)(DAT_004efc94 + 0x24) + 0x14); (**(code **)(*(int *)(iVar1 + 0x10) + 4))(iVar1 + 0x10,param_1); *(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) | 0x2000; *(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) | 2; } return; } /* @00420658 file=? name=FUN_00420658 */ void __cdecl FUN_00420658(int param_1) { FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e3d10); return; } /* @00420674 file=? name=FUN_00420674 */ void __cdecl FUN_00420674(int param_1,undefined4 param_2) { (**(code **)(*(int *)(param_1 + 0x148) + 4))(param_1 + 0x148,param_2); return; } /* @00420694 file=? name=FUN_00420694 */ void __cdecl FUN_00420694(int param_1,undefined4 param_2) { (**(code **)(*(int *)(param_1 + 0x15c) + 4))(param_1 + 0x15c,param_2); return; } /* @004206b4 file=? name=FUN_004206b4 */ void __cdecl FUN_004206b4(int param_1,undefined4 param_2) { (**(code **)(*(int *)(param_1 + 0x170) + 4))(param_1 + 0x170,param_2); return; } /* @004206d4 file=? name=FUN_004206d4 */ bool __cdecl FUN_004206d4(int param_1,int param_2) { return param_1 != param_2; } /* @004206e8 file=? name=FUN_004206e8 */ void __cdecl FUN_004206e8(int param_1) { undefined4 local_20; undefined4 local_1c; undefined4 local_18; undefined4 local_14 [2]; undefined4 local_c; undefined4 local_8; local_20 = 0x1c; local_1c = 0xd; local_18 = 1; FUN_00420ea4(local_14,(undefined4 *)&DAT_00522524); local_c = 0; local_8 = 0; FUN_00419bbc(param_1,(int)&local_20); return; } /* @00420734 file=? name=FUN_00420734 */ void __cdecl FUN_00420734(int param_1) { *(int *)(param_1 + 0x198) = *(int *)(param_1 + 0x198) + 1; return; } /* @00420744 file=? name=FUN_00420744 */ void __cdecl FUN_00420744(int param_1) { *(int *)(param_1 + 0x198) = *(int *)(param_1 + 0x198) + -1; return; } /* @00420754 file=? name=FUN_00420754 */ bool __cdecl FUN_00420754(int param_1,int param_2) { return param_1 == param_2; } /* @0042076c file=? name=FUN_0042076c */ int __cdecl FUN_0042076c(int param_1,int *param_2) { int iVar1; int iVar2; iVar2 = 0; while( true ) { if (*(int *)(param_1 + 0x11c) <= iVar2) { return -1; } iVar1 = FUN_004027d8(*(int *)(*(int *)(*(int *)(param_1 + 0x120) + iVar2 * 4) + 0x15c),*param_2) ; if (iVar1 == 0) break; iVar2 = iVar2 + 1; } return iVar2; } /* @004207b4 file=? name=FUN_004207b4 */ undefined4 FUN_004207b4(int param_1,char *param_2,int param_3,undefined4 *param_4) { int *piVar1; int iVar2; undefined4 uVar3; char *pcVar4; uint *puVar5; int *piVar6; undefined4 *puVar7; int aiStack_38 [6]; int *piStack_20; undefined4 *puStack_1c; int *piStack_18; int *piStack_14; int iStack_10; uint *puStack_c; char *pcStack_8; iVar2 = FUN_00404088(param_3,s_gamedata_004e4164,s_DamageZones_004e416d,&pcStack_8); if (iVar2 == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_is_missing__dmg_file_specificati_004e4179,(char *)0x0); uVar3 = 0xffffffff; } else { pcVar4 = FUN_004064fc((char *)*param_4,pcStack_8); puVar5 = (uint *)FUN_00402298(0x10); if (puVar5 == (uint *)0x0) { puStack_c = (uint *)0x0; } else { puStack_c = FUN_00402460(puVar5,pcVar4); } puStack_c[3] = puStack_c[3] + 1; piVar6 = (int *)FUN_00402298(0x20); if (piVar6 == (int *)0x0) { piVar6 = (int *)0x0; } else { piVar6 = FUN_00403e84(piVar6,(char *)puStack_c[2],1); } if ((*(byte *)(piVar6 + 7) & 2) == 0) { iStack_10 = piVar6[3]; } else { iStack_10 = piVar6[4]; } if (iStack_10 == 0) { FUN_004dbb24((int *)&DAT_00524e68,(char *)puStack_c[2],(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_is_empty_or_missing__004e419f,(char *)0x0); FUN_00403ecc(piVar6,3); uVar3 = 0xffffffff; puVar5 = puStack_c + 3; *puVar5 = *puVar5 - 1; if (*puVar5 == 0) { FUN_004024d8((int *)puStack_c,3); } } else { FUN_0040328c(aiStack_38,0); (**(code **)(aiStack_38[0] + 0x20))(aiStack_38,&iStack_10,4); piStack_14 = FUN_0040485c((int)piVar6,(char *)0x0); puVar7 = (undefined4 *)piStack_14[1]; puStack_1c = (undefined4 *)FUN_00402298(0x10); if (puStack_1c == (undefined4 *)0x0) { piStack_18 = (int *)0x0; } else { piStack_18 = (int *)FUN_004023f4(puStack_1c); } piStack_18[3] = piStack_18[3] + 1; for (; puVar7 != (undefined4 *)0x0; puVar7 = (undefined4 *)*puVar7) { FUN_00402a98((int *)&piStack_20,(int *)&piStack_18,(char *)(puVar7 + 2)); piVar1 = piStack_20 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(piStack_20,3); } piStack_18[3] = piStack_18[3] + 1; FUN_0041e590(param_3,param_2,0,piStack_18,aiStack_38,(int)piVar6,(int)param_4); } puVar7 = (undefined4 *)FUN_00406f3c(param_1,param_2,0x14,1,0,aiStack_38,-1); FUN_00403ecc(piVar6,3); if (piStack_14 != (int *)0x0) { (**(code **)*piStack_14)(piStack_14,3); } uVar3 = *puVar7; piVar6 = piStack_18 + 3; *piVar6 = *piVar6 + -1; if (*piVar6 == 0) { FUN_004024d8(piStack_18,3); } FUN_00403310(aiStack_38,2); puVar5 = puStack_c + 3; *puVar5 = *puVar5 - 1; if (*puVar5 == 0) { FUN_004024d8((int *)puStack_c,3); } } } return uVar3; } /* @004207ba file=? name=FUN_004207ba */ undefined4 FUN_004207ba(void) { char *pcVar1; int *piVar2; int iVar3; undefined4 uVar4; char *pcVar5; uint *puVar6; int *piVar7; int *piVar8; undefined4 *puVar9; int unaff_EBP; pcVar1 = *(char **)(unaff_EBP + 0xc); iVar3 = FUN_00404088(*(int *)(unaff_EBP + 0x10),s_gamedata_004e4164,s_DamageZones_004e416d, (undefined4 *)(unaff_EBP + -4)); if (iVar3 == 0) { FUN_004dbb24((int *)&DAT_00524e68,pcVar1,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_is_missing__dmg_file_specificati_004e4179,(char *)0x0); uVar4 = 0xffffffff; } else { pcVar5 = FUN_004064fc((char *)**(undefined4 **)(unaff_EBP + 0x14),*(char **)(unaff_EBP + -4)); puVar6 = (uint *)FUN_00402298(0x10); if (puVar6 == (uint *)0x0) { puVar6 = (uint *)0x0; } else { puVar6 = FUN_00402460(puVar6,pcVar5); } *(uint **)(unaff_EBP + -8) = puVar6; piVar7 = (int *)(*(int *)(unaff_EBP + -8) + 0xc); *piVar7 = *piVar7 + 1; piVar7 = (int *)FUN_00402298(0x20); if (piVar7 == (int *)0x0) { piVar7 = (int *)0x0; } else { piVar7 = FUN_00403e84(piVar7,*(char **)(*(int *)(unaff_EBP + -8) + 8),1); } if ((*(byte *)(piVar7 + 7) & 2) == 0) { iVar3 = piVar7[3]; } else { iVar3 = piVar7[4]; } *(int *)(unaff_EBP + -0xc) = iVar3; if (*(int *)(unaff_EBP + -0xc) == 0) { FUN_004dbb24((int *)&DAT_00524e68,*(char **)(*(int *)(unaff_EBP + -8) + 8),(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_is_empty_or_missing__004e419f,(char *)0x0); FUN_00403ecc(piVar7,3); uVar4 = 0xffffffff; piVar8 = *(int **)(unaff_EBP + -8); piVar7 = piVar8 + 3; *piVar7 = *piVar7 + -1; if (*piVar7 == 0) { FUN_004024d8(piVar8,3); } } else { FUN_0040328c((undefined4 *)(unaff_EBP + -0x34),0); (**(code **)(*(int *)(unaff_EBP + -0x34) + 0x20))(unaff_EBP + -0x34,unaff_EBP + -0xc,4); piVar8 = FUN_0040485c((int)piVar7,(char *)0x0); *(int **)(unaff_EBP + -0x10) = piVar8; puVar9 = *(undefined4 **)(*(int *)(unaff_EBP + -0x10) + 4); iVar3 = FUN_00402298(0x10); *(int *)(unaff_EBP + -0x18) = iVar3; if (iVar3 == 0) { uVar4 = *(undefined4 *)(unaff_EBP + -0x18); } else { uVar4 = FUN_004023f4(*(undefined4 **)(unaff_EBP + -0x18)); } *(undefined4 *)(unaff_EBP + -0x14) = uVar4; piVar8 = (int *)(*(int *)(unaff_EBP + -0x14) + 0xc); *piVar8 = *piVar8 + 1; for (; puVar9 != (undefined4 *)0x0; puVar9 = (undefined4 *)*puVar9) { FUN_00402a98((int *)(unaff_EBP + -0x1c),(int *)(unaff_EBP + -0x14),(char *)(puVar9 + 2)); piVar2 = *(int **)(unaff_EBP + -0x1c); piVar8 = piVar2 + 3; *piVar8 = *piVar8 + -1; if (*piVar8 == 0) { FUN_004024d8(piVar2,3); } iVar3 = *(int *)(unaff_EBP + 0x14); piVar2 = *(int **)(unaff_EBP + -0x14); piVar8 = piVar2 + 3; *piVar8 = *piVar8 + 1; FUN_0041e590(*(int *)(unaff_EBP + 0x10),pcVar1,0,piVar2,(int *)(unaff_EBP + -0x34), (int)piVar7,iVar3); } puVar9 = (undefined4 *) FUN_00406f3c(*(int *)(unaff_EBP + 8),pcVar1,0x14,1,0,(int *)(unaff_EBP + -0x34),-1); FUN_00403ecc(piVar7,3); if (*(int *)(unaff_EBP + -0x10) != 0) { (**(code **)**(undefined4 **)(unaff_EBP + -0x10))(*(undefined4 **)(unaff_EBP + -0x10),3); } uVar4 = *puVar9; piVar8 = *(int **)(unaff_EBP + -0x14); piVar7 = piVar8 + 3; *piVar7 = *piVar7 + -1; if (*piVar7 == 0) { FUN_004024d8(piVar8,3); } FUN_00403310((int *)(unaff_EBP + -0x34),2); piVar8 = *(int **)(unaff_EBP + -8); piVar7 = piVar8 + 3; *piVar7 = *piVar7 + -1; if (*piVar7 == 0) { FUN_004024d8(piVar8,3); } } } return uVar4; } /* @00420a00 file=? name=FUN_00420a00 */ undefined4 __cdecl FUN_00420a00(int param_1,char *param_2,int param_3,undefined4 *param_4) { int iVar1; undefined4 uVar2; char *pcVar3; uint *puVar4; int *piVar5; uint *puVar6; undefined4 *puVar7; int *piVar8; int *piVar9; int local_44 [6]; undefined4 local_2c; char *local_28; uint *local_24; char *local_20; int *local_1c; char *local_18; int *local_14; uint *local_10; char *local_c; char *local_8; iVar1 = FUN_00404088(param_3,s_gamedata_004e41b6,s_DamageZones_004e41bf,&local_8); if (iVar1 == 0) { local_c = param_2; FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_is_missing__dmg_file_specificati_004e41cb,(char *)0x0); uVar2 = 0xffffffff; } else { pcVar3 = FUN_004064fc((char *)*param_4,local_8); puVar4 = (uint *)FUN_00402298(0x10); if (puVar4 == (uint *)0x0) { local_10 = (uint *)0x0; } else { local_10 = FUN_00402460(puVar4,pcVar3); } local_10[3] = local_10[3] + 1; piVar5 = (int *)FUN_00402298(0x20); if (piVar5 == (int *)0x0) { local_14 = (int *)0x0; } else { local_14 = FUN_00403e84(piVar5,(char *)local_10[2],1); } if (local_14[3] == 0) { local_18 = param_2; FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s___dmg_file_is_empty_or_missing__004e41f1,(char *)0x0); FUN_00403ecc(local_14,3); uVar2 = 0xffffffff; puVar4 = local_10 + 3; *puVar4 = *puVar4 - 1; if (*puVar4 == 0) { FUN_004024d8((int *)local_10,3); } } else { FUN_0040328c(local_44,0); local_1c = FUN_0040485c((int)local_14,(char *)0x0); for (puVar7 = (undefined4 *)local_1c[1]; puVar7 != (undefined4 *)0x0; puVar7 = (undefined4 *)*puVar7) { iVar1 = FUN_00404088((int)local_14,(char *)(puVar7 + 2),s_ExplosionTable_004e4213,&local_20) ; if (iVar1 == 0) { local_2c = 0; (**(code **)(local_44[0] + 0x20))(local_44,&local_2c,4); } else { pcVar3 = FUN_004064fc((char *)*param_4,local_20); puVar4 = (uint *)FUN_00402298(0x10); if (puVar4 == (uint *)0x0) { local_24 = (uint *)0x0; } else { local_24 = FUN_00402460(puVar4,pcVar3); } local_24[3] = local_24[3] + 1; piVar5 = (int *)FUN_00402298(0x20); if (piVar5 == (int *)0x0) { piVar5 = (int *)0x0; } else { piVar5 = FUN_00403e84(piVar5,(char *)local_24[2],1); } if (piVar5[3] == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,&DAT_004e4222,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,(char *)local_24[2],(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_is_emoty_or_missing__004e4226,(char *)0x0); FUN_00403ecc(local_14,3); if (local_1c != (int *)0x0) { (**(code **)*local_1c)(local_1c,3); } FUN_00403ecc(piVar5,3); uVar2 = 0xffffffff; puVar4 = local_24 + 3; *puVar4 = *puVar4 - 1; if (*puVar4 == 0) { FUN_004024d8((int *)local_24,3); } FUN_00403310(local_44,2); puVar4 = local_10 + 3; *puVar4 = *puVar4 - 1; if (*puVar4 != 0) { return uVar2; } FUN_004024d8((int *)local_10,3); return uVar2; } piVar9 = local_44; local_24[3] = local_24[3] + 1; local_28 = param_2; piVar8 = piVar5; puVar4 = local_24; puVar6 = (uint *)FUN_00402298(0x10); if (puVar6 == (uint *)0x0) { puVar6 = (uint *)0x0; } else { puVar6 = FUN_00402460(puVar6,local_28); } puVar6[3] = puVar6[3] + 1; FUN_0042a828(param_1,(int *)puVar6,(uint)piVar8,(int *)puVar4,piVar9); FUN_00403ecc(piVar5,3); puVar4 = local_24 + 3; *puVar4 = *puVar4 - 1; if (*puVar4 == 0) { FUN_004024d8((int *)local_24,3); } } } puVar7 = (undefined4 *)FUN_00406f3c(param_1,param_2,0x1e,1,0,local_44,-1); FUN_00403ecc(local_14,3); if (local_1c != (int *)0x0) { (**(code **)*local_1c)(local_1c,3); } uVar2 = *puVar7; FUN_00403310(local_44,2); puVar4 = local_10 + 3; *puVar4 = *puVar4 - 1; if (*puVar4 == 0) { FUN_004024d8((int *)local_10,3); } } } return uVar2; } /* @00420e58 file=? name=FUN_00420e58 */ void __cdecl FUN_00420e58(undefined4 *param_1) { *param_1 = 0; param_1[1] = 0; param_1[2] = 0; return; } /* @00420e6e file=? name=FUN_00420e6e */ void __cdecl FUN_00420e6e(undefined4 *param_1) { *param_1 = 0; param_1[1] = 0; param_1[2] = 0; return; } /* @00420e84 file=? name=FUN_00420e84 */ void FUN_00420e84(void) { return; } /* @00420e8c file=? name=FUN_00420e8c */ void __cdecl FUN_00420e8c(undefined4 *param_1) { *param_1 = 0; param_1[1] = DAT_004e42d0; return; } /* @00420ea4 file=? name=FUN_00420ea4 */ void __cdecl FUN_00420ea4(undefined4 *param_1,undefined4 *param_2) { *param_1 = *param_2; param_1[1] = param_2[1]; return; } /* @00420ebc file=? name=FUN_00420ebc */ void __cdecl FUN_00420ebc(undefined4 *param_1,undefined4 param_2) { *param_1 = param_2; param_1[1] = DAT_004e42d0; return; } /* @00420ed4 file=? name=FUN_00420ed4 */ void __cdecl FUN_00420ed4(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { *param_1 = param_2; param_1[1] = param_3; return; } /* @00420ee8 file=? name=FUN_00420ee8 */ undefined4 FUN_00420ee8(void) { return 1; } /* @00420ef4 file=? name=FUN_00420ef4 */ void __cdecl FUN_00420ef4(undefined4 *param_1,undefined4 *param_2) { *param_1 = *param_2; param_1[1] = param_2[1]; return; } /* @00420f0c file=? name=FUN_00420f0c */ void __cdecl FUN_00420f0c(int *param_1,int *param_2) { *param_1 = *param_1 + *param_2; param_1[1] = param_1[1] + param_2[1]; return; } /* @00420f24 file=? name=FUN_00420f24 */ undefined4 * __cdecl FUN_00420f24(undefined4 *param_1,int *param_2,int *param_3) { FUN_00420ed4(param_1,*param_2 - *param_3,param_2[1] - param_3[1]); return param_1; } /* @00420f54 file=? name=FUN_00420f54 */ void __cdecl FUN_00420f54(int *param_1,int *param_2) { *param_1 = *param_1 - *param_2; param_1[1] = param_1[1] - param_2[1]; return; } /* @00420f6c file=? name=FUN_00420f6c */ void __cdecl FUN_00420f6c(int param_1,int param_2) { *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + param_2; return; } /* @00420f7c file=? name=FUN_00420f7c */ void __cdecl FUN_00420f7c(int param_1,int param_2) { *(int *)(param_1 + 4) = *(int *)(param_1 + 4) - param_2; return; } /* @00420f8c file=? name=FUN_00420f8c */ bool __cdecl FUN_00420f8c(int *param_1,int *param_2) { bool bVar1; if (*param_1 == *param_2) { bVar1 = param_1[1] < param_2[1]; } else { bVar1 = *param_1 < *param_2; } return bVar1; } /* @00420fbc file=? name=FUN_00420fbc */ bool __cdecl FUN_00420fbc(int *param_1,int *param_2) { bool bVar1; if (*param_1 == *param_2) { bVar1 = param_1[1] <= param_2[1]; } else { bVar1 = *param_1 < *param_2; } return bVar1; } /* @00420fec file=? name=FUN_00420fec */ bool __cdecl FUN_00420fec(int *param_1,int *param_2) { bool bVar1; if (*param_1 == *param_2) { bVar1 = param_2[1] < param_1[1]; } else { bVar1 = *param_2 < *param_1; } return bVar1; } /* @0042101c file=? name=FUN_0042101c */ bool __cdecl FUN_0042101c(int *param_1,int *param_2) { bool bVar1; if (*param_1 == *param_2) { bVar1 = param_2[1] <= param_1[1]; } else { bVar1 = *param_2 < *param_1; } return bVar1; } /* @0042104c file=? name=FUN_0042104c */ undefined4 __cdecl FUN_0042104c(int *param_1,int *param_2) { undefined4 uVar1; if ((*param_1 == *param_2) && (param_1[1] == param_2[1])) { uVar1 = 1; } else { uVar1 = 0; } return uVar1; } /* @00421070 file=? name=FUN_00421070 */ undefined4 __cdecl FUN_00421070(int *param_1,int *param_2) { undefined4 uVar1; if ((*param_1 == *param_2) && (param_1[1] == param_2[1])) { uVar1 = 0; } else { uVar1 = 1; } return uVar1; } /* @00421094 file=? name=FUN_00421094 */ undefined4 __cdecl FUN_00421094(int param_1) { return *(undefined4 *)(param_1 + 4); } /* @004210ac file=? name=FUN_004210ac */ undefined4 * __cdecl FUN_004210ac(undefined4 *param_1) { FUN_004178cc(param_1,2); *param_1 = &PTR_FUN_004e43cc; FUN_004213aa(param_1 + 4,0); return param_1; } /* @004210d8 file=? name=FUN_004210d8 */ void __cdecl FUN_004210d8(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e43cc; FUN_004213c9(param_1 + 4,2); FUN_0041790c(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00421114 file=? name=FUN_00421114 */ undefined4 * __cdecl FUN_00421114(undefined4 *param_1) { undefined4 *puVar1; FUN_0041d520(param_1,0x12,&DAT_004e4304,1); *param_1 = &PTR_FUN_004e43b4; FUN_00403a30(param_1 + 6); puVar1 = FUN_004212b0((int)param_1,s_DeathRow_004e431a); param_1[5] = puVar1; return param_1; } /* @00421154 file=? name=FUN_00421154 */ void __cdecl FUN_00421154(int *param_1,byte param_2) { undefined4 *puVar1; int iVar2; if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e43b4; while (iVar2 = param_1[7], iVar2 != 0) { puVar1 = *(undefined4 **)(iVar2 + 4); FUN_00403b1c((int)(param_1 + 6),iVar2 + 8); if (puVar1 != (undefined4 *)0x0) { (**(code **)*puVar1)(puVar1,3); } } FUN_00403a48(param_1 + 6,2); FUN_0041d554(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @004211bc file=? name=FUN_004211bc */ void __cdecl FUN_004211bc(int param_1) { undefined4 *puVar1; int local_10 [3]; FUN_00421414(local_10,*(int *)(param_1 + 0x14) + 0x10); puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x30))(local_10); if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(puVar1,3); } FUN_00421452(local_10,2); return; } /* @0042120c file=? name=FUN_0042120c */ void __cdecl FUN_0042120c(undefined4 param_1,undefined4 param_2,uint *param_3) { int iVar1; iVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_3 + 3); if (iVar1 == 0) { if (param_3[1] == 3) { FUN_00433294(*(int **)(DAT_004efc94 + 0x28),(int)param_3); } } else if ((*(int *)(iVar1 + 4) == 0x30) && (param_3[1] == 0x15)) { FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),4,iVar1,param_3,DAT_004e17f4); } else { FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),2,iVar1,param_3,DAT_004e17f4); } return; } /* @004212b0 file=? name=FUN_004212b0 */ undefined4 * __cdecl FUN_004212b0(int param_1,char *param_2) { undefined4 *puVar1; undefined4 uVar2; puVar1 = (undefined4 *)FUN_00403ad0(param_1 + 0x18,param_2); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)FUN_00402298(0x20); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_004210ac(puVar1); } uVar2 = (**(code **)(*(int *)(param_1 + 0x18) + 4))(param_1 + 0x18,param_2,puVar1); puVar1[3] = uVar2; } return puVar1; } /* @00421308 file=? name=FUN_00421308 */ void __cdecl FUN_00421308(int param_1,undefined4 *param_2) { FUN_00403b1c(param_1 + 0x18,param_2[3]); if (param_2 != (undefined4 *)0x0) { (**(code **)*param_2)(param_2,3); } return; } /* @00421334 file=? name=FUN_00421334 */ void __cdecl FUN_00421334(int param_1) { FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e42d4); return; } /* @004213aa file=? name=FUN_004213aa */ undefined4 * __cdecl FUN_004213aa(undefined4 *param_1,undefined4 param_2) { FUN_00417be0(param_1,param_2); *param_1 = &PTR_FUN_004e43ac; return param_1; } /* @004213c9 file=? name=FUN_004213c9 */ void __cdecl FUN_004213c9(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e43ac; FUN_00417c0c(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @004213f5 file=? name=FUN_004213f5 */ undefined4 * __cdecl FUN_004213f5(undefined4 *param_1,int param_2) { FUN_00417d00(param_1,param_2); *param_1 = &PTR_FUN_004e435c; return param_1; } /* @00421414 file=? name=FUN_00421414 */ undefined4 * __cdecl FUN_00421414(undefined4 *param_1,int param_2) { FUN_00417d00(param_1,param_2); *param_1 = &PTR_FUN_004e435c; return param_1; } /* @00421433 file=? name=FUN_00421433 */ undefined4 * __cdecl FUN_00421433(undefined4 *param_1,int param_2) { FUN_00417d28(param_1,param_2); *param_1 = &PTR_FUN_004e435c; return param_1; } /* @00421452 file=? name=FUN_00421452 */ void __cdecl FUN_00421452(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e435c; FUN_00417d54(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00421480 file=? name=FUN_00421480 */ undefined4 * __cdecl FUN_00421480(undefined4 *param_1,int param_2) { FUN_0041c477(param_1,param_2 + 0x148); *param_1 = &PTR_FUN_004e44bc; return param_1; } /* @004214a4 file=? name=FUN_004214a4 */ undefined4 * __cdecl FUN_004214a4(undefined4 *param_1,int param_2) { FUN_0041c4b5(param_1,param_2); *param_1 = &PTR_FUN_004e44bc; return param_1; } /* @004214c4 file=? name=FUN_004214c4 */ void __cdecl FUN_004214c4(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e44bc; FUN_0041c4d4(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @004214f0 file=? name=FUN_004214f0 */ undefined4 * __cdecl FUN_004214f0(undefined4 *param_1,int param_2) { FUN_0041c477(param_1,param_2 + 0x15c); *param_1 = &PTR_FUN_004e4468; return param_1; } /* @00421514 file=? name=FUN_00421514 */ undefined4 * __cdecl FUN_00421514(undefined4 *param_1,int param_2) { FUN_0041c4b5(param_1,param_2); *param_1 = &PTR_FUN_004e4468; return param_1; } /* @00421534 file=? name=FUN_00421534 */ void __cdecl FUN_00421534(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4468; FUN_0041c4d4(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00421560 file=? name=FUN_00421560 */ undefined4 * __cdecl FUN_00421560(undefined4 *param_1,int param_2) { FUN_0041c477(param_1,param_2 + 0x170); *param_1 = &PTR_FUN_004e4414; return param_1; } /* @00421584 file=? name=FUN_00421584 */ void __cdecl FUN_00421584(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4414; FUN_0041c4d4(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @004215b0 file=? name=FUN_004215b0 */ int __cdecl FUN_004215b0(int param_1,char *param_2) { char *pcVar1; undefined4 *puVar2; int *piVar3; char *pcVar4; char *pcVar5; int iVar6; bool bVar7; piVar3 = FUN_0040485c(param_1,(char *)0x0); iVar6 = 0; for (puVar2 = (undefined4 *)piVar3[1]; puVar2 != (undefined4 *)0x0; puVar2 = (undefined4 *)*puVar2 ) { pcVar5 = (char *)(puVar2 + 2); pcVar4 = param_2; do { if (*pcVar4 != *pcVar5) goto LAB_00421605; bVar7 = true; if (*pcVar4 == '\0') break; pcVar1 = pcVar4 + 1; if (*pcVar1 != pcVar5[1]) goto LAB_00421605; pcVar4 = pcVar4 + 2; pcVar5 = pcVar5 + 2; bVar7 = *pcVar1 == '\0'; } while (!bVar7); if (bVar7) { if (piVar3 == (int *)0x0) { return iVar6; } (**(code **)*piVar3)(piVar3,3); return iVar6; } LAB_00421605: iVar6 = iVar6 + 1; } if (piVar3 != (int *)0x0) { (**(code **)*piVar3)(piVar3,3); } pcVar5 = &DAT_004e43d8; do { if (*param_2 != *pcVar5) goto LAB_00421644; bVar7 = true; if (*param_2 == '\0') break; pcVar4 = param_2 + 1; if (*pcVar4 != pcVar5[1]) goto LAB_00421644; param_2 = param_2 + 2; pcVar5 = pcVar5 + 2; bVar7 = *pcVar4 == '\0'; } while (!bVar7); if (!bVar7) { LAB_00421644: iVar6 = -1; } return iVar6; } /* @0042164c file=? name=FUN_0042164c */ undefined4 FUN_0042164c(void) { return 1; } /* @00421658 file=? name=FUN_00421658 */ void __cdecl FUN_00421658(char *param_1,float *param_2) { uint *puVar1; float10 fVar2; uint local_bc [2]; char *local_b4; uint local_ac [2]; char *local_a4; uint local_9c [2]; char *local_94; uint local_8c [2]; char *local_84; uint local_7c [2]; char *local_74; uint local_6c [2]; char *local_64; uint local_5c [2]; char *local_54; uint local_4c [2]; char *local_44; uint local_3c [2]; char *local_34; uint *local_2c; uint *local_28; uint *local_24; uint *local_20; uint *local_1c; uint *local_18; uint *local_14; uint *local_10; uint *local_c; uint *local_8; puVar1 = (uint *)FUN_00402298(0x10); if (puVar1 == (uint *)0x0) { local_8 = (uint *)0x0; } else { local_8 = FUN_00402460(puVar1,param_1); } local_8[3] = local_8[3] + 1; FUN_00402838(local_3c,local_8,0,(char *)0x0); puVar1 = (uint *)FUN_00402298(0x10); if (puVar1 == (uint *)0x0) { local_c = (uint *)0x0; } else { local_c = FUN_00402460(puVar1,local_34); } local_c[3] = local_c[3] + 1; FUN_004024d8((int *)local_3c,2); fVar2 = (float10)FUN_004dd1cc(local_c[2]); *param_2 = (float)fVar2; puVar1 = local_c + 3; *puVar1 = *puVar1 - 1; if (*puVar1 == 0) { FUN_004024d8((int *)local_c,3); } FUN_00402838(local_4c,local_8,1,(char *)0x0); puVar1 = (uint *)FUN_00402298(0x10); if (puVar1 == (uint *)0x0) { local_10 = (uint *)0x0; } else { local_10 = FUN_00402460(puVar1,local_44); } local_10[3] = local_10[3] + 1; FUN_004024d8((int *)local_4c,2); fVar2 = (float10)FUN_004dd1cc(local_10[2]); param_2[1] = (float)fVar2; puVar1 = local_10 + 3; *puVar1 = *puVar1 - 1; if (*puVar1 == 0) { FUN_004024d8((int *)local_10,3); } FUN_00402838(local_5c,local_8,2,(char *)0x0); puVar1 = (uint *)FUN_00402298(0x10); if (puVar1 == (uint *)0x0) { local_14 = (uint *)0x0; } else { local_14 = FUN_00402460(puVar1,local_54); } local_14[3] = local_14[3] + 1; FUN_004024d8((int *)local_5c,2); fVar2 = (float10)FUN_004dd1cc(local_14[2]); param_2[2] = (float)fVar2; puVar1 = local_14 + 3; *puVar1 = *puVar1 - 1; if (*puVar1 == 0) { FUN_004024d8((int *)local_14,3); } FUN_00402838(local_6c,local_8,3,(char *)0x0); puVar1 = (uint *)FUN_00402298(0x10); if (puVar1 == (uint *)0x0) { local_18 = (uint *)0x0; } else { local_18 = FUN_00402460(puVar1,local_64); } local_18[3] = local_18[3] + 1; FUN_004024d8((int *)local_6c,2); fVar2 = (float10)FUN_004dd1cc(local_18[2]); param_2[3] = (float)fVar2; puVar1 = local_18 + 3; *puVar1 = *puVar1 - 1; if (*puVar1 == 0) { FUN_004024d8((int *)local_18,3); } FUN_00402838(local_7c,local_8,4,(char *)0x0); puVar1 = (uint *)FUN_00402298(0x10); if (puVar1 == (uint *)0x0) { local_1c = (uint *)0x0; } else { local_1c = FUN_00402460(puVar1,local_74); } local_1c[3] = local_1c[3] + 1; FUN_004024d8((int *)local_7c,2); fVar2 = (float10)FUN_004dd1cc(local_1c[2]); param_2[4] = (float)fVar2; puVar1 = local_1c + 3; *puVar1 = *puVar1 - 1; if (*puVar1 == 0) { FUN_004024d8((int *)local_1c,3); } FUN_00402838(local_8c,local_8,5,(char *)0x0); puVar1 = (uint *)FUN_00402298(0x10); if (puVar1 == (uint *)0x0) { local_20 = (uint *)0x0; } else { local_20 = FUN_00402460(puVar1,local_84); } local_20[3] = local_20[3] + 1; FUN_004024d8((int *)local_8c,2); fVar2 = (float10)FUN_004dd1cc(local_20[2]); param_2[5] = (float)fVar2; puVar1 = local_20 + 3; *puVar1 = *puVar1 - 1; if (*puVar1 == 0) { FUN_004024d8((int *)local_20,3); } FUN_00402838(local_9c,local_8,6,(char *)0x0); puVar1 = (uint *)FUN_00402298(0x10); if (puVar1 == (uint *)0x0) { local_24 = (uint *)0x0; } else { local_24 = FUN_00402460(puVar1,local_94); } local_24[3] = local_24[3] + 1; FUN_004024d8((int *)local_9c,2); fVar2 = (float10)FUN_004dd1cc(local_24[2]); param_2[6] = (float)fVar2; puVar1 = local_24 + 3; *puVar1 = *puVar1 - 1; if (*puVar1 == 0) { FUN_004024d8((int *)local_24,3); } FUN_00402838(local_ac,local_8,7,(char *)0x0); puVar1 = (uint *)FUN_00402298(0x10); if (puVar1 == (uint *)0x0) { local_28 = (uint *)0x0; } else { local_28 = FUN_00402460(puVar1,local_a4); } local_28[3] = local_28[3] + 1; FUN_004024d8((int *)local_ac,2); fVar2 = (float10)FUN_004dd1cc(local_28[2]); param_2[7] = (float)fVar2; puVar1 = local_28 + 3; *puVar1 = *puVar1 - 1; if (*puVar1 == 0) { FUN_004024d8((int *)local_28,3); } FUN_00402838(local_bc,local_8,8,(char *)0x0); puVar1 = (uint *)FUN_00402298(0x10); if (puVar1 == (uint *)0x0) { local_2c = (uint *)0x0; } else { local_2c = FUN_00402460(puVar1,local_b4); } local_2c[3] = local_2c[3] + 1; FUN_004024d8((int *)local_bc,2); fVar2 = (float10)FUN_004dd1cc(local_2c[2]); param_2[8] = (float)fVar2; puVar1 = local_2c + 3; *puVar1 = *puVar1 - 1; if (*puVar1 == 0) { FUN_004024d8((int *)local_2c,3); } puVar1 = local_8 + 3; *puVar1 = *puVar1 - 1; if (*puVar1 == 0) { FUN_004024d8((int *)local_8,3); } return; } /* @00421aa0 file=? name=FUN_00421aa0 */ undefined4 * __cdecl FUN_00421aa0(undefined4 *param_1,int param_2) { undefined4 extraout_EAX; *param_1 = &PTR_FUN_004e4510; param_1[1] = param_2; FUN_004de998((int *)0x0,0x24,param_2,1,FUN_00421b0a); param_1[2] = extraout_EAX; return param_1; } /* @00421ad4 file=? name=FUN_00421ad4 */ void __cdecl FUN_00421ad4(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4510; FUN_004022e8((int *)param_1[2]); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00421b00 file=? name=FUN_00421b00 */ undefined4 FUN_00421b00(void) { return 1; } /* @00421b0a file=? name=FUN_00421b0a */ undefined4 __cdecl FUN_00421b0a(undefined4 param_1) { return param_1; } /* @00421b12 file=? name=FUN_00421b12 */ int __cdecl FUN_00421b12(int param_1,int param_2) { return param_2 * 0x24 + *(int *)(param_1 + 8); } /* @00421b2c file=? name=FUN_00421b2c */ void __cdecl FUN_00421b2c(int param_1) { FUN_00408744((float *)(param_1 + 0x200),(float *)(param_1 + 0x1dc),(float *)(param_1 + 0xd0)); FUN_00408744((float *)(param_1 + 500),(float *)(param_1 + 0x1c4),(float *)(param_1 + 0xd0)); return; } /* @00421b6c file=? name=FUN_00421b6c */ void __cdecl FUN_00421b6c(int param_1) { FUN_0040879c((float *)(param_1 + 0x1c4),(float *)(param_1 + 500),(float *)(param_1 + 0xd0)); FUN_0040879c((float *)(param_1 + 0x1dc),(float *)(param_1 + 0x200),(float *)(param_1 + 0xd0)); return; } /* @00421bac file=? name=FUN_00421bac */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __cdecl FUN_00421bac(int param_1,float param_2) { float *pfVar1; float *pfVar2; float local_24; undefined4 local_20; undefined4 local_1c; undefined4 local_18; float local_14 [3]; float local_8; local_8 = _DAT_00421ca4 * param_2 * param_2; FUN_004086ac(local_14,(float *)(param_1 + 0x200),local_8); pfVar1 = (float *)(param_1 + 500); FUN_00408614(local_14,local_14,pfVar1,param_2); FUN_004085ec((float *)(param_1 + 0x100),(float *)(param_1 + 0x100),local_14); FUN_004086ac(local_14,(float *)(param_1 + 0x1e8),local_8); pfVar2 = (float *)(param_1 + 0x1d0); FUN_00408614(local_14,local_14,pfVar2,param_2); local_24 = *(float *)(param_1 + 0x10c); local_20 = *(undefined4 *)(param_1 + 0x110); local_1c = *(undefined4 *)(param_1 + 0x114); local_18 = *(undefined4 *)(param_1 + 0x118); FUN_00409f58((float *)(param_1 + 0x10c),&local_24,local_14); FUN_00408614(pfVar1,pfVar1,(float *)(param_1 + 0x200),param_2); FUN_00408614(pfVar2,pfVar2,(float *)(param_1 + 0x1e8),param_2); return; } /* @00421ca8 file=? name=FUN_00421ca8 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __cdecl FUN_00421ca8(int param_1,float *param_2,float *param_3,float *param_4,float *param_5,float param_6) { int iVar1; float10 fVar2; float local_20; float local_1c; float local_18; float local_14; float local_10; float local_c; float local_8; iVar1 = *(int *)(param_1 + 0x250); FUN_0040879c(&local_14,(float *)(iVar1 + 0x14),(float *)(param_1 + 0xd0)); FUN_004085ec(&local_14,&local_14,param_3); if (_DAT_00421e28 <= local_14) { *param_2 = -*param_4; fVar2 = FUN_004dce94((double)local_14,SUB84((double)param_6,0), (uint)((ulonglong)(double)param_6 >> 0x20)); } else { *param_2 = *param_5; fVar2 = FUN_004dce94((double)-local_14,SUB84((double)param_6,0), (uint)((ulonglong)(double)param_6 >> 0x20)); } local_20 = (float)fVar2; if (_DAT_00421e28 <= local_10) { param_2[1] = -param_4[1]; fVar2 = FUN_004dce94((double)local_10,SUB84((double)param_6,0), (uint)((ulonglong)(double)param_6 >> 0x20)); } else { param_2[1] = param_5[1]; fVar2 = FUN_004dce94((double)-local_10,SUB84((double)param_6,0), (uint)((ulonglong)(double)param_6 >> 0x20)); } local_1c = (float)fVar2; if (_DAT_00421e28 <= local_c) { param_2[2] = -param_4[2]; fVar2 = FUN_004dce94((double)local_c,SUB84((double)param_6,0), (uint)((ulonglong)(double)param_6 >> 0x20)); } else { param_2[2] = param_5[2]; fVar2 = FUN_004dce94((double)-local_c,SUB84((double)param_6,0), (uint)((ulonglong)(double)param_6 >> 0x20)); } local_18 = (float)fVar2; local_8 = *(float *)(iVar1 + 4); FUN_004086ac(param_2,param_2,local_8); FUN_004086d0(param_2,param_2,&local_20); return; } /* @00421e2c file=? name=FUN_00421e2c */ void __cdecl FUN_00421e2c(int param_1,float param_2) { float local_10 [3]; FUN_00421ca8(param_1,local_10,(float *)(param_1 + 0x1c4),(float *)(param_1 + 0x21c), (float *)(param_1 + 0x228),param_2); FUN_004085ec((float *)(param_1 + 0x1dc),(float *)(param_1 + 0x1dc),local_10); FUN_004086d0(local_10,(float *)(param_1 + 0x234),(float *)(param_1 + 0x1d0)); FUN_00408644((float *)(param_1 + 0x1e8),(float *)(param_1 + 0x1e8),local_10); FUN_00421b2c(param_1); *(float *)(param_1 + 0x204) = *(float *)(param_1 + 0x204) - **(float **)(param_1 + 0x250); return; } /* @00421ec0 file=? name=FUN_00421ec0 */ void __cdecl FUN_00421ec0(int param_1,float *param_2,float *param_3) { float local_10 [3]; FUN_004086f8(local_10,param_2,*(float *)(param_1 + 0x20c)); FUN_00421ef8(param_1,local_10,param_3); return; } /* @00421ef8 file=? name=FUN_00421ef8 */ void __cdecl FUN_00421ef8(int param_1,float *param_2,float *param_3) { float local_10 [3]; FUN_004085ec((float *)(param_1 + 0x1dc),(float *)(param_1 + 0x1dc),param_2); FUN_0040866c(local_10,param_3,param_2); FUN_004086d0(local_10,local_10,(float *)(param_1 + 0x210)); FUN_004085ec((float *)(param_1 + 0x1e8),(float *)(param_1 + 0x1e8),local_10); return; } /* @00421f5c file=? name=FUN_00421f5c */ undefined4 __cdecl FUN_00421f5c(int param_1) { FUN_0040a938((undefined4 *)(param_1 + 0x260),(undefined4 *)(param_1 + 300)); return 0; } /* @00421f7c file=? name=FUN_00421f7c */ undefined4 __cdecl FUN_00421f7c(int param_1) { int iVar1; undefined4 uVar2; float local_14 [3]; float local_8; if (((*(uint *)(param_1 + 0x28) & 0xc) == 4) && (*(int *)(param_1 + 0x10) < *(int *)(param_1 + 0x2e0))) { iVar1 = *(int *)(param_1 + 0x2e0) - *(int *)(param_1 + 0x14); uVar2 = 1; } else { iVar1 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x14); uVar2 = 0; } local_8 = (float)iVar1 / DAT_0052140c; FUN_004086ac(local_14,(float *)(param_1 + 0x2c8),local_8); FUN_004085ec((float *)(param_1 + 0x260),(float *)(param_1 + 300),local_14); FUN_004086ac(local_14,(float *)(param_1 + 0x2d4),local_8); FUN_00409f58((float *)(param_1 + 0x26c),(float *)(param_1 + 0x138),local_14); FUN_0040a7f4((undefined4 *)(param_1 + 0x298),(undefined4 *)(param_1 + 0x2c8)); return uVar2; } /* @00422060 file=? name=FUN_00422060 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 __cdecl FUN_00422060(int param_1) { int iVar1; undefined4 uVar2; float local_18 [3]; float local_c; float local_8; if (((*(uint *)(param_1 + 0x28) & 0xc) == 4) && (*(int *)(param_1 + 0x10) < *(int *)(param_1 + 0x2e0))) { iVar1 = *(int *)(param_1 + 0x2e0) - *(int *)(param_1 + 0x14); uVar2 = 1; } else { iVar1 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x14); uVar2 = 0; } local_8 = (float)iVar1 / DAT_0052140c; local_c = _DAT_004221bc * local_8 * local_8; FUN_004086ac(local_18,(float *)(param_1 + 0x2b0),local_c); FUN_00408614(local_18,local_18,(float *)(param_1 + 0x2c8),local_8); FUN_004085ec((float *)(param_1 + 0x260),(float *)(param_1 + 300),local_18); FUN_004086ac(local_18,(float *)(param_1 + 700),local_c); FUN_00408614(local_18,local_18,(float *)(param_1 + 0x2d4),local_8); FUN_00409f58((float *)(param_1 + 0x26c),(float *)(param_1 + 0x138),local_18); if ((*(uint *)(param_1 + 0x28) & 0xc) == 4) { FUN_00408614((float *)(param_1 + 0x298),(float *)(param_1 + 0x2c8),(float *)(param_1 + 0x200), local_8); FUN_00408614((float *)(param_1 + 0x2a4),(float *)(param_1 + 0x2d4),(float *)(param_1 + 0x1e8), local_8); } return uVar2; } /* @0042249c file=? name=FUN_0042249c */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __cdecl FUN_0042249c(int *param_1,undefined4 *param_2) { int *piVar1; if (*(short *)((int)param_2 + 6) == 0) { piVar1 = (int *)FUN_00414b60(); param_1[0xb8] = *piVar1; if ((float)(param_1[0xb8] - param_1[5]) / DAT_0052140c < _DAT_004225a0) { param_1[0xb8] = param_1[0xb8] + (param_1[0xb8] - param_1[5]); } FUN_0041f76c((int)param_1,param_2); FUN_0040a7f4(param_1 + 0x77,param_2 + 0x11); FUN_00408440(param_1 + 0x80,param_2 + 0x1a); FUN_00408440(param_1 + 0xb2,param_2 + 0x17); FUN_00408440(param_1 + 0xb5,param_2 + 0xe); FUN_00408440(param_1 + 0xac,param_2 + 0x1a); FUN_00408440(param_1 + 0xaf,param_2 + 0x14); if ((*(byte *)((int)param_1 + 0x29) & 0x40) == 0) { (**(code **)(*param_1 + 0x34))(param_1); } } else { FUN_0041f76c((int)param_1,param_2); } return; } /* @004225a4 file=? name=FUN_004225a4 */ void __cdecl FUN_004225a4(int param_1,int *param_2,int param_3) { if (param_3 == 0) { FUN_0041f680(param_1,param_2,0); *param_2 = 0x74; FUN_0040a7f4(param_2 + 0xb,(undefined4 *)(param_1 + 0x1c4)); FUN_0040a7f4(param_2 + 0x11,(undefined4 *)(param_1 + 0x1dc)); FUN_00408440(param_2 + 0x17,(undefined4 *)(param_1 + 500)); FUN_00408440(param_2 + 0x1a,(undefined4 *)(param_1 + 0x200)); FUN_00408440((undefined4 *)(param_1 + 0x2c8),(undefined4 *)(param_1 + 500)); FUN_00408440((undefined4 *)(param_1 + 0x2d4),(undefined4 *)(param_1 + 0x1d0)); FUN_00408440((undefined4 *)(param_1 + 0x2b0),(undefined4 *)(param_1 + 0x200)); FUN_00408440((undefined4 *)(param_1 + 700),(undefined4 *)(param_1 + 0x1e8)); } else { FUN_0041f680(param_1,param_2,param_3); } return; } /* @00422684 file=? name=FUN_00422684 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __cdecl FUN_00422684(int param_1) { float *pfVar1; int iVar2; float local_28; float local_24; float local_20; float local_1c; float local_18; float local_14; float local_10; float local_c; float local_8; if (*(int *)(param_1 + 0x2e4) != 0) { FUN_0040ab44((float *)(param_1 + 0xd0),(undefined4 *)(param_1 + 0x100)); pfVar1 = *(float **)(param_1 + 0x2ec); local_10 = (*pfVar1 + pfVar1[1]) * _DAT_004227ac; local_c = (pfVar1[2] + pfVar1[3]) * _DAT_004227ac; local_8 = (pfVar1[4] + pfVar1[5]) * _DAT_004227ac; local_1c = *(float *)(*(int *)(param_1 + 0x2ec) + 4) - local_10; local_18 = *(float *)(*(int *)(param_1 + 0x2ec) + 0xc) - local_c; local_14 = *(float *)(*(int *)(param_1 + 0x2ec) + 0x14) - local_8; FUN_00408b98(&local_28,&local_10,(float *)(param_1 + 0xd0)); pfVar1 = *(float **)(param_1 + 0x2e8); *pfVar1 = local_28 - local_1c; pfVar1[1] = local_28 + local_1c; pfVar1[2] = local_24 - local_18; pfVar1[3] = local_24 + local_18; pfVar1[4] = local_20 - local_14; pfVar1[5] = local_20 + local_14; if ((*(uint *)(param_1 + 0x28) & 0xc) != 4) { iVar2 = FUN_00433ed4(*(int *)(DAT_004efc94 + 0x30) + 0x14); iVar2 = FUN_0040e36c(**(int **)(iVar2 + 0x30),*(int *)(param_1 + 0x2e8)); *(int *)(param_1 + 0x2f0) = iVar2; } } return; } /* @004227b0 file=? name=FUN_004227b0 */ void __cdecl FUN_004227b0(int param_1) { undefined4 *puVar1; puVar1 = *(undefined4 **)(param_1 + 0x2f4); if (puVar1 == *(undefined4 **)(param_1 + 0x2f8)) { puVar1 = puVar1 + 5; } puVar1[4] = 0; puVar1[1] = *puVar1; puVar1[3] = puVar1[2]; return; } /* @004227e0 file=? name=FUN_004227e0 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ int __cdecl FUN_004227e0(int param_1,int param_2) { int iVar1; int iVar2; float local_24; float local_20; float local_1c; int local_18 [5]; if (param_2 == 0) { param_2 = FUN_004227b0(param_1); } FUN_004355bc(local_18,*(int *)(param_1 + 0x2fc)); while( true ) { iVar2 = (**(code **)(local_18[0] + 0x28))(local_18); if (iVar2 == 0) break; if (param_1 != iVar2) { FUN_00408644(&local_24,(float *)(iVar2 + 0x100),(float *)(param_1 + 0x100)); if (local_1c * local_1c + local_20 * local_20 + local_24 * local_24 <= _DAT_00422918) { iVar1 = FUN_0041a1a4(**(int **)(iVar2 + 0xc),0x4e4518); if (iVar1 == 0) { iVar1 = FUN_0041a1a4(**(int **)(iVar2 + 0xc),0x4e744c); if (iVar1 != 0) { for (iVar1 = 0; iVar1 < *(int *)(iVar2 + 0x124); iVar1 = iVar1 + 1) { FUN_00423414(param_1,param_2, *(float **)(*(int *)(*(int *)(iVar2 + 0x128) + iVar1 * 4) + 0x130)); } } } else { FUN_00423414(param_1,param_2,*(float **)(iVar2 + 0x2e8)); } } } } FUN_0040e4ac(*(int *)(param_1 + 0x2f0),*(undefined4 *)(param_1 + 0x2e8), (undefined4 *)*(undefined4 *)(param_1 + 0x2e8),param_2); FUN_004355e8(local_18,2); return param_2; } /* @0042291c file=? name=FUN_0042291c */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ int __cdecl FUN_0042291c(int param_1,float *param_2,int param_3) { float *pfVar1; int iVar2; int iVar3; int iVar4; float local_4c; float local_48; float local_44; float local_40; float local_3c; float local_38; int local_34 [5]; float local_20 [3]; float local_14; float local_10; int local_c; float local_8; local_8 = param_2[6] * _DAT_00422b20; FUN_0040cdf4(param_2,local_8,local_20); FUN_004355bc(local_34,*(int *)(param_1 + 0x2fc)); local_c = 0; while( true ) { iVar4 = (**(code **)(local_34[0] + 0x28))(local_34); if (iVar4 == 0) break; if ((param_1 != iVar4) && ((param_3 == 0 || (iVar4 != param_3)))) { iVar2 = FUN_0041a1a4(**(int **)(iVar4 + 0xc),0x4e4518); if (iVar2 == 0) { iVar2 = FUN_0041a1a4(**(int **)(iVar4 + 0xc),0x4e744c); if (iVar2 != 0) { FUN_00408644(&local_4c,(float *)(iVar4 + 0x100),local_20); local_14 = local_8 + _DAT_00422b24; if (local_44 * local_44 + local_48 * local_48 + local_4c * local_4c <= local_14 * local_14 ) { for (iVar2 = 0; iVar2 < *(int *)(iVar4 + 0x124); iVar2 = iVar2 + 1) { iVar3 = FUN_004234c0(param_1,(int)param_2, *(int *)(*(int *)(*(int *)(iVar4 + 0x128) + iVar2 * 4) + 0x130)); if (iVar3 != 0) { local_c = iVar3; } } } } } else { FUN_00408644(&local_40,(float *)(iVar4 + 0x100),local_20); pfVar1 = *(float **)(iVar4 + 0x2e8); local_10 = local_8 + _DAT_00422b20 * ((pfVar1[3] - pfVar1[2]) + (pfVar1[1] - *pfVar1)); if (local_38 * local_38 + local_3c * local_3c + local_40 * local_40 <= local_10 * local_10) { iVar4 = FUN_004234c0(param_1,(int)param_2,(int)pfVar1); if (iVar4 != 0) { local_c = iVar4; } } } } } iVar4 = FUN_00433ed4(*(int *)(DAT_004efc94 + 0x30) + 0x14); iVar4 = FUN_0040eadc(*(int **)(iVar4 + 0x30),param_2); if (iVar4 != 0) { local_c = iVar4; } FUN_004355e8(local_34,2); return local_c; } /* @00422bac file=? name=FUN_00422bac */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00422bac(int *param_1,int *param_2,undefined4 param_3,undefined4 param_4, undefined4 *param_5) { int iVar1; float10 fVar2; int iStack_74; int iStack_70; int iStack_6c; float fStack_68; int iStack_64; int iStack_60; float fStack_5c; undefined4 uStack_58; undefined4 uStack_54; float fStack_50; undefined4 uStack_4c; undefined4 uStack_48; float fStack_44; undefined4 uStack_40; undefined4 uStack_3c; float fStack_38; float *pfStack_34; float *pfStack_30; int *piStack_2c; int *piStack_28; float *pfStack_24; float fStack_20; int *piStack_1c; int *piStack_18; int iStack_14; float fStack_10; int iStack_c; undefined4 *puStack_8; param_5[1] = 0; *param_5 = 0; puStack_8 = param_5 + 8; FUN_00408440(puStack_8,&DAT_004e0f80); if (param_2[2] == param_2[3]) { param_1[0xbe] = 0; return; } FUN_0040fbb0(param_2,(float *)(param_1 + 0x7d)); iStack_c = 0; fStack_44 = DAT_004e0f74; uStack_40 = DAT_004e0f78; uStack_3c = DAT_004e0f7c; fStack_50 = DAT_004e0f80; uStack_4c = DAT_004e0f84; uStack_48 = DAT_004e0f88; fStack_5c = DAT_004e0f74; uStack_58 = DAT_004e0f78; uStack_54 = DAT_004e0f7c; fStack_68 = (float)param_1[0x7d]; iStack_64 = param_1[0x7e]; iStack_60 = param_1[0x7f]; iStack_74 = param_1[0x40]; iStack_70 = param_1[0x41]; iStack_6c = param_1[0x42]; fStack_10 = 0.0; for (iStack_14 = 0; iStack_14 < (param_2[2] - param_2[3]) - param_2[4]; iStack_14 = iStack_14 + 1) { piStack_18 = param_1 + 0x7d; FUN_00408440(piStack_18,&fStack_68); piStack_1c = param_1 + 0x40; FUN_00408440(piStack_1c,&iStack_74); param_5[1] = 0; (**(code **)(*param_1 + 0x3c))(param_1,param_3,*param_2 + iStack_14 * 0x1c,param_4); if (_DAT_00422f38 < (float)param_5[1]) { iStack_c = iStack_c + 1; FUN_004085ec(&fStack_44,&fStack_44,(float *)(param_1 + 0x7d)); FUN_004085ec(&fStack_50,&fStack_50,(float *)(param_1 + 0x40)); FUN_004085ec(&fStack_5c,&fStack_5c,(float *)(param_5 + 5)); fStack_10 = (float)param_5[1] + fStack_10; iVar1 = *param_2 + iStack_14 * 0x1c; param_5[8] = ((*(float *)(iVar1 + 4) + *(float *)(iVar1 + 8)) - (*(float *)param_1[0xba] - ((float *)param_1[0xba])[1])) * _DAT_00422f3c + (float)param_5[8]; param_5[9] = ((*(float *)(iVar1 + 0xc) + *(float *)(iVar1 + 0x10)) - (*(float *)(param_1[0xba] + 8) - *(float *)(param_1[0xba] + 0xc))) * _DAT_00422f3c + (float)param_5[9]; param_5[10] = ((*(float *)(iVar1 + 0x14) + *(float *)(iVar1 + 0x18)) - (*(float *)(param_1[0xba] + 0x10) - *(float *)(param_1[0xba] + 0x14))) * _DAT_00422f3c + (float)param_5[10]; } } if (iStack_c < 2) { if (iStack_c != 1) goto LAB_00422f1e; piStack_28 = param_1 + 0x7d; FUN_00408440(piStack_28,&fStack_44); piStack_2c = param_1 + 0x40; FUN_00408440(piStack_2c,&fStack_50); pfStack_30 = (float *)(param_5 + 5); FUN_004087f4(pfStack_30,&fStack_5c); } else { FUN_004086f8((float *)(param_1 + 0x7d),&fStack_44,(float)iStack_c); fStack_20 = (float)iStack_c; pfStack_24 = (float *)(param_1 + 0x40); FUN_004086f8(pfStack_24,&fStack_50,fStack_20); FUN_004086f8((float *)(param_5 + 5),&fStack_5c,(float)iStack_c); } pfStack_34 = (float *)(param_5 + 5); fStack_38 = (float)param_5[7] * (float)param_5[7] + (float)param_5[6] * (float)param_5[6] + *pfStack_34 * *pfStack_34; fVar2 = FUN_004dcd00((double)fStack_38); if ((float10)_DAT_00422f40 < fVar2) { FUN_004087f4((float *)(param_5 + 5),(float *)(param_5 + 5)); } else { param_5[5] = 0; param_5[6] = 0x3f800000; param_5[7] = 0; } (**(code **)(*param_1 + 0x34))(); param_5[1] = fStack_10; FUN_00408644((float *)(param_5 + 2),(float *)(param_1 + 0x7d),&fStack_68); LAB_00422f1e: param_1[0xbe] = (int)param_2; return; } /* @00422bb2 file=? name=FUN_00422bb2 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_00422bb2(void) { undefined4 *puVar1; int *piVar2; int *piVar3; undefined4 uVar4; int iVar5; int unaff_EBP; float10 fVar6; puVar1 = *(undefined4 **)(unaff_EBP + 0x18); piVar2 = *(int **)(unaff_EBP + 0xc); piVar3 = *(int **)(unaff_EBP + 8); puVar1[1] = 0; *puVar1 = 0; *(undefined4 **)(unaff_EBP + -4) = puVar1 + 8; FUN_00408440(*(undefined4 **)(unaff_EBP + -4),&DAT_004e0f80); if (piVar2[2] == piVar2[3]) { piVar3[0xbe] = 0; return; } FUN_0040fbb0(piVar2,(float *)(piVar3 + 0x7d)); uVar4 = DAT_004e0f74; *(undefined4 *)(unaff_EBP + -8) = 0; *(undefined4 *)(unaff_EBP + -0x40) = uVar4; uVar4 = DAT_004e0f7c; *(undefined4 *)(unaff_EBP + -0x3c) = DAT_004e0f78; *(undefined4 *)(unaff_EBP + -0x38) = uVar4; uVar4 = DAT_004e0f84; *(undefined4 *)(unaff_EBP + -0x4c) = DAT_004e0f80; *(undefined4 *)(unaff_EBP + -0x48) = uVar4; uVar4 = DAT_004e0f74; *(undefined4 *)(unaff_EBP + -0x44) = DAT_004e0f88; *(undefined4 *)(unaff_EBP + -0x58) = uVar4; uVar4 = DAT_004e0f7c; *(undefined4 *)(unaff_EBP + -0x54) = DAT_004e0f78; *(undefined4 *)(unaff_EBP + -0x50) = uVar4; *(int *)(unaff_EBP + -100) = piVar3[0x7d]; *(int *)(unaff_EBP + -0x60) = piVar3[0x7e]; *(int *)(unaff_EBP + -0x5c) = piVar3[0x7f]; *(int *)(unaff_EBP + -0x70) = piVar3[0x40]; *(int *)(unaff_EBP + -0x6c) = piVar3[0x41]; *(int *)(unaff_EBP + -0x68) = piVar3[0x42]; *(undefined4 *)(unaff_EBP + -0xc) = 0; *(undefined4 *)(unaff_EBP + -0x10) = 0; while (*(int *)(unaff_EBP + -0x10) < (piVar2[2] - piVar2[3]) - piVar2[4]) { *(int **)(unaff_EBP + -0x14) = piVar3 + 0x7d; FUN_00408440(*(undefined4 **)(unaff_EBP + -0x14),(undefined4 *)(unaff_EBP + -100)); *(int **)(unaff_EBP + -0x18) = piVar3 + 0x40; FUN_00408440(*(undefined4 **)(unaff_EBP + -0x18),(undefined4 *)(unaff_EBP + -0x70)); puVar1[1] = 0; (**(code **)(*piVar3 + 0x3c)) (piVar3,*(undefined4 *)(unaff_EBP + 0x10),*piVar2 + *(int *)(unaff_EBP + -0x10) * 0x1c ,*(undefined4 *)(unaff_EBP + 0x14)); if (_DAT_00422f38 < (float)puVar1[1]) { *(int *)(unaff_EBP + -8) = *(int *)(unaff_EBP + -8) + 1; FUN_004085ec((float *)(unaff_EBP + -0x40),(float *)(unaff_EBP + -0x40), (float *)(piVar3 + 0x7d)); FUN_004085ec((float *)(unaff_EBP + -0x4c),(float *)(unaff_EBP + -0x4c), (float *)(piVar3 + 0x40)); FUN_004085ec((float *)(unaff_EBP + -0x58),(float *)(unaff_EBP + -0x58),(float *)(puVar1 + 5)); *(float *)(unaff_EBP + -0xc) = (float)puVar1[1] + *(float *)(unaff_EBP + -0xc); iVar5 = *piVar2 + *(int *)(unaff_EBP + -0x10) * 0x1c; puVar1[8] = ((*(float *)(iVar5 + 4) + *(float *)(iVar5 + 8)) - (*(float *)piVar3[0xba] - ((float *)piVar3[0xba])[1])) * _DAT_00422f3c + (float)puVar1[8]; puVar1[9] = ((*(float *)(iVar5 + 0xc) + *(float *)(iVar5 + 0x10)) - (*(float *)(piVar3[0xba] + 8) - *(float *)(piVar3[0xba] + 0xc))) * _DAT_00422f3c + (float)puVar1[9]; puVar1[10] = ((*(float *)(iVar5 + 0x14) + *(float *)(iVar5 + 0x18)) - (*(float *)(piVar3[0xba] + 0x10) - *(float *)(piVar3[0xba] + 0x14))) * _DAT_00422f3c + (float)puVar1[10]; } *(int *)(unaff_EBP + -0x10) = *(int *)(unaff_EBP + -0x10) + 1; } if (*(int *)(unaff_EBP + -8) < 2) { if (*(int *)(unaff_EBP + -8) != 1) goto LAB_00422f1e; *(int **)(unaff_EBP + -0x24) = piVar3 + 0x7d; FUN_00408440(*(undefined4 **)(unaff_EBP + -0x24),(undefined4 *)(unaff_EBP + -0x40)); *(int **)(unaff_EBP + -0x28) = piVar3 + 0x40; FUN_00408440(*(undefined4 **)(unaff_EBP + -0x28),(undefined4 *)(unaff_EBP + -0x4c)); *(undefined4 **)(unaff_EBP + -0x2c) = puVar1 + 5; FUN_004087f4(*(float **)(unaff_EBP + -0x2c),(float *)(unaff_EBP + -0x58)); } else { FUN_004086f8((float *)(piVar3 + 0x7d),(float *)(unaff_EBP + -0x40), (float)*(int *)(unaff_EBP + -8)); *(float *)(unaff_EBP + -0x1c) = (float)*(int *)(unaff_EBP + -8); *(int **)(unaff_EBP + -0x20) = piVar3 + 0x40; FUN_004086f8(*(float **)(unaff_EBP + -0x20),(float *)(unaff_EBP + -0x4c), *(float *)(unaff_EBP + -0x1c)); FUN_004086f8((float *)(puVar1 + 5),(float *)(unaff_EBP + -0x58),(float)*(int *)(unaff_EBP + -8)) ; } *(undefined4 **)(unaff_EBP + -0x30) = puVar1 + 5; *(float *)(unaff_EBP + -0x34) = *(float *)(*(int *)(unaff_EBP + -0x30) + 8) * *(float *)(*(int *)(unaff_EBP + -0x30) + 8) + *(float *)(*(int *)(unaff_EBP + -0x30) + 4) * *(float *)(*(int *)(unaff_EBP + -0x30) + 4) + **(float **)(unaff_EBP + -0x30) * **(float **)(unaff_EBP + -0x30); fVar6 = FUN_004dcd00((double)*(float *)(unaff_EBP + -0x34)); if ((float10)_DAT_00422f40 < fVar6) { FUN_004087f4((float *)(puVar1 + 5),(float *)(puVar1 + 5)); } else { puVar1[5] = 0; puVar1[6] = 0x3f800000; puVar1[7] = 0; } (**(code **)(*piVar3 + 0x34))(); puVar1[1] = *(undefined4 *)(unaff_EBP + -0xc); FUN_00408644((float *)(puVar1 + 2),(float *)(piVar3 + 0x7d),(float *)(unaff_EBP + -100)); LAB_00422f1e: piVar3[0xbe] = (int)piVar2; return; } /* @00422fe0 file=? name=FUN_00422fe0 */ void __cdecl FUN_00422fe0(int param_1) { undefined4 *puVar1; puVar1 = FUN_0043544c(param_1); *(undefined4 **)(param_1 + 0x2fc) = puVar1; return; } /* @00422ff8 file=? name=FUN_00422ff8 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ float10 __cdecl FUN_00422ff8(int param_1,undefined4 param_2,float param_3,float param_4,float *param_5, float *param_6,float param_7,float *param_8) { float *pfVar1; float10 fVar2; float local_40 [3]; float local_34; float local_30; float local_2c; float local_28; float local_24; float local_20; float local_1c; float local_18; float local_14; float local_10; float local_c; float local_8; local_8 = *(float *)(param_1 + 0x1fc) * param_5[2] + *(float *)(param_1 + 0x1f8) * param_5[1] + *(float *)(param_1 + 500) * *param_5; FUN_004086ac(&local_28,param_5,local_8); FUN_00408644(&local_34,(float *)(param_1 + 500),&local_28); if (local_8 <= _DAT_00423204) { if (-local_8 <= param_7 * param_3) { *param_6 = 0.0; } fVar2 = FUN_004dd138((double)(local_2c * local_2c + local_30 * local_30 + local_34 * local_34)); local_10 = (float)fVar2; local_c = local_10; fVar2 = FUN_004dcd00((double)local_10); if ((float10)_DAT_00423208 < fVar2) { local_c = ((_DAT_0042320c + *param_6) * *param_8 * local_8) / local_c + _DAT_0042320c; if (local_c < _DAT_00423204) { local_c = _DAT_00423204; *param_8 = _DAT_00423204; } } else { local_c = _DAT_00423204; *param_8 = _DAT_00423204; } local_14 = local_c - _DAT_0042320c; pfVar1 = (float *)(param_1 + 500); FUN_004086ac(local_40,pfVar1,local_14); local_14 = local_c + *param_6; FUN_00408614(local_40,local_40,&local_28,-local_14); local_18 = _DAT_00423210 - *param_6; local_14 = local_18; FUN_004086ac(&local_28,&local_28,local_18); FUN_00408614(&local_34,&local_28,pfVar1,2.0); FUN_004085ec(pfVar1,pfVar1,local_40); local_1c = param_4 * param_3; local_14 = local_1c; FUN_004086ac(local_40,local_40,local_1c); FUN_004085ec((float *)(param_1 + 0x100),(float *)(param_1 + 0x100),local_40); fVar2 = ((float10)local_20 * (float10)local_2c + (float10)local_24 * (float10)local_30 + (float10)local_28 * (float10)local_34) * (float10)_DAT_00423214 * (float10)*(float *)(param_1 + 0x20c); } else { fVar2 = (float10)_DAT_00423204; } return fVar2; } /* @00423414 file=? name=FUN_00423414 */ void __cdecl FUN_00423414(int param_1,int param_2,float *param_3) { int iVar1; float local_1c [6]; while ((param_3 != (float *)0x0 && ((iVar1 = FUN_0040db98(param_3,*(float **)(param_1 + 0x2e8),local_1c), iVar1 == 0 || (FUN_0040de78(param_2,param_3,local_1c), *(int *)(param_2 + 0xc) != 0))))) { param_3 = (float *)param_3[10]; } return; } /* @00423468 file=? name=FUN_00423468 */ void __cdecl FUN_00423468(int param_1,int param_2,float *param_3) { int iVar1; float local_1c [6]; while ((param_3 != (float *)0x0 && ((iVar1 = FUN_0040db98(param_3,*(float **)(param_1 + 0x2e8),local_1c), iVar1 == 0 || (FUN_0040de78(param_2,*(undefined4 *)(param_1 + 0x2e8),local_1c), *(int *)(param_2 + 0xc) != 0))))) { param_3 = (float *)param_3[10]; } return; } /* @004234c0 file=? name=FUN_004234c0 */ int __cdecl FUN_004234c0(undefined4 param_1,int param_2,int param_3) { int iVar1; int iVar2; iVar2 = 0; for (; param_3 != 0; param_3 = *(int *)(param_3 + 0x28)) { iVar1 = FUN_0040dc58(param_3,param_2); if (iVar1 != 0) { iVar2 = param_3; } } return iVar2; } /* @004234f0 file=? name=FUN_004234f0 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ int * __cdecl FUN_004234f0(int *param_1,int param_2,undefined4 param_3) { float *pfVar1; float *pfVar2; int iVar3; int extraout_EAX; int iVar4; int iVar5; int *piVar6; int local_54; FUN_0041ff38(param_1,param_2,param_3); pfVar1 = (float *)(param_1 + 0x71); pfVar2 = (float *)(param_1 + 0x77); *param_1 = (int)&PTR_FUN_004e4950; iVar5 = *(int *)(DAT_004efc94 + 0x68); FUN_0040a7f4(pfVar1,(undefined4 *)(param_2 + 0x4c)); FUN_0040a7f4(pfVar2,(undefined4 *)(param_2 + 100)); FUN_00408744((float *)(param_1 + 0x80),pfVar2,(float *)(param_1 + 0x34)); FUN_00408744((float *)(param_1 + 0x7d),pfVar1,(float *)(param_1 + 0x34)); FUN_00408440(param_1 + 0xb2,param_1 + 0x7d); FUN_00408440(param_1 + 0xb5,pfVar1); FUN_00408440(param_1 + 0xac,param_1 + 0x80); FUN_00408440(param_1 + 0xaf,pfVar2); param_1[0xb8] = param_1[5]; param_1[0x93] = 0; if ((*(byte *)((int)param_1 + 0x2a) & 1) != 0) { FUN_0041bbd8((int)(param_1 + 0xb),1); } param_1[0xba] = 0; param_1[0xbb] = 0; param_1[0xbc] = 0; param_1[0xbd] = 0; param_1[0xbe] = 0; param_1[0xbf] = 0; param_1[0x95] = DAT_004e4624; param_1[0x96] = DAT_004e4628; param_1[0x97] = DAT_004e462c; param_1[0xb9] = 0; iVar3 = FUN_00407064(iVar5,param_1[0x6f],0xf); iVar4 = *(int *)(iVar3 + 4); *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; if (iVar4 == 0) { FUN_00406cd0(iVar3); } piVar6 = *(int **)(iVar3 + 0x3c); param_1[0x83] = *piVar6; param_1[0x84] = (int)(_DAT_00423860 / (float)piVar6[1]); param_1[0x85] = (int)(_DAT_00423860 / (float)piVar6[2]); param_1[0x86] = (int)(_DAT_00423860 / (float)piVar6[3]); FUN_00408440(param_1 + 0x87,piVar6 + 4); FUN_00408440(param_1 + 0x8a,piVar6 + 7); FUN_00408440(param_1 + 0x8d,piVar6 + 10); param_1[0x90] = piVar6[0xd]; param_1[0x91] = piVar6[0xe]; param_1[0x92] = piVar6[0xf]; piVar6 = FUN_004de998((int *)0x0,0x14,2,0x211,FUN_00423d88); param_1[0xbd] = extraout_EAX; piVar6[1] = piVar6[1] + -1; if ((*(byte *)((int)param_1 + 0x29) & 0x40) == 0) { iVar4 = FUN_00407064(iVar5,param_1[0x6f],9); iVar5 = *(int *)(iVar4 + 4); *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1; if (iVar5 == 0) { FUN_00406cd0(iVar4); } iVar5 = *(int *)(iVar4 + 0x3c); param_1[0xb9] = *(uint *)(iVar4 + 0x40) / 0x3c; for (local_54 = 0; local_54 < param_1[0xb9]; local_54 = local_54 + 1) { iVar3 = FUN_0040eed8(iVar5,param_1,param_1[0xbb]); param_1[0xbb] = iVar3; iVar3 = FUN_0040eed8(iVar5,param_1,param_1[0xba]); param_1[0xba] = iVar3; iVar5 = iVar5 + 0x3c; } *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + -1; (**(code **)(*param_1 + 0x34))(param_1); } return param_1; } /* @00423864 file=? name=FUN_00423864 */ undefined4 __cdecl FUN_00423864(undefined4 *param_1) { int iVar1; iVar1 = FUN_00420234(param_1); if (iVar1 == 0) { return 0; } *param_1 = 0x7c; param_1[7] = 0x1b; FUN_0040a7f4(param_1 + 0x13,(undefined4 *)&DAT_004e0fd4); FUN_0040a7f4(param_1 + 0x19,(undefined4 *)&DAT_004e0fd4); return 1; } /* @004238bc file=? name=FUN_004238bc */ undefined4 __cdecl FUN_004238bc(int param_1,char *param_2,int param_3,undefined4 param_4,float *param_5) { float *pfVar1; int iVar2; undefined4 *puVar3; undefined4 local_18; float *local_14; float *local_10; float *local_c; float *local_8; pfVar1 = param_5; if ((param_5 == (float *)0x0) && (pfVar1 = (float *)FUN_00402298(0x40), pfVar1 != (float *)0x0)) { local_8 = pfVar1 + 1; local_c = pfVar1 + 4; local_10 = pfVar1 + 7; local_14 = pfVar1 + 10; } iVar2 = FUN_00404118(param_3,s_gamedata_004e472f,s_MoverMass_004e4738,pfVar1); if (iVar2 == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_missing_MoverMass__004e4742,(char *)0x0); } else { iVar2 = FUN_00404088(param_3,s_gamedata_004e4757,s_MomentOfInertia_004e4760,&local_18); if (iVar2 == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_missing_MomentOfInertia__004e4770,(char *)0x0); } else { FUN_004d7f84(local_18,(byte *)s__f__f__f_004e478b); iVar2 = FUN_00404088(param_3,s_gamedata_004e4794,s_PositiveLinearDragCoefficients_004e479d, &local_18); if (iVar2 == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_missing_PositiveLinearDragCoeffi_004e47bc,(char *)0x0); } else { FUN_004d7f84(local_18,(byte *)s__f__f__f_004e47e6); iVar2 = FUN_00404088(param_3,s_gamedata_004e47ef,s_NegativeLinearDragCoefficients_004e47f8, &local_18); if (iVar2 == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_missing_NegativeLinearDragCoeffi_004e4817,(char *)0x0) ; } else { FUN_004d7f84(local_18,(byte *)s__f__f__f_004e4841); iVar2 = FUN_00404088(param_3,s_gamedata_004e484a,s_AngularDragCoefficients_004e4853, &local_18); if (iVar2 == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_missing_AngularDragCoefficients__004e486b, (char *)0x0); } else { FUN_004d7f84(local_18,(byte *)s__f__f__f_004e488e); iVar2 = FUN_00404118(param_3,s_gamedata_004e4897,s_FrictionCoefficient_004e48a0, pfVar1 + 0xd); if (iVar2 == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_missing_FrictionCoefficient__004e48b4,(char *)0x0) ; } else { iVar2 = FUN_00404118(param_3,s_gamedata_004e48d3,s_ElasticityCoefficient_004e48dc, pfVar1 + 0xe); if (iVar2 == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_missing_ElasticityCoefficient__004e48f2, (char *)0x0); } else { iVar2 = FUN_00404118(param_3,s_gamedata_004e4913,s_MinimumBounceSpeed_004e491c, pfVar1 + 0xf); if (iVar2 != 0) { if (param_5 == (float *)0x0) { puVar3 = (undefined4 *)FUN_00406db4(param_1,param_2,0xf,1,0,pfVar1,0x40,-1); FUN_004022d0((int *)pfVar1); return *puVar3; } return 0; } FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_missing_MinimumBounceSpeed__004e492f,(char *)0x0 ); } } } } } } } if (param_5 == (float *)0x0) { FUN_004022d0((int *)pfVar1); } return 0xffffffff; } /* @00423be8 file=? name=FUN_00423be8 */ int * __cdecl FUN_00423be8(int param_1) { int *piVar1; piVar1 = (int *)FUN_00402298(0x300); if (piVar1 == (int *)0x0) { piVar1 = (int *)0x0; } else { piVar1 = FUN_004234f0(piVar1,param_1,&DAT_004e4548); } return piVar1; } /* @00423c18 file=? name=FUN_00423c18 */ void __cdecl FUN_00423c18(int *param_1,byte param_2) { int iVar1; undefined4 *puVar2; int iVar3; if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4950; FUN_004de8d4((int *)param_1[0xbd],0x14,0,0x19,FUN_00423daf); if ((*(byte *)((int)param_1 + 0x29) & 0x40) == 0) { iVar1 = param_1[0xbb]; while (iVar3 = iVar1, iVar3 != 0) { iVar1 = *(int *)(iVar3 + 0x28); if (iVar3 != 0) { (*(code *)**(undefined4 **)(iVar3 + 0x18))(iVar3,3); } } iVar1 = param_1[0xba]; while (iVar3 = iVar1, iVar3 != 0) { iVar1 = *(int *)(iVar3 + 0x28); if (iVar3 != 0) { (*(code *)**(undefined4 **)(iVar3 + 0x18))(iVar3,3); } } } puVar2 = (undefined4 *)param_1[0xbf]; if ((puVar2 != (undefined4 *)0x0) && (puVar2 != (undefined4 *)0x0)) { (**(code **)*puVar2)(puVar2,3); } FUN_00420508(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00423cc8 file=? name=FUN_00423cc8 */ void __cdecl FUN_00423cc8(int param_1) { FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e4518); return; } /* @00423d88 file=? name=FUN_00423d88 */ undefined4 * __cdecl FUN_00423d88(undefined4 *param_1) { FUN_0040de40(param_1,10); param_1[4] = 0; param_1[1] = *param_1; param_1[3] = param_1[2]; return param_1; } /* @00423daf file=? name=FUN_00423daf */ void __cdecl FUN_00423daf(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { FUN_004022e8((int *)*param_1); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00423dd3 file=? name=FUN_00423dd3 */ void __cdecl FUN_00423dd3(undefined4 *param_1,int param_2) { *param_1 = *(undefined4 *)(param_2 + 500); param_1[1] = *(undefined4 *)(param_2 + 0x1f8); param_1[2] = *(undefined4 *)(param_2 + 0x1fc); return; } /* @00423df4 file=? name=FUN_00423df4 */ void __cdecl FUN_00423df4(undefined4 *param_1,int param_2) { *param_1 = *(undefined4 *)(param_2 + 0x200); param_1[1] = *(undefined4 *)(param_2 + 0x204); param_1[2] = *(undefined4 *)(param_2 + 0x208); return; } /* @00423e18 file=? name=FUN_00423e18 */ int __cdecl FUN_00423e18(int param_1) { int iVar1; iVar1 = (**(code **)(*(int *)(param_1 + 0xc) + 0xc))(param_1 + 0xc,&stack0x00000008); if (iVar1 != 0) { return iVar1 + 0xc; } return 0; } /* @00423e3c file=? name=FUN_00423e3c */ undefined4 * __cdecl FUN_00423e3c(undefined4 *param_1) { FUN_00415e90(param_1,1); *param_1 = &PTR_FUN_004e4aec; FUN_00424527(param_1 + 3,0,0); return param_1; } /* @00423e6c file=? name=FUN_00423e6c */ void __cdecl FUN_00423e6c(int *param_1,byte param_2) { void *this; int local_18 [5]; if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4aec; FUN_00424944(local_18,(int)(param_1 + 3)); FUN_00417858(this,local_18,1); FUN_00424982(local_18,2); FUN_0042454a(param_1 + 3,2); FUN_00415ed8(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00423ed8 file=? name=FUN_00423ed8 */ void __cdecl FUN_00423ed8(int param_1,int *param_2) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_00402298(0x10); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_0041547b(puVar1,param_2); } (**(code **)(*(int *)(param_1 + 0xc) + 8))(param_1 + 0xc,puVar1,&stack0x0000000c); return; } /* @00423f18 file=? name=FUN_00423f18 */ undefined4 * __cdecl FUN_00423f18(undefined4 *param_1,int *param_2,undefined4 param_3,undefined4 param_4, undefined4 param_5,undefined4 param_6,undefined4 *param_7,undefined4 param_8, undefined4 param_9,undefined4 param_10) { int *piVar1; undefined4 *puVar2; int iVar3; undefined4 *puVar4; int *local_8; FUN_00415e90(param_1,1); *param_1 = &PTR_FUN_004e4ae8; FUN_0040aadc(param_1 + 5); FUN_0040aadc(param_1 + 0x11); puVar2 = &DAT_004e107c; puVar4 = param_1 + 0x1d; for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { *puVar4 = *puVar2; puVar2 = puVar2 + 1; puVar4 = puVar4 + 1; } FUN_0042487b(param_1 + 0x29,0,1); FUN_00424767(param_1 + 0x34,0,1); FUN_00424767(param_1 + 0x3a,0,1); FUN_0042466c(param_1 + 0x41,0,1); puVar2 = (undefined4 *)FUN_00402298(0x10); if (puVar2 == (undefined4 *)0x0) { iVar3 = 0; } else { iVar3 = FUN_004023f4(puVar2); } param_1[0x47] = iVar3; piVar1 = (int *)(param_1[0x47] + 0xc); *piVar1 = *piVar1 + 1; param_1[3] = 1; param_1[0x33] = param_3; param_1[0x32] = param_4; param_1[0x30] = param_5; param_1[0x2f] = param_6; puVar2 = param_1 + 0x1d; FUN_0040ab28(puVar2,param_7); param_1[0x31] = param_8; FUN_00402a4c((int *)&local_8,param_1 + 0x47,(int *)¶m_2); piVar1 = local_8 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_8,3); } param_1[4] = param_9; param_1[0x40] = param_10; FUN_0040ab28(param_1 + 5,puVar2); FUN_0040ab28(param_1 + 0x11,puVar2); piVar1 = param_2 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(param_2,3); } return param_1; } /* @00424084 file=? name=FUN_00424084 */ int __cdecl FUN_00424084(int param_1,undefined4 param_2) { int iVar1; undefined4 local_8; local_8 = param_2; iVar1 = (**(code **)(*(int *)(param_1 + 0xa4) + 0xc))(param_1 + 0xa4,&local_8); if (iVar1 == 0) { iVar1 = 0; } else { iVar1 = FUN_00423e18(iVar1); } return iVar1; } /* @004240c4 file=? name=FUN_004240c4 */ void __cdecl FUN_004240c4(int *param_1,byte param_2) { int *piVar1; int *piVar2; void *this; void *this_00; void *this_01; int local_58 [7]; int local_3c [7]; int local_20 [7]; if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4ae8; FUN_00424830(local_20,(int)(param_1 + 0x3a)); FUN_00417858(this,local_20,1); FUN_00424830(local_3c,(int)(param_1 + 0x34)); FUN_00417858(this_00,local_3c,1); FUN_00401331(local_58,(int)(param_1 + 0x29)); FUN_00417858(this_01,local_58,1); FUN_00401350(local_58,2); FUN_0042484f(local_3c,2); FUN_0042484f(local_20,2); piVar2 = (int *)param_1[0x47]; piVar1 = piVar2 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(piVar2,3); } FUN_0042468f(param_1 + 0x41,2); FUN_0042478a(param_1 + 0x3a,2); FUN_0042478a(param_1 + 0x34,2); FUN_0042489e(param_1 + 0x29,2); FUN_00415ed8(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @004241dc file=? name=FUN_004241dc */ void __cdecl FUN_004241dc(int param_1) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_00402298(0x10); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_00424716(puVar1,(undefined4 *)&stack0x00000008); } (**(code **)(*(int *)(param_1 + 0xe8) + 8))(param_1 + 0xe8,puVar1,&stack0x0000000c); return; } /* @00424220 file=? name=FUN_00424220 */ void __cdecl FUN_00424220(int param_1,undefined4 param_2) { (**(code **)(*(int *)(param_1 + 0x104) + 8))(param_1 + 0x104,param_2,&stack0x0000000c); return; } /* @00424244 file=? name=FUN_00424244 */ void __cdecl FUN_00424244(int param_1) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_00402298(0x10); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_00424716(puVar1,(undefined4 *)&stack0x00000008); } (**(code **)(*(int *)(param_1 + 0xd0) + 8))(param_1 + 0xd0,puVar1,&stack0x0000000c); return; } /* @00424288 file=? name=FUN_00424288 */ void __cdecl FUN_00424288(int param_1,int *param_2,undefined4 param_3,undefined4 param_4) { int *piVar1; undefined4 *puVar2; int local_20 [7]; FUN_00401331(local_20,param_1 + 0xa4); puVar2 = (undefined4 *)(**(code **)(local_20[0] + 0x54))(local_20,¶m_3); if (puVar2 == (undefined4 *)0x0) { puVar2 = (undefined4 *)FUN_00402298(0x24); if (puVar2 == (undefined4 *)0x0) { puVar2 = (undefined4 *)0x0; } else { puVar2 = FUN_00423e3c(puVar2); } (**(code **)(*(int *)(param_1 + 0xa4) + 8))(param_1 + 0xa4,puVar2,¶m_3); } FUN_00423ed8((int)puVar2,(int *)¶m_2); FUN_00401350(local_20,2); piVar1 = param_2 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(param_2,3); } return; } /* @0042432c file=? name=FUN_0042432c */ int __cdecl FUN_0042432c(int param_1) { uint uVar1; float *pfVar2; int iVar3; float *pfVar4; float local_f4 [12]; float local_c4 [12]; float local_94 [12]; float local_64 [12]; float local_34 [12]; iVar3 = *(int *)(param_1 + 0xbc); if ((iVar3 != 0) && (*(int *)(iVar3 + 0x14) != 0)) { *(undefined4 *)(iVar3 + 0x14) = 0; pfVar2 = (float *)(param_1 + 0x74); pfVar4 = local_34; for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { *pfVar4 = *pfVar2; pfVar2 = pfVar2 + 1; pfVar4 = pfVar4 + 1; } FUN_0040aadc(local_64); uVar1 = *(uint *)(*(int *)(param_1 + 0xbc) + 0x10); if (uVar1 < 3) { pfVar2 = (float *)&DAT_004e107c; pfVar4 = local_c4; for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { *pfVar4 = *pfVar2; pfVar2 = pfVar2 + 1; pfVar4 = pfVar4 + 1; } FUN_0040ab70(local_c4,*(int **)(*(int *)(param_1 + 0xbc) + 0xc)); FUN_0040bc54(local_64,local_c4); FUN_0040b104((float *)(param_1 + 0x14),local_34,local_64); } else if (uVar1 == 4) { pfVar2 = (float *)&DAT_004e107c; pfVar4 = local_94; for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { *pfVar4 = *pfVar2; pfVar2 = pfVar2 + 1; pfVar4 = pfVar4 + 1; } pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0xbc)); FUN_0040ac6c(local_94,pfVar2); FUN_0040bc54(local_64,local_94); FUN_0040b104((float *)(param_1 + 0x14),local_34,local_64); } else if (uVar1 == 5) { pfVar2 = (float *)&DAT_004e107c; pfVar4 = local_f4; for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { *pfVar4 = *pfVar2; pfVar2 = pfVar2 + 1; pfVar4 = pfVar4 + 1; } pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0xbc)); FUN_0040ac6c(local_f4,pfVar2); pfVar2 = (float *)(param_1 + 0x14); FUN_0040bc54(pfVar2,local_f4); FUN_0040b104(local_64,local_34,pfVar2); FUN_0040ab28(local_34,&DAT_004e107c); FUN_0040b0ac((int)local_34,3,*(undefined4 **)(*(int *)(param_1 + 0xbc) + 0xc)); FUN_0040b104(pfVar2,local_64,local_34); } } return param_1 + 0x14; } /* @004244dc file=? name=FUN_004244dc */ int __cdecl FUN_004244dc(int param_1) { float *pfVar1; float *pfVar2; if ((*(int *)(param_1 + 0xc) != 0) && (*(int *)(param_1 + 0xc4) != 0)) { pfVar1 = (float *)FUN_004244dc(*(int *)(param_1 + 0xc4)); pfVar2 = (float *)FUN_0042432c(param_1); FUN_0040b104((float *)(param_1 + 0x44),pfVar2,pfVar1); *(undefined4 *)(param_1 + 0xc) = 0; } return param_1 + 0x44; } /* @00424527 file=? name=FUN_00424527 */ undefined4 * __cdecl FUN_00424527(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { FUN_004186ac(param_1,param_2,param_3); *param_1 = &PTR_FUN_004e4acc; return param_1; } /* @0042454a file=? name=FUN_0042454a */ void __cdecl FUN_0042454a(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4acc; FUN_004186dc(param_1,0); if ((param_2 & 1) != 0) { FUN_00424621(param_1); } } return; } /* @00424576 file=? name=FUN_00424576 */ undefined4 __cdecl FUN_00424576(undefined4 param_1,int param_2,int param_3) { undefined4 uVar1; if (*(int *)(param_3 + 0x1c) == *(int *)(param_2 + 0x1c)) { uVar1 = 0; } else { uVar1 = 1; if (*(int *)(param_2 + 0x1c) <= *(int *)(param_3 + 0x1c)) { uVar1 = 0xffffffff; } } return uVar1; } /* @004245a5 file=? name=FUN_004245a5 */ undefined4 __cdecl FUN_004245a5(undefined4 param_1,int *param_2,int param_3) { undefined4 uVar1; if (*(int *)(param_3 + 0x1c) == *param_2) { uVar1 = 0; } else { uVar1 = 1; if (*param_2 <= *(int *)(param_3 + 0x1c)) { uVar1 = 0xffffffff; } } return uVar1; } /* @004245d1 file=? name=FUN_004245d1 */ void FUN_004245d1(void) { int iVar1; undefined4 *puVar2; iVar1 = DAT_004e49b8; DAT_004e49b8 = DAT_004e49b8 + 1; puVar2 = DAT_004e49b4; if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004e4990); } DAT_004e49b4 = puVar2; FUN_00402f74((int)DAT_004e49b4); return; } /* @00424621 file=? name=FUN_00424621 */ void __cdecl FUN_00424621(undefined4 *param_1) { FUN_00402f98((int)DAT_004e49b4,param_1); DAT_004e49b8 = DAT_004e49b8 + -1; if (DAT_004e49b8 == 0) { if (DAT_004e49b4 != (int *)0x0) { FUN_00402c28(DAT_004e49b4,0); FUN_004022d0(DAT_004e49b4); } DAT_004e49b4 = (int *)0x0; } return; } /* @0042466c file=? name=FUN_0042466c */ undefined4 * __cdecl FUN_0042466c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { FUN_00419184(param_1,param_2,param_3); *param_1 = &PTR_FUN_004e4ab0; return param_1; } /* @0042468f file=? name=FUN_0042468f */ void __cdecl FUN_0042468f(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4ab0; FUN_004191b4(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @004246bb file=? name=FUN_004246bb */ undefined4 __cdecl FUN_004246bb(undefined4 param_1,int param_2,int param_3) { undefined4 uVar1; if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { uVar1 = 0; } else { uVar1 = 1; if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { uVar1 = 0xffffffff; } } return uVar1; } /* @004246ea file=? name=FUN_004246ea */ undefined4 __cdecl FUN_004246ea(undefined4 param_1,int *param_2,int param_3) { undefined4 uVar1; if (*(int *)(param_3 + 0x14) == *param_2) { uVar1 = 0; } else { uVar1 = 1; if (*param_2 <= *(int *)(param_3 + 0x14)) { uVar1 = 0xffffffff; } } return uVar1; } /* @00424716 file=? name=FUN_00424716 */ undefined4 * __cdecl FUN_00424716(undefined4 *param_1,undefined4 *param_2) { FUN_00415e90(param_1,1); *param_1 = &PTR_FUN_004e4aac; param_1[3] = *param_2; return param_1; } /* @0042473b file=? name=FUN_0042473b */ void __cdecl FUN_0042473b(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4aac; FUN_00415ed8(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00424767 file=? name=FUN_00424767 */ undefined4 * __cdecl FUN_00424767(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { FUN_00419184(param_1,param_2,param_3); *param_1 = &PTR_FUN_004e4a90; return param_1; } /* @0042478a file=? name=FUN_0042478a */ void __cdecl FUN_0042478a(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4a90; FUN_004191b4(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @004247b6 file=? name=FUN_004247b6 */ undefined4 __cdecl FUN_004247b6(undefined4 param_1,int param_2,int param_3) { undefined4 uVar1; if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { uVar1 = 0; } else { uVar1 = 1; if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { uVar1 = 0xffffffff; } } return uVar1; } /* @004247e5 file=? name=FUN_004247e5 */ undefined4 __cdecl FUN_004247e5(undefined4 param_1,int *param_2,int param_3) { undefined4 uVar1; if (*(int *)(param_3 + 0x14) == *param_2) { uVar1 = 0; } else { uVar1 = 1; if (*param_2 <= *(int *)(param_3 + 0x14)) { uVar1 = 0xffffffff; } } return uVar1; } /* @00424811 file=? name=FUN_00424811 */ undefined4 * __cdecl FUN_00424811(undefined4 *param_1,int param_2) { FUN_004194d8(param_1,param_2); *param_1 = &PTR_FUN_004e4a34; return param_1; } /* @00424830 file=? name=FUN_00424830 */ undefined4 * __cdecl FUN_00424830(undefined4 *param_1,int param_2) { FUN_004194d8(param_1,param_2); *param_1 = &PTR_FUN_004e4a34; return param_1; } /* @0042484f file=? name=FUN_0042484f */ void __cdecl FUN_0042484f(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4a34; FUN_0041951c(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042487b file=? name=FUN_0042487b */ undefined4 * __cdecl FUN_0042487b(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { FUN_00419184(param_1,param_2,param_3); *param_1 = &PTR_FUN_004e4a18; return param_1; } /* @0042489e file=? name=FUN_0042489e */ void __cdecl FUN_0042489e(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4a18; FUN_004191b4(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @004248ca file=? name=FUN_004248ca */ undefined4 __cdecl FUN_004248ca(undefined4 param_1,int param_2,int param_3) { undefined4 uVar1; if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { uVar1 = 0; } else { uVar1 = 1; if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { uVar1 = 0xffffffff; } } return uVar1; } /* @004248f9 file=? name=FUN_004248f9 */ undefined4 __cdecl FUN_004248f9(undefined4 param_1,int *param_2,int param_3) { undefined4 uVar1; if (*(int *)(param_3 + 0x14) == *param_2) { uVar1 = 0; } else { uVar1 = 1; if (*param_2 <= *(int *)(param_3 + 0x14)) { uVar1 = 0xffffffff; } } return uVar1; } /* @00424925 file=? name=FUN_00424925 */ undefined4 * __cdecl FUN_00424925(undefined4 *param_1,int param_2) { FUN_004188dc(param_1,param_2); *param_1 = &PTR_FUN_004e49bc; return param_1; } /* @00424944 file=? name=FUN_00424944 */ undefined4 * __cdecl FUN_00424944(undefined4 *param_1,int param_2) { FUN_004188dc(param_1,param_2); *param_1 = &PTR_FUN_004e49bc; return param_1; } /* @00424963 file=? name=FUN_00424963 */ undefined4 * __cdecl FUN_00424963(undefined4 *param_1,int param_2) { FUN_00418904(param_1,param_2); *param_1 = &PTR_FUN_004e49bc; return param_1; } /* @00424982 file=? name=FUN_00424982 */ void __cdecl FUN_00424982(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e49bc; FUN_00418930(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @004249ae file=? name=FUN_004249ae */ undefined4 * __cdecl FUN_004249ae(undefined4 param_1,int param_2,undefined4 *param_3) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_0041d485(); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); } return puVar1; } /* @004249de file=? name=FUN_004249de */ undefined4 * __cdecl FUN_004249de(undefined4 param_1,int param_2,undefined4 *param_3) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_0041d485(); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); } return puVar1; } /* @00424a0e file=? name=FUN_00424a0e */ undefined4 * __cdecl FUN_00424a0e(undefined4 param_1,int param_2,undefined4 *param_3) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_0041d485(); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); } return puVar1; } /* @00424a3e file=? name=FUN_00424a3e */ undefined4 * __cdecl FUN_00424a3e(undefined4 param_1,int param_2,undefined4 *param_3) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_00424ac5(); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_00424a6e(puVar1,param_1,param_2,param_3); } return puVar1; } /* @00424a6e file=? name=FUN_00424a6e */ undefined4 * __cdecl FUN_00424a6e(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) { FUN_004185bc(param_1,param_2,param_3); *param_1 = &PTR_FUN_004e4af8; param_1[7] = *param_4; return param_1; } /* @00424a99 file=? name=FUN_00424a99 */ void __cdecl FUN_00424a99(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4af8; FUN_004185ec(param_1,0); if ((param_2 & 1) != 0) { FUN_00424b15(param_1); } } return; } /* @00424ac5 file=? name=FUN_00424ac5 */ void FUN_00424ac5(void) { int iVar1; undefined4 *puVar2; iVar1 = DAT_004e4af4; DAT_004e4af4 = DAT_004e4af4 + 1; puVar2 = DAT_004e4af0; if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { FUN_00402b98(puVar2,0x20,100,100,s_VChainLinkOf_004e4999); } DAT_004e4af0 = puVar2; FUN_00402f74((int)DAT_004e4af0); return; } /* @00424b15 file=? name=FUN_00424b15 */ void __cdecl FUN_00424b15(undefined4 *param_1) { FUN_00402f98((int)DAT_004e4af0,param_1); DAT_004e4af4 = DAT_004e4af4 + -1; if (DAT_004e4af4 == 0) { if (DAT_004e4af0 != (int *)0x0) { FUN_00402c28(DAT_004e4af0,0); FUN_004022d0(DAT_004e4af0); } DAT_004e4af0 = (int *)0x0; } return; } /* @00424b60 file=? name=FUN_00424b60 */ int __cdecl FUN_00424b60(int param_1,int *param_2) { int *piVar1; int iVar2; int iVar3; char cVar4; int local_24 [7]; int *local_8; FUN_0041f216(local_24,param_1 + 0x300); do { iVar3 = (**(code **)(local_24[0] + 0x28))(local_24); if (iVar3 == 0) { iVar3 = 0; FUN_0041f235(local_24,2); piVar1 = param_2 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 != 0) { return iVar3; } FUN_004024d8(param_2,3); return iVar3; } local_8 = *(int **)(iVar3 + 0x11c); local_8[3] = local_8[3] + 1; iVar2 = FUN_004027d8((int)param_2,(int)local_8); cVar4 = iVar2 == 0; piVar1 = local_8 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_8,3); } } while (cVar4 == '\0'); FUN_0041f235(local_24,2); piVar1 = param_2 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(param_2,3); } return iVar3; } /* @00424c28 file=? name=FUN_00424c28 */ int __cdecl FUN_00424c28(int param_1,int *param_2) { int *piVar1; undefined4 *puVar2; int *piVar3; int iVar4; int local_2c [7]; int *local_10; int *local_c; int local_8; FUN_0041f216(local_2c,param_1 + 0x300); do { local_8 = (**(code **)(local_2c[0] + 0x28))(local_2c); if (local_8 == 0) { iVar4 = 0; FUN_0041f235(local_2c,2); piVar3 = param_2 + 3; *piVar3 = *piVar3 + -1; if (*piVar3 == 0) { FUN_004024d8(param_2,3); } return iVar4; } puVar2 = (undefined4 *)FUN_00402298(0x1c); if (puVar2 == (undefined4 *)0x0) { piVar3 = (int *)0x0; } else { piVar3 = FUN_00424811(puVar2,local_8 + 0xd0); } while (iVar4 = (**(code **)(*piVar3 + 0x28))(piVar3), iVar4 != 0) { puVar2 = (undefined4 *)FUN_00402298(0x10); if (puVar2 == (undefined4 *)0x0) { local_c = (int *)0x0; } else { local_c = (int *)FUN_004023f4(puVar2); } local_c[3] = local_c[3] + 1; FUN_00402a4c((int *)&local_10,(int *)&local_c, (int *)(*(int *)(*(int *)(param_1 + 0x120) + *(int *)(iVar4 + 0xc) * 4) + 0x15c)) ; piVar1 = local_10 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_10,3); } iVar4 = FUN_004027d8((int)local_c,(int)param_2); if (iVar4 == 0) { if (piVar3 != (int *)0x0) { (**(code **)*piVar3)(piVar3,3); } piVar3 = local_c + 3; *piVar3 = *piVar3 + -1; iVar4 = local_8; if (*piVar3 == 0) { FUN_004024d8(local_c,3); } FUN_0041f235(local_2c,2); piVar3 = param_2 + 3; *piVar3 = *piVar3 + -1; if (*piVar3 != 0) { return iVar4; } FUN_004024d8(param_2,3); return iVar4; } piVar1 = local_c + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_c,3); } } if (piVar3 != (int *)0x0) { (**(code **)*piVar3)(piVar3,3); } } while( true ); } /* @00424da8 file=? name=FUN_00424da8 */ void __cdecl FUN_00424da8(int param_1,int param_2,float *param_3) { int iVar1; int iVar2; float *pfVar3; int local_20 [7]; iVar1 = FUN_00417ab4(param_1 + 0x31c); if (*(int *)(iVar1 + 0xfc) != 0) { FUN_0041f216(local_20,param_1 + 0x300); while( true ) { iVar2 = (**(code **)(local_20[0] + 0x28))(local_20); if (iVar2 == 0) break; *(undefined4 *)(iVar2 + 0xc) = 1; } *(undefined4 *)(iVar1 + 0xfc) = 0; FUN_0041f235(local_20,2); } pfVar3 = (float *)FUN_004244dc(param_2); FUN_0040b104(param_3,pfVar3,(float *)(param_1 + 0xd0)); return; } /* @00424e38 file=? name=FUN_00424e38 */ int * __cdecl FUN_00424e38(int *param_1,int param_2,undefined4 param_3) { int *piVar1; undefined4 *puVar2; undefined4 *puVar3; uint *puVar4; int iVar5; int iVar6; undefined4 uVar7; int local_108 [7]; int local_ec [7]; undefined4 local_d0 [12]; int local_a0 [6]; int *local_88; int *local_84; undefined1 local_80 [4]; int local_7c; undefined1 local_78 [4]; int local_74; uint *local_70; int local_6c; uint *local_68; undefined4 local_64; int local_60; undefined4 local_5c; int local_58; undefined4 *local_54; undefined4 *local_50; int local_4c; undefined4 local_48; undefined4 *local_44; int *local_40; int local_3c; int local_38; undefined4 *local_34; undefined4 *local_30; int *local_2c; int local_28; int local_24; int *local_20; int *local_1c; undefined1 local_18 [4]; int local_14; undefined4 *local_10; undefined4 *local_c; undefined4 *local_8; FUN_004234f0(param_1,param_2,param_3); *param_1 = (int)&PTR_FUN_004e4fbc; FUN_0042466c(param_1 + 0xc0,param_1,1); FUN_00428601(param_1 + 199,0); local_c = (undefined4 *)FUN_00402298(0x100); if (local_c == (undefined4 *)0x0) { local_10 = (undefined4 *)0x0; } else { local_10 = FUN_0041d170(local_c,param_1,0xffffffff,&DAT_004e35c8); } local_8 = local_10; (**(code **)(param_1[199] + 4))(param_1 + 199,local_10); local_14 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),*(int *)(param_2 + 0x28),0x15); iVar6 = *(int *)(local_14 + 4); *(int *)(local_14 + 4) = *(int *)(local_14 + 4) + 1; if (iVar6 == 0) { FUN_00406cd0(local_14); } FUN_004032dc(local_a0,*(undefined4 *)(local_14 + 0x3c),*(undefined4 *)(local_14 + 0x40),0); local_1c = param_1 + 0xc6; local_20 = (int *)(**(code **)(local_a0[0] + 0x1c))(local_a0,local_1c,4); (**(code **)(*local_20 + 0x1c))(local_20,local_18,4); local_28 = 0; local_30 = (undefined4 *)FUN_00402298(0x10); if (local_30 == (undefined4 *)0x0) { local_2c = (int *)0x0; } else { local_2c = (int *)FUN_004023f4(local_30); } local_2c[3] = local_2c[3] + 1; local_44 = (undefined4 *)FUN_00402298(0x10); if (local_44 == (undefined4 *)0x0) { local_40 = (int *)0x0; } else { local_40 = (int *)FUN_004023f4(local_44); } local_40[3] = local_40[3] + 1; puVar2 = &DAT_004e107c; puVar3 = local_d0; for (iVar6 = 0xc; iVar6 != 0; iVar6 = iVar6 + -1) { *puVar3 = *puVar2; puVar2 = puVar2 + 1; puVar3 = puVar3 + 1; } for (local_4c = 0; local_4c < param_1[0xc6]; local_4c = local_4c + 1) { piVar1 = (int *)FUN_00402aec(local_a0,(int *)&local_2c); (**(code **)(*piVar1 + 0x1c))(piVar1,&local_3c,4); if (local_3c == -1) { uVar7 = 0; } else { FUN_0041f216(local_ec,(int)(param_1 + 0xc0)); uVar7 = (**(code **)(local_ec[0] + 0x34))(local_ec,local_3c); FUN_0041f235(local_ec,2); } piVar1 = (int *)(**(code **)(local_a0[0] + 0x1c))(local_a0,&local_48,4); (**(code **)(*piVar1 + 0x1c))(piVar1,&local_24,4); if (local_24 == -1) { local_38 = -1; puVar2 = (undefined4 *)0x0; } else { local_38 = local_28; local_50 = (undefined4 *)FUN_00402298(0x1c); if (local_50 == (undefined4 *)0x0) { puVar2 = (undefined4 *)0x0; } else { puVar2 = FUN_0041cb78(local_50,local_8,local_24); } local_58 = local_28; local_54 = puVar2; (**(code **)(local_8[0x39] + 8))(local_8 + 0x39,puVar2,&local_58); local_28 = local_28 + 1; } (**(code **)(local_a0[0] + 0x1c))(local_a0,local_d0,0x30); (**(code **)(local_a0[0] + 0x1c))(local_a0,&local_5c,4); puVar3 = (undefined4 *)FUN_00402298(0x120); if (puVar3 == (undefined4 *)0x0) { local_34 = (undefined4 *)0x0; } else { local_2c[3] = local_2c[3] + 1; local_34 = FUN_00423f18(puVar3,local_2c,local_4c,local_3c,local_38,puVar2,local_d0,uVar7, local_48,local_5c); } (**(code **)(param_1[0xc0] + 8))(param_1 + 0xc0,local_34,&local_4c); (**(code **)(local_a0[0] + 0x1c))(local_a0,&local_60,4); iVar6 = 0; if (0 < local_60) { do { piVar1 = (int *)(**(code **)(local_a0[0] + 0x1c))(local_a0,&local_64,4); FUN_00402aec(piVar1,(int *)&local_40); puVar4 = (uint *)FUN_00402298(0x10); if (puVar4 == (uint *)0x0) { local_68 = (uint *)0x0; } else { local_68 = FUN_00402460(puVar4,&DAT_004e4bae); } local_68[3] = local_68[3] + 1; iVar5 = FUN_004027d8((int)local_40,(int)local_68); puVar4 = local_68 + 3; *puVar4 = *puVar4 - 1; if (*puVar4 == 0) { FUN_004024d8((int *)local_68,3); } if (iVar5 != 0) { local_40[3] = local_40[3] + 1; FUN_00424288((int)local_34,local_40,local_64,0); } iVar6 = iVar6 + 1; } while (iVar6 < local_60); } (**(code **)(local_a0[0] + 0x1c))(local_a0,&local_6c,4); iVar6 = 0; if (0 < local_6c) { do { piVar1 = (int *)(**(code **)(local_a0[0] + 0x1c))(local_a0,&local_64,4); FUN_00402aec(piVar1,(int *)&local_40); puVar4 = (uint *)FUN_00402298(0x10); if (puVar4 == (uint *)0x0) { local_70 = (uint *)0x0; } else { local_70 = FUN_00402460(puVar4,&DAT_004e4bb3); } local_70[3] = local_70[3] + 1; iVar5 = FUN_004027d8((int)local_40,(int)local_70); puVar4 = local_70 + 3; *puVar4 = *puVar4 - 1; if (*puVar4 == 0) { FUN_004024d8((int *)local_70,3); } if (iVar5 != 0) { local_40[3] = local_40[3] + 1; FUN_00424288((int)local_34,local_40,local_64,1); } iVar6 = iVar6 + 1; } while (iVar6 < local_6c); } (**(code **)(local_a0[0] + 0x1c))(local_a0,&local_74,4); if ((local_74 != 0) && (iVar6 = 0, 0 < local_74)) { do { (**(code **)(local_a0[0] + 0x1c))(local_a0,local_78,4); FUN_00424244((int)local_34); iVar6 = iVar6 + 1; } while (iVar6 < local_74); } (**(code **)(local_a0[0] + 0x1c))(local_a0,&local_7c,4); if ((local_7c != 0) && (iVar6 = 0, 0 < local_7c)) { do { (**(code **)(local_a0[0] + 0x1c))(local_a0,local_80,4); FUN_004241dc((int)local_34); iVar6 = iVar6 + 1; } while (iVar6 < local_7c); } } *(int *)(local_14 + 4) = *(int *)(local_14 + 4) + -1; for (local_4c = 0; local_4c < param_1[0xc6]; local_4c = local_4c + 1) { FUN_0041f216(local_108,(int)(param_1 + 0xc0)); iVar6 = (**(code **)(local_108[0] + 0x34))(local_108,local_4c); FUN_004254a8((int)param_1,iVar6); FUN_0041f235(local_108,2); } local_84 = local_40; piVar1 = local_40 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_40,3); } local_88 = local_2c; piVar1 = local_2c + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_2c,3); } FUN_00403310(local_a0,2); return param_1; } /* @004254a8 file=? name=FUN_004254a8 */ void __cdecl FUN_004254a8(int param_1,int param_2) { undefined4 *puVar1; undefined4 uVar2; int iVar3; int local_24 [7]; int *local_8; FUN_0041f216(local_24,param_1 + 0x300); puVar1 = (undefined4 *)FUN_00402298(0x1c); if (puVar1 == (undefined4 *)0x0) { local_8 = (int *)0x0; } else { local_8 = FUN_00424811(puVar1,param_2 + 0xe8); } while (iVar3 = (**(code **)(*local_8 + 0x28))(local_8), iVar3 != 0) { uVar2 = (**(code **)(local_24[0] + 0x34))(local_24,*(undefined4 *)(iVar3 + 0xc)); FUN_00424220(param_2,uVar2); } if (local_8 != (int *)0x0) { (**(code **)*local_8)(local_8,3); } FUN_0041f235(local_24,2); return; } /* @00425550 file=? name=FUN_00425550 */ void __cdecl FUN_00425550(int *param_1,byte param_2) { void *this; int local_20 [7]; if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4fbc; FUN_0041f216(local_20,(int)(param_1 + 0xc0)); FUN_00417858(this,local_20,1); FUN_0041f235(local_20,2); FUN_00428620(param_1 + 199,2); FUN_0042468f(param_1 + 0xc0,2); FUN_00423c18(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @004255d0 file=? name=FUN_004255d0 */ undefined4 __cdecl FUN_004255d0(int param_1,char *param_2,int param_3,undefined4 *param_4) { char cVar1; bool bVar2; int iVar3; int *piVar4; int *piVar5; undefined3 extraout_var; uint *puVar6; undefined4 *puVar7; uint uVar8; uint uVar9; char *pcVar10; char *pcVar11; int *piVar12; undefined4 uVar13; undefined4 *puVar14; char local_5c [32]; int local_3c [6]; int local_24; int *local_20; int local_1c; int *local_18; int *local_14; char *local_10; int *local_c; char *local_8; iVar3 = FUN_00404088(param_3,s_video_004e4bb8,s_skeleton_004e4bbe,&local_8); if (iVar3 == 0) { FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_is_missing__skl_file_specificati_004e4bc7,(char *)0x0); } else { local_c = (int *)FUN_004064fc((char *)param_4[4],local_8); piVar4 = (int *)FUN_00402298(0x20); if (piVar4 == (int *)0x0) { piVar4 = (int *)0x0; } else { piVar4 = FUN_00403e84(piVar4,(char *)local_c,1); } if ((*(byte *)(piVar4 + 7) & 2) == 0) { iVar3 = piVar4[3]; } else { iVar3 = piVar4[4]; } if (iVar3 == 0) { FUN_004dbb24(&DAT_00524e20,(char *)local_c,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_is_empty_or_missing__004e4bed,(char *)0x0); } else { iVar3 = FUN_00404088(param_3,s_gamedata_004e4c04,s_DamageZones_004e4c0d,&local_10); if (iVar3 == 0) { FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_is_missing__dmg_file_specificati_004e4c19,(char *)0x0); } else { local_14 = (int *)FUN_004064fc((char *)*param_4,local_10); piVar5 = (int *)FUN_00402298(0x20); if (piVar5 == (int *)0x0) { local_18 = (int *)0x0; } else { local_18 = FUN_00403e84(piVar5,(char *)local_14,1); } if ((*(byte *)(local_18 + 7) & 2) == 0) { iVar3 = local_18[3]; } else { iVar3 = local_18[4]; } if (iVar3 == 0) { FUN_004dbb24(&DAT_00524e20,(char *)local_14,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_is_empty_or_missing__004e4c3f,(char *)0x0); } else { bVar2 = FUN_004040d8((int)piVar4,&DAT_004e4c56,s_DZoneCount_004e4c5b,&local_1c); if (CONCAT31(extraout_var,bVar2) != 0) { FUN_0040328c(local_3c,0); (**(code **)(local_3c[0] + 0x20))(local_3c,&local_1c,4); local_20 = FUN_00404720((int)piVar4,s_DamageZones_004e4c7f,&DAT_004e4c8b); iVar3 = FUN_00403b60((int)local_20); if (iVar3 == 0) { FUN_004dbb24(&DAT_00524e20,s_No_dZones_listed_in_DamageZones_P_004e4c8f,(char *)0x0); FUN_004d9c38(&DAT_00524e20); } else { local_24 = 0; for (puVar7 = (undefined4 *)local_20[1]; puVar7 != (undefined4 *)0x0; puVar7 = (undefined4 *)*puVar7) { local_24 = local_24 + 1; uVar8 = 0xffffffff; pcVar10 = (char *)(puVar7 + 2); do { pcVar11 = pcVar10; if (uVar8 == 0) break; uVar8 = uVar8 - 1; pcVar11 = pcVar10 + 1; cVar1 = *pcVar10; pcVar10 = pcVar11; } while (cVar1 != '\0'); uVar8 = ~uVar8; pcVar10 = pcVar11 + -uVar8; pcVar11 = local_5c; for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) { *(undefined4 *)pcVar11 = *(undefined4 *)pcVar10; pcVar10 = pcVar10 + 4; pcVar11 = pcVar11 + 4; } for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) { *pcVar11 = *pcVar10; pcVar10 = pcVar10 + 1; pcVar11 = pcVar11 + 1; } piVar5 = local_3c; piVar12 = local_18; puVar14 = param_4; puVar6 = (uint *)FUN_00402298(0x10); if (puVar6 == (uint *)0x0) { puVar6 = (uint *)0x0; } else { puVar6 = FUN_00402460(puVar6,local_5c); } puVar6[3] = puVar6[3] + 1; FUN_0041e590(param_3,param_2,(int)piVar4,(int *)puVar6,piVar5,(int)piVar12, (int)puVar14); } if (local_1c == local_24) { puVar7 = (undefined4 *)FUN_00406f3c(param_1,param_2,0x14,1,0,local_3c,-1); FUN_004022d0(local_c); FUN_00403ecc(piVar4,3); FUN_004022d0(local_14); FUN_00403ecc(local_18,3); if (local_20 != (int *)0x0) { (**(code **)*local_20)(local_20,3); } uVar13 = *puVar7; FUN_00403310(local_3c,2); return uVar13; } FUN_004dbb24(&DAT_00524e20,s_DZoneCount____damage_zones_found_004e4cb4,(char *)0x0); FUN_004d9c38(&DAT_00524e20); } FUN_004022d0(local_c); FUN_00403ecc(piVar4,3); FUN_004022d0(local_14); FUN_00403ecc(local_18,3); uVar13 = 0xffffffff; FUN_00403310(local_3c,2); return uVar13; } FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_is_missing_DZoneCount_004e4c66,(char *)0x0); } FUN_004022e8(local_14); FUN_00403ecc(local_18,3); } } FUN_004022e8(local_c); FUN_00403ecc(piVar4,3); } return 0xffffffff; } /* @004259b0 file=? name=FUN_004259b0 */ undefined4 __cdecl FUN_004259b0(int param_1,char *param_2,uint param_3,int param_4) { char *pcVar1; undefined4 *puVar2; bool bVar3; int iVar4; int *piVar5; undefined3 extraout_var; char *pcVar6; uint *puVar7; int *piVar8; char *pcVar9; undefined4 *puVar10; float *pfVar11; float *pfVar12; undefined8 uVar13; int *piVar14; undefined4 uVar15; float local_148 [12]; float local_118; float local_114; float local_110; float local_10c; float local_108; float local_104; int local_100 [6]; int *local_e8; undefined4 *local_e4; char *local_e0; char *local_dc; uint *local_d8; char *local_d4; int local_d0; int local_cc; int *local_c8; char *local_c4; int *local_c0; int local_bc; int *local_b8; undefined4 *local_b4; int *local_b0; int local_ac; int local_a8; int *local_a4; int *local_a0; int *local_9c; uint *local_98; char *local_94; char *local_90; int local_8c; int *local_88; uint *local_84; char *local_80; uint *local_7c; char *local_78; uint *local_74; int *local_70; char *local_6c; int *local_68; undefined4 local_64; undefined4 local_60; char *local_5c; int *local_58; int *local_54; char *local_50; uint *local_4c; char *local_48; char *local_44; int *local_40; undefined4 *local_3c; int *local_38; int local_34; int local_30; int *local_2c; int *local_28; char *local_24; int local_20; char *local_1c; int local_18; int *local_14; int *local_10; char *local_c; char *local_8; iVar4 = FUN_00404088(param_3,s_video_004e4ce9,s_skeleton_004e4cef,&local_8); if (iVar4 == 0) { local_c = param_2; FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_is_missing__skl_file_specificati_004e4cf8,(char *)0x0); } else { local_10 = (int *)FUN_004064fc(*(char **)(param_4 + 0x10),local_8); local_14 = (int *)FUN_00402298(0x20); if (local_14 == (int *)0x0) { piVar5 = (int *)0x0; } else { piVar5 = FUN_00403e84(local_14,(char *)local_10,1); } if ((*(byte *)(piVar5 + 7) & 2) == 0) { local_18 = piVar5[3]; } else { local_18 = piVar5[4]; } iVar4 = FUN_00403f84((int)piVar5,s_LAB_ONLY_004e4d1e); if (iVar4 != 0) { local_18 = local_18 + -1; } iVar4 = FUN_00403f84((int)piVar5,s_DamageZones_004e4d27); if (iVar4 != 0) { local_18 = local_18 + -1; } if (local_18 == 0) { local_1c = param_2; FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_has_no_Segments__004e4d33,(char *)0x0); } else { bVar3 = FUN_004040d8((int)piVar5,&DAT_004e4d46,s_JointCount_004e4d4b,&local_20); if (CONCAT31(extraout_var,bVar3) != 0) { FUN_0040328c(local_100,0); local_28 = (int *)(**(code **)(local_100[0] + 0x20))(local_100,&local_18,4); (**(code **)(*local_28 + 0x20))(local_28,&local_20,4); local_2c = FUN_0040485c((int)piVar5,(char *)0x0); puVar2 = (undefined4 *)local_2c[1]; local_30 = -1; local_3c = (undefined4 *)FUN_00402298(0x10); if (local_3c == (undefined4 *)0x0) { local_38 = (int *)0x0; } else { local_38 = (int *)FUN_004023f4(local_3c); } local_38[3] = local_38[3] + 1; pfVar11 = (float *)&DAT_004e107c; pfVar12 = local_148; for (iVar4 = 0xc; iVar4 != 0; iVar4 = iVar4 + -1) { *pfVar12 = *pfVar11; pfVar11 = pfVar11 + 1; pfVar12 = pfVar12 + 1; } joined_r0x00425bbc: do { if (puVar2 == (undefined4 *)0x0) { local_e4 = (undefined4 *)FUN_00406f3c(param_1,param_2,0x15,1,0,local_100,-1); FUN_004022d0(local_10); FUN_00403ecc(piVar5,3); if (local_2c != (int *)0x0) { (**(code **)*local_2c)(local_2c,3); } uVar15 = *local_e4; local_e8 = local_38; piVar5 = local_38 + 3; *piVar5 = *piVar5 + -1; if (*piVar5 == 0) { FUN_004024d8(local_38,3); } FUN_00403310(local_100,2); return uVar15; } FUN_00402a98((int *)&local_40,(int *)&local_38,(char *)(puVar2 + 2)); piVar8 = local_40 + 3; *piVar8 = *piVar8 + -1; if (*piVar8 == 0) { FUN_004024d8(local_40,3); } pcVar6 = (char *)local_38[2]; pcVar9 = s_LAB_ONLY_004e4d6f; do { bVar3 = *pcVar6 == *pcVar9; if (!bVar3) break; if (*pcVar6 == '\0') goto LAB_00425c3b; pcVar1 = pcVar6 + 1; bVar3 = *pcVar1 == pcVar9[1]; if (!bVar3) break; pcVar6 = pcVar6 + 2; pcVar9 = pcVar9 + 2; bVar3 = *pcVar1 == '\0'; } while (!bVar3); if (!bVar3) { pcVar9 = s_DamageZones_004e4d78; pcVar6 = (char *)local_38[2]; do { if (*pcVar6 != *pcVar9) goto LAB_00425c42; bVar3 = true; if (*pcVar6 == '\0') break; pcVar1 = pcVar6 + 1; if (*pcVar1 != pcVar9[1]) goto LAB_00425c42; pcVar6 = pcVar6 + 2; pcVar9 = pcVar9 + 2; bVar3 = *pcVar1 == '\0'; } while (!bVar3); if (!bVar3) { LAB_00425c42: FUN_004029b0(local_100,(int)local_38); iVar4 = FUN_00404088((int)piVar5,(char *)local_38[2],s_parent_004e4d84,&local_44); if (iVar4 != 0) { local_48 = local_44; piVar8 = piVar5; local_4c = (uint *)FUN_00402298(0x10); if (local_4c == (uint *)0x0) { puVar7 = (uint *)0x0; } else { puVar7 = FUN_00402460(local_4c,local_48); } puVar7[3] = puVar7[3] + 1; local_30 = FUN_0042760c((int *)puVar7,(int)piVar8); if (local_30 == -1) { local_50 = local_44; uVar13 = FUN_004dbd4c(&DAT_00524e20,param_3); local_54 = (int *)uVar13; FUN_004dbb24(local_54,&DAT_004e4d8b,(char *)0x0); FUN_004dbb24(local_54,local_50,(char *)0x0); FUN_004dbb24(local_54,s_Not_Found__004e4d8d,(char *)0x0); FUN_004d9c38(local_54); local_58 = local_38; piVar8 = local_38 + 3; *piVar8 = *piVar8 + -1; if (*piVar8 == 0) { FUN_004024d8(local_38,3); } FUN_00403310(local_100,2); goto LAB_00425abc; } } (**(code **)(local_100[0] + 0x20))(local_100,&local_30,4); local_60 = 0xffffffff; local_64 = 0; iVar4 = FUN_00404088((int)piVar5,(char *)local_38[2],&DAT_004e4d99,&local_5c); if (iVar4 == 0) { pcVar9 = &DAT_004e4d9e; pcVar6 = (char *)local_38[2]; do { bVar3 = *pcVar9 == *pcVar6; if (!bVar3) break; if (*pcVar9 == '\0') goto LAB_00425eee; pcVar1 = pcVar9 + 1; bVar3 = *pcVar1 == pcVar6[1]; if (!bVar3) break; pcVar9 = pcVar9 + 2; pcVar6 = pcVar6 + 2; bVar3 = *pcVar1 == '\0'; } while (!bVar3); if (!bVar3) { local_64 = 1; } } else { pcVar9 = s_static_004e4da3; pcVar6 = local_5c; do { if (*pcVar6 != *pcVar9) goto LAB_00425e01; bVar3 = true; if (*pcVar6 == '\0') break; pcVar1 = pcVar6 + 1; if (*pcVar1 != pcVar9[1]) goto LAB_00425e01; pcVar6 = pcVar6 + 2; pcVar9 = pcVar9 + 2; bVar3 = *pcVar1 == '\0'; } while (!bVar3); if (bVar3) { local_60 = 3; } else { LAB_00425e01: pcVar9 = s_hingex_004e4daa; pcVar6 = local_5c; do { if (*pcVar6 != *pcVar9) goto LAB_00425e31; bVar3 = true; if (*pcVar6 == '\0') break; pcVar1 = pcVar6 + 1; if (*pcVar1 != pcVar9[1]) goto LAB_00425e31; pcVar6 = pcVar6 + 2; pcVar9 = pcVar9 + 2; bVar3 = *pcVar1 == '\0'; } while (!bVar3); if (bVar3) { local_60 = 0; } else { LAB_00425e31: pcVar9 = s_hingey_004e4db1; pcVar6 = local_5c; do { if (*pcVar6 != *pcVar9) goto LAB_00425e63; bVar3 = true; if (*pcVar6 == '\0') break; pcVar1 = pcVar6 + 1; if (*pcVar1 != pcVar9[1]) goto LAB_00425e63; pcVar6 = pcVar6 + 2; pcVar9 = pcVar9 + 2; bVar3 = *pcVar1 == '\0'; } while (!bVar3); if (bVar3) { local_60 = 1; } else { LAB_00425e63: pcVar9 = &DAT_004e4db8; pcVar6 = local_5c; do { if (*pcVar6 != *pcVar9) goto LAB_00425e92; bVar3 = true; if (*pcVar6 == '\0') break; pcVar1 = pcVar6 + 1; if (*pcVar1 != pcVar9[1]) goto LAB_00425e92; pcVar6 = pcVar6 + 2; pcVar9 = pcVar9 + 2; bVar3 = *pcVar1 == '\0'; } while (!bVar3); if (bVar3) { local_60 = 2; } else { LAB_00425e92: pcVar9 = &DAT_004e4dbf; pcVar6 = local_5c; do { if (*pcVar6 != *pcVar9) goto LAB_00425ec1; bVar3 = true; if (*pcVar6 == '\0') break; pcVar1 = pcVar6 + 1; if (*pcVar1 != pcVar9[1]) goto LAB_00425ec1; pcVar6 = pcVar6 + 2; pcVar9 = pcVar9 + 2; bVar3 = *pcVar1 == '\0'; } while (!bVar3); if (bVar3) { local_60 = 4; } else { LAB_00425ec1: pcVar9 = s_balltranslate_004e4dc4; pcVar6 = local_5c; do { if (*pcVar6 != *pcVar9) goto LAB_00425eee; bVar3 = true; if (*pcVar6 == '\0') break; pcVar1 = pcVar6 + 1; if (*pcVar1 != pcVar9[1]) goto LAB_00425eee; pcVar6 = pcVar6 + 2; pcVar9 = pcVar9 + 2; bVar3 = *pcVar1 == '\0'; } while (!bVar3); if (bVar3) { local_60 = 5; } } } } } } } LAB_00425eee: local_68 = (int *)(**(code **)(local_100[0] + 0x20))(local_100,&local_64,4); (**(code **)(*local_68 + 0x20))(local_68,&local_60,4); FUN_00404118((int)piVar5,(char *)local_38[2],s_tranx_004e4dd2,&local_118); FUN_00404118((int)piVar5,(char *)local_38[2],s_trany_004e4dd8,&local_114); FUN_00404118((int)piVar5,(char *)local_38[2],s_tranz_004e4dde,&local_110); FUN_00404118((int)piVar5,(char *)local_38[2],s_pitch_004e4de4,&local_10c); FUN_00404118((int)piVar5,(char *)local_38[2],&DAT_004e4dea,&local_108); FUN_00404118((int)piVar5,(char *)local_38[2],&DAT_004e4dee,&local_104); FUN_0040b0ac((int)local_148,3,&local_118); FUN_0040ac6c(local_148,&local_10c); (**(code **)(local_100[0] + 0x20))(local_100,local_148,0x30); iVar4 = FUN_00404088(param_3,s_video_004e4df3,s_skeleton_004e4df9,&local_6c); if (iVar4 == 0) { local_70 = local_38; piVar8 = local_38 + 3; *piVar8 = *piVar8 + -1; if (*piVar8 == 0) { FUN_004024d8(local_38,3); } FUN_00403310(local_100,2); goto LAB_00425abc; } local_78 = FUN_004064fc(*(char **)(param_4 + 0x10),local_6c); puVar7 = (uint *)FUN_00402298(0x10); if (puVar7 == (uint *)0x0) { local_74 = (uint *)0x0; } else { local_74 = FUN_00402460(puVar7,local_78); } local_74[3] = local_74[3] + 1; piVar8 = (int *)FUN_00402298(0x20); if (piVar8 == (int *)0x0) { piVar8 = (int *)0x0; } else { piVar8 = FUN_00403e84(piVar8,(char *)local_74[2],1); } if ((*(byte *)(piVar8 + 7) & 2) == 0) { iVar4 = piVar8[3]; } else { iVar4 = piVar8[4]; } if (iVar4 == 0) { local_7c = local_74; local_80 = (char *)local_74[2]; FUN_004dbb24(&DAT_00524e20,local_80,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_is_empty_or_missing__004e4e02,(char *)0x0); FUN_004d9c38(&DAT_00524e20); FUN_00403ecc(piVar8,3); local_84 = local_74; puVar7 = local_74 + 3; *puVar7 = *puVar7 - 1; if (*puVar7 == 0) { FUN_004024d8((int *)local_74,3); } local_88 = local_38; piVar8 = local_38 + 3; *piVar8 = *piVar8 + -1; if (*piVar8 == 0) { FUN_004024d8(local_38,3); } FUN_00403310(local_100,2); goto LAB_00425abc; } iVar4 = FUN_00404088((int)piVar8,(char *)local_38[2],s_dzone_004e4e18,&local_90); if (iVar4 == 0) { local_8c = -1; } else { local_94 = local_90; piVar14 = piVar8; local_98 = (uint *)FUN_00402298(0x10); if (local_98 == (uint *)0x0) { puVar7 = (uint *)0x0; } else { puVar7 = FUN_00402460(local_98,local_94); } puVar7[3] = puVar7[3] + 1; local_8c = FUN_004274f8((int *)puVar7,(int)piVar14); } (**(code **)(local_100[0] + 0x20))(local_100,&local_8c,4); FUN_00403ecc(piVar8,3); puVar7 = local_74 + 3; *puVar7 = *puVar7 - 1; if (*puVar7 == 0) { FUN_004024d8((int *)local_74,3); } local_38[3] = local_38[3] + 1; iVar4 = FUN_00426e64(local_100,param_3,local_38,param_4); if (iVar4 == 0) { local_9c = local_38; piVar8 = local_38 + 3; *piVar8 = *piVar8 + -1; if (*piVar8 == 0) { FUN_004024d8(local_38,3); } FUN_00403310(local_100,2); goto LAB_00425abc; } local_38[3] = local_38[3] + 1; iVar4 = FUN_00426780(local_100,param_3,local_38,param_4); if (iVar4 == 0) { local_a0 = local_38; piVar8 = local_38 + 3; *piVar8 = *piVar8 + -1; if (*piVar8 == 0) { FUN_004024d8(local_38,3); } FUN_00403310(local_100,2); goto LAB_00425abc; } local_a4 = FUN_00404720((int)piVar5,(char *)(puVar2 + 2),s_dzone_004e4e1e); puVar10 = (undefined4 *)local_a4[1]; local_a8 = FUN_00403b60((int)local_a4); (**(code **)(local_100[0] + 0x20))(local_100,&local_a8,4); if ((local_a8 != 0) && (local_ac = 0, 0 < local_a8)) { do { local_b4 = (undefined4 *)FUN_00402298(0x10); if (local_b4 == (undefined4 *)0x0) { local_b0 = (int *)0x0; } else { local_b0 = (int *)FUN_004023f4(local_b4); } local_b0[3] = local_b0[3] + 1; FUN_00402a98((int *)&local_b8,(int *)&local_b0,(char *)puVar10[1]); piVar8 = local_b8 + 3; *piVar8 = *piVar8 + -1; if (*piVar8 == 0) { FUN_004024d8(local_b8,3); } local_b0[3] = local_b0[3] + 1; local_bc = FUN_004274f8(local_b0,(int)piVar5); if (local_bc == -1) { uVar13 = FUN_004dbd4c(&DAT_00524e20,param_3); piVar8 = (int *)uVar13; FUN_004dbb24(piVar8,&DAT_004e4e24,(char *)0x0); local_c0 = local_b0; local_c4 = (char *)local_b0[2]; FUN_004dbb24(piVar8,local_c4,(char *)0x0); FUN_004dbb24(piVar8,s_Not_Found__004e4e26,(char *)0x0); FUN_004d9c38(piVar8); piVar8 = local_b0 + 3; *piVar8 = *piVar8 + -1; if (*piVar8 == 0) { FUN_004024d8(local_b0,3); } piVar8 = local_38 + 3; *piVar8 = *piVar8 + -1; if (*piVar8 == 0) { FUN_004024d8(local_38,3); } FUN_00403310(local_100,2); goto LAB_00425abc; } (**(code **)(local_100[0] + 0x20))(local_100,&local_bc,4); puVar10 = (undefined4 *)*puVar10; piVar8 = local_b0 + 3; *piVar8 = *piVar8 + -1; if (*piVar8 == 0) { FUN_004024d8(local_b0,3); } local_ac = local_ac + 1; } while (local_ac < local_a8); } if (local_a4 != (int *)0x0) { (**(code **)*local_a4)(local_a4,3); } local_c8 = FUN_00404720((int)piVar5,(char *)(puVar2 + 2),s_joint_004e4e32); puVar10 = (undefined4 *)local_c8[1]; local_34 = 0; for (; puVar10 != (undefined4 *)0x0; puVar10 = (undefined4 *)*puVar10) { local_34 = local_34 + 1; } (**(code **)(local_100[0] + 0x20))(local_100,&local_34,4); if (local_34 != 0) { puVar10 = (undefined4 *)local_c8[1]; local_cc = 0; if (0 < local_34) { do { local_d4 = (char *)puVar10[1]; piVar8 = piVar5; local_d8 = (uint *)FUN_00402298(0x10); if (local_d8 == (uint *)0x0) { puVar7 = (uint *)0x0; } else { puVar7 = FUN_00402460(local_d8,local_d4); } puVar7[3] = puVar7[3] + 1; local_d0 = FUN_0042760c((int *)puVar7,(int)piVar8); if (local_d0 == -1) { local_dc = (char *)(puVar10 + 2); local_e0 = param_2; FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); FUN_004dbb24(&DAT_00524e20,&DAT_004e4e38,(char *)0x0); FUN_004dbb24(&DAT_00524e20,local_dc,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_Not_Found___004e4e3a,(char *)0x0); FUN_004d9c38(&DAT_00524e20); piVar8 = local_38 + 3; *piVar8 = *piVar8 + -1; if (*piVar8 == 0) { FUN_004024d8(local_38,3); } FUN_00403310(local_100,2); goto LAB_00425abc; } (**(code **)(local_100[0] + 0x20))(local_100,&local_d0,4); puVar10 = (undefined4 *)*puVar10; local_cc = local_cc + 1; } while (local_cc < local_34); } } if (local_c8 != (int *)0x0) { (**(code **)*local_c8)(local_c8,3); } puVar2 = (undefined4 *)*puVar2; goto joined_r0x00425bbc; } } LAB_00425c3b: puVar2 = (undefined4 *)*puVar2; } while( true ); } local_24 = param_2; FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_is_missing_JointCount_004e4d56,(char *)0x0); } LAB_00425abc: FUN_004022d0(local_10); FUN_00403ecc(piVar5,3); } return 0xffffffff; } /* @00426780 file=? name=FUN_00426780 */ undefined4 __cdecl FUN_00426780(int *param_1,int param_2,int *param_3,int param_4) { int *piVar1; undefined4 *puVar2; uint *puVar3; int iVar4; int *piVar5; undefined4 *puVar6; char cVar7; undefined4 uVar8; int *local_80; int *local_7c; int *local_78; char *local_74; int *local_70; int *local_6c; uint *local_68; uint *local_64; uint *local_60; char *local_5c; uint *local_58; char *local_54; uint *local_50; char *local_4c; uint *local_48; int *local_44; uint *local_40; uint *local_3c; uint *local_38; uint *local_34; uint *local_30; uint *local_2c; uint *local_28; uint *local_24; undefined4 local_20; char *local_1c; uint *local_18; int *local_14; int *local_10; int local_c; int *local_8; local_8 = FUN_00404720(param_2,s_video_004e4e47,s_destroyed_004e4e4d); local_c = FUN_00403b60((int)local_8); local_10 = param_1; (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); if (local_c == 0) { if (local_8 != (int *)0x0) { (**(code **)*local_8)(local_8,3); } uVar8 = 1; local_14 = param_3; piVar5 = param_3 + 3; *piVar5 = *piVar5 + -1; if (*piVar5 == 0) { FUN_004024d8(param_3,3); } } else { puVar2 = (undefined4 *)local_8[1]; while (puVar2 != (undefined4 *)0x0) { local_1c = (char *)(puVar2 + 2); puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_18 = (uint *)0x0; } else { local_18 = FUN_00402460(puVar3,local_1c); } local_18[3] = local_18[3] + 1; puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_24 = (uint *)0x0; } else { local_24 = FUN_00402460(puVar3,s_destroyed_004e4e57); } local_24[3] = local_24[3] + 1; iVar4 = FUN_004027d8((int)local_18,(int)local_24); cVar7 = iVar4 == 0; puVar3 = local_24 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_24,3); } if (cVar7 == '\0') { puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_28 = (uint *)0x0; } else { local_28 = FUN_00402460(puVar3,s_destroyeds_004e4e61); } local_28[3] = local_28[3] + 1; iVar4 = FUN_004027d8((int)local_18,(int)local_28); cVar7 = iVar4 == 0; puVar3 = local_28 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_28,3); } if (cVar7 == '\0') { puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_2c = (uint *)0x0; } else { local_2c = FUN_00402460(puVar3,s_destroyedt_004e4e6c); } local_2c[3] = local_2c[3] + 1; iVar4 = FUN_004027d8((int)local_18,(int)local_2c); cVar7 = iVar4 == 0; puVar3 = local_2c + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_2c,3); } if (cVar7 == '\0') { puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_30 = (uint *)0x0; } else { local_30 = FUN_00402460(puVar3,s_destroyedo_004e4e77); } local_30[3] = local_30[3] + 1; iVar4 = FUN_004027d8((int)local_18,(int)local_30); cVar7 = iVar4 == 0; puVar3 = local_30 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_30,3); } if (cVar7 == '\0') { puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_34 = (uint *)0x0; } else { local_34 = FUN_00402460(puVar3,s_destroyeda_004e4e82); } local_34[3] = local_34[3] + 1; iVar4 = FUN_004027d8((int)local_18,(int)local_34); cVar7 = iVar4 == 0; puVar3 = local_34 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_34,3); } if (cVar7 == '\0') { puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_38 = (uint *)0x0; } else { local_38 = FUN_00402460(puVar3,s_destroyedb_004e4e8d); } local_38[3] = local_38[3] + 1; iVar4 = FUN_004027d8((int)local_18,(int)local_38); cVar7 = iVar4 == 0; puVar3 = local_38 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_38,3); } if (cVar7 == '\0') { puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_3c = (uint *)0x0; } else { local_3c = FUN_00402460(puVar3,s_destroyedc_004e4e98); } local_3c[3] = local_3c[3] + 1; iVar4 = FUN_004027d8((int)local_18,(int)local_3c); cVar7 = iVar4 == 0; puVar3 = local_3c + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_3c,3); } if (cVar7 == '\0') { puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_40 = (uint *)0x0; } else { local_40 = FUN_00402460(puVar3,s_destroyedd_004e4ea3); } local_40[3] = local_40[3] + 1; iVar4 = FUN_004027d8((int)local_18,(int)local_40); cVar7 = iVar4 == 0; puVar3 = local_40 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_40,3); } if (cVar7 != '\0') { local_20 = 7; } } else { local_20 = 6; } } else { local_20 = 5; } } else { local_20 = 4; } } else { local_20 = 3; } } else { local_20 = 2; } } else { local_20 = 1; } } else { local_20 = 0; } local_44 = param_1; (**(code **)(*param_1 + 0x20))(param_1,&local_20,4); local_4c = (char *)puVar2[1]; puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_48 = (uint *)0x0; } else { local_48 = FUN_00402460(puVar3,local_4c); } local_48[3] = local_48[3] + 1; local_54 = FUN_004064fc(*(char **)(param_4 + 0x10),(char *)local_48[2]); puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_50 = (uint *)0x0; } else { local_50 = FUN_00402460(puVar3,local_54); } local_50[3] = local_50[3] + 1; piVar5 = (int *)FUN_00402298(0x20); if (piVar5 == (int *)0x0) { piVar5 = (int *)0x0; } else { piVar5 = FUN_00403e84(piVar5,(char *)local_50[2],1); } if ((*(byte *)(piVar5 + 7) & 2) == 0) { iVar4 = piVar5[3]; } else { iVar4 = piVar5[4]; } if (iVar4 == 0) { local_58 = local_50; local_5c = (char *)local_50[2]; FUN_004dbb24(&DAT_00524e20,local_5c,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_is_empty_or_missing__004e4eae,(char *)0x0); FUN_004d9c38(&DAT_00524e20); if (local_8 != (int *)0x0) { (**(code **)*local_8)(local_8,3); } FUN_00403ecc(piVar5,3); uVar8 = 0xffffffff; local_60 = local_50; puVar3 = local_50 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_50,3); } local_64 = local_48; puVar3 = local_48 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_48,3); } local_68 = local_18; puVar3 = local_18 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_18,3); } local_6c = param_3; piVar5 = param_3 + 3; *piVar5 = *piVar5 + -1; if (*piVar5 != 0) { return uVar8; } FUN_004024d8(param_3,3); return uVar8; } puVar6 = (undefined4 *)FUN_00402298(0x10); if (puVar6 == (undefined4 *)0x0) { local_70 = (int *)0x0; } else { local_70 = (int *)FUN_004023f4(puVar6); } local_70[3] = local_70[3] + 1; iVar4 = FUN_00404088((int)piVar5,(char *)param_3[2],s_Object_004e4ec4,&local_74); if (iVar4 == 0) { FUN_00402a98((int *)&local_80,(int *)&local_70,&DAT_004e4ecb); piVar1 = local_80 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_80,3); } } else { FUN_00402a98((int *)&local_78,(int *)&local_70,local_74); local_7c = local_78; piVar1 = local_78 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_78,3); } } FUN_004029b0(param_1,(int)local_70); FUN_00403ecc(piVar5,3); puVar2 = (undefined4 *)*puVar2; piVar5 = local_70 + 3; *piVar5 = *piVar5 + -1; if (*piVar5 == 0) { FUN_004024d8(local_70,3); } puVar3 = local_50 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_50,3); } puVar3 = local_48 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_48,3); } puVar3 = local_18 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_18,3); } } if (local_8 != (int *)0x0) { (**(code **)*local_8)(local_8,3); } uVar8 = 1; piVar5 = param_3 + 3; *piVar5 = *piVar5 + -1; if (*piVar5 == 0) { FUN_004024d8(param_3,3); } } return uVar8; } /* @00426e64 file=? name=FUN_00426e64 */ undefined4 __cdecl FUN_00426e64(int *param_1,int param_2,int *param_3,int param_4) { int *piVar1; undefined4 *puVar2; uint *puVar3; int iVar4; int *piVar5; undefined4 *puVar6; char cVar7; undefined4 uVar8; int *local_7c; int *local_78; int *local_74; char *local_70; int *local_6c; int *local_68; uint *local_64; uint *local_60; uint *local_5c; char *local_58; uint *local_54; char *local_50; uint *local_4c; char *local_48; uint *local_44; int *local_40; uint *local_3c; uint *local_38; uint *local_34; uint *local_30; uint *local_2c; uint *local_28; uint *local_24; uint *local_20; undefined4 local_1c; char *local_18; uint *local_14; int *local_10; int local_c; int *local_8; local_8 = FUN_00404720(param_2,s_video_004e4ed0,s_skeleton_004e4ed6); local_c = FUN_00403b60((int)local_8); local_10 = param_1; (**(code **)(*param_1 + 0x20))(param_1,&local_c,4); puVar2 = (undefined4 *)local_8[1]; while( true ) { if (puVar2 == (undefined4 *)0x0) { if (local_8 != (int *)0x0) { (**(code **)*local_8)(local_8,3); } uVar8 = 1; piVar5 = param_3 + 3; *piVar5 = *piVar5 + -1; if (*piVar5 == 0) { FUN_004024d8(param_3,3); } return uVar8; } local_18 = (char *)(puVar2 + 2); puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_14 = (uint *)0x0; } else { local_14 = FUN_00402460(puVar3,local_18); } local_14[3] = local_14[3] + 1; puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_20 = (uint *)0x0; } else { local_20 = FUN_00402460(puVar3,s_skeleton_004e4edf); } local_20[3] = local_20[3] + 1; iVar4 = FUN_004027d8((int)local_14,(int)local_20); cVar7 = iVar4 == 0; puVar3 = local_20 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_20,3); } if (cVar7 == '\0') { puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_24 = (uint *)0x0; } else { local_24 = FUN_00402460(puVar3,s_skeletons_004e4ee8); } local_24[3] = local_24[3] + 1; iVar4 = FUN_004027d8((int)local_14,(int)local_24); cVar7 = iVar4 == 0; puVar3 = local_24 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_24,3); } if (cVar7 == '\0') { puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_28 = (uint *)0x0; } else { local_28 = FUN_00402460(puVar3,s_skeletont_004e4ef2); } local_28[3] = local_28[3] + 1; iVar4 = FUN_004027d8((int)local_14,(int)local_28); cVar7 = iVar4 == 0; puVar3 = local_28 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_28,3); } if (cVar7 == '\0') { puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_2c = (uint *)0x0; } else { local_2c = FUN_00402460(puVar3,s_skeletono_004e4efc); } local_2c[3] = local_2c[3] + 1; iVar4 = FUN_004027d8((int)local_14,(int)local_2c); cVar7 = iVar4 == 0; puVar3 = local_2c + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_2c,3); } if (cVar7 == '\0') { puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_30 = (uint *)0x0; } else { local_30 = FUN_00402460(puVar3,s_skeletona_004e4f06); } local_30[3] = local_30[3] + 1; iVar4 = FUN_004027d8((int)local_14,(int)local_30); cVar7 = iVar4 == 0; puVar3 = local_30 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_30,3); } if (cVar7 == '\0') { puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_34 = (uint *)0x0; } else { local_34 = FUN_00402460(puVar3,s_skeletonb_004e4f10); } local_34[3] = local_34[3] + 1; iVar4 = FUN_004027d8((int)local_14,(int)local_34); cVar7 = iVar4 == 0; puVar3 = local_34 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_34,3); } if (cVar7 == '\0') { puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_38 = (uint *)0x0; } else { local_38 = FUN_00402460(puVar3,s_skeletonc_004e4f1a); } local_38[3] = local_38[3] + 1; iVar4 = FUN_004027d8((int)local_14,(int)local_38); cVar7 = iVar4 == 0; puVar3 = local_38 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_38,3); } if (cVar7 == '\0') { puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_3c = (uint *)0x0; } else { local_3c = FUN_00402460(puVar3,s_skeletond_004e4f24); } local_3c[3] = local_3c[3] + 1; iVar4 = FUN_004027d8((int)local_14,(int)local_3c); cVar7 = iVar4 == 0; puVar3 = local_3c + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_3c,3); } if (cVar7 != '\0') { local_1c = 7; } } else { local_1c = 6; } } else { local_1c = 5; } } else { local_1c = 4; } } else { local_1c = 3; } } else { local_1c = 2; } } else { local_1c = 1; } } else { local_1c = 0; } local_40 = param_1; (**(code **)(*param_1 + 0x20))(param_1,&local_1c,4); local_48 = (char *)puVar2[1]; puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_44 = (uint *)0x0; } else { local_44 = FUN_00402460(puVar3,local_48); } local_44[3] = local_44[3] + 1; local_50 = FUN_004064fc(*(char **)(param_4 + 0x10),(char *)local_44[2]); puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { local_4c = (uint *)0x0; } else { local_4c = FUN_00402460(puVar3,local_50); } local_4c[3] = local_4c[3] + 1; piVar5 = (int *)FUN_00402298(0x20); if (piVar5 == (int *)0x0) { piVar5 = (int *)0x0; } else { piVar5 = FUN_00403e84(piVar5,(char *)local_4c[2],1); } if ((*(byte *)(piVar5 + 7) & 2) == 0) { iVar4 = piVar5[3]; } else { iVar4 = piVar5[4]; } if (iVar4 == 0) break; puVar6 = (undefined4 *)FUN_00402298(0x10); if (puVar6 == (undefined4 *)0x0) { local_6c = (int *)0x0; } else { local_6c = (int *)FUN_004023f4(puVar6); } local_6c[3] = local_6c[3] + 1; iVar4 = FUN_00404088((int)piVar5,(char *)param_3[2],s_Object_004e4f44,&local_70); if (iVar4 == 0) { FUN_00402a98((int *)&local_7c,(int *)&local_6c,&DAT_004e4f4b); piVar1 = local_7c + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_7c,3); } } else { FUN_00402a98((int *)&local_74,(int *)&local_6c,local_70); local_78 = local_74; piVar1 = local_74 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_74,3); } } FUN_004029b0(param_1,(int)local_6c); FUN_00403ecc(piVar5,3); puVar2 = (undefined4 *)*puVar2; piVar5 = local_6c + 3; *piVar5 = *piVar5 + -1; if (*piVar5 == 0) { FUN_004024d8(local_6c,3); } puVar3 = local_4c + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_4c,3); } puVar3 = local_44 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_44,3); } puVar3 = local_14 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_14,3); } } local_54 = local_4c; local_58 = (char *)local_4c[2]; FUN_004dbb24(&DAT_00524e20,local_58,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_is_empty_or_missing__004e4f2e,(char *)0x0); FUN_004d9c38(&DAT_00524e20); if (local_8 != (int *)0x0) { (**(code **)*local_8)(local_8,3); } FUN_00403ecc(piVar5,3); uVar8 = 0xffffffff; local_5c = local_4c; puVar3 = local_4c + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_4c,3); } local_60 = local_44; puVar3 = local_44 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_44,3); } local_64 = local_14; puVar3 = local_14 + 3; *puVar3 = *puVar3 - 1; if (*puVar3 == 0) { FUN_004024d8((int *)local_14,3); } local_68 = param_3; piVar5 = param_3 + 3; *piVar5 = *piVar5 + -1; if (*piVar5 != 0) { return uVar8; } FUN_004024d8(param_3,3); return uVar8; } /* @004274f8 file=? name=FUN_004274f8 */ int __cdecl FUN_004274f8(int *param_1,int param_2) { char *pcVar1; undefined4 *puVar2; int *piVar3; int iVar4; char *pcVar5; char *pcVar6; bool bVar7; int local_8; local_8 = -1; piVar3 = FUN_00404720(param_2,s_DamageZones_004e4f50,&DAT_004e4f5c); iVar4 = FUN_00403b60((int)piVar3); if (iVar4 == 0) { FUN_004dbb24(&DAT_00524e20,s_No_dZones_listed_in_DamageZones_P_004e4f60,(char *)0x0); FUN_004d9c38(&DAT_00524e20); if (piVar3 != (int *)0x0) { (**(code **)*piVar3)(piVar3,3); } iVar4 = -1; piVar3 = param_1 + 3; *piVar3 = *piVar3 + -1; if (*piVar3 == 0) { FUN_004024d8(param_1,3); } } else { for (puVar2 = (undefined4 *)piVar3[1]; puVar2 != (undefined4 *)0x0; puVar2 = (undefined4 *)*puVar2) { pcVar5 = (char *)(puVar2 + 2); pcVar6 = (char *)param_1[2]; do { if (*pcVar5 != *pcVar6) goto LAB_004275d8; bVar7 = true; if (*pcVar5 == '\0') break; pcVar1 = pcVar5 + 1; if (*pcVar1 != pcVar6[1]) goto LAB_004275d8; pcVar5 = pcVar5 + 2; pcVar6 = pcVar6 + 2; bVar7 = *pcVar1 == '\0'; } while (!bVar7); if (bVar7) { FUN_00407ae0((char *)puVar2[1],&local_8); if (piVar3 != (int *)0x0) { (**(code **)*piVar3)(piVar3,3); } piVar3 = param_1 + 3; *piVar3 = *piVar3 + -1; if (*piVar3 != 0) { return local_8; } FUN_004024d8(param_1,3); return local_8; } LAB_004275d8: } if (piVar3 != (int *)0x0) { (**(code **)*piVar3)(piVar3,3); } piVar3 = param_1 + 3; *piVar3 = *piVar3 + -1; iVar4 = local_8; if (*piVar3 == 0) { FUN_004024d8(param_1,3); } } return iVar4; } /* @0042760c file=? name=FUN_0042760c */ int __cdecl FUN_0042760c(int *param_1,int param_2) { char cVar1; undefined4 *puVar2; int *piVar3; char *pcVar4; char *pcVar5; uint uVar6; uint uVar7; char *pcVar8; char *pcVar9; int iVar10; bool bVar11; char local_84 [128]; iVar10 = -1; piVar3 = FUN_0040485c(param_2,(char *)0x0); puVar2 = (undefined4 *)piVar3[1]; joined_r0x0042762d: do { if (puVar2 == (undefined4 *)0x0) { if (piVar3 != (int *)0x0) { (**(code **)*piVar3)(piVar3,3); } iVar10 = -1; piVar3 = param_1 + 3; *piVar3 = *piVar3 + -1; if (*piVar3 == 0) { FUN_004024d8(param_1,3); } return iVar10; } uVar6 = 0xffffffff; pcVar5 = (char *)(puVar2 + 2); do { pcVar9 = pcVar5; if (uVar6 == 0) break; uVar6 = uVar6 - 1; pcVar9 = pcVar5 + 1; cVar1 = *pcVar5; pcVar5 = pcVar9; } while (cVar1 != '\0'); uVar6 = ~uVar6; pcVar5 = pcVar9 + -uVar6; pcVar9 = local_84; for (uVar7 = uVar6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { *(undefined4 *)pcVar9 = *(undefined4 *)pcVar5; pcVar5 = pcVar5 + 4; pcVar9 = pcVar9 + 4; } pcVar8 = s_LAB_ONLY_004e4f85; pcVar4 = local_84; for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) { *pcVar9 = *pcVar5; pcVar5 = pcVar5 + 1; pcVar9 = pcVar9 + 1; } do { bVar11 = *pcVar4 == *pcVar8; if (!bVar11) break; if (*pcVar4 == '\0') goto LAB_004276a8; pcVar5 = pcVar4 + 1; bVar11 = *pcVar5 == pcVar8[1]; if (!bVar11) break; pcVar4 = pcVar4 + 2; pcVar8 = pcVar8 + 2; bVar11 = *pcVar5 == '\0'; } while (!bVar11); if (bVar11) { LAB_004276a8: puVar2 = (undefined4 *)*puVar2; goto joined_r0x0042762d; } pcVar5 = local_84; pcVar9 = s_DamageZones_004e4f8e; do { if (*pcVar5 != *pcVar9) goto LAB_004276af; bVar11 = true; if (*pcVar5 == '\0') break; pcVar4 = pcVar5 + 1; if (*pcVar4 != pcVar9[1]) goto LAB_004276af; pcVar5 = pcVar5 + 2; pcVar9 = pcVar9 + 2; bVar11 = *pcVar4 == '\0'; } while (!bVar11); if (bVar11) goto LAB_004276a8; LAB_004276af: iVar10 = iVar10 + 1; pcVar5 = local_84; pcVar9 = (char *)param_1[2]; do { if (*pcVar5 != *pcVar9) goto LAB_004276fe; bVar11 = true; if (*pcVar5 == '\0') break; pcVar4 = pcVar5 + 1; if (*pcVar4 != pcVar9[1]) goto LAB_004276fe; pcVar5 = pcVar5 + 2; pcVar9 = pcVar9 + 2; bVar11 = *pcVar4 == '\0'; } while (!bVar11); if (bVar11) { if (piVar3 != (int *)0x0) { (**(code **)*piVar3)(piVar3,3); } piVar3 = param_1 + 3; *piVar3 = *piVar3 + -1; if (*piVar3 != 0) { return iVar10; } FUN_004024d8(param_1,3); return iVar10; } LAB_004276fe: puVar2 = (undefined4 *)*puVar2; } while( true ); } /* @00427738 file=? name=FUN_00427738 */ int * __cdecl FUN_00427738(int param_1) { int *piVar1; piVar1 = (int *)FUN_00402298(0x328); if (piVar1 == (int *)0x0) { piVar1 = (int *)0x0; } else { piVar1 = FUN_00424e38(piVar1,param_1,&DAT_004e4b2c); } return piVar1; } /* @00427768 file=? name=FUN_00427768 */ undefined4 * __cdecl FUN_00427768(undefined4 *param_1,int param_2) { undefined4 uVar1; FUN_00415e90(param_1,1); *param_1 = &PTR_FUN_004e4fb8; param_1[3] = 0; param_1[0x10] = param_2; uVar1 = FUN_00417ab4(param_2 + 0x31c); param_1[0xe] = uVar1; param_1[0x11] = 0; return param_1; } /* @004277a8 file=? name=FUN_004277a8 */ void __cdecl FUN_004277a8(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5) { int *piVar1; undefined4 uVar2; uint uVar3; int iVar4; undefined4 *puVar5; int iVar6; int local_2c [7]; int local_10; int local_c; int local_8; *(undefined4 *)(param_1 + 0x48) = param_3; *(undefined4 *)(param_1 + 0x4c) = param_4; *(undefined4 *)(param_1 + 0x50) = param_5; *(undefined4 *)(param_1 + 0x54) = 0; *(undefined4 *)(param_1 + 0x3c) = 0; if (*(int *)(param_1 + 0x44) != 0) { piVar1 = (int *)(*(int *)(param_1 + 0x44) + 4); *piVar1 = *piVar1 + -1; } iVar4 = FUN_00406fd4(*(int *)(DAT_004efc94 + 0x68),param_2); *(int *)(param_1 + 0x44) = iVar4; iVar6 = *(int *)(iVar4 + 4); *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1; if (iVar6 == 0) { FUN_00406cd0(iVar4); } puVar5 = *(undefined4 **)(*(int *)(param_1 + 0x44) + 0x3c); *(undefined4 *)(param_1 + 0x14) = *puVar5; *(undefined4 *)(param_1 + 0x18) = puVar5[1]; *(undefined4 **)(param_1 + 0x20) = puVar5 + 2; puVar5 = puVar5 + 3; *(undefined4 **)(param_1 + 0x1c) = puVar5; puVar5 = puVar5 + *(int *)(param_1 + 0x18); *(undefined4 **)(param_1 + 0x24) = puVar5; *(undefined4 **)(param_1 + 0x28) = puVar5 + *(int *)(param_1 + 0x14); *(undefined4 **)(param_1 + 0x2c) = puVar5 + *(int *)(param_1 + 0x14); local_8 = *(int *)(param_1 + 0x28); for (local_c = 0; local_c < *(int *)(param_1 + 0x14); local_c = local_c + 1) { for (iVar6 = 0; iVar6 < *(int *)(param_1 + 0x18); iVar6 = iVar6 + 1) { uVar2 = *(undefined4 *)(*(int *)(param_1 + 0x1c) + iVar6 * 4); FUN_0041d3b3(local_2c,*(int *)(param_1 + 0x38) + 0xe4); iVar4 = (**(code **)(local_2c[0] + 0x34))(local_2c,uVar2); FUN_0041d3d2(local_2c,2); uVar3 = *(uint *)(iVar4 + 0x10); if (uVar3 < 3) { local_8 = local_8 + 8; } else if (uVar3 == 4) { local_8 = local_8 + 0xc; } else if (uVar3 == 5) { local_8 = local_8 + 0x18; } local_10 = iVar4; } } *(int *)(param_1 + 0x34) = local_8; return; } /* @004278d4 file=? name=FUN_004278d4 */ void __cdecl FUN_004278d4(int *param_1,byte param_2) { int *piVar1; if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4fb8; if (param_1[0x11] != 0) { piVar1 = (int *)(param_1[0x11] + 4); *piVar1 = *piVar1 + -1; } FUN_00415ed8(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042790c file=? name=FUN_0042790c */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ float10 __cdecl FUN_0042790c(int param_1,float param_2,int param_3) { uint uVar1; int iVar2; float *pfVar3; int iVar4; int iVar5; float10 fVar6; float *pfVar7; float fVar8; float local_b0 [3]; float local_a4 [3]; float local_98 [3]; int local_8c [7]; int local_70 [7]; float *local_54; float local_50; float local_4c; float local_48; float *local_44; undefined4 local_40; float local_3c; float *local_38; float local_34; float *local_30; float local_2c; float *local_28; float *local_24; float *local_20; float *local_1c; float *local_18; float *local_14; float local_10; float local_c; float *local_8; local_c = *(float *)(param_1 + 0x54) + param_2; local_10 = 0.0; local_8 = *(float **)(param_1 + 0x2c); while ((*(int *)(param_1 + 0x3c) < *(int *)(param_1 + 0x14) && (*(float *)(*(int *)(param_1 + 0x24) + *(int *)(param_1 + 0x3c) * 4) <= local_c))) { for (iVar5 = 0; iVar5 < *(int *)(param_1 + 0x18); iVar5 = iVar5 + 1) { FUN_0041d3b3(local_70,*(int *)(param_1 + 0x38) + 0xe4); iVar2 = (**(code **)(local_70[0] + 0x34))(local_70); FUN_0041d3d2(local_70,2); uVar1 = *(uint *)(iVar2 + 0x10); if (uVar1 < 3) { local_20 = local_8; iVar4 = FUN_00408d78(*(int **)(iVar2 + 0xc),(int *)local_8,0.0001); if ((iVar4 == 0) && (param_3 != 0)) { FUN_0041cfc8(iVar2,(int *)local_8); } local_8 = local_8 + 2; } else if (uVar1 != 3) { if (uVar1 == 4) { local_24 = local_8; local_28 = (float *)FUN_0041cfa0(iVar2); iVar4 = FUN_004091f4(local_28,local_24,0.0001); if ((iVar4 == 0) && (param_3 != 0)) { FUN_0041d020(iVar2,local_8); } local_8 = local_8 + 3; } else if (uVar1 == 5) { local_14 = local_8; local_18 = (float *)FUN_0041cfa0(iVar2); iVar4 = FUN_004091f4(local_18,local_14,0.0001); if ((iVar4 == 0) && (param_3 != 0)) { FUN_0041d020(iVar2,local_8); } local_1c = local_8 + 3; local_8 = local_1c; iVar4 = FUN_004084fc(*(float **)(iVar2 + 0xc),local_1c,0.0001); if ((iVar4 == 0) && (param_3 != 0)) { FUN_0041d11c(iVar2,local_8); } local_8 = local_8 + 3; } } } iVar5 = *(int *)(param_1 + 0x3c); local_10 = (*(float *)(*(int *)(param_1 + 0x24) + iVar5 * 4) - *(float *)(param_1 + 0x54)) * *(float *)(*(int *)(param_1 + 0x34) + 8 + iVar5 * 0xc) + local_10; *(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(*(int *)(param_1 + 0x24) + iVar5 * 4); *(int *)(param_1 + 0x3c) = *(int *)(param_1 + 0x3c) + 1; } if (*(int *)(param_1 + 0x14) == *(int *)(param_1 + 0x3c)) { fVar6 = (float10)(**(code **)(param_1 + 0x48)) (*(undefined4 *)(param_1 + 0x40),**(undefined4 **)(param_1 + 0x44), local_c - *(float *)(*(int *)(param_1 + 0x24) + -4 + *(int *)(param_1 + 0x14) * 4),param_3); local_10 = (float)(fVar6 + (float10)local_10); } else { *(float **)(param_1 + 0x2c) = local_8; local_2c = (local_c - *(float *)(param_1 + 0x54)) / (*(float *)(*(int *)(param_1 + 0x24) + *(int *)(param_1 + 0x3c) * 4) - *(float *)(param_1 + 0x54)); for (iVar5 = 0; iVar5 < *(int *)(param_1 + 0x18); iVar5 = iVar5 + 1) { FUN_0041d3b3(local_8c,*(int *)(param_1 + 0x38) + 0xe4); iVar2 = (**(code **)(local_8c[0] + 0x34))(local_8c); FUN_0041d3d2(local_8c,2); uVar1 = *(uint *)(iVar2 + 0x10); if (uVar1 < 3) { FUN_00408dd4(&local_40,*(undefined4 **)(iVar2 + 0xc),(int)local_8,local_2c); local_44 = (float *)(*(int *)(iVar2 + 0xc) + 4); local_50 = *local_44; local_4c = local_3c; local_48 = local_50; fVar6 = FUN_004dcd00((double)(local_50 - local_3c)); if (((float10)_DAT_00427d88 < fVar6) && (param_3 != 0)) { FUN_0041d0a8(iVar2,&local_3c); } local_8 = local_8 + 2; } else if (uVar1 != 3) { if (uVar1 == 4) { pfVar7 = local_8; fVar8 = local_2c; pfVar3 = (float *)FUN_0041cfa0(iVar2); FUN_00409390(local_b0,pfVar3,pfVar7,fVar8); local_54 = (float *)FUN_0041cfa0(iVar2); iVar4 = FUN_004091f4(local_54,local_b0,0.0001); if ((iVar4 == 0) && (param_3 != 0)) { FUN_0041d020(iVar2,local_b0); } local_8 = local_8 + 3; } else if (uVar1 == 5) { pfVar7 = local_8; fVar8 = local_2c; pfVar3 = (float *)FUN_0041cfa0(iVar2); FUN_00409390(local_a4,pfVar3,pfVar7,fVar8); local_30 = (float *)FUN_0041cfa0(iVar2); iVar4 = FUN_004091f4(local_30,local_a4,0.0001); if ((iVar4 == 0) && (param_3 != 0)) { FUN_0041d020(iVar2,local_a4); } local_8 = local_8 + 3; local_34 = local_2c; local_38 = *(float **)(iVar2 + 0xc); FUN_00408848(local_98,local_38,_DAT_00427d84 - local_2c,local_8,local_2c); iVar4 = FUN_004084fc(*(float **)(iVar2 + 0xc),local_98,0.0001); if ((iVar4 == 0) && (param_3 != 0)) { FUN_0041d11c(iVar2,local_98); } local_8 = local_8 + 3; } } } local_10 = (local_c - *(float *)(param_1 + 0x54)) * *(float *)(*(int *)(param_1 + 0x34) + 8 + *(int *)(param_1 + 0x3c) * 0xc) + local_10; *(float *)(param_1 + 0x54) = local_c; } return (float10)local_10; } /* @00427d92 file=? name=FUN_00427d92 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ bool FUN_00427d92(void) { int iVar1; uint uVar2; bool bVar3; int iVar4; float *pfVar5; int iVar6; int unaff_EBP; int iVar7; float10 fVar8; float *pfVar9; float fVar10; iVar1 = *(int *)(unaff_EBP + 8); if (*(int *)(iVar1 + 0xc) == 0) { *(undefined4 *)(iVar1 + 0xc) = 1; *(undefined4 *)(iVar1 + 0x10) = *(undefined4 *)(unaff_EBP + 0x10); } *(float *)(unaff_EBP + -8) = *(float *)(unaff_EBP + 0xc) / *(float *)(iVar1 + 0x10); *(undefined4 *)(unaff_EBP + -4) = *(undefined4 *)(iVar1 + 0x2c); if (*(int *)(unaff_EBP + 0x14) != 0) { for (iVar7 = 0; iVar7 < *(int *)(iVar1 + 0x18); iVar7 = iVar7 + 1) { FUN_0041d3b3((undefined4 *)(unaff_EBP + -0x4c),*(int *)(iVar1 + 0x38) + 0xe4); iVar4 = (**(code **)(*(int *)(unaff_EBP + -0x4c) + 0x34))(unaff_EBP + -0x4c); FUN_0041d3d2((int *)(unaff_EBP + -0x4c),2); uVar2 = *(uint *)(iVar4 + 0x10); if (uVar2 < 3) { FUN_00408dd4((undefined4 *)(unaff_EBP + -0x1c),*(undefined4 **)(iVar4 + 0xc), *(int *)(unaff_EBP + -4),*(float *)(unaff_EBP + -8)); *(int *)(unaff_EBP + -0x20) = *(int *)(iVar4 + 0xc) + 4; *(undefined4 *)(unaff_EBP + -0x24) = **(undefined4 **)(unaff_EBP + -0x20); *(undefined4 *)(unaff_EBP + -0x28) = *(undefined4 *)(unaff_EBP + -0x18); *(undefined4 *)(unaff_EBP + -0x2c) = *(undefined4 *)(unaff_EBP + -0x24); fVar8 = FUN_004dcd00((double)(*(float *)(unaff_EBP + -0x2c) - *(float *)(unaff_EBP + -0x28)) ); if ((float10)_DAT_00427fd4 < fVar8) { FUN_0041d0a8(iVar4,(float *)(unaff_EBP + -0x18)); } *(int *)(unaff_EBP + -4) = *(int *)(unaff_EBP + -4) + 8; } else if (uVar2 != 3) { if (uVar2 == 4) { fVar10 = *(float *)(unaff_EBP + -8); pfVar9 = *(float **)(unaff_EBP + -4); pfVar5 = (float *)FUN_0041cfa0(iVar4); FUN_00409390((float *)(unaff_EBP + -0x70),pfVar5,pfVar9,fVar10); iVar6 = FUN_0041cfa0(iVar4); *(int *)(unaff_EBP + -0x30) = iVar6; iVar6 = FUN_004091f4(*(float **)(unaff_EBP + -0x30),(float *)(unaff_EBP + -0x70),0.0001); if (iVar6 == 0) { FUN_0041d020(iVar4,(float *)(unaff_EBP + -0x70)); } *(int *)(unaff_EBP + -4) = *(int *)(unaff_EBP + -4) + 0xc; } else if (uVar2 == 5) { fVar10 = *(float *)(unaff_EBP + -8); pfVar9 = *(float **)(unaff_EBP + -4); pfVar5 = (float *)FUN_0041cfa0(iVar4); FUN_00409390((float *)(unaff_EBP + -100),pfVar5,pfVar9,fVar10); iVar6 = FUN_0041cfa0(iVar4); *(int *)(unaff_EBP + -0xc) = iVar6; iVar6 = FUN_004091f4(*(float **)(unaff_EBP + -0xc),(float *)(unaff_EBP + -100),0.0001); if (iVar6 == 0) { FUN_0041d020(iVar4,(float *)(unaff_EBP + -100)); } *(int *)(unaff_EBP + -4) = *(int *)(unaff_EBP + -4) + 0xc; *(undefined4 *)(unaff_EBP + -0x10) = *(undefined4 *)(unaff_EBP + -8); *(undefined4 *)(unaff_EBP + -0x14) = *(undefined4 *)(iVar4 + 0xc); FUN_00408848((float *)(unaff_EBP + -0x58),*(float **)(unaff_EBP + -0x14), _DAT_00427fd0 - *(float *)(unaff_EBP + -0x10),*(float **)(unaff_EBP + -4), *(float *)(unaff_EBP + -0x10)); iVar6 = FUN_004084fc(*(float **)(iVar4 + 0xc),(float *)(unaff_EBP + -0x58),0.0001); if (iVar6 == 0) { FUN_0041d11c(iVar4,(float *)(unaff_EBP + -0x58)); } *(int *)(unaff_EBP + -4) = *(int *)(unaff_EBP + -4) + 0xc; } } } } *(float *)(iVar1 + 0x10) = *(float *)(iVar1 + 0x10) - *(float *)(unaff_EBP + 0xc); bVar3 = _DAT_00427fd8 < *(float *)(iVar1 + 0x10); if (!bVar3) { *(undefined4 *)(iVar1 + 0xc) = 0; } return bVar3; } /* @004283b8 file=? name=FUN_004283b8 */ void __cdecl FUN_004283b8(int param_1,int param_2) { undefined4 uVar1; int iVar2; int iVar3; int local_68 [7]; float local_4c [7]; int local_30 [11]; if (param_2 != 0) { local_30[10] = 0; local_30[9] = 0; local_30[8] = 0; local_4c[3] = 0.0; local_4c[4] = 0.0; local_4c[5] = 0.0; local_30[5] = 0; local_30[6] = 0; local_30[7] = 0; local_30[2] = 0x3f800000; local_30[3] = 0; local_30[4] = 0x3f800000; local_4c[6] = 2.0; local_30[0] = 0; local_30[1] = 0x40000000; local_4c[0] = 0.0; local_4c[1] = 0.0; local_4c[2] = 0.0; for (iVar3 = 0; iVar3 < *(int *)(param_1 + 0x18); iVar3 = iVar3 + 1) { uVar1 = *(undefined4 *)(*(int *)(param_1 + 0x1c) + iVar3 * 4); FUN_0041d3b3(local_68,*(int *)(param_1 + 0x38) + 0xe4); iVar2 = (**(code **)(local_68[0] + 0x34))(local_68,uVar1); FUN_0041d3d2(local_68,2); switch(*(undefined4 *)(iVar2 + 0x10)) { case 0: FUN_0041cfc8(iVar2,local_30 + 6); break; case 1: FUN_0041cfc8(iVar2,local_30 + 3); break; case 2: FUN_0041cfc8(iVar2,local_30); break; case 4: FUN_0041d020(iVar2,local_4c + 3); break; case 5: FUN_0041d020(iVar2,local_4c + 3); FUN_0041d11c(iVar2,local_4c); } } } return; } /* @00428508 file=? name=FUN_00428508 */ int __cdecl FUN_00428508(int param_1) { undefined4 *puVar1; int *piVar2; int iVar3; piVar2 = FUN_0040485c(param_1,s_joint_004e4f9a); iVar3 = 0; for (puVar1 = (undefined4 *)piVar2[1]; puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1 ) { iVar3 = iVar3 + 1; } if (piVar2 != (int *)0x0) { (**(code **)*piVar2)(piVar2,3); } return iVar3; } /* @00428544 file=? name=FUN_00428544 */ void __cdecl FUN_00428544(int param_1) { FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e4afc); return; } /* @00428601 file=? name=FUN_00428601 */ undefined4 * __cdecl FUN_00428601(undefined4 *param_1,undefined4 param_2) { FUN_004179d4(param_1,param_2); *param_1 = &PTR_FUN_004e4fb0; return param_1; } /* @00428620 file=? name=FUN_00428620 */ void __cdecl FUN_00428620(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e4fb0; FUN_004179f8(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042864c file=? name=FUN_0042864c */ void __cdecl FUN_0042864c(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e52e4; FUN_0041b898(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00428678 file=munga/watcher.cpp name=FUN_00428678 */ undefined4 * __cdecl FUN_00428678(undefined4 *param_1,int *param_2,int param_3) { int *piVar1; undefined4 *puVar2; int iVar3; uint *puVar4; int *local_10; uint *local_c; int *local_8; FUN_0041b868(param_1,param_2,&DAT_004e32ac); *param_1 = &PTR_FUN_004e52e4; puVar2 = (undefined4 *)FUN_00402298(0x10); if (puVar2 == (undefined4 *)0x0) { local_8 = (int *)0x0; } else { local_8 = (int *)FUN_004023f4(puVar2); } local_8[3] = local_8[3] + 1; FUN_00402aec(param_2,(int *)&local_8); iVar3 = FUN_0041f98c(param_3,(char *)local_8[2]); param_1[4] = iVar3; if (iVar3 == 0) { puVar4 = (uint *)FUN_00402298(0x10); if (puVar4 == (uint *)0x0) { local_c = (uint *)0x0; } else { local_c = FUN_00402460(puVar4,s_Entity_004e4ffc); } local_c[3] = local_c[3] + 1; iVar3 = FUN_004027d8((int)local_8,(int)local_c); if (iVar3 != 0) { FUN_004dbb24(&DAT_00524e20,s_AttributeWatcher__AttributeWatch_004e5003,(char *)0x0); FUN_004dbb24(&DAT_00524e20,(char *)local_8[2],(char *)0x0); FUN_004dbb24(&DAT_00524e20,&DAT_004e5033,(char *)0x0); FUN_0040385c(s_AttributeWatcher__AttributeWatch_004e5035, s_d__tesla_bt_munga_WATCHER_CPP_004e506f,0x70); } puVar4 = local_c + 3; *puVar4 = *puVar4 - 1; if (*puVar4 == 0) { FUN_004024d8((int *)local_c,3); } param_1[4] = param_3; } puVar2 = (undefined4 *)FUN_00402298(0x10); if (puVar2 == (undefined4 *)0x0) { local_10 = (int *)0x0; } else { local_10 = (int *)FUN_004023f4(puVar2); } local_10[3] = local_10[3] + 1; FUN_00402aec(param_2,(int *)&local_10); iVar3 = FUN_0041bfc0(param_1[4],(char *)local_10[2]); param_1[5] = iVar3; if (iVar3 == 0) { FUN_004dbb24(&DAT_00524e20,s_AttributeWatcher__AttributeWatch_004e508d,(char *)0x0); FUN_004dbb24(&DAT_00524e20,(char *)local_10[2],(char *)0x0); FUN_004dbb24(&DAT_00524e20,&DAT_004e50bd,(char *)0x0); FUN_0040385c(s_AttributeWatcher__AttributeWatch_004e50bf, s_d__tesla_bt_munga_WATCHER_CPP_004e50f9,0x8d); } (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 7,4); param_1[6] = 0; piVar1 = local_10 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_10,3); } piVar1 = local_8 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_8,3); } return param_1; } /* @0042887c file=munga/watcher.cpp name=FUN_0042887c */ void __cdecl FUN_0042887c(int *param_1,int param_2) { int *piVar1; undefined4 *puVar2; char *pcVar3; undefined4 local_10; int *local_c; int *local_8; FUN_00414c58(param_1); puVar2 = (undefined4 *)FUN_00402298(0x10); if (puVar2 == (undefined4 *)0x0) { local_8 = (int *)0x0; } else { local_8 = (int *)FUN_004023f4(puVar2); } local_8[3] = local_8[3] + 1; pcVar3 = (char *)FUN_00403ad0(param_2,s_subsystem_004e5117); if (pcVar3 == (char *)0x0) { FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e5121,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_subsystem_004e5146,(char *)0x0); FUN_004dbb24(&DAT_00524e20,&DAT_004e5150,(char *)0x0); FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e5152, s_d__tesla_bt_munga_WATCHER_CPP_004e5192,0xad); } FUN_00402b3c(pcVar3,(int *)&local_8); FUN_004029b0(param_1,(int)local_8); piVar1 = local_8 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_8,3); } puVar2 = (undefined4 *)FUN_00402298(0x10); if (puVar2 == (undefined4 *)0x0) { local_c = (int *)0x0; } else { local_c = (int *)FUN_004023f4(puVar2); } local_c[3] = local_c[3] + 1; pcVar3 = (char *)FUN_00403ad0(param_2,s_attribute_004e51b0); if (pcVar3 == (char *)0x0) { FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004e51ba,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_attribute_004e51df,(char *)0x0); FUN_004dbb24(&DAT_00524e20,&DAT_004e51e9,(char *)0x0); FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004e51eb, s_d__tesla_bt_munga_WATCHER_CPP_004e522b,0xae); } FUN_00402b3c(pcVar3,(int *)&local_c); FUN_004029b0(param_1,(int)local_c); piVar1 = local_c + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_c,3); } local_10 = 1; (**(code **)(*param_1 + 0x20))(param_1,&local_10,4); return; } /* @00428a2c file=? name=FUN_00428a2c */ undefined4 __cdecl FUN_00428a2c(int param_1) { FUN_0041b8e0(param_1); return 1; } /* @00428a40 file=? name=FUN_00428a40 */ undefined4 __cdecl FUN_00428a40(int param_1) { if (*(int *)(param_1 + 0x18) != 0) { *(undefined4 *)(param_1 + 0x18) = 0; return 1; } return 0; } /* @00428a5c file=munga/watcher.cpp name=FUN_00428a5c */ void FUN_00428a5c(void) { FUN_0040385c(s_AttributeWatcher__SendNotificati_004e5249,s_d__tesla_bt_munga_WATCHER_CPP_004e528e, 0xda); return; } /* @00428a78 file=? name=FUN_00428a78 */ undefined4 * __cdecl FUN_00428a78(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) { FUN_004178cc(param_1,2); *param_1 = &PTR_FUN_004e54a0; param_1[4] = param_3; FUN_00428cb4(param_1 + 7,0); FUN_00428cb4(param_1 + 0xc,0); FUN_00428cb4(param_1 + 0x11,0); param_1[3] = param_2; param_1[5] = param_4; param_1[6] = 0; return param_1; } /* @00428ad8 file=? name=FUN_00428ad8 */ void __cdecl FUN_00428ad8(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e54a0; FUN_00428cd3(param_1 + 0x11,2); FUN_00428cd3(param_1 + 0xc,2); FUN_00428cd3(param_1 + 7,2); FUN_0041790c(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00428b30 file=? name=FUN_00428b30 */ undefined4 FUN_00428b30(void) { FUN_00415f1c(); return 1; } /* @00428b44 file=munga/host.cpp name=FUN_00428b44 */ void __cdecl FUN_00428b44(int param_1,int param_2) { uint uVar1; (**(code **)(*(int *)(param_1 + 0x1c) + 4))(param_1 + 0x1c,param_2); uVar1 = *(uint *)(param_2 + 0x28) & 0xc; if (uVar1 != 0) { if (uVar1 == 4) { if ((*(byte *)(param_2 + 0x29) & 1) == 0) { return; } (**(code **)(*(int *)(param_1 + 0x44) + 4))(param_1 + 0x44,param_2); return; } if ((uVar1 != 8) && (uVar1 != 0xc)) { FUN_0040385c(s_Host__AddEntity___Should_never_r_004e5300,s_d__tesla_bt_munga_HOST_CPP_004e532a ,0x77); return; } } if ((*(byte *)(param_2 + 0x29) & 1) != 0) { (**(code **)(*(int *)(param_1 + 0x30) + 4))(param_1 + 0x30,param_2); } return; } /* @00428bc4 file=? name=FUN_00428bc4 */ undefined4 * __cdecl FUN_00428bc4(undefined4 *param_1,int param_2) { FUN_00428cff(param_1,param_2 + 0x1c); *param_1 = &PTR_FUN_004e544c; return param_1; } /* @00428be8 file=? name=FUN_00428be8 */ void __cdecl FUN_00428be8(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e544c; FUN_00428d5c(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00428c14 file=? name=FUN_00428c14 */ undefined4 * __cdecl FUN_00428c14(undefined4 *param_1,int param_2) { FUN_00428cff(param_1,param_2 + 0x30); *param_1 = &PTR_FUN_004e53f8; return param_1; } /* @00428c38 file=? name=FUN_00428c38 */ void __cdecl FUN_00428c38(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e53f8; FUN_00428d5c(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00428c64 file=? name=FUN_00428c64 */ undefined4 * __cdecl FUN_00428c64(undefined4 *param_1,int param_2) { FUN_00428cff(param_1,param_2 + 0x44); *param_1 = &PTR_FUN_004e53a4; return param_1; } /* @00428c88 file=? name=FUN_00428c88 */ void __cdecl FUN_00428c88(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e53a4; FUN_00428d5c(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00428cb4 file=? name=FUN_00428cb4 */ undefined4 * __cdecl FUN_00428cb4(undefined4 *param_1,undefined4 param_2) { FUN_0041827c(param_1,param_2); *param_1 = &PTR_FUN_004e539c; return param_1; } /* @00428cd3 file=? name=FUN_00428cd3 */ void __cdecl FUN_00428cd3(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e539c; FUN_004182a8(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00428cff file=? name=FUN_00428cff */ undefined4 * __cdecl FUN_00428cff(undefined4 *param_1,int param_2) { FUN_00418398(param_1,param_2); *param_1 = &PTR_FUN_004e5348; return param_1; } /* @00428d1e file=? name=FUN_00428d1e */ undefined4 * __cdecl FUN_00428d1e(undefined4 *param_1,int param_2) { FUN_00418398(param_1,param_2); *param_1 = &PTR_FUN_004e5348; return param_1; } /* @00428d3d file=? name=FUN_00428d3d */ undefined4 * __cdecl FUN_00428d3d(undefined4 *param_1,int param_2) { FUN_004183c0(param_1,param_2); *param_1 = &PTR_FUN_004e5348; return param_1; } /* @00428d5c file=? name=FUN_00428d5c */ void __cdecl FUN_00428d5c(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e5348; FUN_004183ec(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00428d88 file=? name=FUN_00428d88 */ undefined4 * __cdecl FUN_00428d88(undefined4 *param_1) { FUN_0041d520(param_1,0x16,&DAT_004e54ac,2); *param_1 = &PTR_FUN_004e592c; FUN_004294c1(param_1 + 6,0,1); FUN_004294c1(param_1 + 0xc,0,1); FUN_00420e8c(param_1 + 0x13); FUN_004295d5(param_1 + 0x15,500,0,1); param_1[5] = 0; param_1[0x12] = 0; return param_1; } /* @00428df8 file=? name=FUN_00428df8 */ void __cdecl FUN_00428df8(int *param_1,byte param_2) { undefined4 *puVar1; if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e592c; puVar1 = (undefined4 *)param_1[0x12]; if (puVar1 != (undefined4 *)0x0) { if (puVar1 != (undefined4 *)0x0) { (**(code **)*puVar1)(puVar1,3); } param_1[0x12] = 0; } FUN_004295fc(param_1 + 0x15,2); FUN_004294e4(param_1 + 0xc,2); FUN_004294e4(param_1 + 6,2); FUN_0041d554(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00428e68 file=? name=FUN_00428e68 */ undefined4 __cdecl FUN_00428e68(int param_1) { int iVar1; iVar1 = FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e54b4); if (iVar1 == 0) { return 0; } return 1; } /* @00428ea0 file=? name=FUN_00428ea0 */ void __cdecl FUN_00428ea0(int param_1) { int local_18 [5]; if (*(int *)(param_1 + 0x14) != 0) { FUN_00428bc4(local_18,*(int *)(param_1 + 0x14)); FUN_00417858(local_18,local_18,1); FUN_00428be8(local_18,2); } return; } /* @00428ee0 file=? name=FUN_00428ee0 */ void __cdecl FUN_00428ee0(int param_1,int param_2) { undefined4 local_10; undefined4 local_c [2]; *(int *)(param_1 + 0x14) = param_2; FUN_00420ebc(local_c,*(undefined4 *)(param_2 + 0xc)); FUN_00420ef4((undefined4 *)(param_1 + 0x4c),local_c); local_10 = *(undefined4 *)(param_2 + 0xc); (**(code **)(*(int *)(param_1 + 0x30) + 8))(param_1 + 0x30,param_2,&local_10); return; } /* @00428f34 file=? name=FUN_00428f34 */ int __cdecl FUN_00428f34(int param_1) { int iVar1; int local_14 [4]; iVar1 = *(int *)(param_1 + 0x14); *(undefined4 *)(param_1 + 0x14) = 0; FUN_00420ef4((undefined4 *)(param_1 + 0x4c),(undefined4 *)&DAT_00522524); if (iVar1 != 0) { FUN_00415f30(local_14,iVar1,0xffffffff); FUN_004161fc((int)local_14,param_1 + 0x30); FUN_00415f90(local_14,2); } return iVar1; } /* @00428f94 file=? name=FUN_00428f94 */ void __cdecl FUN_00428f94(int param_1,int param_2) { undefined4 local_c; undefined4 local_8; local_8 = *(undefined4 *)(param_2 + 0xc); (**(code **)(*(int *)(param_1 + 0x18) + 8))(param_1 + 0x18,param_2,&local_8); local_c = *(undefined4 *)(param_2 + 0xc); (**(code **)(*(int *)(param_1 + 0x30) + 8))(param_1 + 0x30,param_2,&local_c); return; } /* @00428fdc file=? name=FUN_00428fdc */ void __cdecl FUN_00428fdc(int param_1,int param_2) { int local_24 [4]; int local_14 [4]; FUN_00415f30(local_14,param_2,0xffffffff); FUN_004161fc((int)local_14,param_1 + 0x18); FUN_00415f90(local_14,2); FUN_00415f30(local_24,param_2,0xffffffff); FUN_004161fc((int)local_24,param_1 + 0x30); FUN_00415f90(local_24,2); return; } /* @0042904c file=? name=FUN_0042904c */ undefined4 __cdecl FUN_0042904c(int param_1) { return *(undefined4 *)(*(int *)(param_1 + 0x14) + 0xc); } /* @0042905c file=? name=FUN_0042905c */ void __cdecl FUN_0042905c(int param_1) { (**(code **)(*(int *)(param_1 + 0x18) + 0xc))(param_1 + 0x18,&stack0x00000008); return; } /* @00429078 file=? name=FUN_00429078 */ int __cdecl FUN_00429078(int param_1) { int iVar1; int local_20 [7]; FUN_0042956b(local_20,param_1 + 0x18); do { iVar1 = (**(code **)(local_20[0] + 0x28))(local_20); if (iVar1 == 0) { iVar1 = 0; FUN_004295a9(local_20,2); return iVar1; } } while (*(int *)(iVar1 + 0x10) != 3); FUN_004295a9(local_20,2); return iVar1; } /* @004290d8 file=? name=FUN_004290d8 */ int __cdecl FUN_004290d8(int param_1,int param_2) { int iVar1; int local_20 [7]; FUN_0042956b(local_20,param_1 + 0x30); do { iVar1 = (**(code **)(local_20[0] + 0x28))(local_20); if (iVar1 == 0) { iVar1 = 0; FUN_004295a9(local_20,2); return iVar1; } } while (param_2 != *(int *)(iVar1 + 0x14)); FUN_004295a9(local_20,2); return iVar1; } /* @0042913c file=? name=FUN_0042913c */ undefined4 * __cdecl FUN_0042913c(undefined4 *param_1,int param_2) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_00420f6c(param_2 + 0x4c,1); FUN_00420ea4(param_1,puVar1); return param_1; } /* @00429168 file=? name=FUN_00429168 */ void __cdecl FUN_00429168(int param_1,int param_2,int param_3) { FUN_00428b44(*(int *)(param_1 + 0x14),param_2); (**(code **)(*(int *)(param_1 + 0x54) + 8))(param_1 + 0x54,param_2,param_2 + 0x184); FUN_00434a60(*(int **)(DAT_004efc94 + 0x30),param_2,param_3); return; } /* @004291b4 file=munga/hostmgr.cpp name=FUN_004291b4 */ void FUN_004291b4(void) { FUN_0040385c(s_HostManager__NotifyOfReplacement_004e5586,s_d__tesla_bt_munga_HOSTMGR_CPP_004e55ca, 0x1ce); return; } /* @004291d0 file=? name=FUN_004291d0 */ void __cdecl FUN_004291d0(undefined4 param_1,int param_2) { FUN_00434cdc(*(int *)(DAT_004efc94 + 0x30),param_2); return; } /* @004291ec file=? name=FUN_004291ec */ undefined4 __cdecl FUN_004291ec(int param_1) { bool bVar1; undefined4 *puVar2; int iVar3; if (*(int *)(param_1 + 0x48) == 0) { puVar2 = (undefined4 *)FUN_00402298(0x1c); if (puVar2 == (undefined4 *)0x0) { puVar2 = (undefined4 *)0x0; } else { puVar2 = FUN_0042956b(puVar2,param_1 + 0x30); } *(undefined4 **)(param_1 + 0x48) = puVar2; } bVar1 = false; do { iVar3 = (**(code **)(**(int **)(param_1 + 0x48) + 0x30))(*(int **)(param_1 + 0x48)); if (iVar3 == 0) { (**(code **)(**(int **)(param_1 + 0x48) + 4))(*(int **)(param_1 + 0x48)); iVar3 = (**(code **)(**(int **)(param_1 + 0x48) + 0x30))(*(int **)(param_1 + 0x48)); } if (*(int *)(iVar3 + 0x10) == 0) { bVar1 = true; } else { (**(code **)(**(int **)(param_1 + 0x48) + 0xc))(*(int **)(param_1 + 0x48)); } } while (!bVar1); (**(code **)(**(int **)(param_1 + 0x48) + 0xc))(*(int **)(param_1 + 0x48)); return *(undefined4 *)(iVar3 + 0xc); } /* @00429274 file=munga/hostmgr.cpp name=FUN_00429274 */ void FUN_00429274(void) { FUN_0040385c(s_HostManager__EntityTransferOwner_004e55e8,s_d__tesla_bt_munga_HOSTMGR_CPP_004e5629, 0x270); return; } /* @00429290 file=munga/hostmgr.cpp name=FUN_00429290 */ void FUN_00429290(void) { FUN_0040385c(s_HostManager__EntityNewOwnershipH_004e5647,s_d__tesla_bt_munga_HOSTMGR_CPP_004e5683, 0x290); return; } /* @004292ac file=? name=FUN_004292ac */ undefined4 * __cdecl FUN_004292ac(undefined4 *param_1,int param_2) { FUN_00428bc4(param_1,*(int *)(param_2 + 0x14)); *param_1 = &PTR_FUN_004e58d8; return param_1; } /* @004292d0 file=? name=FUN_004292d0 */ void __cdecl FUN_004292d0(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e58d8; FUN_00428be8(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @004292fc file=? name=FUN_004292fc */ undefined4 * __cdecl FUN_004292fc(undefined4 *param_1,int param_2) { FUN_00428c14(param_1,*(int *)(param_2 + 0x14)); *param_1 = &PTR_FUN_004e5884; return param_1; } /* @00429320 file=? name=FUN_00429320 */ void __cdecl FUN_00429320(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e5884; FUN_00428c38(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042934c file=? name=FUN_0042934c */ undefined4 * __cdecl FUN_0042934c(undefined4 *param_1,int param_2) { FUN_00428c64(param_1,*(int *)(param_2 + 0x14)); *param_1 = &PTR_FUN_004e5830; return param_1; } /* @00429370 file=? name=FUN_00429370 */ void __cdecl FUN_00429370(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e5830; FUN_00428c88(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042939c file=? name=FUN_0042939c */ undefined4 * __cdecl FUN_0042939c(undefined4 *param_1,int param_2) { FUN_0042956b(param_1,param_2 + 0x18); *param_1 = &PTR_FUN_004e57d4; return param_1; } /* @004293c0 file=? name=FUN_004293c0 */ void __cdecl FUN_004293c0(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e57d4; FUN_004295a9(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @004293ec file=? name=FUN_004293ec */ undefined4 * __cdecl FUN_004293ec(undefined4 *param_1,int param_2) { FUN_0042956b(param_1,param_2 + 0x30); *param_1 = &PTR_FUN_004e5778; return param_1; } /* @00429410 file=? name=FUN_00429410 */ void __cdecl FUN_00429410(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e5778; FUN_004295a9(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @004294c1 file=? name=FUN_004294c1 */ undefined4 * __cdecl FUN_004294c1(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { FUN_00419184(param_1,param_2,param_3); *param_1 = &PTR_FUN_004e575c; return param_1; } /* @004294e4 file=? name=FUN_004294e4 */ void __cdecl FUN_004294e4(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e575c; FUN_004191b4(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00429510 file=? name=FUN_00429510 */ undefined4 __cdecl FUN_00429510(undefined4 param_1,int param_2,int param_3) { undefined4 uVar1; if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { uVar1 = 0; } else { uVar1 = 1; if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { uVar1 = 0xffffffff; } } return uVar1; } /* @0042953f file=? name=FUN_0042953f */ undefined4 __cdecl FUN_0042953f(undefined4 param_1,int *param_2,int param_3) { undefined4 uVar1; if (*(int *)(param_3 + 0x14) == *param_2) { uVar1 = 0; } else { uVar1 = 1; if (*param_2 <= *(int *)(param_3 + 0x14)) { uVar1 = 0xffffffff; } } return uVar1; } /* @0042956b file=? name=FUN_0042956b */ undefined4 * __cdecl FUN_0042956b(undefined4 *param_1,int param_2) { FUN_004194d8(param_1,param_2); *param_1 = &PTR_FUN_004e5700; return param_1; } /* @0042958a file=? name=FUN_0042958a */ undefined4 * __cdecl FUN_0042958a(undefined4 *param_1,int param_2) { FUN_004194d8(param_1,param_2); *param_1 = &PTR_FUN_004e5700; return param_1; } /* @004295a9 file=? name=FUN_004295a9 */ void __cdecl FUN_004295a9(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e5700; FUN_0041951c(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @004295d5 file=? name=FUN_004295d5 */ undefined4 * __cdecl FUN_004295d5(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) { FUN_00419774(param_1,param_2,param_3,param_4); *param_1 = &PTR_FUN_004e56e8; return param_1; } /* @004295fc file=? name=FUN_004295fc */ void __cdecl FUN_004295fc(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e56e8; FUN_004197d4(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00429628 file=? name=FUN_00429628 */ undefined4 * __cdecl FUN_00429628(int param_1) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_0042973b(); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_00429671(puVar1,*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0xc)); } return puVar1; } /* @00429657 file=? name=FUN_00429657 */ int __cdecl FUN_00429657(int param_1,int param_2) { int iVar1; iVar1 = FUN_00421094(param_2); return iVar1 % *(int *)(param_1 + 0x14); } /* @00429671 file=? name=FUN_00429671 */ undefined4 * __cdecl FUN_00429671(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { FUN_004186ac(param_1,param_2,param_3); *param_1 = &PTR_FUN_004e56cc; return param_1; } /* @00429694 file=? name=FUN_00429694 */ void __cdecl FUN_00429694(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e56cc; FUN_004186dc(param_1,0); if ((param_2 & 1) != 0) { FUN_0042978b(param_1); } } return; } /* @004296c0 file=? name=FUN_004296c0 */ undefined4 __cdecl FUN_004296c0(undefined4 param_1,int param_2,int param_3) { bool bVar1; int iVar2; undefined4 uVar3; undefined3 extraout_var; iVar2 = FUN_0042104c((int *)(param_2 + 0x1c),(int *)(param_3 + 0x1c)); if (iVar2 == 0) { bVar1 = FUN_00420fec((int *)(param_2 + 0x1c),(int *)(param_3 + 0x1c)); if (CONCAT31(extraout_var,bVar1) == 0) { uVar3 = 0xffffffff; } else { uVar3 = 1; } } else { uVar3 = 0; } return uVar3; } /* @004296ff file=? name=FUN_004296ff */ undefined4 __cdecl FUN_004296ff(undefined4 param_1,int *param_2,int param_3) { bool bVar1; int iVar2; undefined4 uVar3; undefined3 extraout_var; iVar2 = FUN_0042104c(param_2,(int *)(param_3 + 0x1c)); if (iVar2 == 0) { bVar1 = FUN_00420fec(param_2,(int *)(param_3 + 0x1c)); if (CONCAT31(extraout_var,bVar1) == 0) { uVar3 = 0xffffffff; } else { uVar3 = 1; } } else { uVar3 = 0; } return uVar3; } /* @0042973b file=? name=FUN_0042973b */ void FUN_0042973b(void) { int iVar1; undefined4 *puVar2; iVar1 = DAT_004e56c8; DAT_004e56c8 = DAT_004e56c8 + 1; puVar2 = DAT_004e56c4; if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004e56a1); } DAT_004e56c4 = puVar2; FUN_00402f74((int)DAT_004e56c4); return; } /* @0042978b file=? name=FUN_0042978b */ void __cdecl FUN_0042978b(undefined4 *param_1) { FUN_00402f98((int)DAT_004e56c4,param_1); DAT_004e56c8 = DAT_004e56c8 + -1; if (DAT_004e56c8 == 0) { if (DAT_004e56c4 != (int *)0x0) { FUN_00402c28(DAT_004e56c4,0); FUN_004022d0(DAT_004e56c4); } DAT_004e56c4 = (int *)0x0; } return; } /* @004297d6 file=? name=FUN_004297d6 */ undefined4 * __cdecl FUN_004297d6(undefined4 param_1,int param_2,undefined4 *param_3) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_0042989e(); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_00429836(puVar1,param_1,param_2,param_3); } return puVar1; } /* @00429806 file=? name=FUN_00429806 */ undefined4 * __cdecl FUN_00429806(undefined4 param_1,int param_2,undefined4 *param_3) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_0041d485(); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); } return puVar1; } /* @00429836 file=? name=FUN_00429836 */ undefined4 * __cdecl FUN_00429836(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4) { FUN_004185bc(param_1,param_2,param_3); *param_1 = &PTR_FUN_004e594c; FUN_00420e8c(param_1 + 7); FUN_00420ef4(param_1 + 7,param_4); return param_1; } /* @00429872 file=? name=FUN_00429872 */ void __cdecl FUN_00429872(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e594c; FUN_004185ec(param_1,0); if ((param_2 & 1) != 0) { FUN_004298ee(param_1); } } return; } /* @0042989e file=? name=FUN_0042989e */ void FUN_0042989e(void) { int iVar1; undefined4 *puVar2; iVar1 = DAT_004e5948; DAT_004e5948 = DAT_004e5948 + 1; puVar2 = DAT_004e5944; if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { FUN_00402b98(puVar2,0x24,100,100,s_VChainLinkOf_004e56b7); } DAT_004e5944 = puVar2; FUN_00402f74((int)DAT_004e5944); return; } /* @004298ee file=? name=FUN_004298ee */ void __cdecl FUN_004298ee(undefined4 *param_1) { FUN_00402f98((int)DAT_004e5944,param_1); DAT_004e5948 = DAT_004e5948 + -1; if (DAT_004e5948 == 0) { if (DAT_004e5944 != (int *)0x0) { FUN_00402c28(DAT_004e5944,0); FUN_004022d0(DAT_004e5944); } DAT_004e5944 = (int *)0x0; } return; } /* @0042995c file=? name=FUN_0042995c */ void __cdecl FUN_0042995c(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) { *param_1 = 0x18; param_1[1] = 1; param_1[2] = 1; param_1[3] = param_2; param_1[4] = param_3; param_1[5] = param_4; return; } /* @0042998c file=? name=FUN_0042998c */ void __cdecl FUN_0042998c(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { *param_1 = 0x14; param_1[1] = 7; param_1[2] = 1; param_1[3] = param_2; param_1[4] = param_3; return; } /* @004299b4 file=? name=FUN_004299b4 */ void __cdecl FUN_004299b4(undefined4 *param_1,undefined4 param_2) { *param_1 = 0x10; param_1[1] = 0xb; param_1[2] = 1; param_1[3] = param_2; return; } /* @004299d8 file=? name=FUN_004299d8 */ void __cdecl FUN_004299d8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, undefined4 param_5) { *param_1 = 0x1c; param_1[1] = 0xe; param_1[2] = 1; param_1[3] = param_2; param_1[4] = param_3; param_1[5] = param_4; param_1[6] = param_5; return; } /* @00429a0c file=? name=FUN_00429a0c */ undefined4 * __cdecl FUN_00429a0c(undefined4 *param_1,int *param_2) { int *piVar1; undefined4 *puVar2; int iVar3; int *local_8; FUN_004178cc(param_1,2); *param_1 = &PTR_FUN_004e5ac8; puVar2 = (undefined4 *)FUN_00402298(0x10); if (puVar2 == (undefined4 *)0x0) { iVar3 = 0; } else { iVar3 = FUN_004023f4(puVar2); } param_1[9] = iVar3; piVar1 = (int *)(param_1[9] + 0xc); *piVar1 = *piVar1 + 1; param_1[4] = 0; param_1[3] = 0; param_1[6] = 0; param_1[5] = 0; param_1[7] = 0; param_1[8] = 0; FUN_00402a4c((int *)&local_8,param_1 + 9,param_2); piVar1 = local_8 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_8,3); } param_1[10] = 0; return param_1; } /* @00429a9c file=? name=FUN_00429a9c */ undefined4 * __cdecl FUN_00429a9c(undefined4 *param_1,int *param_2,int *param_3) { int *piVar1; int iVar2; undefined4 *puVar3; int iVar4; int *local_8; FUN_004178cc(param_1,2); *param_1 = &PTR_FUN_004e5ac8; puVar3 = (undefined4 *)FUN_00402298(0x10); if (puVar3 == (undefined4 *)0x0) { iVar4 = 0; } else { iVar4 = FUN_004023f4(puVar3); } param_1[9] = iVar4; piVar1 = (int *)(param_1[9] + 0xc); *piVar1 = *piVar1 + 1; FUN_00402a4c((int *)&local_8,param_1 + 9,param_2); piVar1 = local_8 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(local_8,3); } iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),*(char **)(*param_3 + 8),0xf,-1); if (iVar4 == 0) { param_1[4] = 0; param_1[3] = 0; param_1[6] = 0; param_1[5] = 0; param_1[7] = 0; param_1[8] = 0; param_1[10] = 0; } else { iVar2 = *(int *)(iVar4 + 4); *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1; if (iVar2 == 0) { FUN_00406cd0(iVar4); } puVar3 = *(undefined4 **)(iVar4 + 0x3c); param_1[7] = *puVar3; param_1[8] = puVar3[1]; param_1[10] = puVar3[6]; param_1[4] = puVar3[2]; param_1[3] = puVar3[3]; param_1[6] = puVar3[4]; param_1[5] = puVar3[5]; *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + -1; } return param_1; } /* @00429b94 file=? name=FUN_00429b94 */ float10 __cdecl FUN_00429b94(int param_1,float *param_2) { return -((float10)*param_2 * (float10)*(float *)(param_1 + 0x10)); } /* @00429ba8 file=? name=FUN_00429ba8 */ void __cdecl FUN_00429ba8(int *param_1,byte param_2) { int *piVar1; int *piVar2; if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e5ac8; piVar2 = (int *)param_1[9]; piVar1 = piVar2 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(piVar2,3); } FUN_0041790c(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00429bec file=? name=FUN_00429bec */ undefined4 __cdecl FUN_00429bec(int param_1,char *param_2,int param_3,undefined4 param_4,float *param_5) { bool bVar1; float *pfVar2; int iVar3; undefined3 extraout_var; undefined4 *puVar4; pfVar2 = param_5; if (param_5 == (float *)0x0) { pfVar2 = (float *)FUN_00402298(0x1c); } iVar3 = FUN_00404118(param_3,s_gamedata_004e5950,s_KillBonus_004e5959,pfVar2); if (iVar3 == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_Missing_KillBonus_004e5963,(char *)0x0); FUN_004d9c38((int *)&DAT_00524e68); } else { iVar3 = FUN_00404118(param_3,s_gamedata_004e5975,s_SpecialCaseDeathPenalty_004e597e,pfVar2 + 1); if (iVar3 == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_Missing_SpecialCaseDeathPenalty_004e5996,(char *)0x0); FUN_004d9c38((int *)&DAT_00524e68); } else { iVar3 = FUN_00404118(param_3,s_gamedata_004e59b6,s_DamageReceivedModifier_004e59bf,pfVar2 + 2) ; if (iVar3 == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_Missing_DamageReceivedModifier_004e59d6,(char *)0x0); FUN_004d9c38((int *)&DAT_00524e68); } else { iVar3 = FUN_00404118(param_3,s_gamedata_004e59f5,s_DamageInflictedModifier_004e59fe, pfVar2 + 3); if (iVar3 == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_Missing_DamageInflictedModifier_004e5a16,(char *)0x0); FUN_004d9c38((int *)&DAT_00524e68); } else { bVar1 = FUN_004040d8(param_3,s_gamedata_004e5a36,s_ReturnFromDeath_004e5a3f, (int *)(pfVar2 + 6)); if (CONCAT31(extraout_var,bVar1) == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_Missing_ReturnFromDeath_004e5a4f,(char *)0x0); FUN_004d9c38((int *)&DAT_00524e68); } else { iVar3 = FUN_00404118(param_3,s_gamedata_004e5a67,s_DamageBias_004e5a70,pfVar2 + 4); if (iVar3 == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_Missing_DamageBias_004e5a7b,(char *)0x0); FUN_004d9c38((int *)&DAT_00524e68); } else { iVar3 = FUN_00404118(param_3,s_gamedata_004e5a8e,s_FriendlyFirePenalty_004e5a97, pfVar2 + 5); if (iVar3 != 0) { if (param_5 == (float *)0x0) { puVar4 = (undefined4 *)FUN_00406db4(param_1,param_2,0xf,1,0,pfVar2,0x1c,-1); FUN_004022d0((int *)pfVar2); return *puVar4; } return 0; } FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_Missing_FriendlyFirePenalty_004e5aab,(char *)0x0); FUN_004d9c38((int *)&DAT_00524e68); } } } } } } if (param_5 == (float *)0x0) { FUN_004022d0((int *)pfVar2); } return 0xffffffff; } /* @00429e80 file=? name=FUN_00429e80 */ void __cdecl FUN_00429e80(int param_1,int param_2) { *(float *)(param_1 + 0x204) = *(float *)(param_2 + 0x1c) + *(float *)(param_1 + 0x204); return; } /* @00429e9c file=? name=FUN_00429e9c */ void FUN_00429e9c(void) { return; } /* @00429ea4 file=? name=FUN_00429ea4 */ undefined4 * __cdecl FUN_00429ea4(undefined4 *param_1,int param_2,undefined4 param_3) { char cVar1; undefined4 *puVar2; uint uVar3; uint uVar4; char *pcVar5; char *pcVar6; FUN_0041ff38(param_1,param_2,param_3); *param_1 = &PTR_FUN_004e5bb8; uVar3 = 0xffffffff; pcVar5 = (char *)(param_2 + 0x4c); do { pcVar6 = pcVar5; if (uVar3 == 0) break; uVar3 = uVar3 - 1; pcVar6 = pcVar5 + 1; cVar1 = *pcVar5; pcVar5 = pcVar6; } while (cVar1 != '\0'); uVar3 = ~uVar3; pcVar5 = pcVar6 + -uVar3; pcVar6 = (char *)(param_1 + 0x71); for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; pcVar5 = pcVar5 + 4; pcVar6 = pcVar6 + 4; } for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { *pcVar6 = *pcVar5; pcVar5 = pcVar5 + 1; pcVar6 = pcVar6 + 1; } param_1[0x81] = (float)*(int *)(param_2 + 0x8c); puVar2 = FUN_004212b0(*(int *)(DAT_004efc94 + 0x24),s_Teams_004e5b7a); (**(code **)(puVar2[4] + 4))(puVar2 + 4,param_1); param_1[10] = param_1[10] | 0x10; return param_1; } /* @00429f30 file=? name=FUN_00429f30 */ void __cdecl FUN_00429f30(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e5bb8; FUN_00420508(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @00429f5c file=? name=FUN_00429f5c */ undefined4 * __cdecl FUN_00429f5c(int param_1) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_00402298(0x208); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_00429ea4(puVar1,param_1,&DAT_004e5b04); } return puVar1; } /* @00429f8c file=? name=FUN_00429f8c */ undefined4 __cdecl FUN_00429f8c(undefined4 *param_1) { char cVar1; int iVar2; undefined4 uVar3; char *pcVar4; uint uVar5; uint uVar6; char *pcVar7; iVar2 = FUN_00420234(param_1); if (iVar2 == 0) { uVar3 = 0; } else { *param_1 = 0x90; param_1[7] = 0x58; param_1[0xb] = 0xa00; param_1[0x13] = s_DEFUALT_004e5b80._0_4_; param_1[0x14] = s_DEFUALT_004e5b80._4_4_; pcVar4 = FUN_004d4d1c((char *)0x0,&DAT_004e5b88); if (pcVar4 == (char *)0x0) { FUN_004dbb24((int *)&DAT_00524e68,s_InitialScore_missing__004e5b8a,(char *)0x0); uVar3 = 0; } else { iVar2 = FUN_004dd1e0(pcVar4); param_1[0x23] = iVar2; pcVar4 = FUN_004d4d1c((char *)0x0,&DAT_004e5ba1); if (pcVar4 == (char *)0x0) { FUN_004dbb24((int *)&DAT_00524e68,s_teamName_missing__004e5ba3,(char *)0x0); uVar3 = 0; } else { uVar5 = 0xffffffff; do { pcVar7 = pcVar4; if (uVar5 == 0) break; uVar5 = uVar5 - 1; pcVar7 = pcVar4 + 1; cVar1 = *pcVar4; pcVar4 = pcVar7; } while (cVar1 != '\0'); uVar5 = ~uVar5; pcVar4 = pcVar7 + -uVar5; pcVar7 = (char *)(param_1 + 0x13); for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { *(undefined4 *)pcVar7 = *(undefined4 *)pcVar4; pcVar4 = pcVar4 + 4; pcVar7 = pcVar7 + 4; } uVar3 = 1; for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { *pcVar7 = *pcVar4; pcVar4 = pcVar4 + 1; pcVar7 = pcVar7 + 1; } } } } return uVar3; } /* @0042a06c file=? name=FUN_0042a06c */ void __cdecl FUN_0042a06c(int param_1) { FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e5ad4); return; } /* @0042a150 file=? name=FUN_0042a150 */ void __cdecl FUN_0042a150(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4) { undefined4 uVar1; int *piVar2; int iVar3; uint *puVar4; uint local_88 [5]; undefined4 local_74; undefined4 local_70; undefined4 local_6c; undefined4 local_68 [2]; undefined4 local_60; undefined4 local_5c; undefined4 local_58; undefined4 local_54; undefined4 local_50; undefined4 local_4c; undefined4 local_48; undefined4 local_44; undefined4 local_40; undefined4 local_3c [2]; undefined4 local_34 [2]; undefined4 local_2c; undefined4 local_28; undefined4 local_24; undefined4 local_20; undefined4 local_1c; undefined4 local_18; undefined4 local_14; undefined4 local_10; int local_c; undefined4 local_8; local_2c = DAT_004e0fec; local_28 = DAT_004e0ff0; local_24 = DAT_004e0ff4; local_20 = DAT_004e0ff8; local_1c = DAT_004e0ffc; local_18 = DAT_004e1000; local_14 = DAT_004e1004; FUN_00408440(&local_2c,param_4); local_8 = *(undefined4 *)(param_1 + 0x14); local_88[0] = 0x5c; local_88[1] = 3; local_88[2] = 1; FUN_00420ea4(local_88 + 3,(undefined4 *)&DAT_00522524); local_74 = 0; local_70 = 0; local_6c = 0x31; FUN_00420ea4(local_68,(undefined4 *)&DAT_00522524); local_60 = local_8; local_5c = 0x100; local_58 = local_2c; local_54 = local_28; local_50 = local_24; local_4c = local_20; local_48 = local_1c; local_44 = local_18; local_40 = local_14; FUN_00420ea4(local_3c,param_2); FUN_00420ea4(local_34,param_3); piVar2 = (int *)FUN_00414b60(); local_c = *piVar2; local_10 = *(undefined4 *)(param_1 + 0x18); iVar3 = FUN_004dcd94(); local_c = local_c + iVar3; uVar1 = *(undefined4 *)(DAT_004efc94 + 0x28); puVar4 = (uint *)FUN_004336f0(local_88); FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,uVar1,puVar4,local_c); FUN_004022d0((int *)puVar4); return; } /* @0042a2c8 file=? name=FUN_0042a2c8 */ undefined4 * __cdecl FUN_0042a2c8(undefined4 *param_1,int *param_2) { int *piVar1; FUN_00415e90(param_1,1); *param_1 = &PTR_FUN_004e5d74; piVar1 = (int *)(**(code **)(*param_2 + 0x1c))(param_2,param_1 + 3,4); piVar1 = (int *)(**(code **)(*piVar1 + 0x1c))(piVar1,param_1 + 5,4); (**(code **)(*piVar1 + 0x1c))(piVar1,param_1 + 4,4); (**(code **)(*param_2 + 0x1c))(param_2,param_1 + 6,4); return param_1; } /* @0042a334 file=? name=FUN_0042a334 */ void __cdecl FUN_0042a334(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e5d74; FUN_00415ed8(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042a360 file=? name=FUN_0042a360 */ /* WARNING: Type propagation algorithm not settling */ undefined4 __cdecl FUN_0042a360(int param_1,int *param_2,int param_3,int *param_4,int *param_5) { int *piVar1; char *pcVar2; int iVar3; char *pcVar4; char *pcVar5; bool bVar6; undefined4 uVar7; float local_18 [2]; char *local_10; char *local_c; float local_8; iVar3 = FUN_00404118(param_3,(char *)param_4[2],s_DamageLevel_004e5bf0,&local_8); if (iVar3 == 0) { local_8 = -1.0; } (**(code **)(*param_5 + 0x20))(param_5,&local_8,4); iVar3 = FUN_00404088(param_3,(char *)param_4[2],s_ExplosionModelFile_004e5bfc,&local_c); if (iVar3 == 0) { FUN_004dbb24(&DAT_00524e20,(char *)param_2[2],(char *)0x0); FUN_004dbb24(&DAT_00524e20,&DAT_004e5c0f,(char *)0x0); FUN_004dbb24(&DAT_00524e20,(char *)param_4[2],(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_ExplosionModelFile__004e5c13,(char *)0x0); FUN_004d9c38(&DAT_00524e20); uVar7 = 0; piVar1 = param_2 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(param_2,3); } piVar1 = param_4 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(param_4,3); } } else { iVar3 = FUN_00406ff8(param_1,local_c,1,-1); if (iVar3 == 0) { FUN_004dbb24(&DAT_00524e20,(char *)param_2[2],(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_cannot_find_004e5c30,(char *)0x0); FUN_004dbb24(&DAT_00524e20,local_c,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_in_resource_file__004e5c3e,(char *)0x0); uVar7 = 0; piVar1 = param_2 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(param_2,3); } piVar1 = param_4 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(param_4,3); } } else { (**(code **)(*param_5 + 0x20))(param_5,iVar3,4); iVar3 = FUN_00404088(param_3,(char *)param_4[2],s_GraphicState_004e5c52,&local_10); if (iVar3 == 0) { local_18[1] = 0.0; } else { pcVar5 = s_Destroyed_004e5c5f; pcVar4 = local_10; do { if (*pcVar4 != *pcVar5) goto LAB_0042a548; bVar6 = true; if (*pcVar4 == '\0') break; pcVar2 = pcVar4 + 1; if (*pcVar2 != pcVar5[1]) goto LAB_0042a548; pcVar4 = pcVar4 + 2; pcVar5 = pcVar5 + 2; bVar6 = *pcVar2 == '\0'; } while (!bVar6); if (bVar6) { local_18[1] = 1.4013e-45; } else { LAB_0042a548: pcVar4 = &DAT_004e5c69; do { if (*local_10 != *pcVar4) goto LAB_0042a57c; bVar6 = true; if (*local_10 == '\0') break; pcVar5 = local_10 + 1; if (*pcVar5 != pcVar4[1]) goto LAB_0042a57c; local_10 = local_10 + 2; pcVar4 = pcVar4 + 2; bVar6 = *pcVar5 == '\0'; } while (!bVar6); if (bVar6) { local_18[1] = 2.8026e-45; } } } LAB_0042a57c: (**(code **)(*param_5 + 0x20))(param_5,local_18 + 1,4); iVar3 = FUN_00404118(param_3,(char *)param_4[2],s_TimeDelay_004e5c6e,local_18); if (iVar3 == 0) { local_18[0] = 0.0; } (**(code **)(*param_5 + 0x20))(param_5,local_18,4); uVar7 = 1; piVar1 = param_2 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(param_2,3); } piVar1 = param_4 + 3; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_004024d8(param_4,3); } } } return uVar7; } /* @0042a5f4 file=? name=FUN_0042a5f4 */ undefined4 __cdecl FUN_0042a5f4(int param_1,float param_2,float param_3) { int iVar1; undefined4 uVar2; int local_20 [7]; FUN_0041f261(local_20,param_1); do { iVar1 = (**(code **)(local_20[0] + 0x28))(local_20); if (iVar1 == 0) { uVar2 = 0; FUN_0041f29f(local_20,2); return uVar2; } } while ((*(float *)(iVar1 + 0xc) <= param_2) || (param_3 < *(float *)(iVar1 + 0xc))); uVar2 = 1; FUN_0041f29f(local_20,2); return uVar2; } /* @0042a664 file=? name=FUN_0042a664 */ int __cdecl FUN_0042a664(int param_1,float param_2) { int iVar1; int local_20 [7]; FUN_0041f261(local_20,param_1); do { iVar1 = (**(code **)(local_20[0] + 0x28))(local_20); if (iVar1 == 0) { iVar1 = 0; FUN_0041f29f(local_20,2); return iVar1; } } while (*(float *)(iVar1 + 0xc) <= param_2); FUN_0041f29f(local_20,2); return iVar1; } /* @0042a6c4 file=? name=FUN_0042a6c4 */ int __cdecl FUN_0042a6c4(int param_1,int param_2) { int iVar1; int local_20 [7]; FUN_0041f261(local_20,param_1); do { iVar1 = (**(code **)(local_20[0] + 0x28))(local_20); if (iVar1 == 0) { iVar1 = 0; FUN_0041f29f(local_20,2); return iVar1; } } while (param_2 != *(int *)(iVar1 + 0x10)); FUN_0041f29f(local_20,2); return iVar1; } /* @0042a728 file=? name=FUN_0042a728 */ void __cdecl FUN_0042a728(undefined4 param_1,int param_2,undefined4 *param_3,undefined4 *param_4) { FUN_0042a150(param_2,param_3,param_4,(undefined4 *)&stack0x00000014); return; } /* @0042a748 file=? name=FUN_0042a748 */ int * __cdecl FUN_0042a748(int *param_1,int *param_2) { undefined4 *puVar1; int local_c; int local_8; FUN_0042ab72(param_1,0,1); *param_1 = (int)&PTR_FUN_004e5d58; (**(code **)(*param_2 + 0x1c))(param_2,&local_8,4); local_c = 0; if (0 < local_8) { do { puVar1 = (undefined4 *)FUN_00402298(0x1c); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_0042a2c8(puVar1,param_2); } (**(code **)(*param_1 + 8))(param_1,puVar1,&local_c); local_c = local_c + 1; } while (local_c < local_8); } return param_1; } /* @0042a7cc file=? name=FUN_0042a7cc */ void __cdecl FUN_0042a7cc(int *param_1,byte param_2) { void *this; int local_20 [7]; if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e5d58; FUN_0041f261(local_20,(int)param_1); FUN_00417858(this,local_20,1); FUN_0041f29f(local_20,2); FUN_0042ab95(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042a828 file=? name=FUN_0042a828 */ undefined4 __cdecl FUN_0042a828(int param_1,int *param_2,uint param_3,int *param_4,int *param_5) { undefined4 *puVar1; int iVar2; uint *puVar3; undefined8 uVar4; undefined4 uVar5; int *piVar6; int local_c; int *local_8; local_8 = FUN_0040485c(param_3,(char *)0x0); iVar2 = FUN_00403b60((int)local_8); if (iVar2 == 0) { uVar4 = FUN_004dbd4c(&DAT_00524e20,param_3); FUN_004dbb24((int *)uVar4,s_is_empty_or_missing_004e5c78,(char *)0x0); FUN_004d9c38((int *)uVar4); if (local_8 != (int *)0x0) { (**(code **)*local_8)(local_8,3); } uVar5 = 0; piVar6 = param_2 + 3; *piVar6 = *piVar6 + -1; if (*piVar6 == 0) { FUN_004024d8(param_2,3); } piVar6 = param_4 + 3; *piVar6 = *piVar6 + -1; if (*piVar6 == 0) { FUN_004024d8(param_4,3); } } else { local_c = FUN_00403b60((int)local_8); (**(code **)(*param_5 + 0x20))(param_5,&local_c,4); for (puVar1 = (undefined4 *)local_8[1]; puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1) { piVar6 = param_5; puVar3 = (uint *)FUN_00402298(0x10); if (puVar3 == (uint *)0x0) { puVar3 = (uint *)0x0; } else { puVar3 = FUN_00402460(puVar3,(char *)(puVar1 + 2)); } puVar3[3] = puVar3[3] + 1; param_4[3] = param_4[3] + 1; FUN_0042a360(param_1,param_4,param_3,(int *)puVar3,piVar6); } if (local_8 != (int *)0x0) { (**(code **)*local_8)(local_8,3); } uVar5 = 1; piVar6 = param_2 + 3; *piVar6 = *piVar6 + -1; if (*piVar6 == 0) { FUN_004024d8(param_2,3); } piVar6 = param_4 + 3; *piVar6 = *piVar6 + -1; if (*piVar6 == 0) { FUN_004024d8(param_4,3); } } return uVar5; } /* @0042a984 file=? name=FUN_0042a984 */ undefined4 * __cdecl FUN_0042a984(undefined4 *param_1,int param_2) { undefined4 uVar1; int iVar2; FUN_0041b838(param_1,3,&DAT_004e32ac); *param_1 = &PTR_FUN_004e5d40; param_1[5] = param_2; (**(code **)(*(int *)(param_2 + 0xbc) + 4))(param_2 + 0xbc,param_1); uVar1 = FUN_004022b0(*(int *)(param_1[5] + 0x11c) << 2); param_1[4] = uVar1; for (iVar2 = 0; iVar2 < *(int *)(param_1[5] + 0x11c); iVar2 = iVar2 + 1) { *(undefined4 *)(param_1[4] + iVar2 * 4) = 0; } return param_1; } /* @0042a9f4 file=? name=FUN_0042a9f4 */ void __cdecl FUN_0042a9f4(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e5d40; FUN_004022e8((int *)param_1[4]); FUN_0041b898(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042aa2c file=? name=FUN_0042aa2c */ void __cdecl FUN_0042aa2c(int param_1) { ushort *puVar1; int iVar2; int iVar3; uint uVar4; int iVar5; uint local_2c [7]; int *local_10; int local_c; int local_8; for (iVar5 = 0; local_c = 0, iVar5 < *(int *)(*(int *)(param_1 + 0x14) + 0x11c); iVar5 = iVar5 + 1 ) { iVar2 = *(int *)(*(int *)(*(int *)(param_1 + 0x14) + 0x120) + iVar5 * 4); local_8 = *(int *)(iVar2 + 0xd4); if ((*(uint *)(iVar2 + 0xb8) & 4) != 0) { local_c = FUN_0042a664(local_8,*(float *)(iVar2 + 0x158)); iVar3 = FUN_0042a5f4(local_8,*(float *)(*(int *)(param_1 + 0x10) + iVar5 * 4), *(float *)(iVar2 + 0x158)); if ((iVar3 != 0) && ((*(uint *)(*(int *)(param_1 + 0x14) + 0x28) & 0xc) == 0)) { puVar1 = (ushort *)(*(int *)(param_1 + 0x14) + 0x18); *puVar1 = *puVar1 | 2; } *(undefined4 *)(*(int *)(param_1 + 0x10) + iVar5 * 4) = *(undefined4 *)(iVar2 + 0x158); } if ((*(uint *)(iVar2 + 0xb8) & 8) != 0) { local_c = FUN_0042a6c4(local_8,*(int *)(iVar2 + 0x78)); if ((*(uint *)(*(int *)(param_1 + 0x14) + 0x28) & 0xc) == 0) { puVar1 = (ushort *)(*(int *)(param_1 + 0x14) + 0x18); *puVar1 = *puVar1 | 2; } } if (local_c != 0) { local_10 = *(int **)(param_1 + 0x14); FUN_0043663c(local_2c,(int)local_10,iVar2,*(undefined4 *)(local_c + 0x14)); FUN_004364e4(*(int *)(DAT_004efc94 + 0x38),local_10,local_2c); uVar4 = *(uint *)(*(int *)(param_1 + 0x14) + 0x28) & 0xc; if (((uVar4 == 0) && ((*(byte *)(*(int *)(param_1 + 0x14) + 0x18) & 2) == 0)) || (uVar4 == 4)) { *(undefined4 *)(iVar2 + 0xb8) = 0; } } } return; } /* @0042ab68 file=? name=FUN_0042ab68 */ undefined4 FUN_0042ab68(void) { return 1; } /* @0042ab72 file=? name=FUN_0042ab72 */ undefined4 * __cdecl FUN_0042ab72(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { FUN_00419184(param_1,param_2,param_3); *param_1 = &PTR_FUN_004e5d24; return param_1; } /* @0042ab95 file=? name=FUN_0042ab95 */ void __cdecl FUN_0042ab95(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e5d24; FUN_004191b4(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042abc1 file=? name=FUN_0042abc1 */ undefined4 __cdecl FUN_0042abc1(undefined4 param_1,int param_2,int param_3) { undefined4 uVar1; if (*(int *)(param_3 + 0x14) == *(int *)(param_2 + 0x14)) { uVar1 = 0; } else { uVar1 = 1; if (*(int *)(param_2 + 0x14) <= *(int *)(param_3 + 0x14)) { uVar1 = 0xffffffff; } } return uVar1; } /* @0042abf0 file=? name=FUN_0042abf0 */ undefined4 __cdecl FUN_0042abf0(undefined4 param_1,int *param_2,int param_3) { undefined4 uVar1; if (*(int *)(param_3 + 0x14) == *param_2) { uVar1 = 0; } else { uVar1 = 1; if (*param_2 <= *(int *)(param_3 + 0x14)) { uVar1 = 0xffffffff; } } return uVar1; } /* @0042ac1c file=? name=FUN_0042ac1c */ undefined4 * __cdecl FUN_0042ac1c(undefined4 *param_1,int param_2) { FUN_00417d00(param_1,param_2); *param_1 = &PTR_FUN_004e5cd4; return param_1; } /* @0042ac3b file=? name=FUN_0042ac3b */ undefined4 * __cdecl FUN_0042ac3b(undefined4 *param_1,int param_2) { FUN_00417d00(param_1,param_2); *param_1 = &PTR_FUN_004e5cd4; return param_1; } /* @0042ac5a file=? name=FUN_0042ac5a */ undefined4 * __cdecl FUN_0042ac5a(undefined4 *param_1,int param_2) { FUN_00417d28(param_1,param_2); *param_1 = &PTR_FUN_004e5cd4; return param_1; } /* @0042ac79 file=? name=FUN_0042ac79 */ void __cdecl FUN_0042ac79(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e5cd4; FUN_00417d54(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042aca5 file=? name=FUN_0042aca5 */ undefined4 * __cdecl FUN_0042aca5(undefined4 param_1,int param_2,undefined4 *param_3) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_0041d485(); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_0041d42e(puVar1,param_1,param_2,param_3); } return puVar1; } /* @0042acd8 file=? name=FUN_0042acd8 */ undefined4 * __cdecl FUN_0042acd8(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4) { int *piVar1; FUN_00415e90(param_1,1); *param_1 = &PTR_FUN_004e61a0; piVar1 = FUN_004de998(param_1 + 3,4,4,1,FUN_0042ba46); FUN_0040aadc(param_1 + 0xe); param_1[0x1c] = s_camera_004e5d78._0_4_; *(undefined2 *)(param_1 + 0x1d) = s_camera_004e5d78._4_2_; *(char *)((int)param_1 + 0x76) = s_camera_004e5d78[6]; FUN_004dd3ec((uint)piVar1,(char *)((int)param_1 + 0x76),10); param_1[0x1b] = piVar1; param_1[0x1a] = param_4; FUN_0042b3ac((int)param_1,param_3); return param_1; } /* @0042ad54 file=? name=FUN_0042ad54 */ undefined4 * __cdecl FUN_0042ad54(undefined4 *param_1,int param_2) { int iVar1; FUN_00415e90(param_1,1); *param_1 = &PTR_FUN_004e61a0; FUN_004de998(param_1 + 3,4,4,1,FUN_0042ba46); FUN_0040aadc(param_1 + 0xe); param_1[0x1b] = *(undefined4 *)(param_2 + 8); FUN_0040a938(param_1 + 7,(undefined4 *)(param_2 + 0xc)); FUN_0040ab44((float *)(param_1 + 0xe),param_1 + 7); param_1[0x1a] = *(undefined4 *)(param_2 + 4); iVar1 = 0; do { param_1[iVar1 + 3] = *(undefined4 *)(iVar1 * 4 + param_2 + 0x28); iVar1 = iVar1 + 1; } while (iVar1 < 4); param_1[0x1c] = s_camera_004e5d7f._0_4_; *(undefined2 *)(param_1 + 0x1d) = s_camera_004e5d7f._4_2_; *(char *)((int)param_1 + 0x76) = s_camera_004e5d7f[6]; FUN_004dd3ec(param_1[0x1b],(char *)((int)param_1 + 0x76),10); return param_1; } /* @0042ae14 file=munga/caminst.cpp name=FUN_0042ae14 */ undefined4 * __cdecl FUN_0042ae14(undefined4 *param_1,undefined4 param_2,char *param_3) { char cVar1; bool bVar2; int iVar3; undefined4 uVar4; undefined3 extraout_var; uint uVar5; uint uVar6; char *pcVar7; int *piVar8; char *pcVar9; char *local_10; float *local_c; undefined4 *local_8; FUN_00415e90(param_1,1); *param_1 = &PTR_FUN_004e61a0; piVar8 = FUN_004de998(param_1 + 3,4,4,1,FUN_0042ba46); local_8 = param_1 + 0xe; FUN_0040aadc(local_8); uVar5 = 0xffffffff; pcVar7 = param_3; do { pcVar9 = pcVar7; if (uVar5 == 0) break; uVar5 = uVar5 - 1; pcVar9 = pcVar7 + 1; cVar1 = *pcVar7; pcVar7 = pcVar9; } while (cVar1 != '\0'); uVar5 = ~uVar5; pcVar7 = pcVar9 + -uVar5; pcVar9 = (char *)(param_1 + 0x1c); for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) { *(undefined4 *)pcVar9 = *(undefined4 *)pcVar7; pcVar7 = pcVar7 + 4; pcVar9 = pcVar9 + 4; } for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) { *pcVar9 = *pcVar7; pcVar7 = pcVar7 + 1; pcVar9 = pcVar9 + 1; } iVar3 = FUN_00404118((int)piVar8,param_3,s_tranx_004e5d86,(float *)(param_1 + 7)); if (iVar3 == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_tranx__004e5d8c,(char *)0x0); FUN_0040385c(s_Bad_cameras__004e5d9d,s_d__tesla_bt_munga_CAMINST_CPP_004e5daa,0x69); } iVar3 = FUN_00404118((int)piVar8,param_3,s_trany_004e5dc8,(float *)(param_1 + 8)); if (iVar3 == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_trany__004e5dce,(char *)0x0); FUN_0040385c(s_Bad_cameras__004e5ddf,s_d__tesla_bt_munga_CAMINST_CPP_004e5dec,0x6a); } iVar3 = FUN_00404118((int)piVar8,param_3,s_tranz_004e5e0a,(float *)(param_1 + 9)); if (iVar3 == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_tranz__004e5e10,(char *)0x0); FUN_0040385c(s_Bad_cameras__004e5e21,s_d__tesla_bt_munga_CAMINST_CPP_004e5e2e,0x6b); } iVar3 = FUN_00404118((int)piVar8,param_3,s_quatx_004e5e4c,(float *)(param_1 + 10)); if (iVar3 == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_quatx__004e5e52,(char *)0x0); FUN_0040385c(s_Bad_cameras__004e5e63,s_d__tesla_bt_munga_CAMINST_CPP_004e5e70,0x72); } iVar3 = FUN_00404118((int)piVar8,param_3,s_quaty_004e5e8e,(float *)(param_1 + 0xb)); if (iVar3 == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_quaty__004e5e94,(char *)0x0); FUN_0040385c(s_Bad_cameras__004e5ea5,s_d__tesla_bt_munga_CAMINST_CPP_004e5eb2,0x73); } iVar3 = FUN_00404118((int)piVar8,param_3,s_quatz_004e5ed0,(float *)(param_1 + 0xc)); if (iVar3 == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_quatz__004e5ed6,(char *)0x0); FUN_0040385c(s_Bad_cameras__004e5ee7,s_d__tesla_bt_munga_CAMINST_CPP_004e5ef4,0x74); } iVar3 = FUN_00404118((int)piVar8,param_3,s_quatw_004e5f12,(float *)(param_1 + 0xd)); if (iVar3 == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_quatw__004e5f18,(char *)0x0); FUN_0040385c(s_Bad_cameras__004e5f29,s_d__tesla_bt_munga_CAMINST_CPP_004e5f36,0x75); } local_c = (float *)(param_1 + 0xe); FUN_0040ab44(local_c,param_1 + 7); param_1[3] = 0xc0490fdb; FUN_00404118((int)piVar8,param_3,s_minYawClamp_004e5f54,(float *)(param_1 + 3)); param_1[4] = 0x40490fdb; FUN_00404118((int)piVar8,param_3,s_maxYawClamp_004e5f60,(float *)(param_1 + 4)); param_1[5] = 0xbfc90fdb; FUN_00404118((int)piVar8,param_3,s_minPitchClamp_004e5f6c,(float *)(param_1 + 5)); param_1[6] = 0x3fc90fdb; FUN_00404118((int)piVar8,param_3,s_maxPitchClamp_004e5f7a,(float *)(param_1 + 6)); iVar3 = FUN_00404088((int)piVar8,param_3,s_cameraType_004e5f88,&local_10); if (iVar3 == 0) { param_1[0x1a] = 1; } else { uVar4 = FUN_0042b1fc(local_10); param_1[0x1a] = uVar4; } bVar2 = FUN_004040d8((int)piVar8,param_3,s_cameraID_004e5f93,param_1 + 0x1b); if (CONCAT31(extraout_var,bVar2) == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_cameraID__004e5f9c,(char *)0x0); FUN_0040385c(s_Bad_cameras__004e5fb0,s_d__tesla_bt_munga_CAMINST_CPP_004e5fbd,0xaa); } return param_1; } /* @0042b1d0 file=? name=FUN_0042b1d0 */ void __cdecl FUN_0042b1d0(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e61a0; FUN_00415ed8(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042b1fc file=? name=FUN_0042b1fc */ undefined4 __cdecl FUN_0042b1fc(char *param_1) { char *pcVar1; char *pcVar2; char *pcVar3; bool bVar4; pcVar2 = s_DefaultCameraType_004e5fdb; pcVar3 = param_1; do { if (*pcVar2 != *pcVar3) goto LAB_0042b230; bVar4 = true; if (*pcVar2 == '\0') break; pcVar1 = pcVar2 + 1; if (*pcVar1 != pcVar3[1]) goto LAB_0042b230; pcVar2 = pcVar2 + 2; pcVar3 = pcVar3 + 2; bVar4 = *pcVar1 == '\0'; } while (!bVar4); if (bVar4) { return 1; } LAB_0042b230: pcVar3 = s_AlwaysSeesCameraType_004e5fed; do { if (*pcVar3 != *param_1) { return 0; } bVar4 = true; if (*pcVar3 == '\0') break; pcVar2 = pcVar3 + 1; if (*pcVar2 != param_1[1]) { return 0; } pcVar3 = pcVar3 + 2; param_1 = param_1 + 2; bVar4 = *pcVar2 == '\0'; } while (!bVar4); if (!bVar4) { return 0; } return 2; } /* @0042b264 file=? name=FUN_0042b264 */ undefined4 * __cdecl FUN_0042b264(int param_1,undefined4 *param_2) { undefined4 *puVar1; int iVar2; char *pcVar3; char *pcVar4; if (*(int *)(param_1 + 0x68) == 1) { pcVar3 = s_DefaultCameraType_004e6002; puVar1 = param_2; for (iVar2 = 4; iVar2 != 0; iVar2 = iVar2 + -1) { *puVar1 = *(undefined4 *)pcVar3; pcVar3 = pcVar3 + 4; puVar1 = puVar1 + 1; } *(undefined2 *)puVar1 = *(undefined2 *)pcVar3; puVar1 = param_2; } else { puVar1 = (undefined4 *)(*(int *)(param_1 + 0x68) + -2); if (puVar1 == (undefined4 *)0x0) { pcVar3 = s_AlwaysSeesCameraType_004e6014; pcVar4 = (char *)param_2; for (iVar2 = 5; iVar2 != 0; iVar2 = iVar2 + -1) { *(undefined4 *)pcVar4 = *(undefined4 *)pcVar3; pcVar3 = pcVar3 + 4; pcVar4 = pcVar4 + 4; } *pcVar4 = *pcVar3; puVar1 = param_2; } } return puVar1; } /* @0042b2a8 file=? name=FUN_0042b2a8 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __cdecl FUN_0042b2a8(int param_1,float *param_2,float *param_3) { float10 fVar1; float local_20; float local_1c; float local_18; float local_10; float local_c; float local_8; FUN_00408bf8(&local_20,param_3,(float *)(param_1 + 0x38)); local_8 = local_18 * local_18 + local_1c * local_1c + local_20 * local_20; fVar1 = FUN_004dcd00((double)local_8); if ((float10)_DAT_0042b3a8 < fVar1) { fVar1 = FUN_004dc8ec((double)-local_20,SUB84((double)-local_18,0), (uint)((ulonglong)(double)-local_18 >> 0x20)); fVar1 = FUN_00408110((float)fVar1); local_c = (float)fVar1; *param_2 = local_c; fVar1 = FUN_004dd138((double)(local_18 * local_18 + local_20 * local_20)); local_10 = (float)fVar1; fVar1 = FUN_004dc8ec((double)local_1c,SUB84((double)local_10,0), (uint)((ulonglong)(double)local_10 >> 0x20)); fVar1 = FUN_00408110((float)fVar1); param_2[1] = (float)fVar1; param_2[2] = 0.0; } else { FUN_00409498(param_2,(undefined4 *)&DAT_004e0f98); } return; } /* @0042b3ac file=? name=FUN_0042b3ac */ void __cdecl FUN_0042b3ac(int param_1,undefined4 *param_2) { float local_10; undefined4 local_c; FUN_0040954c(&local_10,(float *)(param_2 + 3)); *(undefined4 *)(param_1 + 0x10) = 0; *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_1 + 0x10); *(undefined4 *)(param_1 + 0x18) = local_c; *(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(param_1 + 0x18); local_c = 0; FUN_00408440((undefined4 *)(param_1 + 0x1c),param_2); FUN_00409a38((float *)(param_1 + 0x28),&local_10); FUN_0040ab44((float *)(param_1 + 0x38),(undefined4 *)(param_1 + 0x1c)); return; } /* @0042b428 file=? name=FUN_0042b428 */ void __cdecl FUN_0042b428(int param_1,undefined4 *param_2,float *param_3) { float *pfVar1; float local_20; float local_1c [2]; float local_14; float local_10; float local_8; FUN_00408440(param_2,(undefined4 *)(param_1 + 0x1c)); FUN_0040954c(&local_14,(float *)(param_1 + 0x28)); FUN_0042b2a8(param_1,&local_20,param_3); if (*(float *)(param_1 + 0xc) <= local_20) { if (local_20 <= *(float *)(param_1 + 0x10)) { pfVar1 = &local_20; } else { pfVar1 = (float *)(param_1 + 0x10); } } else { pfVar1 = (float *)(param_1 + 0xc); } local_8 = *pfVar1; local_20 = local_8; if (*(float *)(param_1 + 0x14) <= local_1c[0]) { if (local_1c[0] <= *(float *)(param_1 + 0x18)) { pfVar1 = local_1c; } else { pfVar1 = (float *)(param_1 + 0x18); } } else { pfVar1 = (float *)(param_1 + 0x14); } local_1c[0] = *pfVar1; local_14 = local_8 + local_14; local_10 = local_1c[0]; FUN_00409a38((float *)(param_2 + 3),&local_14); return; } /* @0042b4e0 file=? name=FUN_0042b4e0 */ void __cdecl FUN_0042b4e0(int param_1,float *param_2) { float local_10; float local_c; FUN_0042b2a8(param_1,&local_10,param_2); if (*(float *)(param_1 + 0xc) <= local_10) { if (*(float *)(param_1 + 0x10) < local_10) { *(float *)(param_1 + 0x10) = local_10; } } else { *(float *)(param_1 + 0xc) = local_10; } if (*(float *)(param_1 + 0x14) <= local_c) { if (*(float *)(param_1 + 0x18) < local_c) { *(float *)(param_1 + 0x18) = local_c; } } else { *(float *)(param_1 + 0x14) = local_c; } return; } /* @0042b550 file=? name=FUN_0042b550 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined4 __cdecl FUN_0042b550(int param_1,float *param_2) { undefined4 uVar1; float local_10; float local_c; FUN_0042b2a8(param_1,&local_10,param_2); if ((((local_10 < *(float *)(param_1 + 0xc) - _DAT_0042b5c0) || (*(float *)(param_1 + 0x10) + _DAT_0042b5c0 < local_10)) || (local_c < *(float *)(param_1 + 0x14) - _DAT_0042b5c4)) || (*(float *)(param_1 + 0x18) + _DAT_0042b5c4 < local_c)) { uVar1 = 0; } else { uVar1 = 1; } return uVar1; } /* @0042b5d4 file=? name=FUN_0042b5d4 */ void __cdecl FUN_0042b5d4(int param_1,int param_2) { char *pcVar1; char local_84 [128]; pcVar1 = (char *)(param_1 + 0x70); FUN_00404298(param_2,pcVar1,s_cameraID_004e6029,*(uint *)(param_1 + 0x6c)); FUN_0042b264(param_1,(undefined4 *)local_84); FUN_00404204(param_2,pcVar1,s_cameraType_004e6032,local_84); FUN_00404304(param_2,pcVar1,s_tranx_004e603d,*(float *)(param_1 + 0x1c)); FUN_00404304(param_2,pcVar1,s_trany_004e6043,*(float *)(param_1 + 0x20)); FUN_00404304(param_2,pcVar1,s_tranz_004e6049,*(float *)(param_1 + 0x24)); FUN_00404304(param_2,pcVar1,s_quatx_004e604f,*(float *)(param_1 + 0x28)); FUN_00404304(param_2,pcVar1,s_quaty_004e6055,*(float *)(param_1 + 0x2c)); FUN_00404304(param_2,pcVar1,s_quatz_004e605b,*(float *)(param_1 + 0x30)); FUN_00404304(param_2,pcVar1,s_quatw_004e6061,*(float *)(param_1 + 0x34)); FUN_00404304(param_2,pcVar1,s_minYawClamp_004e6067,*(float *)(param_1 + 0xc)); FUN_00404304(param_2,pcVar1,s_maxYawClamp_004e6073,*(float *)(param_1 + 0x10)); FUN_00404304(param_2,pcVar1,s_minPitchClamp_004e607f,*(float *)(param_1 + 0x14)); FUN_00404304(param_2,pcVar1,s_maxPitchClamp_004e608d,*(float *)(param_1 + 0x18)); FUN_00404490(param_2,pcVar1,(char *)0x0,(char *)0x0); return; } /* @0042b6f4 file=? name=FUN_0042b6f4 */ undefined4 __cdecl FUN_0042b6f4(undefined4 *param_1,int param_2,char *param_3) { bool bVar1; int iVar2; undefined4 uVar3; undefined3 extraout_var; char *local_8; iVar2 = FUN_00404118(param_2,param_3,s_tranx_004e609b,(float *)(param_1 + 3)); if (iVar2 == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_tranx__004e60a1,(char *)0x0); uVar3 = 0; } else { iVar2 = FUN_00404118(param_2,param_3,s_trany_004e60b2,(float *)(param_1 + 4)); if (iVar2 == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_trany__004e60b8,(char *)0x0); uVar3 = 0; } else { iVar2 = FUN_00404118(param_2,param_3,s_tranz_004e60c9,(float *)(param_1 + 5)); if (iVar2 == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_tranz__004e60cf,(char *)0x0); uVar3 = 0; } else { iVar2 = FUN_00404118(param_2,param_3,s_quatx_004e60e0,(float *)(param_1 + 6)); if (iVar2 == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_quatx__004e60e6,(char *)0x0); uVar3 = 0; } else { iVar2 = FUN_00404118(param_2,param_3,s_quaty_004e60f7,(float *)(param_1 + 7)); if (iVar2 == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_quaty__004e60fd,(char *)0x0); uVar3 = 0; } else { iVar2 = FUN_00404118(param_2,param_3,s_quatz_004e610e,(float *)(param_1 + 8)); if (iVar2 == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_quatz__004e6114,(char *)0x0); uVar3 = 0; } else { iVar2 = FUN_00404118(param_2,param_3,s_quatw_004e6125,(float *)(param_1 + 9)); if (iVar2 == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_quatw__004e612b,(char *)0x0); uVar3 = 0; } else { param_1[10] = 0xc0490fdb; FUN_00404118(param_2,param_3,s_minYawClamp_004e613c,(float *)(param_1 + 10)); param_1[0xb] = 0x40490fdb; FUN_00404118(param_2,param_3,s_maxYawClamp_004e6148,(float *)(param_1 + 0xb)); param_1[0xc] = 0xbfc90fdb; FUN_00404118(param_2,param_3,s_minPitchClamp_004e6154,(float *)(param_1 + 0xc)); param_1[0xd] = 0x3fc90fdb; FUN_00404118(param_2,param_3,s_maxPitchClamp_004e6162,(float *)(param_1 + 0xd)); iVar2 = FUN_00404088(param_2,param_3,s_cameraType_004e6170,&local_8); if (iVar2 == 0) { param_1[1] = 1; } else { uVar3 = FUN_0042b1fc(local_8); param_1[1] = uVar3; } bVar1 = FUN_004040d8(param_2,param_3,s_cameraID_004e617b,param_1 + 2); if (CONCAT31(extraout_var,bVar1) == 0) { FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0); FUN_004dbb24(&DAT_00524e20,s_missing_cameraID__004e6184,(char *)0x0); uVar3 = 0; } else { *param_1 = 0x38; uVar3 = 1; } } } } } } } } return uVar3; } /* @0042b9d0 file=? name=FUN_0042b9d0 */ undefined4 * __cdecl FUN_0042b9d0(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4) { FUN_0042acd8(param_1,param_2,param_3,param_4); *param_1 = &PTR_FUN_004e6198; return param_1; } /* @0042b9f8 file=? name=FUN_0042b9f8 */ undefined4 * __cdecl FUN_0042b9f8(undefined4 *param_1,int param_2) { FUN_0042ad54(param_1,param_2); *param_1 = &PTR_FUN_004e6198; return param_1; } /* @0042ba18 file=? name=FUN_0042ba18 */ undefined4 * __cdecl FUN_0042ba18(undefined4 *param_1,undefined4 param_2,char *param_3) { FUN_0042ae14(param_1,param_2,param_3); *param_1 = &PTR_FUN_004e6198; return param_1; } /* @0042ba3c file=? name=FUN_0042ba3c */ undefined4 FUN_0042ba3c(void) { return 1; } /* @0042ba46 file=? name=FUN_0042ba46 */ undefined4 __cdecl FUN_0042ba46(undefined4 param_1) { return param_1; } /* @0042ba4e file=? name=FUN_0042ba4e */ void __cdecl FUN_0042ba4e(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { FUN_0042b1d0(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042ba74 file=? name=FUN_0042ba74 */ int * __cdecl FUN_0042ba74(int *param_1) { undefined4 *puVar1; FUN_0042c4b7(param_1,0); puVar1 = (undefined4 *)FUN_00402298(0x14); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_0042c521(puVar1,(int)param_1); } param_1[5] = (int)puVar1; FUN_0042be3c(param_1); return param_1; } /* @0042bab4 file=? name=FUN_0042bab4 */ void __cdecl FUN_0042bab4(int *param_1,byte param_2) { undefined4 *puVar1; if (param_1 != (int *)0x0) { FUN_0042bca4((int)param_1); puVar1 = (undefined4 *)param_1[5]; if (puVar1 != (undefined4 *)0x0) { (**(code **)*puVar1)(puVar1,3); } param_1[5] = 0; FUN_0042c4d6(param_1,2); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042baf8 file=? name=FUN_0042baf8 */ int __cdecl FUN_0042baf8(int param_1) { bool bVar1; int iVar2; int iVar3; int local_18 [5]; FUN_0042c521(local_18,param_1); iVar3 = 0; do { bVar1 = false; (**(code **)(local_18[0] + 4))(local_18); do { iVar2 = (**(code **)(local_18[0] + 0x28))(local_18); if (iVar2 == 0) goto LAB_0042bb41; } while (iVar3 != *(int *)(iVar2 + 0x6c)); bVar1 = true; LAB_0042bb41: if (!bVar1) { FUN_0042c55f(local_18,2); return iVar3; } iVar3 = iVar3 + 1; } while( true ); } /* @0042bb64 file=? name=FUN_0042bb64 */ void __cdecl FUN_0042bb64(int *param_1,undefined4 *param_2,int param_3) { int iVar1; if (param_3 == 0) { iVar1 = (**(code **)(*(int *)param_1[5] + 0x30))((int *)param_1[5]); if (iVar1 == 0) { FUN_0042bbac(param_1,param_2); } else { FUN_0042b3ac(iVar1,param_2); } } else { FUN_0042b3ac(param_3,param_2); } return; } /* @0042bbac file=? name=FUN_0042bbac */ undefined4 * __cdecl FUN_0042bbac(int *param_1,undefined4 *param_2) { int iVar1; undefined4 *puVar2; iVar1 = FUN_0042baf8((int)param_1); puVar2 = (undefined4 *)FUN_00402298(0xf0); if (puVar2 == (undefined4 *)0x0) { puVar2 = (undefined4 *)0x0; } else { puVar2 = FUN_0042acd8(puVar2,iVar1,param_2,1); } FUN_0042bbf8(param_1,puVar2); return puVar2; } /* @0042bbf8 file=? name=FUN_0042bbf8 */ undefined4 __cdecl FUN_0042bbf8(int *param_1,undefined4 param_2) { int iVar1; iVar1 = (**(code **)(*(int *)param_1[5] + 0x30))((int *)param_1[5]); if (iVar1 == 0) { (**(code **)(*param_1 + 4))(param_1,param_2); (**(code **)(*(int *)param_1[5] + 4))((int *)param_1[5]); } else { (**(code **)(*param_1 + 4))(param_1,param_2); (**(code **)(*(int *)param_1[5] + 0xc))((int *)param_1[5]); } return param_2; } /* @0042bc48 file=? name=FUN_0042bc48 */ undefined4 __cdecl FUN_0042bc48(int param_1) { undefined4 *puVar1; undefined4 uVar2; int iVar3; puVar1 = (undefined4 *)(**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)) ; if (puVar1 == (undefined4 *)0x0) { uVar2 = 0; } else { (**(code **)(**(int **)(param_1 + 0x14) + 0x48))(*(int **)(param_1 + 0x14)); iVar3 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); if (iVar3 == 0) { (**(code **)(**(int **)(param_1 + 0x14) + 4))(*(int **)(param_1 + 0x14)); } if (puVar1 != (undefined4 *)0x0) { (**(code **)*puVar1)(puVar1,3); } uVar2 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); } return uVar2; } /* @0042bca4 file=? name=FUN_0042bca4 */ void __cdecl FUN_0042bca4(int param_1) { int iVar1; while( true ) { iVar1 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); if (iVar1 == 0) break; FUN_0042bc48(param_1); } return; } /* @0042bcc8 file=? name=FUN_0042bcc8 */ void __cdecl FUN_0042bcc8(int param_1) { int iVar1; iVar1 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); if (iVar1 != 0) { (**(code **)(**(int **)(param_1 + 0x14) + 0x28))(*(int **)(param_1 + 0x14)); iVar1 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); if (iVar1 == 0) { (**(code **)(**(int **)(param_1 + 0x14) + 4))(*(int **)(param_1 + 0x14)); } } (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); return; } /* @0042bd0c file=? name=FUN_0042bd0c */ void __cdecl FUN_0042bd0c(int param_1) { int iVar1; iVar1 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); if (iVar1 != 0) { (**(code **)(**(int **)(param_1 + 0x14) + 0x2c))(*(int **)(param_1 + 0x14)); iVar1 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); if (iVar1 == 0) { (**(code **)(**(int **)(param_1 + 0x14) + 8))(*(int **)(param_1 + 0x14)); } } (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); return; } /* @0042bd50 file=? name=FUN_0042bd50 */ int __cdecl FUN_0042bd50(int param_1,int param_2) { int iVar1; (**(code **)(**(int **)(param_1 + 0x14) + 4))(*(int **)(param_1 + 0x14)); while( true ) { iVar1 = (**(code **)(**(int **)(param_1 + 0x14) + 0x30))(*(int **)(param_1 + 0x14)); if (iVar1 == 0) { return 0; } if (param_2 == iVar1) break; (**(code **)(**(int **)(param_1 + 0x14) + 0xc))(*(int **)(param_1 + 0x14)); } return iVar1; } /* @0042bd94 file=? name=FUN_0042bd94 */ int * __cdecl FUN_0042bd94(int param_1,float *param_2) { int iVar1; int *piVar2; int *piVar3; float local_2c; float local_28; float local_24; int local_20 [5]; float local_c; float local_8; local_c = 1e+08; FUN_0042c521(local_20,param_1); piVar3 = (int *)0x0; while( true ) { piVar2 = (int *)(**(code **)(local_20[0] + 0x28))(local_20); if (piVar2 == (int *)0x0) break; iVar1 = (**(code **)(*piVar2 + 4))(piVar2,param_2); if (iVar1 != 0) { FUN_00408644(&local_2c,param_2,(float *)(piVar2 + 7)); local_8 = local_24 * local_24 + local_28 * local_28 + local_2c * local_2c; if (local_8 < local_c) { piVar3 = piVar2; local_c = local_8; } } } FUN_0042c55f(local_20,2); return piVar3; } /* @0042be30 file=? name=FUN_0042be30 */ undefined4 FUN_0042be30(void) { return 1; } /* @0042be3c file=? name=FUN_0042be3c */ void __cdecl FUN_0042be3c(int *param_1) { int *piVar1; int iVar2; int iVar3; int local_a0 [38]; int local_8; iVar2 = *(int *)(DAT_004efc94 + 0x68); local_8 = FUN_00406fd4(iVar2,*(int *)(*(int *)(DAT_004efc94 + 200) + 4)); piVar1 = param_1 + 6; *piVar1 = s_cameras__004e61a8._0_4_; param_1[7] = s_cameras__004e61a8._4_4_; *(char *)(param_1 + 8) = s_cameras__004e61a8[8]; FUN_004d49b8((char *)piVar1,(char *)(local_8 + 0xc)); iVar3 = FUN_004d4a78((char *)piVar1); if (0x11 < iVar3) { *(undefined1 *)((int)param_1 + 0x29) = 0; } FUN_004d49b8((char *)piVar1,&DAT_004e61b1); FUN_004da7c0(local_a0,0); FUN_004da5f8(local_a0,(LPCSTR)piVar1,0x23,DAT_00520540); if ((*(byte *)(local_a0[0] + 0xc) & 0x86) != 0) { local_a0[0] = 0; } if (local_a0[0] == 0) { FUN_004da44c(local_a0); FUN_0042c078(param_1,iVar2,(char *)(local_8 + 0xc)); } else { FUN_004da44c(local_a0); FUN_0042bf38(param_1); } FUN_004da914(local_a0,2); return; } /* @0042bf38 file=? name=FUN_0042bf38 */ void __cdecl FUN_0042bf38(int *param_1) { char cVar1; undefined4 *puVar2; int *piVar3; int iVar4; undefined4 *puVar5; uint uVar6; uint uVar7; char *pcVar8; undefined4 *unaff_EDI; char *pcVar9; char local_8c [128]; char *local_c; int *local_8; piVar3 = (int *)FUN_00402298(0x20); if (piVar3 == (int *)0x0) { piVar3 = (int *)0x0; } else { piVar3 = FUN_00403e84(piVar3,(char *)(param_1 + 6),1); } local_8 = FUN_0040485c((int)piVar3,(char *)0x0); puVar2 = (undefined4 *)local_8[1]; do { if (puVar2 == (undefined4 *)0x0) { if (local_8 != (int *)0x0) { (**(code **)*local_8)(local_8,3); } FUN_00403ecc(piVar3,3); return; } uVar6 = 0xffffffff; pcVar8 = (char *)(puVar2 + 2); do { pcVar9 = pcVar8; if (uVar6 == 0) break; uVar6 = uVar6 - 1; pcVar9 = pcVar8 + 1; cVar1 = *pcVar8; pcVar8 = pcVar9; } while (cVar1 != '\0'); uVar6 = ~uVar6; pcVar8 = pcVar9 + -uVar6; pcVar9 = local_8c; for (uVar7 = uVar6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) { *(undefined4 *)pcVar9 = *(undefined4 *)pcVar8; pcVar8 = pcVar8 + 4; pcVar9 = pcVar9 + 4; } for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) { *pcVar9 = *pcVar8; pcVar8 = pcVar8 + 1; pcVar9 = pcVar9 + 1; } iVar4 = FUN_00404088((int)piVar3,local_8c,s_cameraType_004e61b6,&local_c); if (iVar4 == 0) { iVar4 = 1; } else { iVar4 = FUN_0042b1fc(local_c); } if (iVar4 == 1) { puVar5 = (undefined4 *)FUN_00402298(0xf0); if (puVar5 == (undefined4 *)0x0) { unaff_EDI = (undefined4 *)0x0; } else { unaff_EDI = FUN_0042ae14(puVar5,piVar3,local_8c); } } else if (iVar4 == 2) { puVar5 = (undefined4 *)FUN_00402298(0xf0); if (puVar5 == (undefined4 *)0x0) { unaff_EDI = (undefined4 *)0x0; } else { unaff_EDI = FUN_0042ba18(puVar5,piVar3,local_8c); } } FUN_0042bbf8(param_1,unaff_EDI); puVar2 = (undefined4 *)*puVar2; } while( true ); } /* @0042c078 file=? name=FUN_0042c078 */ void __cdecl FUN_0042c078(int *param_1,int param_2,char *param_3) { int iVar1; int *piVar2; int iVar3; undefined4 *puVar4; undefined4 *unaff_ESI; undefined4 local_18 [2]; int *local_10; int local_8; iVar3 = FUN_00406ff8(param_2,param_3,0x1b,-1); if (iVar3 != 0) { iVar1 = *(int *)(iVar3 + 4); *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; if (iVar1 == 0) { FUN_00406cd0(iVar3); } FUN_004030dc(local_18,*(undefined4 *)(iVar3 + 0x3c),*(undefined4 *)(iVar3 + 0x40),0); local_8 = *local_10; local_10 = local_10 + 1; while (piVar2 = local_10, iVar1 = local_8 + -1, local_8 != 0) { local_8 = iVar1; if (local_10[1] == 1) { puVar4 = (undefined4 *)FUN_00402298(0xf0); if (puVar4 == (undefined4 *)0x0) { unaff_ESI = (undefined4 *)0x0; } else { unaff_ESI = FUN_0042ad54(puVar4,(int)piVar2); } } else if (local_10[1] == 2) { puVar4 = (undefined4 *)FUN_00402298(0xf0); if (puVar4 == (undefined4 *)0x0) { unaff_ESI = (undefined4 *)0x0; } else { unaff_ESI = FUN_0042b9f8(puVar4,(int)piVar2); } } FUN_0042bbf8(param_1,unaff_ESI); local_10 = (int *)((int)local_10 + *piVar2); } *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1; } return; } /* @0042c150 file=munga/cammgr.cpp name=FUN_0042c150 */ void __cdecl FUN_0042c150(int param_1) { int *piVar1; int iVar2; int local_18 [5]; piVar1 = (int *)FUN_00402298(0x20); if (piVar1 == (int *)0x0) { piVar1 = (int *)0x0; } else { piVar1 = FUN_00403e84(piVar1,(char *)0x0,1); } if (piVar1 == (int *)0x0) { FUN_0040385c(s_Error_Opening_Camera_File_004e61c1,s_d__tesla_bt_munga_CAMMGR_CPP_004e61dc,0x274) ; } FUN_0042c521(local_18,param_1); (**(code **)(local_18[0] + 4))(local_18); while( true ) { iVar2 = (**(code **)(local_18[0] + 0x28))(local_18); if (iVar2 == 0) break; FUN_0042b5d4(iVar2,(int)piVar1); } FUN_00404d6c(piVar1,(char *)(param_1 + 0x18)); FUN_00403ecc(piVar1,3); FUN_0042c55f(local_18,2); return; } /* @0042c1fc file=? name=FUN_0042c1fc */ undefined4 __cdecl FUN_0042c1fc(int param_1,char *param_2,int param_3) { char cVar1; int iVar2; int iVar3; int *piVar4; char *pcVar5; undefined4 *puVar6; uint uVar7; uint uVar8; char *pcVar9; char *pcVar10; int *piVar11; char *pcVar12; int *piVar13; bool bVar14; undefined4 local_a0; int local_9c; int *local_98; char local_90 [128]; int *local_10; int *local_c; int *local_8; iVar2 = FUN_004d4a78(param_2); iVar3 = FUN_004d4a78(*(char **)(param_3 + 4)); local_8 = (int *)FUN_004022b0(iVar2 + iVar3 + 1); uVar7 = 0xffffffff; pcVar10 = *(char **)(param_3 + 4); do { pcVar12 = pcVar10; if (uVar7 == 0) break; uVar7 = uVar7 - 1; pcVar12 = pcVar10 + 1; cVar1 = *pcVar10; pcVar10 = pcVar12; } while (cVar1 != '\0'); uVar7 = ~uVar7; piVar4 = (int *)(pcVar12 + -uVar7); piVar11 = local_8; for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { *piVar11 = *piVar4; piVar4 = piVar4 + 1; piVar11 = piVar11 + 1; } for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { *(char *)piVar11 = (char)*piVar4; piVar4 = (int *)((int)piVar4 + 1); piVar11 = (int *)((int)piVar11 + 1); } iVar2 = FUN_004d4a78(param_2); FUN_004d4a94((char *)local_8,param_2,iVar2 - 3); FUN_004d49b8((char *)local_8,&DAT_004e61f9); piVar4 = (int *)FUN_00402298(0x20); if (piVar4 == (int *)0x0) { piVar4 = (int *)0x0; } else { piVar4 = FUN_00403e84(piVar4,(char *)local_8,1); } if ((*(byte *)(piVar4 + 7) & 2) == 0) { iVar2 = piVar4[3]; } else { iVar2 = piVar4[4]; } if (iVar2 == 0) { FUN_004dbb24(&DAT_00524e20,s_Missing__cam_file_004e61fd,(char *)0x0); FUN_004d9c38(&DAT_00524e20); LAB_0042c2da: FUN_00403ecc(piVar4,3); FUN_004022e8(local_8); return 0xffffffff; } iVar2 = 0; local_c = FUN_0040485c((int)piVar4,(char *)0x0); for (puVar6 = (undefined4 *)local_c[1]; puVar6 != (undefined4 *)0x0; puVar6 = (undefined4 *)*puVar6) { iVar2 = iVar2 + 1; } local_10 = (int *)FUN_004022b0(iVar2 * 0x70); FUN_004030dc(&local_a0,local_10,iVar2 * 0x70,0); *local_98 = iVar2; local_98 = local_98 + 1; puVar6 = (undefined4 *)local_c[1]; LAB_0042c360: if (puVar6 != (undefined4 *)0x0) { do { piVar11 = local_98; uVar7 = 0xffffffff; pcVar10 = (char *)(puVar6 + 2); do { pcVar12 = pcVar10; if (uVar7 == 0) break; uVar7 = uVar7 - 1; pcVar12 = pcVar10 + 1; cVar1 = *pcVar10; pcVar10 = pcVar12; } while (cVar1 != '\0'); uVar7 = ~uVar7; pcVar10 = pcVar12 + -uVar7; pcVar12 = local_90; for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { *(undefined4 *)pcVar12 = *(undefined4 *)pcVar10; pcVar10 = pcVar10 + 4; pcVar12 = pcVar12 + 4; } pcVar9 = s_CameraInfo_004e620f; pcVar5 = local_90; for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { *pcVar12 = *pcVar10; pcVar10 = pcVar10 + 1; pcVar12 = pcVar12 + 1; } do { if (*pcVar5 != *pcVar9) goto LAB_0042c3bf; bVar14 = true; if (*pcVar5 == '\0') break; pcVar10 = pcVar5 + 1; if (*pcVar10 != pcVar9[1]) goto LAB_0042c3bf; pcVar5 = pcVar5 + 2; pcVar9 = pcVar9 + 2; bVar14 = *pcVar10 == '\0'; } while (!bVar14); if (bVar14) goto code_r0x0042c3bb; LAB_0042c3bf: iVar2 = FUN_0042b6f4(local_98,(int)piVar4,local_90); if (iVar2 == 0) { FUN_004022e8(local_10); if (local_c != (int *)0x0) { (**(code **)*local_c)(local_c,3); } goto LAB_0042c2da; } local_98 = (int *)((int)local_98 + *piVar11); puVar6 = (undefined4 *)*puVar6; if (puVar6 == (undefined4 *)0x0) break; } while( true ); } uVar7 = 0xffffffff; pcVar10 = param_2; do { pcVar12 = pcVar10; if (uVar7 == 0) break; uVar7 = uVar7 - 1; pcVar12 = pcVar10 + 1; cVar1 = *pcVar10; pcVar10 = pcVar12; } while (cVar1 != '\0'); uVar7 = ~uVar7; piVar11 = (int *)(pcVar12 + -uVar7); piVar13 = local_8; for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) { *piVar13 = *piVar11; piVar11 = piVar11 + 1; piVar13 = piVar13 + 1; } for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) { *(char *)piVar13 = (char)*piVar11; piVar11 = (int *)((int)piVar11 + 1); piVar13 = (int *)((int)piVar13 + 1); } iVar2 = FUN_004d4a78(param_2); *(undefined1 *)((int)local_8 + iVar2 + -4) = 0; puVar6 = (undefined4 *) FUN_00406db4(param_1,(char *)local_8,0x1b,1,2,local_10,(int)local_98 - local_9c,-1); FUN_004022e8(local_10); FUN_004022e8(local_8); FUN_00403ecc(piVar4,3); if (local_c != (int *)0x0) { (**(code **)*local_c)(local_c,3); } return *puVar6; code_r0x0042c3bb: puVar6 = (undefined4 *)*puVar6; goto LAB_0042c360; } /* @0042c4b7 file=? name=FUN_0042c4b7 */ undefined4 * __cdecl FUN_0042c4b7(undefined4 *param_1,undefined4 param_2) { FUN_0041827c(param_1,param_2); *param_1 = &PTR_FUN_004e6270; return param_1; } /* @0042c4d6 file=? name=FUN_0042c4d6 */ void __cdecl FUN_0042c4d6(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e6270; FUN_004182a8(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042c502 file=? name=FUN_0042c502 */ undefined4 * __cdecl FUN_0042c502(undefined4 *param_1,int param_2) { FUN_00418398(param_1,param_2); *param_1 = &PTR_FUN_004e621c; return param_1; } /* @0042c521 file=? name=FUN_0042c521 */ undefined4 * __cdecl FUN_0042c521(undefined4 *param_1,int param_2) { FUN_00418398(param_1,param_2); *param_1 = &PTR_FUN_004e621c; return param_1; } /* @0042c540 file=? name=FUN_0042c540 */ undefined4 * __cdecl FUN_0042c540(undefined4 *param_1,int param_2) { FUN_004183c0(param_1,param_2); *param_1 = &PTR_FUN_004e621c; return param_1; } /* @0042c55f file=? name=FUN_0042c55f */ void __cdecl FUN_0042c55f(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e621c; FUN_004183ec(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042c630 file=? name=FUN_0042c630 */ void __cdecl FUN_0042c630(int param_1,undefined4 param_2) { undefined4 *puVar1; puVar1 = (undefined4 *)**(int **)(param_1 + 0x128); if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) { (**(code **)*puVar1)(puVar1,3); } **(undefined4 **)(param_1 + 0x128) = param_2; return; } /* @0042c660 file=? name=FUN_0042c660 */ void __cdecl FUN_0042c660(int param_1,float param_2) { int iVar1; float local_1c [3]; float local_10 [3]; iVar1 = **(int **)(param_1 + 0x128); if (*(int *)(iVar1 + 0xf8) < 1) { FUN_00408440((undefined4 *)(param_1 + 500),&DAT_004e0f74); FUN_0042c764(param_1,iVar1,param_2); FUN_0040ab44((float *)(param_1 + 0xd0),(undefined4 *)(param_1 + 0x100)); local_10[0] = 0.0; local_10[1] = 0.0; local_10[2] = -1.0; FUN_00408b98(local_1c,local_10,(float *)(param_1 + 0xd0)); if (0 < *(int *)(iVar1 + 0xfc)) { FUN_0042b4e0(*(int *)(param_1 + 0x3b0),local_1c); } FUN_0042ca44(param_1,local_1c); } else { FUN_0042c764(param_1,iVar1,param_2); FUN_0042c870(param_1,iVar1,param_2); FUN_0042c850(param_1,iVar1); FUN_0042b3ac(*(int *)(param_1 + 0x3b0),(undefined4 *)(param_1 + 0x100)); } FUN_0040ab44((float *)(param_1 + 0xd0),(undefined4 *)(param_1 + 0x100)); return; } /* @0042c764 file=? name=FUN_0042c764 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __cdecl FUN_0042c764(int param_1,int param_2,float param_3) { float fVar1; float local_1c; float local_18; float local_10; float local_c; float local_8; if (_DAT_0042c83c <= *(float *)(param_2 + 0xe4)) { if (*(float *)(param_2 + 0xe4) <= _DAT_0042c840) { local_8 = 0.0; } else { local_8 = *(float *)(param_2 + 0xe4) - _DAT_0042c840; local_8 = local_8 * local_8; } } else { fVar1 = *(float *)(param_2 + 0xe4) + _DAT_0042c840; local_8 = _DAT_0042c844 * fVar1 * fVar1; } FUN_0040954c(&local_1c,(float *)(param_1 + 0x10c)); local_c = local_8 * _DAT_0042c848 * param_3; local_1c = local_c + local_1c; local_10 = *(float *)(param_2 + 0xe8) * _DAT_0042c848 * _DAT_0042c84c * param_3; local_18 = local_10 + local_18; FUN_00409a38((float *)(param_1 + 0x10c),&local_1c); return; } /* @0042c850 file=? name=FUN_0042c850 */ void __cdecl FUN_0042c850(int param_1,int param_2) { *(float *)(param_1 + 0x104) = *(float *)(param_2 + 0xf0) + *(float *)(param_1 + 0x104); return; } /* @0042c870 file=? name=FUN_0042c870 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __cdecl FUN_0042c870(int param_1,int param_2,float param_3) { float *pfVar1; float local_1c [3]; float local_10 [3]; *(float *)(param_1 + 0x1e4) = _DAT_0042c938 * *(float *)(param_2 + 0xec) * param_3; if (0 < *(int *)(param_2 + 0xf4)) { *(float *)(param_1 + 0x1e4) = -*(float *)(param_1 + 0x1e4); } FUN_004086d0(local_10,(float *)(param_1 + 0x1c4),(float *)(param_1 + 0x21c)); pfVar1 = (float *)(param_1 + 0x1dc); FUN_00408644(local_1c,pfVar1,local_10); FUN_00408440(pfVar1,local_1c); FUN_004085ec((float *)(param_1 + 0x1c4),(float *)(param_1 + 0x1c4),pfVar1); FUN_00408744((float *)(param_1 + 500),(float *)(param_1 + 0x1c4),(float *)(param_1 + 0xd0)); FUN_004085ec((float *)(param_1 + 0x100),(float *)(param_1 + 0x100),(float *)(param_1 + 500)); return; } /* @0042ca20 file=? name=FUN_0042ca20 */ void __cdecl FUN_0042ca20(int param_1,float *param_2) { int *piVar1; piVar1 = FUN_0042bd94(param_1 + 0x314,param_2); *(int **)(param_1 + 0x3b0) = piVar1; return; } /* @0042ca44 file=? name=FUN_0042ca44 */ void __cdecl FUN_0042ca44(int param_1,float *param_2) { FUN_0042b428(*(int *)(param_1 + 0x3b0),(undefined4 *)(param_1 + 0x100),param_2); FUN_00408440((undefined4 *)(param_1 + 0x1d0),&DAT_004e0f74); return; } /* @0042ca7c file=? name=FUN_0042ca7c */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __cdecl FUN_0042ca7c(int param_1,float param_2,float *param_3) { float *pfVar1; float *pfVar2; int iVar3; float *pfVar4; float *pfVar5; float10 fVar6; float local_124 [3]; float local_118 [3]; float local_10c [12]; float local_dc; float local_d8; undefined4 local_d4; float local_d0; float local_cc; undefined4 local_c8; float local_c4 [3]; float local_b8 [3]; float local_ac [3]; float local_a0 [3]; float local_94 [3]; float local_88 [3]; float local_7c; float local_78; undefined4 local_74; float local_70; float local_6c; float local_64; float local_60; undefined4 local_5c; float local_58; float local_54; undefined4 local_4c [3]; float local_40 [4]; float local_30; float local_2c; float local_28; float local_24; undefined4 local_20; undefined4 local_1c; float local_18; float local_14; float local_10; float local_c; float local_8; FUN_0042b428(*(int *)(param_1 + 0x3b0),local_4c,param_3); FUN_0040954c(&local_58,local_40); local_8 = local_58; local_c = local_54; local_64 = local_54; local_60 = local_58; local_5c = 0; FUN_0040954c(&local_70,(float *)(param_1 + 0x10c)); local_10 = local_70; local_14 = local_6c; local_7c = local_6c; local_78 = local_70; local_74 = 0; fVar6 = FUN_00408110(local_6c); local_7c = (float)fVar6; fVar6 = FUN_00408110(local_78); local_78 = (float)fVar6; if (local_64 - local_7c <= _DAT_0042cd38) { if (local_64 - local_7c < _DAT_0042cd40) { local_64 = _DAT_0042cd3c + local_64; } } else { local_64 = local_64 - _DAT_0042cd3c; } if (local_60 - local_78 <= _DAT_0042cd38) { if (local_60 - local_78 < _DAT_0042cd40) { local_60 = _DAT_0042cd3c + local_60; } } else { local_60 = local_60 - _DAT_0042cd3c; } FUN_00408644(local_88,&local_64,&local_7c); pfVar1 = (float *)(param_1 + 0x1d0); FUN_004086d0(local_94,pfVar1,(float *)(param_1 + 0x234)); FUN_004086ac(local_a0,local_88,*(float *)(param_1 + 0x244)); pfVar2 = (float *)(param_1 + 0x1e8); FUN_00408644(pfVar2,local_a0,local_94); local_18 = param_2 * param_2 * _DAT_0042cd44; FUN_004086ac(local_ac,pfVar2,local_18); FUN_004086ac(local_b8,pfVar1,param_2); FUN_004085ec(local_c4,local_b8,local_ac); FUN_004085ec(&local_d0,&local_7c,local_c4); local_1c = local_c8; local_20 = local_c8; local_24 = local_d0; local_28 = local_d0; local_2c = local_cc; local_30 = local_cc; local_d8 = local_d0; local_dc = local_cc; local_d4 = local_c8; pfVar4 = (float *)&DAT_004e107c; pfVar5 = local_10c; for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) { *pfVar5 = *pfVar4; pfVar4 = pfVar4 + 1; pfVar5 = pfVar5 + 1; } FUN_0040ad2c(local_10c,&local_dc); FUN_00409a70((float *)(param_1 + 0x10c),local_10c); FUN_004086ac(local_118,pfVar2,param_2); FUN_004085ec(local_124,pfVar1,local_118); FUN_00408440(pfVar1,local_124); return; } /* @0042cd48 file=? name=FUN_0042cd48 */ void __cdecl FUN_0042cd48(int param_1) { undefined4 *puVar1; puVar1 = FUN_0042bbac((int *)(param_1 + 0x314),(undefined4 *)(param_1 + 0x100)); *(undefined4 **)(param_1 + 0x3b0) = puVar1; FUN_004dbb24(&DAT_00524e20,(char *)(puVar1 + 0x1c),(char *)0x0); FUN_004d9c38(&DAT_00524e20); return; } /* @0042cd94 file=? name=FUN_0042cd94 */ void __cdecl FUN_0042cd94(int param_1) { undefined4 *puVar1; int iVar2; float local_1c [3]; float local_10 [3]; iVar2 = FUN_0042bcc8(param_1 + 0x314); if (iVar2 != *(int *)(param_1 + 0x3b0)) { iVar2 = FUN_0042bc48(param_1 + 0x314); *(int *)(param_1 + 0x3b0) = iVar2; FUN_004dbb24(&DAT_00524e20,(char *)(iVar2 + 0x70),(char *)0x0); FUN_004d9c38(&DAT_00524e20); puVar1 = (undefined4 *)(param_1 + 0x100); FUN_0040a938(puVar1,(undefined4 *)(*(int *)(param_1 + 0x3b0) + 0x1c)); FUN_0040ab44((float *)(param_1 + 0xd0),puVar1); local_10[0] = 0.0; local_10[1] = 0.0; local_10[2] = -1.0; FUN_00408b98(local_1c,local_10,(float *)(param_1 + 0xd0)); FUN_0042ca44(param_1,local_1c); FUN_0040ab44((float *)(param_1 + 0xd0),puVar1); } return; } /* @0042ce64 file=? name=FUN_0042ce64 */ void __cdecl FUN_0042ce64(int param_1) { undefined4 *puVar1; int iVar2; float local_1c [3]; float local_10 [3]; iVar2 = FUN_0042bcc8(param_1 + 0x314); *(int *)(param_1 + 0x3b0) = iVar2; FUN_004dbb24(&DAT_00524e20,(char *)(iVar2 + 0x70),(char *)0x0); FUN_004d9c38(&DAT_00524e20); puVar1 = (undefined4 *)(param_1 + 0x100); FUN_0040a938(puVar1,(undefined4 *)(*(int *)(param_1 + 0x3b0) + 0x1c)); FUN_0040ab44((float *)(param_1 + 0xd0),puVar1); local_10[0] = 0.0; local_10[1] = 0.0; local_10[2] = -1.0; FUN_00408b98(local_1c,local_10,(float *)(param_1 + 0xd0)); FUN_0042ca44(param_1,local_1c); FUN_0040ab44((float *)(param_1 + 0xd0),puVar1); return; } /* @0042cf20 file=? name=FUN_0042cf20 */ void __cdecl FUN_0042cf20(int param_1) { undefined4 *puVar1; int iVar2; float local_1c [3]; float local_10 [3]; iVar2 = FUN_0042bd0c(param_1 + 0x314); *(int *)(param_1 + 0x3b0) = iVar2; FUN_004dbb24(&DAT_00524e20,(char *)(iVar2 + 0x70),(char *)0x0); FUN_004d9c38(&DAT_00524e20); puVar1 = (undefined4 *)(param_1 + 0x100); FUN_0040a938(puVar1,(undefined4 *)(*(int *)(param_1 + 0x3b0) + 0x1c)); FUN_0040ab44((float *)(param_1 + 0xd0),puVar1); local_10[0] = 0.0; local_10[1] = 0.0; local_10[2] = -1.0; FUN_00408b98(local_1c,local_10,(float *)(param_1 + 0xd0)); FUN_0042ca44(param_1,local_1c); FUN_0040ab44((float *)(param_1 + 0xd0),puVar1); return; } /* @0042cfdc file=? name=FUN_0042cfdc */ int * __cdecl FUN_0042cfdc(int *param_1,int param_2,undefined4 param_3) { int iVar1; int *piVar2; float local_1c [3]; float local_10 [3]; FUN_004234f0(param_1,param_2,param_3); *param_1 = (int)&PTR_FUN_004e6360; FUN_0042ba74(param_1 + 0xc5); param_1[10] = param_1[10] | 0x10; if ((param_1[10] & 0xcU) != 4) { piVar2 = param_1 + 0x40; param_1[0xeb] = 0; FUN_0040a938(piVar2,&DAT_004e0fec); FUN_00408440(param_1 + 0xed,&DAT_004e0f74); param_1[0xc0] = 0x447a0000; param_1[0xc1] = 0; param_1[0xc2] = 0; param_1[0x49] = 1; iVar1 = FUN_004022b0(4); param_1[0x4a] = iVar1; *(undefined4 *)param_1[0x4a] = 0; iVar1 = (**(code **)(*(int *)param_1[0xca] + 0x30))((int *)param_1[0xca]); param_1[0xec] = iVar1; if (iVar1 == 0) { FUN_0042cd48((int)param_1); } FUN_0040a938(piVar2,(undefined4 *)(param_1[0xec] + 0x1c)); FUN_0040ab44((float *)(param_1 + 0x34),piVar2); local_10[0] = 0.0; local_10[1] = 0.0; local_10[2] = -1.0; FUN_00408b98(local_1c,local_10,(float *)(param_1 + 0x34)); FUN_0042ca44((int)param_1,local_1c); FUN_0040ab44((float *)(param_1 + 0x34),piVar2); piVar2 = (int *)FUN_00414b60(); param_1[0xc3] = *piVar2; param_1[0xc4] = 0; param_1[7] = (int)PTR_LAB_004e6310; param_1[8] = DAT_004e6314; param_1[9] = DAT_004e6318; FUN_0041bbd8((int)(param_1 + 0xb),0); } return param_1; } /* @0042d16c file=? name=FUN_0042d16c */ int * __cdecl FUN_0042d16c(int param_1) { int *piVar1; piVar1 = (int *)FUN_00402298(0x3c0); if (piVar1 == (int *)0x0) { piVar1 = (int *)0x0; } else { piVar1 = FUN_0042cfdc(piVar1,param_1,&DAT_004e62a8); } return piVar1; } /* @0042d19c file=? name=FUN_0042d19c */ void __cdecl FUN_0042d19c(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e6360; FUN_0042bab4(param_1 + 0xc5,2); FUN_00423c18(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042d1dc file=? name=FUN_0042d1dc */ void __cdecl FUN_0042d1dc(int param_1) { FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e6278); return; } /* @0042d2c0 file=? name=FUN_0042d2c0 */ void __cdecl FUN_0042d2c0(int *param_1,int param_2) { int iVar1; undefined4 local_24; undefined4 local_20; undefined4 local_1c; undefined4 local_18; undefined4 local_14; undefined4 local_10; undefined4 local_c; undefined4 local_8; iVar1 = *(int *)(param_2 + 0xc); if (iVar1 == 0x44) { LAB_0042d2e5: local_14 = 0x10; local_10 = 4; local_c = 1; local_8 = 1; (**(code **)(*param_1 + 0xc))(param_1,&local_14); } else { if (iVar1 != 0x4f) { if (iVar1 == 100) goto LAB_0042d2e5; if (iVar1 != 0x6f) { return; } } local_24 = 0x10; local_20 = 9; local_1c = 1; local_18 = 1; (**(code **)(*param_1 + 0xc))(param_1,&local_24); } return; } /* @0042d340 file=? name=FUN_0042d340 */ void __cdecl FUN_0042d340(int param_1,int param_2) { int iVar1; undefined4 *puVar2; if (0 < *(int *)(param_2 + 0xc)) { iVar1 = *(int *)(param_1 + 0xd0); if (*(int *)(iVar1 + 0x40) != 2) { *(undefined **)(iVar1 + 0x1c) = PTR_FUN_004e6474; *(undefined4 *)(iVar1 + 0x20) = DAT_004e6478; *(undefined4 *)(iVar1 + 0x24) = DAT_004e647c; FUN_0041bbd8(iVar1 + 0x2c,2); FUN_004dbb24(&DAT_00524e20,(char *)(*(int *)(iVar1 + 0x3b0) + 0x70),(char *)0x0); FUN_004d9c38(&DAT_00524e20); return; } *(undefined **)(iVar1 + 0x1c) = PTR_LAB_004e6480; *(undefined4 *)(iVar1 + 0x20) = DAT_004e6484; *(undefined4 *)(iVar1 + 0x24) = DAT_004e6488; FUN_0041bbd8(iVar1 + 0x2c,0); puVar2 = (undefined4 *)FUN_00414b60(); *(undefined4 *)(iVar1 + 0x30c) = *puVar2; } return; } /* @0042d3f0 file=? name=FUN_0042d3f0 */ void __cdecl FUN_0042d3f0(int param_1,int param_2) { if (0 < *(int *)(param_2 + 0xc)) { FUN_0042ce64(*(int *)(param_1 + 0xd0)); } return; } /* @0042d410 file=? name=FUN_0042d410 */ void __cdecl FUN_0042d410(int param_1,int param_2) { if (0 < *(int *)(param_2 + 0xc)) { FUN_0042cf20(*(int *)(param_1 + 0xd0)); } return; } /* @0042d430 file=? name=FUN_0042d430 */ void __cdecl FUN_0042d430(int param_1,int param_2) { if (0 < *(int *)(param_2 + 0xc)) { FUN_0042cd48(*(int *)(param_1 + 0xd0)); } return; } /* @0042d450 file=? name=FUN_0042d450 */ void __cdecl FUN_0042d450(int param_1,int param_2) { if (0 < *(int *)(param_2 + 0xc)) { FUN_0042cd94(*(int *)(param_1 + 0xd0)); } return; } /* @0042d470 file=? name=FUN_0042d470 */ void __cdecl FUN_0042d470(int param_1,int param_2) { if (0 < *(int *)(param_2 + 0xc)) { FUN_0042c150(*(int *)(param_1 + 0xd0) + 0x314); } return; } /* @0042d494 file=? name=FUN_0042d494 */ undefined4 * __cdecl FUN_0042d494(undefined4 *param_1,undefined4 param_2,undefined4 param_3,char *param_4, undefined4 param_5) { FUN_0041c52c(param_1,param_2,param_3,param_4,param_5); *param_1 = &PTR_FUN_004e65d4; param_1[0x39] = 0; param_1[0x3a] = 0; param_1[0x3b] = 0; param_1[0x3c] = 0; param_1[0x3e] = 0; param_1[0x3f] = 0; param_1[0x3d] = 0; return param_1; } /* @0042d4f8 file=? name=FUN_0042d4f8 */ void __cdecl FUN_0042d4f8(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e65d4; FUN_0041c648(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042d524 file=? name=FUN_0042d524 */ void __cdecl FUN_0042d524(int param_1) { FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e63b0); return; } /* @0042d600 file=? name=FUN_0042d600 */ void __cdecl FUN_0042d600(int param_1) { float fVar1; int *piVar2; float10 fVar3; if (*(int *)(param_1 + 0x40) == 2) { FUN_0041bbd8(param_1 + 0x2c,1); } piVar2 = (int *)FUN_00414b60(); fVar1 = (float)*piVar2 / DAT_0052140c; if (*(float *)(param_1 + 0x1cc) <= fVar1 - *(float *)(param_1 + 0x1d0)) { FUN_0041bbd8(param_1 + 0x2c,2); *(float *)(param_1 + 0x1d0) = fVar1; if (DAT_004e0f5c == -1) { FUN_00407f68(); } fVar3 = FUN_00408050(); *(float *)(param_1 + 0x1cc) = (float)(((float10)*(float *)(param_1 + 0x1c4) - (float10)*(float *)(param_1 + 0x1c8)) * fVar3 + (float10)*(float *)(param_1 + 0x1c8)); } return; } /* @0042d698 file=? name=FUN_0042d698 */ undefined4 * __cdecl FUN_0042d698(undefined4 *param_1,int param_2,undefined4 param_3) { int iVar1; undefined4 *puVar2; int iVar3; int *piVar4; float10 fVar5; FUN_0041ff38(param_1,param_2,param_3); *param_1 = &PTR_FUN_004e66b0; param_1[7] = PTR_FUN_004e6648; param_1[8] = DAT_004e664c; param_1[9] = DAT_004e6650; param_1[10] = param_1[10] | 0x10; iVar3 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0xf); iVar1 = *(int *)(iVar3 + 4); *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1; if (iVar1 == 0) { FUN_00406cd0(iVar3); } puVar2 = *(undefined4 **)(iVar3 + 0x3c); param_1[0x71] = *puVar2; param_1[0x72] = puVar2[1]; *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1; fVar5 = FUN_00408050(); param_1[0x73] = (float)(((float10)(float)param_1[0x71] - (float10)(float)param_1[0x72]) * fVar5 + (float10)(float)param_1[0x72]); FUN_0041bbd8((int)(param_1 + 0xb),1); piVar4 = (int *)FUN_00414b60(); param_1[0x74] = (float)*piVar4 / DAT_0052140c; return param_1; } /* @0042d768 file=? name=FUN_0042d768 */ undefined4 * __cdecl FUN_0042d768(int param_1) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_00402298(0x1d4); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_0042d698(puVar1,param_1,&DAT_004e6604); } return puVar1; } /* @0042d798 file=? name=FUN_0042d798 */ undefined4 __cdecl FUN_0042d798(undefined4 *param_1) { int iVar1; iVar1 = FUN_00420234(param_1); if (iVar1 == 0) { return 0; } param_1[7] = 0x3f; param_1[0xb] = 0x30c; return 1; } /* @0042d7d0 file=? name=FUN_0042d7d0 */ void __cdecl FUN_0042d7d0(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e66b0; FUN_00420508(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042d7fc file=? name=FUN_0042d7fc */ undefined4 __cdecl FUN_0042d7fc(int param_1,char *param_2,int param_3,undefined4 param_4,float *param_5) { float *pfVar1; int iVar2; undefined4 *puVar3; pfVar1 = param_5; if (param_5 == (float *)0x0) { pfVar1 = (float *)FUN_00402298(8); } iVar2 = FUN_00404118(param_3,s_gamedata_004e665d,s_MaxWaitTime_004e6666,pfVar1); if (iVar2 == 0) { FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_Missing_MaxWaitTime_004e6672,(char *)0x0); FUN_004d9c38((int *)&DAT_00524e68); } else { iVar2 = FUN_00404118(param_3,s_gamedata_004e6686,s_MinWaitTime_004e668f,pfVar1 + 1); if (iVar2 != 0) { if (param_5 == (float *)0x0) { puVar3 = (undefined4 *)FUN_00406db4(param_1,param_2,0xf,1,0,pfVar1,8,-1); FUN_004022d0((int *)pfVar1); return *puVar3; } return 0; } FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0); FUN_004dbb24((int *)&DAT_00524e68,s_Missing_MinWaitTime_004e669b,(char *)0x0); FUN_004d9c38((int *)&DAT_00524e68); } if (param_5 == (float *)0x0) { FUN_004022d0((int *)pfVar1); } return 0xffffffff; } /* @0042d8f8 file=? name=FUN_0042d8f8 */ void __cdecl FUN_0042d8f8(int param_1) { FUN_0041a1a4(**(int **)(param_1 + 0xc),0x4e6618); return; } /* @0042d990 file=? name=FUN_0042d990 */ undefined4 * __cdecl FUN_0042d990(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4) { FUN_004178cc(param_1,2); *param_1 = &PTR_FUN_004e6a8c; param_1[4] = param_2; param_1[3] = param_3; param_1[5] = param_4; return param_1; } /* @0042d9c0 file=? name=FUN_0042d9c0 */ void __cdecl FUN_0042d9c0(int param_1) { *(undefined4 *)(param_1 + 500) = 0x40400000; FUN_0041bbd8(param_1 + 0x2c,3); return; } /* @0042d9e0 file=? name=FUN_0042d9e0 */ void __cdecl FUN_0042d9e0(int param_1) { *(undefined4 *)(param_1 + 500) = 0x40400000; *(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1; FUN_0041bbd8(param_1 + 0x2c,4); return; } /* @0042da08 file=? name=FUN_0042da08 */ bool __cdecl FUN_0042da08(int param_1) { return (*(uint *)(param_1 + 0x28) & 0xc) != 0; } /* @0042da20 file=? name=FUN_0042da20 */ void __cdecl FUN_0042da20(int param_1,int param_2) { *(float *)(param_1 + 0x1c8) = *(float *)(param_2 + 0x1c) + *(float *)(param_1 + 0x1c8); (**(code **)(**(int **)(param_1 + 0x1fc) + 0x30))(*(int **)(param_1 + 0x1fc),param_2); return; } /* @0042da4c file=munga/player.cpp name=FUN_0042da4c */ void FUN_0042da4c(void) { FUN_0040385c(s_Drop_zone_reply_should_not_be_ha_004e68ca,s_d__tesla_bt_munga_PLAYER_CPP_004e6907, 0xd8); return; } /* @0042da68 file=? name=FUN_0042da68 */ void __cdecl FUN_0042da68(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5 ,undefined4 param_6,undefined4 param_7,undefined4 param_8) { int iVar1; undefined4 *puVar2; undefined4 uVar3; undefined4 uVar4; undefined4 local_88; undefined4 local_84; undefined4 local_80; undefined4 local_7c [2]; undefined4 local_74; undefined4 local_70; undefined4 local_6c; undefined4 local_68 [2]; undefined4 local_60; undefined4 local_5c; undefined4 local_58; undefined4 local_54; undefined4 local_50; undefined4 local_4c; undefined4 local_48; undefined4 local_44; undefined4 local_40; undefined4 local_3c [6]; undefined4 local_24 [6]; undefined4 local_c [2]; if ((*(uint *)(param_1 + 0x28) & 0x8000) != 0) { iVar1 = DAT_004efc94[0xb]; puVar2 = (undefined4 *) FUN_00406ff8(DAT_004efc94[0x1a],*(char **)(*(int *)(param_1 + 0x1f8) + 0x2c),1,-1); uVar4 = *puVar2; uVar3 = FUN_0042904c(iVar1); puVar2 = (undefined4 *)FUN_00420ebc(local_c,uVar3); local_88 = 0x7c; local_84 = 3; local_80 = 1; FUN_00420ea4(local_7c,puVar2); local_74 = 0; local_70 = 0; local_6c = 0x45; FUN_00420ea4(local_68,(undefined4 *)&DAT_00522524); local_5c = 0x1c100; local_58 = param_2; local_54 = param_3; local_50 = param_4; local_4c = param_5; local_48 = param_6; local_44 = param_7; local_40 = param_8; local_60 = uVar4; FUN_0040a7c0(local_3c,(undefined4 *)&DAT_004e0fd4); FUN_0040a7c0(local_24,(undefined4 *)&DAT_004e0fd4); uVar4 = (**(code **)(*DAT_004efc94 + 0x30))(DAT_004efc94,&local_88); *(undefined4 *)(param_1 + 0x1fc) = uVar4; } return; } /* @0042db80 file=? name=FUN_0042db80 */ void __cdecl FUN_0042db80(int param_1,uint *param_2) { undefined4 uVar1; int iVar2; int *piVar3; int *unaff_EDI; undefined4 local_58; undefined4 local_54; undefined4 local_50; undefined4 local_4c [2]; undefined4 local_44; undefined4 local_40; undefined4 local_3c [2]; undefined4 local_34; undefined4 local_30; float local_2c; float local_28; float local_24; int local_20 [3]; int local_14; undefined4 *local_10; float local_c; float local_8; if ((param_2[7] == *(uint *)(param_1 + 0x200)) && (*(int *)(param_1 + 0x40) != 1)) { iVar2 = FUN_0042104c((int *)(param_2 + 8),(int *)&DAT_00522524); if (iVar2 == 0) { unaff_EDI = (int *)(**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc)) (*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 8); } else { iVar2 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_DropZones_004e6924); FUN_00421414(local_20,iVar2 + 0x10); do { piVar3 = (int *)(**(code **)(local_20[0] + 0x28))(local_20); if (piVar3 == (int *)0x0) goto LAB_0042dcb8; iVar2 = FUN_004d4bec((char *)(piVar3 + 0x72),&DAT_004e692e,3); } while (iVar2 == 0); FUN_00408644(&local_2c,(float *)(param_1 + 0x100),(float *)(piVar3 + 0x40)); local_8 = local_24 * local_24 + local_28 * local_28 + local_2c * local_2c; unaff_EDI = piVar3; LAB_0042dcb8: while (piVar3 = (int *)(**(code **)(local_20[0] + 0x28))(local_20), piVar3 != (int *)0x0) { iVar2 = FUN_004d4bec((char *)(piVar3 + 0x72),&DAT_004e6932,3); if (iVar2 != 0) { FUN_00408644(&local_2c,(float *)(param_1 + 0x100),(float *)(piVar3 + 0x40)); local_c = local_24 * local_24 + local_28 * local_28 + local_2c * local_2c; if (local_c < local_8) { unaff_EDI = piVar3; local_8 = local_c; } } } FUN_00420ef4(param_2 + 8,unaff_EDI + 0x61); FUN_00421452(local_20,2); } uVar1 = *(undefined4 *)(param_1 + 0x200); local_10 = (undefined4 *)(param_1 + 0x184); local_58 = 0x2c; local_54 = 0x15; local_50 = 1; FUN_00420ea4(local_4c,(undefined4 *)&DAT_00522524); local_44 = 0; local_40 = 0; FUN_00420ea4(local_3c,local_10); local_34 = 0x15; local_30 = uVar1; (**(code **)(*unaff_EDI + 0xc))(unaff_EDI,&local_58); piVar3 = (int *)FUN_00414b60(); local_14 = *piVar3; iVar2 = FUN_004dcd94(); local_14 = local_14 + iVar2; FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,param_1,param_2,local_14); } return; } /* @0042df8c file=? name=FUN_0042df8c */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __cdecl FUN_0042df8c(int param_1,float param_2) { int iVar1; undefined4 local_48 [3]; undefined4 local_3c [4]; undefined4 local_2c [4]; undefined4 local_1c [3]; undefined4 local_10 [3]; if (*(int *)(param_1 + 0x40) == 3) { *(float *)(param_1 + 500) = *(float *)(param_1 + 500) - param_2; if (*(float *)(param_1 + 500) <= _DAT_0042e0dc) { FUN_0041bbd8(param_1 + 0x2c,2); if (DAT_004efc94[0x22] == 4) { FUN_0044f5b4(local_10); (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_10); } else if (DAT_004efc94[0x22] == 9) { FUN_0044f634(local_1c); (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_1c); } } } else if ((*(int *)(param_1 + 0x40) == 4) && (*(float *)(param_1 + 500) = *(float *)(param_1 + 500) - param_2, *(float *)(param_1 + 500) <= _DAT_0042e0dc)) { iVar1 = DAT_004efc94[0x22]; if (iVar1 == 6) { FUN_0044f5d0(local_2c,0); (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_2c); } else if (iVar1 == 8) { FUN_0044f618(local_48); (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_48); } else if (iVar1 == 10) { FUN_0044f5f4(local_3c,0); (**(code **)(*DAT_004efc94 + 0xc))(DAT_004efc94,local_3c); } } return; } /* @0042e100 file=? name=FUN_0042e100 */ void __cdecl FUN_0042e100(int *param_1,float param_2) { (**(code **)(*param_1 + 0x34))(param_1); FUN_0042df8c((int)param_1,param_2); if (param_1[0x7f] != 0) { FUN_0040a938(param_1 + 0x40,(undefined4 *)(param_1[0x7f] + 0x100)); FUN_0040ab28(param_1 + 0x34,(undefined4 *)(param_1[0x7f] + 0xd0)); } FUN_0042e5a0((int)param_1,param_2); return; } /* @0042e168 file=? name=FUN_0042e168 */ void __cdecl FUN_0042e168(int param_1) { if (*(int *)(param_1 + 0x1fc) != 0) { FUN_0040a938((undefined4 *)(param_1 + 0x100),(undefined4 *)(*(int *)(param_1 + 0x1fc) + 0x100)); FUN_0040ab28((undefined4 *)(param_1 + 0xd0),(undefined4 *)(*(int *)(param_1 + 0x1fc) + 0xd0)); } return; } /* @0042e1ac file=? name=FUN_0042e1ac */ undefined4 FUN_0042e1ac(void) { int iVar1; int iVar2; int local_3c [5]; int local_28 [6]; int local_10 [3]; iVar1 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_Players_004e6940); if (iVar1 != 0) { iVar2 = 0; FUN_00421414(local_10,iVar1 + 0x10); FUN_0042e763(local_28,0,0); while (iVar1 = (**(code **)(local_10[0] + 0x28))(local_10), iVar1 != 0) { if ((*(byte *)(iVar1 + 0x29) & 0x40) == 0) { (**(code **)(local_28[0] + 8))(local_28,iVar1,iVar1 + 0x1c8); iVar2 = iVar2 + 1; *(undefined4 *)(iVar1 + 0x1c4) = 0; } else { *(undefined4 *)(iVar1 + 0x1cc) = 0xffffffff; } } FUN_0042e8cb(local_3c,(int)local_28); while( true ) { iVar2 = iVar2 + -1; iVar1 = (**(code **)(local_3c[0] + 0x28))(local_3c); if (iVar1 == 0) break; *(int *)(iVar1 + 0x1cc) = iVar2; if (iVar2 == 0) { *(undefined4 *)(iVar1 + 0x1c4) = 1; } } FUN_0042e909(local_3c,2); FUN_0042e786(local_28,2); FUN_00421452(local_10,2); } return 1; } /* @0042e2ac file=? name=FUN_0042e2ac */ void __cdecl FUN_0042e2ac(int param_1,undefined4 *param_2) { FUN_0041f76c(param_1,param_2); *(undefined4 *)(param_1 + 0x1c8) = param_2[0xb]; FUN_00408440((undefined4 *)(param_1 + 0x1d0),param_2 + 0xc); return; } /* @0042e2e4 file=? name=FUN_0042e2e4 */ void __cdecl FUN_0042e2e4(int param_1,int *param_2,int param_3) { FUN_0041f680(param_1,param_2,param_3); *param_2 = 0x3c; param_2[0xb] = *(int *)(param_1 + 0x1c8); FUN_00408440(param_2 + 0xc,(undefined4 *)(param_1 + 0x1d0)); return; } /* @0042e328 file=? name=FUN_0042e328 */ undefined4 * __cdecl FUN_0042e328(undefined4 *param_1,int param_2,undefined4 param_3) { undefined4 *puVar1; undefined4 uVar2; code *in_stack_0000004c; FUN_0041ff38(param_1,param_2,param_3); *param_1 = &PTR_FUN_004e6a48; FUN_0042e718(param_1 + 0x79,0); param_1[0x82] = 0; param_1[0x77] = 0; param_1[0x7e] = *(undefined4 *)(DAT_004efc94 + 200); puVar1 = (undefined4 *)FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),s_player_004e6948,1,-1); if (puVar1 != (undefined4 *)0x0) { param_1[0x6f] = *puVar1; } if (*(int *)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x14) + 0xc) != param_1[0x61]) { FUN_0042939c((undefined4 *)&stack0xffffffdc,*(int *)(DAT_004efc94 + 0x2c)); (*in_stack_0000004c)(&stack0xffffffdc); FUN_004293c0((int *)&stack0xffffffdc,2); } if ((param_1[10] & 0x8000) == 0) { puVar1 = FUN_004212b0(*(int *)(DAT_004efc94 + 0x24),s_Players_004e694f); (**(code **)(puVar1[4] + 4))(puVar1 + 4); param_1[0x78] = *(undefined4 *)(param_2 + 0x4c); } else { param_1[0x78] = 0xffffffff; } param_1[10] = param_1[10] | 0x10; param_1[0x7f] = 0; if ((param_1[10] & 0xc) == 4) { param_1[7] = PTR_FUN_004e6814; param_1[8] = DAT_004e6818; param_1[9] = DAT_004e681c; param_1[0x7e] = 0; } else { param_1[0x7e] = *(undefined4 *)(DAT_004efc94 + 200); param_1[7] = PTR_LAB_004e6808; param_1[8] = DAT_004e680c; param_1[9] = DAT_004e6810; } param_1[0x73] = 0; param_1[0x80] = 0xfffffffe; param_1[0x72] = 0; uVar2 = (**(code **)(**(int **)(DAT_004efc94 + 0x40) + 0x18)) (*(int **)(DAT_004efc94 + 0x40),param_1[99]); param_1[0x81] = uVar2; param_1[0x71] = 0; param_1[0x7d] = 0; return param_1; } /* @0042e4f4 file=? name=FUN_0042e4f4 */ undefined4 * __cdecl FUN_0042e4f4(int param_1) { undefined4 *puVar1; puVar1 = (undefined4 *)FUN_00402298(0x20c); if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)0x0; } else { puVar1 = FUN_0042e328(puVar1,param_1,&DAT_004e6714); } return puVar1; } /* @0042e524 file=? name=FUN_0042e524 */ void __cdecl FUN_0042e524(int *param_1,byte param_2) { undefined4 *puVar1; if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e6a48; puVar1 = (undefined4 *)param_1[0x81]; if (puVar1 != (undefined4 *)0x0) { (**(code **)*puVar1)(puVar1,3); } param_1[0x81] = 0; FUN_0042e737(param_1 + 0x79,2); FUN_00420508(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042e580 file=? name=FUN_0042e580 */ void __cdecl FUN_0042e580(int param_1,undefined4 param_2) { (**(code **)(*(int *)(param_1 + 0x1e4) + 4))(param_1 + 0x1e4,param_2); return; } /* @0042e5a0 file=? name=FUN_0042e5a0 */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __cdecl FUN_0042e5a0(int param_1,float param_2) { undefined4 *puVar1; int iVar2; int local_10 [3]; FUN_0042e954(local_10,param_1 + 0x1e4); *(undefined4 *)(param_1 + 0x1dc) = 0; while( true ) { iVar2 = (**(code **)(local_10[0] + 0x28))(local_10); if (iVar2 == 0) break; *(int *)(param_1 + 0x1dc) = iVar2; } iVar2 = *(int *)(param_1 + 0x1dc); if (iVar2 != 0) { *(float *)(iVar2 + 0x14) = *(float *)(iVar2 + 0x14) - param_2; puVar1 = *(undefined4 **)(param_1 + 0x1dc); if ((float)puVar1[5] <= _DAT_0042e630) { if (puVar1 != (undefined4 *)0x0) { (**(code **)*puVar1)(puVar1,3); } *(undefined4 *)(param_1 + 0x1dc) = 0; } } FUN_0042e992(local_10,2); return; } /* @0042e718 file=? name=FUN_0042e718 */ undefined4 * __cdecl FUN_0042e718(undefined4 *param_1,undefined4 param_2) { FUN_00417be0(param_1,param_2); *param_1 = &PTR_FUN_004e6a40; return param_1; } /* @0042e737 file=? name=FUN_0042e737 */ void __cdecl FUN_0042e737(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e6a40; FUN_00417c0c(param_1,0); if ((param_2 & 1) != 0) { FUN_004022d0(param_1); } } return; } /* @0042e763 file=? name=FUN_0042e763 */ undefined4 * __cdecl FUN_0042e763(undefined4 *param_1,undefined4 param_2,undefined4 param_3) { FUN_004186ac(param_1,param_2,param_3); *param_1 = &PTR_FUN_004e6a24; return param_1; } /* @0042e786 file=? name=FUN_0042e786 */ void __cdecl FUN_0042e786(int *param_1,byte param_2) { if (param_1 != (int *)0x0) { *param_1 = (int)&PTR_FUN_004e6a24; FUN_004186dc(param_1,0); if ((param_2 & 1) != 0) { FUN_0042e861(param_1); } } return; } /* @0042e7b2 file=? name=FUN_0042e7b2 */ undefined4 __cdecl FUN_0042e7b2(undefined4 param_1,int param_2,int param_3) { undefined4 uVar1; if (*(float *)(param_2 + 0x1c) == *(float *)(param_3 + 0x1c)) { return 0; } if (*(float *)(param_2 + 0x1c) <= *(float *)(param_3 + 0x1c)) { uVar1 = 0xffffffff; } else { uVar1 = 1; } return uVar1; } /* @0042e7e3 file=? name=FUN_0042e7e3 */ undefined4 __cdecl FUN_0042e7e3(undefined4 param_1,float *param_2,int param_3) { undefined4 uVar1; if (*param_2 == *(float *)(param_3 + 0x1c)) { return 0; } if (*param_2 <= *(float *)(param_3 + 0x1c)) { uVar1 = 0xffffffff; } else { uVar1 = 1; } return uVar1; } /* @0042e811 file=? name=FUN_0042e811 */ void FUN_0042e811(void) { int iVar1; undefined4 *puVar2; iVar1 = DAT_004e6974; DAT_004e6974 = DAT_004e6974 + 1; puVar2 = DAT_004e6970; if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) { FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004e6957); } DAT_004e6970 = puVar2; FUN_00402f74((int)DAT_004e6970); return; } /* @0042e861 file=? name=FUN_0042e861 */ void __cdecl FUN_0042e861(undefined4 *param_1) { FUN_00402f98((int)DAT_004e6970,param_1); DAT_004e6974 = DAT_004e6974 + -1; if (DAT_004e6974 == 0) { if (DAT_004e6970 != (int *)0x0) { FUN_00402c28(DAT_004e6970,0); FUN_004022d0(DAT_004e6970); } DAT_004e6970 = (int *)0x0; } return; }