Files
BT411/reference/decomp/all/part_013.c
T
Joe DiPrimaandClaude Fable 5 f44be87ab2 #60 PART 2: the RE-EXPORT -- dark code 90KB -> 41KB, coverage 87.3% -> 93.5%
Installed JDK 21 + Ghidra 12.1.2 (no admin, %LOCALAPPDATA%\bt411-tools beside
DXSDK/cmake; runner uses 8.3 SHORT paths because Ghidra's .bat expands
%JAVA_HOME% unquoted and the profile has a space).

New tooling: reference/ghidra_scripts/ExportGaps.java -- ExportAll's exact
output contract PLUS a gap-fill pass (force disassembly + createFunction at
E8 call targets outside functions, data->code pointers at a plausible
prologue, and the census's discovered starts; iterated to a fixpoint,
logged to gapfill_report.tsv).  tools/ghidra_reexport.sh (headless runner,
'reprocess' mode) and tools/gapdiff.py (score two censused exports);
gapcensus.py now censuses any export dir.

Results: 6267 -> 6472 functions (+205 created in 2 rounds: 195 census
starts, 6 call targets, 4 data pointers; 56.1KB newly covered), ZERO
decompile failures.  Dark real code 90.4 -> 40.8 KB (54.8% recovered);
game-side dark 53.1 -> 21.1 KB; regions 428 -> 321.  EVERY historically
dark function now has pseudocode -- including @0x4c05c4 VehicleDead, the
absence that opened this issue.

VALIDATION: the new pseudocode confirms this week's hand reconstruction of
the crouch field-for-field (mapPosture/duckState/squatCapable/myomerEff/
novice gate/SetLegAnimation/ForceUpdate/stability alarm) -- and exposed one
branch the raw pass missed: AIRBORNE AUTO-RISE (mode 3|4 && legState 1 ->
forced squ), now implemented in mech4.cpp and re-benched un-regressed.

PROMOTION: the re-export is canonical reference/decomp/; the previous export
is preserved at reference/decomp/archive_2025export/ so old
`part_0NN.c:LINE` citations still resolve (addresses are stable across both;
line/shard membership is NOT -- cite @ADDR).

New lead recorded: @0x4c0904 is the MASTER BTPlayer Performance (team
resolution, EndMission console post, score heartbeat) -- our @0x4c083c
PlayerSimulation attribution needs a re-check.  KB: source-completeness,
gotcha #20 (the rule is cheap now -- look it up), CLAUDE.md router/layout.
Log: phases/phase-04-gap-census.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 11:11:26 -05:00

19746 lines
597 KiB
C

/* @004a5678 file=bt/mech2.cpp name=FUN_004a5678 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __cdecl FUN_004a5678(int param_1,float param_2,int param_3)
{
undefined4 uVar1;
int iVar2;
float fVar3;
float10 fVar4;
float local_8;
iVar2 = *(int *)(param_1 + 0x40);
if (*(int *)(param_1 + 0x650) == 0) {
if (iVar2 == 5) {
FUN_004a800c(param_1,0x1c);
*(undefined4 *)(param_1 + 0x650) = 1;
}
else if (iVar2 == 6) {
FUN_004a800c(param_1,0x1d);
*(undefined4 *)(param_1 + 0x650) = 1;
}
else if (iVar2 == 7) {
FUN_004a800c(param_1,0x1e);
*(undefined4 *)(param_1 + 0x650) = 1;
}
else if (iVar2 == 8) {
FUN_004a800c(param_1,0x1f);
*(undefined4 *)(param_1 + 0x650) = 1;
}
}
switch(*(undefined4 *)(param_1 + 0x728)) {
case 0:
local_8 = 0.0;
if (*(float *)(param_1 + 0x530) < *(float *)(param_1 + 0x6b4)) {
FUN_004a800c(param_1,5);
}
else {
if (_DAT_004a5bf4 <= *(float *)(param_1 + 0x6b4)) break;
FUN_004a800c(param_1,0x10);
}
case 2:
case 3:
case 4:
case 5:
case 8:
case 9:
case 10:
case 0xb:
case 0xe:
case 0xf:
case 0x10:
case 0x11:
case 0x14:
case 0x15:
case 0x1c:
case 0x1d:
case 0x1e:
case 0x1f:
case 0x20:
fVar4 = FUN_0042790c(param_1 + 0x6bc,
param_2 * *(float *)(param_1 + 0x5a8) * *(float *)(param_1 + 0x5ac),param_3
);
local_8 = (float)fVar4;
*(float *)(param_1 + 0x6b8) = local_8 / param_2;
break;
case 1:
local_8 = 0.0;
break;
case 6:
case 7:
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2;
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x530);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
}
else {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8);
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x534)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x534);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
fVar4 = FUN_0042790c(param_1 + 0x6bc,
param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x534)) *
*(float *)(param_1 + 0x5a8),param_3);
local_8 = (float)fVar4;
break;
case 0xc:
case 0xd:
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2;
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x538) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x538);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
}
else {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8);
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x7a0)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x7a0);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
fVar4 = FUN_0042790c(param_1 + 0x6bc,
param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x34c)) *
*(float *)(param_1 + 0x5a8),param_3);
local_8 = (float)fVar4;
break;
case 0x12:
case 0x13:
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x5b0) * param_2;
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x350) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x350);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
}
else {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x5b0) * param_2 + *(float *)(param_1 + 0x6b8);
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x52c)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x52c);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
fVar3 = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x350);
if (fVar3 <= _DAT_004a5bf4) {
fVar3 = -fVar3;
}
fVar4 = FUN_0042790c(param_1 + 0x6bc,fVar3 * param_2 * *(float *)(param_1 + 0x5a8),param_3);
local_8 = (float)fVar4;
break;
case 0x16:
case 0x17:
case 0x18:
case 0x19:
case 0x1a:
case 0x1b:
FUN_00408440((undefined4 *)(param_1 + 0x598),&DAT_004e0f74);
*(undefined4 *)(param_1 + 0x5a4) = 0;
*(undefined4 *)(param_1 + 0x658) = 0;
*(undefined4 *)(param_1 + 0x650) = 0;
FUN_0041bbd8(param_1 + 0x714,0);
FUN_004283b8(param_1 + 0x6bc,param_3);
break;
default:
FUN_004dbb24(&DAT_00524e20,s_StandingAnimation_0050cfe8 + *(int *)(param_1 + 0x728) * 0x3c,
(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
FUN_0040385c(s_Unsupported_mech_animation__0050d833,s_d__tesla_bt_bt_MECH2_CPP_0050d850,0x206);
}
return (float10)local_8;
}
/* @004a5bf8 file=bt/mech2.cpp name=FUN_004a5bf8 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __cdecl FUN_004a5bf8(int param_1,float param_2,int param_3)
{
undefined4 uVar1;
int iVar2;
float fVar3;
float10 fVar4;
float local_c;
float local_8;
iVar2 = *(int *)(param_1 + 0x728);
if (((iVar2 - 6U < 2) || (iVar2 - 0xcU < 2)) || (iVar2 - 0x12U < 2)) {
if (*(int *)(param_1 + 0x40) == 3) {
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x53c)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x53c);
}
*(undefined4 *)(param_1 + 0x6b4) = uVar1;
}
else {
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x540)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x540);
}
*(undefined4 *)(param_1 + 0x6b4) = uVar1;
}
fVar3 = _DAT_004a6340;
if (_DAT_004a6340 <= *(float *)(param_1 + 0x6b4)) {
fVar3 = *(float *)(param_1 + 0x6b4);
}
*(float *)(param_1 + 0x6b4) = fVar3;
}
switch(*(undefined4 *)(param_1 + 0x728)) {
case 0:
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x530)) {
local_8 = 0.0;
break;
}
FUN_004a800c(param_1,5);
case 2:
case 3:
case 4:
case 5:
case 8:
case 9:
case 10:
case 0xb:
case 0xe:
case 0xf:
case 0x10:
case 0x11:
case 0x14:
case 0x15:
case 0x16:
case 0x17:
case 0x1a:
case 0x1b:
case 0x20:
fVar4 = FUN_0042790c(param_1 + 0x6bc,
param_2 * *(float *)(param_1 + 0x5a8) * *(float *)(param_1 + 0x5ac),param_3
);
local_8 = (float)fVar4;
*(float *)(param_1 + 0x6b8) = local_8 / param_2;
break;
case 1:
local_8 = 0.0;
break;
case 6:
case 7:
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2;
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x530);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
}
else {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8);
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x534)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x534);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
fVar4 = FUN_0042790c(param_1 + 0x6bc,
param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x534)) *
*(float *)(param_1 + 0x5a8),param_3);
local_8 = (float)fVar4;
break;
case 0xc:
case 0xd:
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2;
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x538) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x538);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
}
else {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8);
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x7a0)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x7a0);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
fVar4 = FUN_0042790c(param_1 + 0x6bc,
param_2 * (*(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x34c)) *
*(float *)(param_1 + 0x5a8),param_3);
local_8 = (float)fVar4;
break;
case 0x12:
case 0x13:
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x5b0) * param_2;
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x350) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x350);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
}
else {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x5b0) * param_2 + *(float *)(param_1 + 0x6b8);
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x52c)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x52c);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
fVar3 = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x350);
if (fVar3 <= _DAT_004a6340) {
fVar3 = -fVar3;
}
fVar4 = FUN_0042790c(param_1 + 0x6bc,fVar3 * param_2 * *(float *)(param_1 + 0x5a8),param_3);
local_8 = (float)fVar4;
break;
case 0x18:
case 0x19:
if (*(int *)(param_1 + 0x40) == 3) {
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2;
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x53c) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x53c);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
}
else {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8);
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x544)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x544);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
local_c = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x544);
}
else {
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
if (*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x6b8)) {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_2;
if (*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x540) <= *(float *)(param_1 + 0x6b8)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x540);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
}
else {
*(float *)(param_1 + 0x6b8) =
*(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x6b8);
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x6b4)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x6b4);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
if (*(float *)(param_1 + 0x6b8) <= *(float *)(param_1 + 0x548)) {
uVar1 = *(undefined4 *)(param_1 + 0x6b8);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x548);
}
*(undefined4 *)(param_1 + 0x6b8) = uVar1;
}
local_c = *(float *)(param_1 + 0x6b8) / *(float *)(param_1 + 0x548);
}
fVar4 = FUN_0042790c(param_1 + 0x6bc,param_2 * local_c * *(float *)(param_1 + 0x5a8),param_3);
local_8 = (float)fVar4;
break;
default:
FUN_004dbb24(&DAT_00524e20,s_StandingAnimation_0050cfe8 + *(int *)(param_1 + 0x728) * 0x3c,
(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
FUN_0040385c(s_Unsupported_mech_animation__0050d869,s_d__tesla_bt_bt_MECH2_CPP_0050d886,0x2e8);
}
return (float10)local_8;
}
/* @004a6344 file=? name=FUN_004a6344 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __thiscall
FUN_004a6344(int param_1,int param_2,undefined4 param_3,float param_4,int param_5)
{
undefined4 uVar1;
int iVar2;
float fVar3;
int iVar4;
float10 fVar5;
float local_8;
local_8 = 0.0;
iVar4 = *(int *)(param_2 + 0x40);
iVar2 = *(int *)(param_2 + 0x728);
if (((iVar2 - 6U < 2) || (iVar2 - 0xcU < 2)) || (iVar2 - 0x12U < 2)) {
if (iVar4 == 3) {
if (*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x53c)) {
uVar1 = *(undefined4 *)(param_2 + 0x6b4);
}
else {
uVar1 = *(undefined4 *)(param_2 + 0x53c);
}
*(undefined4 *)(param_2 + 0x6b4) = uVar1;
}
else {
if (*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x540)) {
uVar1 = *(undefined4 *)(param_2 + 0x6b4);
}
else {
uVar1 = *(undefined4 *)(param_2 + 0x540);
}
*(undefined4 *)(param_2 + 0x6b4) = uVar1;
}
fVar3 = _DAT_004a6924;
if (_DAT_004a6924 <= *(float *)(param_2 + 0x6b4)) {
fVar3 = *(float *)(param_2 + 0x6b4);
}
*(float *)(param_2 + 0x6b4) = fVar3;
}
switch(*(undefined4 *)(param_2 + 0x728)) {
default:
goto switchD_004a63ff_caseD_0;
case 2:
FUN_0041bbd8(param_2 + 0x714,1);
goto switchD_004a63ff_caseD_0;
case 3:
case 8:
case 9:
case 0x14:
case 0x15:
case 0x1a:
case 0x1b:
FUN_0041bbd8(param_2 + 0x714,0);
goto switchD_004a63ff_caseD_0;
case 4:
FUN_0041bbd8(param_2 + 0x714,0);
goto switchD_004a63ff_caseD_0;
case 5:
case 6:
case 0xe:
if ((*(float *)(param_2 + 0x530) <= *(float *)(param_2 + 0x6b4)) ||
(*(float *)(param_2 + 0x530) <=
*(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) {
if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x534)) ||
(*(float *)(param_2 + 0x344) * param_4 + *(float *)(param_2 + 0x6b8) <=
*(float *)(param_2 + 0x534))) {
if (iVar4 == 4) {
param_1 = 7;
}
if (iVar4 == 3) {
param_1 = 0x16;
}
LAB_004a6505:
FUN_004a800c(param_2,param_1);
fVar5 = FUN_0042790c(param_2 + 0x6bc,
(param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) /
*(float *)(param_2 + 0x534),param_5);
local_8 = (float)fVar5;
goto switchD_004a63ff_caseD_0;
}
iVar4 = 0xb;
}
else {
iVar4 = 9;
}
break;
case 7:
case 0xf:
if ((*(float *)(param_2 + 0x530) <= *(float *)(param_2 + 0x6b4)) ||
(*(float *)(param_2 + 0x530) <=
*(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) {
if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x534)) ||
(*(float *)(param_2 + 0x344) * param_4 + *(float *)(param_2 + 0x6b8) <=
*(float *)(param_2 + 0x534))) {
if (iVar4 == 3) {
param_1 = 6;
}
if (iVar4 == 4) {
param_1 = 0x17;
}
goto LAB_004a6505;
}
iVar4 = 10;
}
else {
iVar4 = 8;
}
break;
case 10:
case 0xc:
if ((*(float *)(param_2 + 0x538) <= *(float *)(param_2 + 0x6b4)) ||
(*(float *)(param_2 + 0x538) <=
*(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) {
iVar4 = 0xd;
LAB_004a6648:
FUN_004a800c(param_2,iVar4);
fVar5 = FUN_0042790c(param_2 + 0x6bc,
(param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) /
*(float *)(param_2 + 0x34c),param_5);
local_8 = (float)fVar5;
goto switchD_004a63ff_caseD_0;
}
iVar4 = 0xf;
break;
case 0xb:
case 0xd:
if ((*(float *)(param_2 + 0x538) <= *(float *)(param_2 + 0x6b4)) ||
(*(float *)(param_2 + 0x538) <=
*(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) {
iVar4 = 0xc;
goto LAB_004a6648;
}
iVar4 = 0xe;
break;
case 0x10:
case 0x12:
if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x52c)) ||
(*(float *)(param_2 + 0x5b0) * param_4 + *(float *)(param_2 + 0x6b8) <=
*(float *)(param_2 + 0x52c))) {
FUN_004a800c(param_2,0x13);
if ((param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) /
*(float *)(param_2 + 0x350) <= _DAT_004a6924) {
fVar3 = (-param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) /
*(float *)(param_2 + 0x350);
}
else {
fVar3 = (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) /
*(float *)(param_2 + 0x350);
}
fVar5 = FUN_0042790c(param_2 + 0x6bc,fVar3,param_5);
local_8 = (float)fVar5;
goto switchD_004a63ff_caseD_0;
}
iVar4 = 0x15;
break;
case 0x11:
case 0x13:
if ((*(float *)(param_2 + 0x6b4) <= *(float *)(param_2 + 0x52c)) ||
(*(float *)(param_2 + 0x5b0) * param_4 + *(float *)(param_2 + 0x6b8) <=
*(float *)(param_2 + 0x52c))) {
FUN_004a800c(param_2,0x12);
if ((param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) /
*(float *)(param_2 + 0x350) <= _DAT_004a6924) {
fVar3 = (-param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) /
*(float *)(param_2 + 0x350);
}
else {
fVar3 = (param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) /
*(float *)(param_2 + 0x350);
}
fVar5 = FUN_0042790c(param_2 + 0x6bc,fVar3,param_5);
local_8 = (float)fVar5;
goto switchD_004a63ff_caseD_0;
}
iVar4 = 0x14;
break;
case 0x16:
case 0x18:
if ((*(float *)(param_2 + 0x53c) <= *(float *)(param_2 + 0x6b4)) ||
(*(float *)(param_2 + 0x53c) <=
*(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) {
FUN_004a800c(param_2,0x18);
fVar5 = FUN_0042790c(param_2 + 0x6bc,
(param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) /
*(float *)(param_2 + 0x544),param_5);
local_8 = (float)fVar5;
goto switchD_004a63ff_caseD_0;
}
iVar4 = 0x1a;
break;
case 0x17:
case 0x19:
if ((*(float *)(param_2 + 0x540) <= *(float *)(param_2 + 0x6b4)) ||
(*(float *)(param_2 + 0x540) <=
*(float *)(param_2 + 0x6b8) - *(float *)(param_2 + 0x344) * param_4)) {
FUN_004a800c(param_2,0x19);
fVar5 = FUN_0042790c(param_2 + 0x6bc,
(param_4 * *(float *)(param_2 + 0x6b8) * *(float *)(param_2 + 0x5a8)) /
*(float *)(param_2 + 0x548),param_5);
local_8 = (float)fVar5;
goto switchD_004a63ff_caseD_0;
}
iVar4 = 0x1b;
break;
case 0x20:
FUN_0041bbd8(param_2 + 0x714,0);
goto switchD_004a63ff_caseD_0;
}
FUN_004a800c(param_2,iVar4);
fVar5 = FUN_0042790c(param_2 + 0x6bc,param_4 * *(float *)(param_2 + 0x5a8),param_5);
local_8 = (float)fVar5;
switchD_004a63ff_caseD_0:
return (float10)local_8;
}
/* @004a6928 file=? name=FUN_004a6928 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __cdecl FUN_004a6928(int param_1,undefined4 param_2,float param_3)
{
float fVar1;
int iVar2;
float10 fVar3;
float local_8;
local_8 = 0.0;
if (((*(int *)(param_1 + 0x40) == 3) || (*(int *)(param_1 + 0x40) == 4)) &&
(*(int *)(param_1 + 0x580) != 0)) {
fVar3 = FUN_004a7970(param_1,0,param_3);
local_8 = (float)fVar3;
goto LAB_004a6d82;
}
iVar2 = **(int **)(param_1 + 0x128);
switch(*(undefined4 *)(param_1 + 0x3b0)) {
case 2:
FUN_0041bbd8(param_1 + 0x39c,1);
break;
case 3:
case 8:
case 9:
case 0x14:
case 0x15:
case 0x1c:
case 0x1d:
case 0x1e:
case 0x1f:
FUN_0041bbd8(param_1 + 0x39c,0);
break;
case 4:
FUN_0041bbd8(param_1 + 0x39c,0);
break;
case 5:
case 6:
case 0xe:
if ((*(float *)(param_1 + 0x530) <= *(float *)(iVar2 + 0x128)) ||
(*(float *)(param_1 + 0x530) <=
*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) {
if ((*(float *)(iVar2 + 0x128) <= *(float *)(param_1 + 0x534)) ||
(*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x348) <=
*(float *)(param_1 + 0x534))) {
iVar2 = 7;
LAB_004a6a6f:
FUN_004a7fc4(param_1,iVar2);
fVar3 = FUN_0042790c(param_1 + 0x65c,
(param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x534),1);
local_8 = (float)fVar3;
break;
}
iVar2 = 0xb;
}
else {
iVar2 = 9;
}
goto LAB_004a6a06;
case 7:
case 0xf:
if ((*(float *)(param_1 + 0x530) <= *(float *)(iVar2 + 0x128)) ||
(*(float *)(param_1 + 0x530) <=
*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) {
if ((*(float *)(iVar2 + 0x128) <= *(float *)(param_1 + 0x534)) ||
(*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x348) <=
*(float *)(param_1 + 0x534))) {
iVar2 = 6;
goto LAB_004a6a6f;
}
iVar2 = 10;
}
else {
iVar2 = 8;
}
goto LAB_004a6a06;
case 10:
case 0xc:
if ((*(float *)(iVar2 + 0x128) < *(float *)(param_1 + 0x538)) &&
(*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3 <
*(float *)(param_1 + 0x538))) {
iVar2 = 0xf;
goto LAB_004a6a06;
}
iVar2 = 0xd;
LAB_004a6b9d:
FUN_004a7fc4(param_1,iVar2);
fVar3 = FUN_0042790c(param_1 + 0x65c,
(param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x34c),1);
local_8 = (float)fVar3;
break;
case 0xb:
case 0xd:
if ((*(float *)(param_1 + 0x538) <= *(float *)(iVar2 + 0x128)) ||
(*(float *)(param_1 + 0x538) <=
*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) {
iVar2 = 0xc;
goto LAB_004a6b9d;
}
iVar2 = 0xe;
LAB_004a6a06:
FUN_004a7fc4(param_1,iVar2);
fVar3 = FUN_0042790c(param_1 + 0x65c,param_3 * *(float *)(param_1 + 0x5a8),1);
local_8 = (float)fVar3;
break;
case 0x10:
case 0x12:
if ((*(float *)(param_1 + 0x52c) < *(float *)(iVar2 + 0x128)) &&
(*(float *)(param_1 + 0x52c) <
*(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x348))) {
iVar2 = 0x15;
goto LAB_004a6a06;
}
FUN_004a7fc4(param_1,0x13);
if ((param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350) <= _DAT_004a6d88) {
fVar1 = (-param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350);
}
else {
fVar1 = (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350);
}
fVar3 = FUN_0042790c(param_1 + 0x65c,fVar1,1);
local_8 = (float)fVar3;
break;
case 0x11:
case 0x13:
if ((*(float *)(param_1 + 0x52c) < *(float *)(iVar2 + 0x128)) &&
(*(float *)(param_1 + 0x52c) <
*(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x348))) {
iVar2 = 0x14;
goto LAB_004a6a06;
}
FUN_004a7fc4(param_1,0x12);
if ((param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350) <= _DAT_004a6d88) {
fVar1 = (-param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350);
}
else {
fVar1 = (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350);
}
fVar3 = FUN_0042790c(param_1 + 0x65c,fVar1,1);
local_8 = (float)fVar3;
break;
case 0x20:
FUN_0041bbd8(param_1 + 0x39c,0);
}
LAB_004a6d82:
return (float10)local_8;
}
/* @004a6d8c file=? name=FUN_004a6d8c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __cdecl FUN_004a6d8c(int param_1,undefined4 param_2,float param_3,int param_4)
{
float fVar1;
int iVar2;
float10 fVar3;
float local_8;
local_8 = 0.0;
if (((*(int *)(param_1 + 0x40) == 3) || (*(int *)(param_1 + 0x40) == 4)) &&
(*(int *)(param_1 + 0x580) != 0)) {
fVar3 = FUN_004a6344(param_4,param_1,0,param_3,param_4);
local_8 = (float)fVar3;
goto LAB_004a71ec;
}
switch(*(undefined4 *)(param_1 + 0x728)) {
case 2:
FUN_0041bbd8(param_1 + 0x714,1);
break;
case 3:
case 8:
case 9:
case 0x14:
case 0x15:
case 0x1c:
case 0x1d:
case 0x1e:
case 0x1f:
FUN_0041bbd8(param_1 + 0x714,0);
break;
case 4:
FUN_0041bbd8(param_1 + 0x714,0);
break;
case 5:
case 6:
case 0xe:
if ((*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x6b4)) ||
(*(float *)(param_1 + 0x530) <=
*(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_3)) {
if ((*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x534)) ||
(*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x6b8) <=
*(float *)(param_1 + 0x534))) {
iVar2 = 7;
LAB_004a6ed1:
FUN_004a800c(param_1,iVar2);
fVar3 = FUN_0042790c(param_1 + 0x6bc,
(param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x534),param_4);
local_8 = (float)fVar3;
break;
}
iVar2 = 0xb;
}
else {
iVar2 = 9;
}
goto LAB_004a6e66;
case 7:
case 0xf:
if ((*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x6b4)) ||
(*(float *)(param_1 + 0x530) <=
*(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_3)) {
if ((*(float *)(param_1 + 0x6b4) <= *(float *)(param_1 + 0x534)) ||
(*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x6b8) <=
*(float *)(param_1 + 0x534))) {
iVar2 = 6;
goto LAB_004a6ed1;
}
iVar2 = 10;
}
else {
iVar2 = 8;
}
goto LAB_004a6e66;
case 10:
case 0xc:
if ((*(float *)(param_1 + 0x6b4) < *(float *)(param_1 + 0x538)) &&
(*(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_3 <
*(float *)(param_1 + 0x538))) {
iVar2 = 0xf;
goto LAB_004a6e66;
}
iVar2 = 0xd;
LAB_004a7001:
FUN_004a800c(param_1,iVar2);
fVar3 = FUN_0042790c(param_1 + 0x6bc,
(param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x34c),param_4);
local_8 = (float)fVar3;
break;
case 0xb:
case 0xd:
if ((*(float *)(param_1 + 0x538) <= *(float *)(param_1 + 0x6b4)) ||
(*(float *)(param_1 + 0x538) <=
*(float *)(param_1 + 0x6b8) - *(float *)(param_1 + 0x344) * param_3)) {
iVar2 = 0xc;
goto LAB_004a7001;
}
iVar2 = 0xe;
LAB_004a6e66:
FUN_004a800c(param_1,iVar2);
fVar3 = FUN_0042790c(param_1 + 0x6bc,param_3 * *(float *)(param_1 + 0x5a8),param_4);
local_8 = (float)fVar3;
break;
case 0x10:
case 0x12:
if ((*(float *)(param_1 + 0x52c) < *(float *)(param_1 + 0x6b4)) &&
(*(float *)(param_1 + 0x52c) <
*(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x6b8))) {
iVar2 = 0x15;
goto LAB_004a6e66;
}
FUN_004a800c(param_1,0x13);
if ((param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350) <= _DAT_004a71f0) {
fVar1 = (-param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350);
}
else {
fVar1 = (param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350);
}
fVar3 = FUN_0042790c(param_1 + 0x6bc,fVar1,param_4);
local_8 = (float)fVar3;
break;
case 0x11:
case 0x13:
if ((*(float *)(param_1 + 0x52c) < *(float *)(param_1 + 0x6b4)) &&
(*(float *)(param_1 + 0x52c) <
*(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x6b8))) {
iVar2 = 0x14;
goto LAB_004a6e66;
}
FUN_004a800c(param_1,0x12);
if ((param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350) <= _DAT_004a71f0) {
fVar1 = (-param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350);
}
else {
fVar1 = (param_3 * *(float *)(param_1 + 0x6b8) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350);
}
fVar3 = FUN_0042790c(param_1 + 0x6bc,fVar1,param_4);
local_8 = (float)fVar3;
break;
case 0x20:
FUN_0041bbd8(param_1 + 0x714,0);
}
LAB_004a71ec:
return (float10)local_8;
}
/* @004a71f4 file=bt/mech2.cpp name=FUN_004a71f4 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __cdecl FUN_004a71f4(int param_1,float param_2)
{
undefined4 uVar1;
int iVar2;
int iVar3;
int iVar4;
float fVar5;
float10 fVar6;
float local_c;
float local_8;
iVar2 = *(int *)(param_1 + 0x40);
iVar3 = **(int **)(param_1 + 0x128);
iVar4 = *(int *)(param_1 + 0x3b0);
if (((iVar4 - 6U < 2) || (iVar4 - 0xcU < 2)) || (iVar4 - 0x12U < 2)) {
if (iVar2 == 3) {
if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x53c)) {
uVar1 = *(undefined4 *)(iVar3 + 0x128);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x53c);
}
*(undefined4 *)(iVar3 + 0x128) = uVar1;
}
else {
if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x540)) {
uVar1 = *(undefined4 *)(iVar3 + 0x128);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x540);
}
*(undefined4 *)(iVar3 + 0x128) = uVar1;
}
fVar5 = _DAT_004a796c;
if (_DAT_004a796c <= *(float *)(iVar3 + 0x128)) {
fVar5 = *(float *)(iVar3 + 0x128);
}
*(float *)(iVar3 + 0x128) = fVar5;
}
switch(*(undefined4 *)(param_1 + 0x3b0)) {
case 0:
if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x530)) {
local_8 = 0.0;
break;
}
FUN_004a7fc4(param_1,5);
case 2:
case 3:
case 5:
case 8:
case 9:
case 10:
case 0xb:
case 0xe:
case 0xf:
case 0x10:
case 0x11:
case 0x14:
case 0x15:
case 0x16:
case 0x17:
case 0x1a:
case 0x1b:
case 0x20:
switchD_004a72b4_caseD_2:
fVar6 = FUN_0042790c(param_1 + 0x65c,
param_2 * *(float *)(param_1 + 0x5a8) * *(float *)(param_1 + 0x5ac),1);
local_8 = (float)fVar6;
*(float *)(param_1 + 0x348) = local_8 / param_2;
break;
case 1:
local_8 = 0.0;
break;
case 4:
if (*(float *)(param_1 + 0x530) < *(float *)(iVar3 + 0x128)) {
FUN_0041bbd8(param_1 + 0x39c,0);
FUN_004a4c54(param_1,8);
break;
}
goto switchD_004a72b4_caseD_2;
case 6:
case 7:
if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) {
if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) {
*(float *)(param_1 + 0x348) =
*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2;
if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(iVar3 + 0x128);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
if (*(float *)(param_1 + 0x530) <= *(float *)(param_1 + 0x348)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x530);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
}
}
else {
*(float *)(param_1 + 0x348) =
*(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348);
if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(iVar3 + 0x128);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x534)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x534);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
}
fVar6 = FUN_0042790c(param_1 + 0x65c,
param_2 * (*(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x534)) *
*(float *)(param_1 + 0x5a8),1);
local_8 = (float)fVar6;
break;
case 0xc:
case 0xd:
if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) {
if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) {
*(float *)(param_1 + 0x348) =
*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2;
if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(iVar3 + 0x128);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
if (*(float *)(param_1 + 0x538) <= *(float *)(param_1 + 0x348)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x538);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
}
}
else {
*(float *)(param_1 + 0x348) =
*(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348);
if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(iVar3 + 0x128);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x7a0)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x7a0);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
}
fVar6 = FUN_0042790c(param_1 + 0x65c,
param_2 * (*(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x34c)) *
*(float *)(param_1 + 0x5a8),1);
local_8 = (float)fVar6;
break;
case 0x12:
case 0x13:
if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) {
if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) {
*(float *)(param_1 + 0x348) =
*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x5b0) * param_2;
if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(iVar3 + 0x128);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
if (*(float *)(param_1 + 0x350) <= *(float *)(param_1 + 0x348)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x350);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
}
}
else {
*(float *)(param_1 + 0x348) =
*(float *)(param_1 + 0x5b0) * param_2 + *(float *)(param_1 + 0x348);
if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(iVar3 + 0x128);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x52c)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x52c);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
}
fVar5 = *(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x350);
if (fVar5 <= _DAT_004a796c) {
fVar5 = -fVar5;
}
fVar6 = FUN_0042790c(param_1 + 0x65c,fVar5 * param_2 * *(float *)(param_1 + 0x5a8),1);
local_8 = (float)fVar6;
break;
case 0x18:
case 0x19:
if (iVar2 == 3) {
if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) {
if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) {
*(float *)(param_1 + 0x348) =
*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2;
if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(iVar3 + 0x128);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
if (*(float *)(param_1 + 0x53c) <= *(float *)(param_1 + 0x348)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x53c);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
}
}
else {
*(float *)(param_1 + 0x348) =
*(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348);
if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(iVar3 + 0x128);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x544)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x544);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
}
local_c = *(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x544);
}
else {
if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) {
if (*(float *)(iVar3 + 0x128) < *(float *)(param_1 + 0x348)) {
*(float *)(param_1 + 0x348) =
*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_2;
if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x348)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(iVar3 + 0x128);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
if (*(float *)(param_1 + 0x540) <= *(float *)(param_1 + 0x348)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x540);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
}
}
else {
*(float *)(param_1 + 0x348) =
*(float *)(param_1 + 0x344) * param_2 + *(float *)(param_1 + 0x348);
if (*(float *)(param_1 + 0x348) <= *(float *)(iVar3 + 0x128)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(iVar3 + 0x128);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
if (*(float *)(param_1 + 0x348) <= *(float *)(param_1 + 0x548)) {
uVar1 = *(undefined4 *)(param_1 + 0x348);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x548);
}
*(undefined4 *)(param_1 + 0x348) = uVar1;
}
local_c = *(float *)(param_1 + 0x348) / *(float *)(param_1 + 0x548);
}
fVar6 = FUN_0042790c(param_1 + 0x65c,param_2 * local_c * *(float *)(param_1 + 0x5a8),1);
local_8 = (float)fVar6;
break;
default:
FUN_004dbb24(&DAT_00524e20,s_StandingAnimation_0050cfe8 + *(int *)(param_1 + 0x3b0) * 0x3c,
(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
FUN_0040385c(s_Unsupported_mech_animation__0050d89f,s_d__tesla_bt_bt_MECH2_CPP_0050d8bc,0x672);
}
return (float10)local_8;
}
/* @004a7970 file=? name=FUN_004a7970 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __cdecl FUN_004a7970(int param_1,undefined4 param_2,float param_3)
{
undefined4 uVar1;
int iVar2;
int iVar3;
float fVar4;
int unaff_ESI;
int iVar5;
float10 fVar6;
float local_8;
local_8 = 0.0;
iVar5 = *(int *)(param_1 + 0x3b0);
iVar2 = *(int *)(param_1 + 0x40);
iVar3 = **(int **)(param_1 + 0x128);
if (((iVar5 - 6U < 2) || (iVar5 - 0xcU < 2)) || (iVar5 - 0x12U < 2)) {
if (iVar2 == 3) {
if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x53c)) {
uVar1 = *(undefined4 *)(iVar3 + 0x128);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x53c);
}
*(undefined4 *)(iVar3 + 0x128) = uVar1;
}
else {
if (*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x540)) {
uVar1 = *(undefined4 *)(iVar3 + 0x128);
}
else {
uVar1 = *(undefined4 *)(param_1 + 0x540);
}
*(undefined4 *)(iVar3 + 0x128) = uVar1;
}
fVar4 = _DAT_004a7f4c;
if (_DAT_004a7f4c <= *(float *)(iVar3 + 0x128)) {
fVar4 = *(float *)(iVar3 + 0x128);
}
*(float *)(iVar3 + 0x128) = fVar4;
}
switch(*(undefined4 *)(param_1 + 0x3b0)) {
default:
goto switchD_004a7a34_caseD_0;
case 2:
FUN_0041bbd8(param_1 + 0x39c,1);
goto switchD_004a7a34_caseD_0;
case 3:
case 8:
case 9:
case 0x14:
case 0x15:
case 0x1a:
case 0x1b:
FUN_0041bbd8(param_1 + 0x39c,0);
goto switchD_004a7a34_caseD_0;
case 4:
FUN_0041bbd8(param_1 + 0x39c,0);
goto switchD_004a7a34_caseD_0;
case 5:
case 6:
case 0xe:
if ((*(float *)(param_1 + 0x530) <= *(float *)(iVar3 + 0x128)) ||
(*(float *)(param_1 + 0x530) <=
*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) {
if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x534)) ||
(*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x348) <=
*(float *)(param_1 + 0x534))) {
if (iVar2 == 4) {
unaff_ESI = 7;
}
if (iVar2 == 3) {
unaff_ESI = 0x16;
}
LAB_004a7b38:
FUN_004a7fc4(param_1,unaff_ESI);
fVar6 = FUN_0042790c(param_1 + 0x65c,
(param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x534),1);
local_8 = (float)fVar6;
goto switchD_004a7a34_caseD_0;
}
iVar5 = 0xb;
}
else {
iVar5 = 9;
}
break;
case 7:
case 0xf:
if ((*(float *)(param_1 + 0x530) <= *(float *)(iVar3 + 0x128)) ||
(*(float *)(param_1 + 0x530) <=
*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) {
if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x534)) ||
(*(float *)(param_1 + 0x344) * param_3 + *(float *)(param_1 + 0x348) <=
*(float *)(param_1 + 0x534))) {
if (iVar2 == 3) {
unaff_ESI = 6;
}
if (iVar2 == 4) {
unaff_ESI = 0x17;
}
goto LAB_004a7b38;
}
iVar5 = 10;
}
else {
iVar5 = 8;
}
break;
case 10:
case 0xc:
if ((*(float *)(param_1 + 0x538) <= *(float *)(iVar3 + 0x128)) ||
(*(float *)(param_1 + 0x538) <=
*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) {
iVar5 = 0xd;
LAB_004a7c79:
FUN_004a7fc4(param_1,iVar5);
fVar6 = FUN_0042790c(param_1 + 0x65c,
(param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x34c),1);
local_8 = (float)fVar6;
goto switchD_004a7a34_caseD_0;
}
iVar5 = 0xf;
break;
case 0xb:
case 0xd:
if ((*(float *)(param_1 + 0x538) <= *(float *)(iVar3 + 0x128)) ||
(*(float *)(param_1 + 0x538) <=
*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) {
iVar5 = 0xc;
goto LAB_004a7c79;
}
iVar5 = 0xe;
break;
case 0x10:
case 0x12:
if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x52c)) ||
(*(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x348) <=
*(float *)(param_1 + 0x52c))) {
FUN_004a7fc4(param_1,0x13);
if ((param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350) <= _DAT_004a7f4c) {
fVar4 = (-param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350);
}
else {
fVar4 = (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350);
}
fVar6 = FUN_0042790c(param_1 + 0x65c,fVar4,1);
local_8 = (float)fVar6;
goto switchD_004a7a34_caseD_0;
}
iVar5 = 0x15;
break;
case 0x11:
case 0x13:
if ((*(float *)(iVar3 + 0x128) <= *(float *)(param_1 + 0x52c)) ||
(*(float *)(param_1 + 0x5b0) * param_3 + *(float *)(param_1 + 0x348) <=
*(float *)(param_1 + 0x52c))) {
FUN_004a7fc4(param_1,0x12);
if ((param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350) <= _DAT_004a7f4c) {
fVar4 = (-param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350);
}
else {
fVar4 = (param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x350);
}
fVar6 = FUN_0042790c(param_1 + 0x65c,fVar4,1);
local_8 = (float)fVar6;
goto switchD_004a7a34_caseD_0;
}
iVar5 = 0x14;
break;
case 0x16:
case 0x18:
if ((*(float *)(param_1 + 0x53c) <= *(float *)(iVar3 + 0x128)) ||
(*(float *)(param_1 + 0x53c) <=
*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) {
FUN_004a7fc4(param_1,0x18);
fVar6 = FUN_0042790c(param_1 + 0x65c,
(param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x544),1);
local_8 = (float)fVar6;
goto switchD_004a7a34_caseD_0;
}
iVar5 = 0x1a;
break;
case 0x17:
case 0x19:
if ((*(float *)(param_1 + 0x540) <= *(float *)(iVar3 + 0x128)) ||
(*(float *)(param_1 + 0x540) <=
*(float *)(param_1 + 0x348) - *(float *)(param_1 + 0x344) * param_3)) {
FUN_004a7fc4(param_1,0x19);
fVar6 = FUN_0042790c(param_1 + 0x65c,
(param_3 * *(float *)(param_1 + 0x348) * *(float *)(param_1 + 0x5a8)) /
*(float *)(param_1 + 0x548),1);
local_8 = (float)fVar6;
goto switchD_004a7a34_caseD_0;
}
iVar5 = 0x1b;
break;
case 0x20:
FUN_0041bbd8(param_1 + 0x39c,0);
goto switchD_004a7a34_caseD_0;
}
FUN_004a7fc4(param_1,iVar5);
fVar6 = FUN_0042790c(param_1 + 0x65c,param_3 * *(float *)(param_1 + 0x5a8),1);
local_8 = (float)fVar6;
switchD_004a7a34_caseD_0:
return (float10)local_8;
}
/* @004a7f50 file=? name=FUN_004a7f50 */
void __cdecl FUN_004a7f50(undefined4 param_1,char *param_2,char *param_3)
{
char cVar1;
uint uVar2;
uint uVar3;
char *pcVar4;
char *pcVar5;
char local_10 [3];
char local_d [9];
uVar2 = 0xffffffff;
do {
pcVar4 = param_2;
if (uVar2 == 0) break;
uVar2 = uVar2 - 1;
pcVar4 = param_2 + 1;
cVar1 = *param_2;
param_2 = pcVar4;
} while (cVar1 != '\0');
uVar2 = ~uVar2;
pcVar4 = pcVar4 + -uVar2;
pcVar5 = local_10;
for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) {
*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;
pcVar4 = pcVar4 + 4;
pcVar5 = pcVar5 + 4;
}
for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) {
*pcVar5 = *pcVar4;
pcVar4 = pcVar4 + 1;
pcVar5 = pcVar5 + 1;
}
uVar2 = 0xffffffff;
do {
pcVar4 = param_3;
if (uVar2 == 0) break;
uVar2 = uVar2 - 1;
pcVar4 = param_3 + 1;
cVar1 = *param_3;
param_3 = pcVar4;
} while (cVar1 != '\0');
uVar2 = ~uVar2;
pcVar4 = pcVar4 + -uVar2;
pcVar5 = local_10 + 3;
for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) {
*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;
pcVar4 = pcVar4 + 4;
pcVar5 = pcVar5 + 4;
}
for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) {
*pcVar5 = *pcVar4;
pcVar4 = pcVar4 + 1;
pcVar5 = pcVar5 + 1;
}
FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_10,0x10,-1);
return;
}
/* @004a7fc4 file=? name=FUN_004a7fc4 */
void __cdecl FUN_004a7fc4(int param_1,int param_2)
{
FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5cc + param_2 * 4),PTR_FUN_0050d6f0,DAT_0050d6f4
,DAT_0050d6f8);
FUN_0041bbd8(param_1 + 0x39c,param_2);
return;
}
/* @004a800c file=? name=FUN_004a800c */
void __cdecl FUN_004a800c(int param_1,int param_2)
{
FUN_004277a8(param_1 + 0x6bc,*(int *)(param_1 + 0x5cc + param_2 * 4),PTR_FUN_0050d6fc,DAT_0050d700
,DAT_0050d704);
FUN_0041bbd8(param_1 + 0x714,param_2);
return;
}
/* @004a8054 file=? name=FUN_004a8054 */
void __cdecl FUN_004a8054(int param_1,int param_2,float *param_3,float *param_4)
{
int iVar1;
FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5cc + param_2 * 4),PTR_FUN_0050d708,DAT_0050d70c
,DAT_0050d710);
*param_3 = 0.0;
*param_4 = 0.0;
for (iVar1 = 0; iVar1 < *(int *)(param_1 + 0x670); iVar1 = iVar1 + 1) {
*param_3 = (*(float *)(*(int *)(param_1 + 0x680) + iVar1 * 4) - *param_4) *
*(float *)(*(int *)(param_1 + 0x690) + 8 + iVar1 * 0xc) + *param_3;
*param_4 = *(float *)(*(int *)(param_1 + 0x680) + iVar1 * 4);
}
return;
}
/* @004a80d4 file=? name=FUN_004a80d4 */
void __cdecl FUN_004a80d4(int param_1,int param_2)
{
char *pcVar1;
char cVar2;
undefined4 *puVar3;
int iVar4;
uint uVar5;
uint uVar6;
char *pcVar7;
char *pcVar8;
char local_20 [3];
undefined4 local_1d;
float local_14;
float local_10;
float local_c;
float local_8;
*(undefined4 *)(param_1 + 0x5c4) = 0;
pcVar1 = (char *)(param_2 + 0x40);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8d5);
*(undefined4 *)(param_1 + 0x5e0) = *puVar3;
FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5e0),PTR_FUN_0050d714,DAT_0050d718,DAT_0050d71c)
;
*(undefined4 *)(param_1 + 0x530) =
*(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8d9);
*(undefined4 *)(param_1 + 0x5e4) = *puVar3;
FUN_004a8054(param_1,6,&local_8,&local_c);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8dd);
*(undefined4 *)(param_1 + 0x5e8) = *puVar3;
FUN_004a8054(param_1,7,&local_10,&local_14);
*(float *)(param_1 + 0x534) = (local_8 + local_10) / (local_c + local_14);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8e1);
*(undefined4 *)(param_1 + 0x5ec) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8e5);
*(undefined4 *)(param_1 + 0x5f0) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8e9);
*(undefined4 *)(param_1 + 0x5f4) = *puVar3;
FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5f4),PTR_FUN_0050d720,DAT_0050d724,DAT_0050d728)
;
*(undefined4 *)(param_1 + 0x538) =
*(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8ed);
*(undefined4 *)(param_1 + 0x5f8) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8f1);
*(undefined4 *)(param_1 + 0x5fc) = *puVar3;
FUN_004a8054(param_1,0xc,&local_8,&local_c);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8f5);
*(undefined4 *)(param_1 + 0x600) = *puVar3;
FUN_004a8054(param_1,0xd,&local_10,&local_14);
*(float *)(param_1 + 0x34c) = (local_8 + local_10) / (local_c + local_14);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8f9);
*(undefined4 *)(param_1 + 0x604) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d8fd);
*(undefined4 *)(param_1 + 0x608) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d901);
*(undefined4 *)(param_1 + 0x64c) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d905);
*(undefined4 *)(param_1 + 0x60c) = *puVar3;
FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x60c),PTR_FUN_0050d72c,DAT_0050d730,DAT_0050d734)
;
*(undefined4 *)(param_1 + 0x52c) =
*(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d909);
*(undefined4 *)(param_1 + 0x610) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d90d);
*(undefined4 *)(param_1 + 0x61c) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d911);
*(undefined4 *)(param_1 + 0x620) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d915);
*(undefined4 *)(param_1 + 0x614) = *puVar3;
FUN_004a8054(param_1,0x12,&local_8,&local_c);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d919);
*(undefined4 *)(param_1 + 0x618) = *puVar3;
FUN_004a8054(param_1,0x13,&local_8,&local_c);
uVar5 = 0xffffffff;
*(float *)(param_1 + 0x350) = (local_8 + local_10) / (local_c + local_14);
*(float *)(param_1 + 0x350) = -*(float *)(param_1 + 0x350);
pcVar7 = pcVar1;
do {
pcVar8 = pcVar7;
if (uVar5 == 0) break;
uVar5 = uVar5 - 1;
pcVar8 = pcVar7 + 1;
cVar2 = *pcVar7;
pcVar7 = pcVar8;
} while (cVar2 != '\0');
uVar5 = ~uVar5;
pcVar7 = pcVar8 + -uVar5;
pcVar8 = local_20;
for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
*(undefined4 *)pcVar8 = *(undefined4 *)pcVar7;
pcVar7 = pcVar7 + 4;
pcVar8 = pcVar8 + 4;
}
for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) {
*pcVar8 = *pcVar7;
pcVar7 = pcVar7 + 1;
pcVar8 = pcVar8 + 1;
}
local_1d = DAT_0050d91d;
iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1);
if (iVar4 != 0) {
*(undefined4 *)(param_1 + 0x580) = 1;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d921);
*(undefined4 *)(param_1 + 0x624) = *puVar3;
FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x624),PTR_FUN_0050d738,DAT_0050d73c,
DAT_0050d740);
*(undefined4 *)(param_1 + 0x53c) =
*(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d925);
*(undefined4 *)(param_1 + 0x628) = *puVar3;
FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x628),PTR_FUN_0050d744,DAT_0050d748,
DAT_0050d74c);
*(undefined4 *)(param_1 + 0x540) =
*(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d929);
*(undefined4 *)(param_1 + 0x62c) = *puVar3;
FUN_004a8054(param_1,0x18,&local_8,&local_c);
*(float *)(param_1 + 0x544) = local_8 / local_c;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d92d);
*(undefined4 *)(param_1 + 0x630) = *puVar3;
FUN_004a8054(param_1,0x19,&local_8,&local_c);
*(float *)(param_1 + 0x548) = local_8 / local_c;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d931);
*(undefined4 *)(param_1 + 0x634) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d935);
*(undefined4 *)(param_1 + 0x638) = *puVar3;
}
*(undefined4 *)(param_1 + 0x584) = 0;
uVar5 = 0xffffffff;
pcVar7 = pcVar1;
do {
pcVar8 = pcVar7;
if (uVar5 == 0) break;
uVar5 = uVar5 - 1;
pcVar8 = pcVar7 + 1;
cVar2 = *pcVar7;
pcVar7 = pcVar8;
} while (cVar2 != '\0');
uVar5 = ~uVar5;
pcVar7 = pcVar8 + -uVar5;
pcVar8 = local_20;
for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
*(undefined4 *)pcVar8 = *(undefined4 *)pcVar7;
pcVar7 = pcVar7 + 4;
pcVar8 = pcVar8 + 4;
}
for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) {
*pcVar8 = *pcVar7;
pcVar7 = pcVar7 + 1;
pcVar8 = pcVar8 + 1;
}
local_1d = DAT_0050d939;
iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1);
if (iVar4 != 0) {
*(undefined4 *)(param_1 + 0x584) = 1;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d93d);
*(undefined4 *)(param_1 + 0x5d8) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d941);
*(undefined4 *)(param_1 + 0x5d4) = *puVar3;
}
*(undefined4 *)(param_1 + 0x588) = 0;
uVar5 = 0xffffffff;
pcVar7 = pcVar1;
do {
pcVar8 = pcVar7;
if (uVar5 == 0) break;
uVar5 = uVar5 - 1;
pcVar8 = pcVar7 + 1;
cVar2 = *pcVar7;
pcVar7 = pcVar8;
} while (cVar2 != '\0');
uVar5 = ~uVar5;
pcVar7 = pcVar8 + -uVar5;
pcVar8 = local_20;
for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
*(undefined4 *)pcVar8 = *(undefined4 *)pcVar7;
pcVar7 = pcVar7 + 4;
pcVar8 = pcVar8 + 4;
}
for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) {
*pcVar8 = *pcVar7;
pcVar7 = pcVar7 + 1;
pcVar8 = pcVar8 + 1;
}
local_1d = DAT_0050d945;
iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1);
if (iVar4 != 0) {
*(undefined4 *)(param_1 + 0x588) = 1;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d949);
*(undefined4 *)(param_1 + 0x5dc) = *puVar3;
}
return;
}
/* @004a86c8 file=? name=FUN_004a86c8 */
void __cdecl FUN_004a86c8(int param_1,int param_2)
{
char *pcVar1;
char cVar2;
undefined4 *puVar3;
int iVar4;
uint uVar5;
uint uVar6;
char *pcVar7;
char *pcVar8;
char local_20 [3];
undefined4 local_1d;
undefined1 uStack_19;
float local_14;
float local_10;
float local_c;
float local_8;
*(undefined4 *)(param_1 + 0x5c4) = 0;
pcVar1 = (char *)(param_2 + 0x40);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d94d);
*(undefined4 *)(param_1 + 0x5e0) = *puVar3;
FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5e0),PTR_FUN_0050d750,DAT_0050d754,DAT_0050d758)
;
*(undefined4 *)(param_1 + 0x530) =
*(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d952);
*(undefined4 *)(param_1 + 0x5e4) = *puVar3;
FUN_004a8054(param_1,6,&local_8,&local_c);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d957);
*(undefined4 *)(param_1 + 0x5e8) = *puVar3;
FUN_004a8054(param_1,7,&local_10,&local_14);
*(float *)(param_1 + 0x534) = (local_8 + local_10) / (local_c + local_14);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d95c);
*(undefined4 *)(param_1 + 0x5ec) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d961);
*(undefined4 *)(param_1 + 0x5f0) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d966);
*(undefined4 *)(param_1 + 0x5f4) = *puVar3;
FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x5f4),PTR_FUN_0050d75c,DAT_0050d760,DAT_0050d764)
;
*(undefined4 *)(param_1 + 0x538) =
*(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d96b);
*(undefined4 *)(param_1 + 0x5f8) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d970);
*(undefined4 *)(param_1 + 0x5fc) = *puVar3;
FUN_004a8054(param_1,0xc,&local_8,&local_c);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d975);
*(undefined4 *)(param_1 + 0x600) = *puVar3;
FUN_004a8054(param_1,0xd,&local_10,&local_14);
*(float *)(param_1 + 0x34c) = (local_8 + local_10) / (local_c + local_14);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d97a);
*(undefined4 *)(param_1 + 0x604) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d97f);
*(undefined4 *)(param_1 + 0x608) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d984);
*(undefined4 *)(param_1 + 0x64c) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d989);
*(undefined4 *)(param_1 + 0x60c) = *puVar3;
FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x60c),PTR_FUN_0050d768,DAT_0050d76c,DAT_0050d770)
;
*(undefined4 *)(param_1 + 0x52c) =
*(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d98e);
*(undefined4 *)(param_1 + 0x610) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d993);
*(undefined4 *)(param_1 + 0x61c) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d998);
*(undefined4 *)(param_1 + 0x620) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d99d);
*(undefined4 *)(param_1 + 0x614) = *puVar3;
FUN_004a8054(param_1,0x12,&local_8,&local_c);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9a2);
*(undefined4 *)(param_1 + 0x618) = *puVar3;
FUN_004a8054(param_1,0x13,&local_8,&local_c);
uVar5 = 0xffffffff;
*(float *)(param_1 + 0x350) = (local_8 + local_10) / (local_c + local_14);
*(float *)(param_1 + 0x350) = -*(float *)(param_1 + 0x350);
pcVar7 = pcVar1;
do {
pcVar8 = pcVar7;
if (uVar5 == 0) break;
uVar5 = uVar5 - 1;
pcVar8 = pcVar7 + 1;
cVar2 = *pcVar7;
pcVar7 = pcVar8;
} while (cVar2 != '\0');
uVar5 = ~uVar5;
pcVar7 = pcVar8 + -uVar5;
pcVar8 = local_20;
for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
*(undefined4 *)pcVar8 = *(undefined4 *)pcVar7;
pcVar7 = pcVar7 + 4;
pcVar8 = pcVar8 + 4;
}
for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) {
*pcVar8 = *pcVar7;
pcVar7 = pcVar7 + 1;
pcVar8 = pcVar8 + 1;
}
local_1d = DAT_0050d9a7;
uStack_19 = DAT_0050d9ab;
iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1);
if (iVar4 != 0) {
*(undefined4 *)(param_1 + 0x580) = 1;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9ac);
*(undefined4 *)(param_1 + 0x624) = *puVar3;
FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x624),PTR_FUN_0050d774,DAT_0050d778,
DAT_0050d77c);
*(undefined4 *)(param_1 + 0x53c) =
*(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9b1);
*(undefined4 *)(param_1 + 0x628) = *puVar3;
FUN_004277a8(param_1 + 0x65c,*(int *)(param_1 + 0x628),PTR_FUN_0050d780,DAT_0050d784,
DAT_0050d788);
*(undefined4 *)(param_1 + 0x540) =
*(undefined4 *)(*(int *)(param_1 + 0x690) + 8 + *(int *)(param_1 + 0x670) * 0xc);
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9b6);
*(undefined4 *)(param_1 + 0x62c) = *puVar3;
FUN_004a8054(param_1,0x18,&local_8,&local_c);
*(float *)(param_1 + 0x544) = local_8 / local_c;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9bb);
*(undefined4 *)(param_1 + 0x630) = *puVar3;
FUN_004a8054(param_1,0x19,&local_8,&local_c);
*(float *)(param_1 + 0x548) = local_8 / local_c;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9c0);
*(undefined4 *)(param_1 + 0x634) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9c5);
*(undefined4 *)(param_1 + 0x638) = *puVar3;
}
*(undefined4 *)(param_1 + 0x584) = 0;
uVar5 = 0xffffffff;
pcVar7 = pcVar1;
do {
pcVar8 = pcVar7;
if (uVar5 == 0) break;
uVar5 = uVar5 - 1;
pcVar8 = pcVar7 + 1;
cVar2 = *pcVar7;
pcVar7 = pcVar8;
} while (cVar2 != '\0');
uVar5 = ~uVar5;
pcVar7 = pcVar8 + -uVar5;
pcVar8 = local_20;
for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
*(undefined4 *)pcVar8 = *(undefined4 *)pcVar7;
pcVar7 = pcVar7 + 4;
pcVar8 = pcVar8 + 4;
}
for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) {
*pcVar8 = *pcVar7;
pcVar7 = pcVar7 + 1;
pcVar8 = pcVar8 + 1;
}
local_1d = DAT_0050d9ca;
uStack_19 = DAT_0050d9ce;
iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1);
if (iVar4 != 0) {
*(undefined4 *)(param_1 + 0x584) = 1;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9cf);
*(undefined4 *)(param_1 + 0x5d8) = *puVar3;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9d4);
*(undefined4 *)(param_1 + 0x5d4) = *puVar3;
}
*(undefined4 *)(param_1 + 0x588) = 0;
uVar5 = 0xffffffff;
pcVar7 = pcVar1;
do {
pcVar8 = pcVar7;
if (uVar5 == 0) break;
uVar5 = uVar5 - 1;
pcVar8 = pcVar7 + 1;
cVar2 = *pcVar7;
pcVar7 = pcVar8;
} while (cVar2 != '\0');
uVar5 = ~uVar5;
pcVar7 = pcVar8 + -uVar5;
pcVar8 = local_20;
for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
*(undefined4 *)pcVar8 = *(undefined4 *)pcVar7;
pcVar7 = pcVar7 + 4;
pcVar8 = pcVar8 + 4;
}
for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) {
*pcVar8 = *pcVar7;
pcVar7 = pcVar7 + 1;
pcVar8 = pcVar8 + 1;
}
local_1d = DAT_0050d9d9;
uStack_19 = DAT_0050d9dd;
iVar4 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),local_20,0x10,-1);
if (iVar4 != 0) {
*(undefined4 *)(param_1 + 0x588) = 1;
puVar3 = (undefined4 *)FUN_004a7f50(param_1,pcVar1,&DAT_0050d9de);
*(undefined4 *)(param_1 + 0x5dc) = *puVar3;
}
return;
}
/* @004a8cc0 file=? name=FUN_004a8cc0 */
/* WARNING: Type propagation algorithm not settling */
undefined4 __cdecl
FUN_004a8cc0(int param_1,char *param_2,int param_3,int param_4,char *param_5,char *param_6,
char *param_7,int param_8,int param_9)
{
char *pcVar1;
char *pcVar2;
int iVar3;
undefined3 extraout_var;
int *piVar4;
char *pcVar5;
bool bVar6;
byte bVar7;
pcVar5 = s_HeatSinkClassID_0050da25;
pcVar2 = param_2;
do {
bVar6 = *pcVar2 == *pcVar5;
if (!bVar6) break;
if (*pcVar2 == '\0') goto LAB_004a8cf5;
pcVar1 = pcVar2 + 1;
bVar6 = *pcVar1 == pcVar5[1];
if (!bVar6) break;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
LAB_004a8cf5:
iVar3 = FUN_004ae9dc(param_4,param_5,param_6,param_7,param_8,param_9,param_1);
}
else {
pcVar5 = s_ReservoirClassID_0050da35;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a8d6f;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a8d6f;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004af580(param_4,param_5,param_6,param_7,param_8,param_9,param_1);
}
else {
LAB_004a8d6f:
pcVar5 = s_CondenserClassID_0050da46;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a8dbf;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a8dbf;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004ae658(param_4,param_5,param_6,param_7,param_8,param_9,param_1);
}
else {
LAB_004a8dbf:
pcVar5 = s_PoweredSubsystemClassID_0050da57;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a8e0f;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a8e0f;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004b13ac(param_4,param_5,param_6,param_7,param_8,param_9,param_1);
}
else {
LAB_004a8e0f:
pcVar5 = s_MyomersClassID_0050da6f;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a8e5f;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a8e5f;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004b9140(param_4,param_5,param_6,param_7,param_8,param_9,param_1);
}
else {
LAB_004a8e5f:
pcVar5 = s_GeneratorClassID_0050da7e;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a8eaf;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a8eaf;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004b23bc(param_4,param_5,param_6,param_7,param_8,param_9,param_1);
}
else {
LAB_004a8eaf:
pcVar5 = s_HUDClassID_0050da8f;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a8eff;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a8eff;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004b81d4(param_4,param_5,param_6,param_7,param_8,param_9,param_1);
}
else {
LAB_004a8eff:
pcVar5 = s_SearchlightClassID_0050da9a;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a8f4f;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a8f4f;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004b85a8(param_4,param_5,param_6,param_7,param_8,param_9,param_1);
}
else {
LAB_004a8f4f:
pcVar5 = s_ThermalSightClassID_0050daad;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a8f9f;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a8f9f;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004b87d4(param_4,param_5,param_6,param_7,param_8,param_9,param_1);
}
else {
LAB_004a8f9f:
pcVar5 = s_SensorClassID_0050dac1;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a8fef;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a8fef;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
bVar6 = FUN_004b1dcc(param_4,param_5,param_6,param_7,param_8,param_9,param_1);
iVar3 = CONCAT31(extraout_var,bVar6);
}
else {
LAB_004a8fef:
pcVar5 = s_GyroscopeClassID_0050dacf;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a903f;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a903f;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004b3eb4(param_4,param_5,param_6,param_7,param_8,param_9,param_1
);
}
else {
LAB_004a903f:
pcVar5 = s_TorsoClassID_0050dae0;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a908f;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a908f;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004b6fec(param_4,param_5,param_6,param_7,param_8,param_9,
param_1);
}
else {
LAB_004a908f:
pcVar5 = s_EmitterClassID_0050daed;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a90e3;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a90e3;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004bb478(param_3,param_4,param_5,param_6,param_7,param_8,
param_9,param_1);
}
else {
LAB_004a90e3:
pcVar5 = s_PPCClassID_0050dafc;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a9137;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a9137;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004bb8e0(param_3,param_4,param_5,param_6,param_7,param_8,
param_9,param_1);
}
else {
LAB_004a9137:
pcVar5 = s_ProjectileWeaponClassID_0050db07;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a918b;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a918b;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004bc7cc(param_3,param_4,param_5,param_6,param_7,param_8
,param_9,param_1);
}
else {
LAB_004a918b:
pcVar5 = s_MissileLauncherClassID_0050db1f;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a91df;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a91df;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004bd08c(param_3,param_4,param_5,param_6,param_7,
param_8,param_9,param_1);
}
else {
LAB_004a91df:
pcVar5 = s_GaussRifleClassID_0050db36;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a9233;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a9233;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004bdd14(param_3,param_4,param_5,param_6,param_7,
param_8,param_9,param_1);
}
else {
LAB_004a9233:
pcVar5 = s_AmmoBinClassID_0050db48;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a9287;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a9287;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_004bd6f0(param_3,param_4,param_5,param_6,param_7,
param_8,param_9,param_1);
}
else {
LAB_004a9287:
pcVar5 = s_SubsystemMessageManagerClassID_0050db57;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a92d7;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a92d7;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (bVar6) {
iVar3 = FUN_0049be10(param_3,param_4,param_5,param_6,param_7
,param_8,param_9);
}
else {
LAB_004a92d7:
pcVar5 = s_MechTechClassID_0050db76;
pcVar2 = param_2;
do {
if (*pcVar2 != *pcVar5) goto LAB_004a9324;
bVar6 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar5[1]) goto LAB_004a9324;
pcVar2 = pcVar2 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (!bVar6) {
LAB_004a9324:
bVar7 = 0x3a;
FUN_004dbb24(&DAT_00524e20,param_5,(char *)0x0);
piVar4 = FUN_004db92c(&DAT_00524e20,bVar7);
FUN_004dbb24(piVar4,param_6,(char *)0x0);
FUN_004dbb24(piVar4,
s_has_an_unknown_component_type_of_0050db86,
(char *)0x0);
FUN_004dbb24(piVar4,param_2,(char *)0x0);
FUN_004d9c38(piVar4);
return 0xffffffff;
}
iVar3 = FUN_004ad48c(param_4,param_5,param_6,param_7,param_8
,param_9,param_3);
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
if (iVar3 == 0) {
return 0xffffffff;
}
return 1;
}
/* @004a9390 file=? name=FUN_004a9390 */
undefined4 __cdecl FUN_004a9390(int param_1,char *param_2,int param_3,undefined4 *param_4)
{
char *pcVar1;
int iVar2;
undefined4 uVar3;
int *piVar4;
undefined4 *puVar5;
byte bVar6;
undefined4 local_58 [2];
int *local_50;
int local_48;
char *local_44;
uint local_40;
int *local_3c;
char *local_38;
int local_34;
int *local_30;
char *local_2c;
int *local_28;
char *local_24;
int *local_20;
int *local_1c;
char *local_18;
int *local_14;
int *local_10;
char *local_c;
char *local_8;
iVar2 = FUN_00404088(param_3,s_gamedata_0050dba9,s_Subsystems_0050dbb2,&local_8);
if (iVar2 == 0) {
local_c = param_2;
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_is_missing__sub_file_specificati_0050dbbd,(char *)0x0);
uVar3 = 0xffffffff;
}
else {
local_10 = (int *)FUN_004064fc((char *)*param_4,local_8);
piVar4 = (int *)FUN_00402298(0x20);
if (piVar4 == (int *)0x0) {
local_14 = (int *)0x0;
}
else {
local_14 = FUN_00403e84(piVar4,(char *)local_10,1);
}
local_20 = FUN_0040485c((int)local_14,(char *)0x0);
iVar2 = 0;
for (puVar5 = (undefined4 *)local_20[1]; puVar5 != (undefined4 *)0x0;
puVar5 = (undefined4 *)*puVar5) {
iVar2 = iVar2 + 1;
}
if (iVar2 == 0) {
local_24 = param_2;
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_has_no_subsystems__0050dbe3,(char *)0x0);
if (local_20 != (int *)0x0) {
(**(code **)*local_20)(local_20,3);
}
FUN_004022d0(local_10);
FUN_00403ecc(local_14,3);
uVar3 = 0xffffffff;
}
else {
local_28 = (int *)FUN_004022b0(iVar2 * 0x770);
FUN_004030dc(local_58,local_28,iVar2 * 0x770,0);
*local_50 = iVar2;
local_50 = local_50 + 1;
for (puVar5 = (undefined4 *)local_20[1]; puVar5 != (undefined4 *)0x0;
puVar5 = (undefined4 *)*puVar5) {
pcVar1 = (char *)(puVar5 + 2);
iVar2 = FUN_00404088((int)local_14,pcVar1,&DAT_0050dbf8,&local_2c);
if (iVar2 == 0) {
bVar6 = 0x3a;
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
piVar4 = FUN_004db92c(&DAT_00524e20,bVar6);
FUN_004dbb24(piVar4,pcVar1,(char *)0x0);
FUN_004dbb24(piVar4,s_missing_Type__0050dbfd,(char *)0x0);
LAB_004a9555:
FUN_004022e8(local_28);
if (local_20 != (int *)0x0) {
(**(code **)*local_20)(local_20,3);
}
FUN_004022d0(local_10);
FUN_00403ecc(local_14,3);
return 0xffffffff;
}
iVar2 = FUN_00404088((int)local_14,pcVar1,s_Include_0050dc0d,&local_18);
if (iVar2 == 0) {
piVar4 = (int *)0x0;
local_1c = (int *)0x0;
}
else {
piVar4 = (int *)FUN_004064fc((char *)*param_4,local_18);
local_30 = (int *)FUN_00402298(0x20);
if (local_30 == (int *)0x0) {
local_1c = (int *)0x0;
}
else {
local_1c = FUN_00403e84(local_30,(char *)piVar4,1);
}
}
local_34 = 1;
if (piVar4 != (int *)0x0) {
local_38 = FUN_004d4c78(local_2c,s_ClassID_0050dc15);
iVar2 = FUN_004d4a78(local_2c);
local_3c = (int *)FUN_004022b0(iVar2 + 1);
local_40 = (int)local_38 - (int)local_2c;
local_3c = FUN_004d4b9c(local_3c,local_2c,local_40);
local_44 = (char *)((int)local_3c + local_40);
*local_44 = DAT_0050dc1d;
local_48 = FUN_004a8cc0(local_34,local_2c,param_1,param_3,param_2,(char *)local_3c,
(char *)local_50,(int)local_1c,(int)param_4);
local_34 = local_34 + 1;
FUN_004022e8(local_3c);
if (local_48 == -1) goto LAB_004a9555;
}
iVar2 = FUN_004a8cc0(local_34,local_2c,param_1,param_3,param_2,pcVar1,(char *)local_50,
(int)local_14,(int)param_4);
if (iVar2 == -1) goto LAB_004a9555;
if (piVar4 != (int *)0x0) {
FUN_004022d0(piVar4);
FUN_00403ecc(local_1c,3);
}
local_50 = (int *)((int)local_50 + local_50[9]);
}
puVar5 = (undefined4 *)
FUN_00406db4(param_1,param_2,0x11,1,0,local_28,(int)local_50 - (int)local_28,-1);
FUN_004022e8(local_28);
if (local_20 != (int *)0x0) {
(**(code **)*local_20)(local_20,3);
}
FUN_004022d0(local_10);
FUN_00403ecc(local_14,3);
uVar3 = *puVar5;
}
}
return uVar3;
}
/* @004a9770 file=? name=FUN_004a9770 */
undefined * __cdecl FUN_004a9770(char *param_1)
{
char *pcVar1;
char *pcVar2;
char *pcVar3;
bool bVar4;
pcVar3 = &DAT_0050dc1f;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a97a4;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a97a4;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_0050bde4;
}
LAB_004a97a4:
pcVar3 = s_ControlsMapper_0050dc20;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a97d1;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a97d1;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_0050ee00;
}
LAB_004a97d1:
pcVar3 = s_AmmoBinClassID_0050dc2f;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a97fe;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a97fe;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_005125bc;
}
LAB_004a97fe:
pcVar3 = s_HeatSinkClassID_0050dc3e;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a982b;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a982b;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_0050e580;
}
LAB_004a982b:
pcVar3 = s_ReservoirClassID_0050dc4e;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a9858;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a9858;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_0050e640;
}
LAB_004a9858:
pcVar3 = s_CondenserClassID_0050dc5f;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a9885;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a9885;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_0050e4ec;
}
LAB_004a9885:
pcVar3 = s_PoweredSubsystemClassID_0050dc70;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a98b2;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a98b2;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_0050f4ac;
}
LAB_004a98b2:
pcVar3 = s_MyomersClassID_0050dc88;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a98df;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a98df;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_0051154c;
}
LAB_004a98df:
pcVar3 = s_GeneratorClassID_0050dc97;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a990c;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a990c;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_0050fb50;
}
LAB_004a990c:
pcVar3 = s_HUDClassID_0050dca8;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a9939;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a9939;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_00511078;
}
LAB_004a9939:
pcVar3 = s_SensorClassID_0050dcb3;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a9966;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a9966;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_0050fa1c;
}
LAB_004a9966:
pcVar3 = s_SearchlightClassID_0050dcc1;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a9993;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a9993;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_00511198;
}
LAB_004a9993:
pcVar3 = s_ThermalSightClassID_0050dcd4;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a99c0;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a99c0;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_00511228;
}
LAB_004a99c0:
pcVar3 = s_GyroscopeClassID_0050dce8;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a99ed;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a99ed;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_0050fdb0;
}
LAB_004a99ed:
pcVar3 = s_TorsoClassID_0050dcf9;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a9a1a;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a9a1a;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_00510af8;
}
LAB_004a9a1a:
pcVar3 = s_EmitterClassID_0050dd06;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a9a47;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a9a47;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_00511d78;
}
LAB_004a9a47:
pcVar3 = s_PPCClassID_0050dd15;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a9a74;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a9a74;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_005120c4;
}
LAB_004a9a74:
pcVar3 = s_ProjectileWeaponClassID_0050dd20;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a9aa1;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a9aa1;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_00512198;
}
LAB_004a9aa1:
pcVar3 = s_MissileLauncherClassID_0050dd38;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a9ace;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a9ace;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_00512478;
}
LAB_004a9ace:
pcVar3 = s_GaussRifleClassID_0050dd4f;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a9afb;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a9afb;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_00512478;
}
LAB_004a9afb:
pcVar3 = s_ControlsMapper_0050dd61;
pcVar2 = param_1;
do {
if (*pcVar2 != *pcVar3) goto LAB_004a9b28;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004a9b28;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
return &DAT_0050ee00;
}
LAB_004a9b28:
pcVar2 = s_MechTech_0050dd70;
do {
if (*param_1 != *pcVar2) {
return (undefined *)0x0;
}
bVar4 = true;
if (*param_1 == '\0') break;
pcVar3 = param_1 + 1;
if (*pcVar3 != pcVar2[1]) {
return (undefined *)0x0;
}
param_1 = param_1 + 2;
pcVar2 = pcVar2 + 2;
bVar4 = *pcVar3 == '\0';
} while (!bVar4);
if (!bVar4) {
return (undefined *)0x0;
}
return &DAT_0050e270;
}
/* @004a9b5c file=bt/mech4.cpp name=FUN_004a9b5c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004a9b5c(int *param_1,float param_2)
{
int *piVar1;
uint *puVar2;
float fVar3;
int iVar4;
undefined4 *puVar5;
int iVar6;
int iVar7;
float10 fVar8;
float *pfVar9;
float local_258;
float local_254 [2];
int local_24c;
undefined4 local_248;
undefined4 local_244;
undefined4 local_240;
undefined4 local_23c [2];
undefined4 local_234;
undefined4 local_230;
undefined4 local_22c [2];
int local_224;
uint local_220;
undefined4 local_21c;
float local_218;
float local_214;
undefined4 local_210;
undefined4 local_20c;
float local_208;
undefined4 local_204;
undefined4 local_200;
undefined4 local_1fc;
undefined4 local_1f8;
undefined4 local_1f4;
undefined4 local_1f0;
undefined4 local_1ec;
undefined4 local_1e8;
undefined4 local_1e4;
undefined4 local_1e0;
undefined4 local_1dc;
float local_1d8;
float local_1d4;
float local_1d0;
undefined4 local_1cc;
float local_1c8;
float local_1c4;
undefined4 local_1c0;
undefined4 local_1bc;
float local_1b8;
undefined4 local_1b4;
undefined4 local_1b0;
undefined4 local_1ac;
undefined4 local_1a8;
undefined4 local_1a4;
undefined4 local_1a0;
float local_19c;
float local_198;
float local_194;
int local_190;
int local_18c;
int local_188;
int local_184;
int local_180;
int local_17c;
int local_178;
float local_174;
int local_170;
undefined4 local_16c;
undefined4 local_168;
undefined4 local_164;
float local_160;
float local_15c;
float local_158;
undefined4 local_154;
float local_150;
undefined4 local_14c;
int local_148 [7];
int local_12c [3];
int local_120;
float local_11c;
int local_118;
float local_114;
float local_110;
float local_10c;
int local_108 [5];
uint local_f4 [5];
undefined4 local_e0;
undefined4 local_dc;
int local_d8;
int *local_d4;
float local_d0;
float local_cc;
float local_c8;
float local_c4;
float local_c0;
int local_bc;
float local_b8;
int *local_b4;
int local_b0;
float local_ac;
float local_a8;
int *local_a4;
int local_a0;
int *local_9c;
float *local_98;
float *local_94;
int local_90;
int *local_8c;
int *local_88;
int *local_84;
float local_80;
float local_7c;
float local_78;
float local_74;
float local_70 [2];
float *local_68;
float local_64;
float local_60;
float local_5c;
float local_58;
float local_54;
float local_50;
float *local_4c;
float local_48;
float local_44;
float local_40;
float local_3c;
int local_38;
float local_34;
uint local_30;
int local_2c;
float local_28;
int local_24;
int local_20;
float local_1c;
float local_18;
int local_14;
int local_10;
int local_c;
int local_8;
FUN_0049fa1c((int)param_1);
if ((param_1[0x1e9] != 0) && (param_1[0x1ea] == 0)) {
local_8 = param_1[0x1e8];
local_f4[0] = 0x20;
local_f4[1] = 0x15;
local_f4[2] = 1;
FUN_00420ea4(local_f4 + 3,(undefined4 *)&DAT_00522524);
local_e0 = 0;
local_dc = 0;
local_d8 = local_8;
FUN_0041f640((int)param_1,local_f4);
param_1[0x1ea] = 1;
}
local_c = param_1[0x195];
param_1[0x195] = 0;
FUN_004a4eab(local_108,(int)(param_1 + 0x106));
local_10 = (**(code **)(local_108[0] + 0x30))();
FUN_004a4ee9(local_108,2);
if (local_10 == 0) {
param_1[0xff] = 0;
}
else {
param_1[0xff] = 1;
FUN_00408644(&local_114,(float *)(local_10 + 0x100),(float *)(param_1 + 0x40));
fVar8 = FUN_004dd138((double)(local_10c * local_10c +
local_110 * local_110 + local_114 * local_114));
param_1[0x100] = (int)(float)fVar8;
}
FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4);
local_120 = param_1[0x40];
local_11c = (float)param_1[0x41];
local_118 = param_1[0x42];
iVar4 = *(int *)param_1[0x4a];
param_1[0x1e7] = 0;
FUN_004a4f9e(local_12c,(int)(param_1 + 0x1eb));
local_14 = 0;
while (iVar6 = (**(code **)(local_12c[0] + 0x28))(), iVar6 != 0) {
local_14 = local_14 + 1;
if (*(float *)(iVar6 + 0x31c) <= (float)param_1[0x1e7]) {
iVar6 = param_1[0x1e7];
}
else {
iVar6 = *(int *)(iVar6 + 0x31c);
}
param_1[0x1e7] = iVar6;
}
if (0 < local_14) {
*(float *)(iVar4 + 0x128) = (float)param_1[0x1e7] * *(float *)(iVar4 + 0x128);
local_18 = (float)param_1[0x1e7];
fVar8 = FUN_004dcd00((double)local_18);
if (fVar8 <= (float10)_DAT_004ab16c) {
*(undefined4 *)(iVar4 + 300) = 0;
}
}
local_1c = (*(float *)(iVar4 + 0x128) / (float)param_1[0x1e8]) * 5.0 + _DAT_004ab170;
iVar6 = FUN_004dcd94();
local_1c = (float)iVar6 / 5.0;
*(float *)(iVar4 + 0x128) = (float)param_1[0x1e8] * local_1c;
local_24 = param_1[0x172];
FUN_0041d3b3(local_148,param_1[0x1a5] + 0xe4);
local_20 = (**(code **)(local_148[0] + 0x34))(local_148);
FUN_0041d3d2(local_148,2);
puVar5 = *(undefined4 **)(local_20 + 0xc);
local_154 = *puVar5;
local_150 = (float)puVar5[1];
local_14c = puVar5[2];
if ((param_1[0xec] != 0) && (param_1[0xec] != 1)) {
if (*(float *)param_1[0x19f] < local_150) {
param_1[0xe5] = 0;
}
else {
param_1[0xe5] = 1;
}
}
if (0 < param_1[0xcd]) {
FUN_004dbb24(&DAT_00524e20,s_DefaultState_0050ddbd,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
FUN_0041bbd8((int)(param_1 + 0xb),0);
}
if (0 < param_1[0xce]) {
FUN_004dbb24(&DAT_00524e20,s_GimpLeft_0050ddca,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
FUN_0041bbd8((int)(param_1 + 0xb),3);
}
if (0 < param_1[0xcf]) {
FUN_004dbb24(&DAT_00524e20,s_GimpRight_0050ddd3,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
FUN_0041bbd8((int)(param_1 + 0xb),4);
}
iVar6 = param_1[0x10];
local_2c = param_1[100];
local_30 = (uint)(*(int *)(local_2c + 0x25c) == 0);
if ((iVar6 == 0) && (local_30 == 0)) {
if ((param_1[0xec] == 0) || (param_1[0xec] == 4)) {
local_34 = (float)param_1[0x1e7];
fVar8 = FUN_004dcd00((double)local_34);
if ((float10)_DAT_004ab16c < fVar8) {
param_1[0xfe] = 1;
}
else {
param_1[0xfe] = 0;
}
}
else if (param_1[0xec] == 1) {
param_1[0xfe] = 2;
}
else {
param_1[0xfe] = 0;
}
}
else {
param_1[0xfe] = 0;
}
if ((param_1[0xe6] != 0) && (param_1[0x161] != 0)) {
if (param_1[0xfe] == 1) {
FUN_004a7fc4((int)param_1,2);
FUN_004a4c54((int)param_1,8);
FUN_004a4c54((int)param_1,1);
FUN_0041bbd8((int)(param_1 + 0x131),0);
}
else if (param_1[0xfe] == 2) {
FUN_004a7fc4((int)param_1,3);
FUN_004a4c54((int)param_1,8);
FUN_004a4c54((int)param_1,1);
FUN_0041bbd8((int)(param_1 + 0x131),1);
}
param_1[0xe6] = 0;
}
if (((iVar6 == 3) || (iVar6 == 4)) && (param_1[0xec] == 1)) {
FUN_004a7fc4((int)param_1,3);
FUN_004a4c54((int)param_1,8);
FUN_004a4c54((int)param_1,1);
FUN_0041bbd8((int)(param_1 + 0x131),1);
}
if (param_1[0x136] != param_1[0x135]) {
local_38 = param_1[0x136];
if (local_38 == 0) {
FUN_004ac04c((int)param_1);
}
else if (local_38 == 1) {
FUN_004ac064((int)param_1);
}
else {
FUN_0040385c(s_Whoa__Bad_Collision_Volume_State_0050dddd,s_d__tesla_bt_bt_MECH4_CPP_0050de00,
0x1a1);
}
}
FUN_0041bbd8((int)(param_1 + 0x131),param_1[0x136]);
if ((float)param_1[0x16f] != _DAT_004ab174) {
if (((float)param_1[0xd2] <= _DAT_004ab178) || (_DAT_004ab178 <= *(float *)(iVar4 + 0x128))) {
if (param_1[0xfd] != 0) {
param_1[0xfd] = 0;
FUN_004a4c54((int)param_1,0x100);
param_1[0xd1] = param_1[0x16e];
}
}
else if (param_1[0xfd] == 0) {
param_1[0xfd] = 1;
FUN_004a4c54((int)param_1,0x100);
param_1[0xd1] = param_1[0x16f];
if (param_1[0x14a] != 0) {
fVar8 = FUN_00408050();
local_3c = (float)fVar8;
fVar8 = FUN_00408050();
local_40 = (float)fVar8;
if (_DAT_004ab170 < local_40) {
local_3c = -local_3c;
}
local_44 = local_3c;
local_160 = 0.0;
local_15c = 0.0;
local_158 = local_3c;
FUN_004b2de4(param_1[0x14a],0.0,0.0,local_3c,0.4);
FUN_004b2d8c(param_1[0x14a],local_160,local_15c,local_158,0.4);
}
}
}
if (((param_1[0xfd] != 0) && ((float)param_1[0x14d] < (float)param_1[0xd2])) &&
(param_1[0x14a] != 0)) {
if (_DAT_004ab178 < (float)param_1[0x171]) {
param_1[0x171] = (int)((float)param_1[0x171] - param_2);
}
else {
local_16c = 0;
local_168 = 0x3f800000;
local_164 = 0;
FUN_004b2d8c(param_1[0x14a],0.0,1.0,0.0,0.2);
param_1[0x171] = 0x3ecccccd;
}
}
iVar7 = FUN_0049fb54((int)param_1);
if (iVar7 == 0) {
if (((iVar6 == 3) || (iVar6 == 4)) && (param_1[0x160] != 0)) {
fVar8 = FUN_004a71f4((int)param_1,param_2);
local_28 = (float)fVar8;
}
else {
fVar8 = FUN_004a5028((int)param_1,param_2);
local_28 = (float)fVar8;
}
}
FUN_0040a7f4(param_1 + 0x71,(undefined4 *)&DAT_004e0fd4);
param_1[0x73] = (int)(-local_28 / param_2);
param_1[0x72] = 0;
param_1[0x71] = 0;
local_4c = (float *)(param_1 + 0x15d);
local_48 = *local_4c;
fVar8 = FUN_004dd138((double)((float)param_1[0x73] * (float)param_1[0x73] +
(float)param_1[0x72] * (float)param_1[0x72] +
(float)param_1[0x71] * (float)param_1[0x71]));
local_50 = (float)fVar8;
local_54 = (float)param_1[0xd3] - (float)param_1[0x14d];
if ((float)param_1[0x14e] <= local_50) {
local_58 = (float)param_1[0x15d] - (float)param_1[0x15e];
local_5c = (local_50 - (float)param_1[0x14d]) / local_54;
if (_DAT_004ab17c < local_5c) {
local_5c = local_5c * local_5c;
local_64 = (float)param_1[0x15e] / local_5c;
local_48 = local_64;
}
else {
local_60 = local_58 * local_5c;
local_48 = local_48 - local_60;
}
}
local_70[1] = 0.0;
if (0.0 <= local_48) {
local_68 = &local_48;
}
else {
local_68 = local_70;
local_70[0] = 0.0;
}
local_74 = *(float *)(iVar4 + 300);
local_48 = local_74 * *local_68;
if (((param_1[0x194] == 0) && (param_1[0xec] != 1)) &&
((param_1[0xec] != 2 && (param_1[0xec] != 3)))) {
param_1[0x75] = (int)local_48;
if (((param_1[0xec] == 0) &&
(local_78 = local_48, fVar8 = FUN_004dcd00((double)(local_48 - _DAT_004ab178)),
(float10)_DAT_004ab16c < fVar8)) &&
((param_1[0x195] == 0 &&
(((_DAT_004ab178 <= *(float *)(iVar4 + 0x128) &&
(*(float *)(iVar4 + 0x128) <= (float)param_1[0x14c])) && (param_1[0x162] != 0)))))) {
FUN_004a7fc4((int)param_1,4);
FUN_004a4c54((int)param_1,8);
}
if (param_1[0xec] == 4) {
local_7c = local_48;
fVar8 = FUN_004dcd00((double)(local_48 - _DAT_004ab178));
if ((fVar8 <= (float10)_DAT_004ab16c) && (param_1[0x195] == 0)) {
FUN_0041bbd8((int)(param_1 + 0xe7),0);
param_1[0x195] = 1;
FUN_004a4c54((int)param_1,8);
}
}
}
else {
param_1[0x75] = 0;
}
if (local_c != param_1[0x195]) {
FUN_004a4c54((int)param_1,8);
}
FUN_00421b2c((int)param_1);
FUN_00421bac((int)param_1,param_2);
param_1[0x1e0] = param_1[0x119];
(**(code **)(*param_1 + 0x34))();
piVar1 = param_1 + 0x40;
local_178 = *piVar1;
local_170 = param_1[0x42];
local_174 = *(float *)(param_1[0xbb] + 8) + (float)param_1[0x41];
FUN_0040e5f0(param_1[0xbc],(int)&local_178,&local_80);
if (_DAT_004ab16c < local_80) {
local_80 = local_80 - *(float *)(param_1[0xbb] + 8);
param_1[0x41] = (int)((float)param_1[0x41] - local_80);
*(float *)(param_1[0xba] + 8) = *(float *)(param_1[0xba] + 8) - local_80;
*(float *)(param_1[0xba] + 0xc) = *(float *)(param_1[0xba] + 0xc) - local_80;
}
local_184 = param_1[0x7d];
local_180 = param_1[0x7e];
local_17c = param_1[0x7f];
local_190 = *piVar1;
local_18c = param_1[0x41];
local_188 = param_1[0x42];
local_84 = (int *)FUN_004227e0((int)param_1,0);
local_19c = (float)param_1[0x71];
local_198 = (float)param_1[0x72];
local_194 = (float)param_1[0x73];
param_1[0x113] = 0;
FUN_0041db7c((int)&local_1cc);
FUN_00422bac(param_1,local_84,param_2,&local_120,&local_1cc);
if (local_1c8 == _DAT_004ab180) {
local_88 = param_1 + 0x7d;
FUN_00408440(local_88,&local_184);
local_8c = piVar1;
FUN_00408440(piVar1,&local_190);
(**(code **)(*param_1 + 0x34))();
local_1c8 = 0.0;
if (param_1[0x14a] != 0) {
FUN_004087f4(&local_1d8,&local_1c4);
FUN_004b2de4(param_1[0x14a],local_1d8,local_1d4,local_1d0,0.4);
local_1e4 = 0;
local_1e0 = 0x3f800000;
local_1dc = 0;
FUN_004b2d8c(param_1[0x14a],0.0,1.0,0.0,0.2);
}
FUN_0041bbd8((int)(param_1 + 0x114),0);
}
else if (local_1c8 <= _DAT_004ab178) {
FUN_0041bbd8((int)(param_1 + 0x114),0);
}
else {
local_90 = **(int **)param_1[0xbe];
local_94 = (float *)(param_1 + 0x34);
local_98 = (float *)(param_1 + 0x12a);
param_1[0x129] = *(int *)(local_90 + 0x24);
FUN_0040879c(local_98,&local_1b8,local_94);
param_1[0x12d] =
(int)-((float)param_1[300] * local_194 +
(float)param_1[299] * local_198 + (float)param_1[0x12a] * local_19c);
FUN_0041bbd8((int)(param_1 + 0x114),param_1[0x113]);
local_9c = param_1 + 0x7d;
FUN_00408440(local_9c,&DAT_004e0f74);
FUN_00408440(piVar1,&local_120);
(**(code **)(*param_1 + 0x34))();
local_a0 = DAT_0050b9ac;
local_a4 = param_1 + 0x61;
local_248 = 100;
local_244 = 0x12;
local_240 = 1;
FUN_00420ea4(local_23c,(undefined4 *)&DAT_00522524);
local_234 = 0;
local_230 = 0;
FUN_00420ea4(local_22c,local_a4);
local_224 = local_a0;
local_220 = (uint)(local_a0 < 0);
local_21c = local_1cc;
local_218 = local_1c8;
local_214 = local_1c4;
local_210 = local_1c0;
local_20c = local_1bc;
local_208 = local_1b8;
local_204 = local_1b4;
local_200 = local_1b0;
local_1fc = local_1ac;
local_1f8 = local_1a8;
local_1f4 = local_1a4;
local_1f0 = local_1a0;
local_1ec = 0xffffffff;
local_1e8 = 1;
(**(code **)(*param_1 + 0xc))(param_1);
if (local_194 * local_194 + local_198 * local_198 + local_19c * local_19c <= _DAT_004ab184) {
FUN_0041bbd8((int)(param_1 + 0xe7),0);
if (param_1[0x119] == 1) {
FUN_004a4c54((int)param_1,1);
FUN_004a4c54((int)param_1,0x40);
}
param_1[0x195] = 1;
}
else {
FUN_004a7fc4((int)param_1,0x20);
FUN_004a4c54((int)param_1,1);
FUN_004a4c54((int)param_1,0x20);
}
}
if (param_1[0x119] != param_1[0x1e0]) {
FUN_004a4c54((int)param_1,0x80);
}
param_1[0x72] = (int)((float)param_1[0x41] - local_11c);
FUN_00421b6c((int)param_1);
FUN_004ab1c8((int)param_1,param_2,0);
local_b0 = 0;
local_a8 = (float)param_1[0x44] - (float)param_1[0x9c];
if (((float)param_1[0x75] == _DAT_004ab178) && ((float)param_1[0xb6] != _DAT_004ab178)) {
local_b0 = 1;
}
local_ac = (float)param_1[0x75] - (float)param_1[0xaa];
fVar3 = local_a8;
if (local_a8 <= _DAT_004ab178) {
fVar3 = -local_a8;
}
if ((float)param_1[0x1dc] < fVar3) {
FUN_004a4c54((int)param_1,0x10);
}
fVar3 = local_ac;
if (local_ac <= _DAT_004ab178) {
fVar3 = -local_ac;
}
if (((float)param_1[0x1db] < fVar3) || (local_b0 != 0)) {
FUN_004a4c54((int)param_1,0x10);
}
if ((float)param_1[0x1ad] != *(float *)(iVar4 + 0x128)) {
FUN_004a4c54((int)param_1,4);
}
local_254[0] = (float)param_1[0x40];
local_b4 = param_1 + 0x98;
local_24c = param_1[0x42];
local_254[1] = 0.0;
FUN_00408440((undefined4 *)&stack0xfffffda0,local_b4);
pfVar9 = local_254;
FUN_00408644((float *)&stack0xfffffda0,(float *)&stack0xfffffda0,pfVar9);
if ((float)param_1[0x1da] < local_258 * local_258 + (float)pfVar9 * (float)pfVar9 + 0.0) {
FUN_004a4c54((int)param_1,1);
}
fVar8 = FUN_004dd138((double)((float)param_1[0x20d] * (float)param_1[0x20d] +
(float)param_1[0x20c] * (float)param_1[0x20c] +
(float)param_1[0x20b] * (float)param_1[0x20b]));
fVar3 = (float)(fVar8 / (float10)(float)param_1[0x1e1]);
if (_DAT_004ab17c < fVar3) {
fVar3 = _DAT_004ab17c;
}
param_1[0xfc] = (int)(fVar3 * (float)param_1[0x1e2] * fVar3 * (float)param_1[0x1e2]);
local_1c = *(float *)(iVar4 + 0x128);
if ((float)param_1[0x1e8] < local_1c) {
local_1c = (float)param_1[0x1e8];
}
if (local_1c < (float)param_1[0xd4]) {
local_1c = (float)param_1[0xd4];
}
local_b8 = 0.0;
if (local_1c <= _DAT_004ab178) {
if (local_1c < _DAT_004ab178) {
local_b8 = local_1c - (float)param_1[0xd2];
if (local_b8 <= _DAT_004ab178) {
local_b8 = -local_b8;
}
fVar3 = local_1c;
if (local_1c <= _DAT_004ab178) {
fVar3 = -local_1c;
}
local_b8 = local_b8 / fVar3;
}
}
else {
local_b8 = (local_1c - (float)param_1[0xd2]) / local_1c;
}
if (_DAT_004ab17c < local_b8) {
local_b8 = _DAT_004ab17c;
}
local_b8 = local_b8 * (float)param_1[0x1e3];
param_1[0xfc] = (int)(local_b8 + (float)param_1[0xfc]);
if (param_1[0xec] == 4) {
param_1[0xfc] = (int)((float)param_1[0x1e6] + (float)param_1[0xfc]);
}
fVar3 = _DAT_004ab17c;
if ((float)param_1[0xfc] <= _DAT_004ab17c) {
fVar3 = (float)param_1[0xfc];
}
param_1[0xfc] = (int)fVar3;
if (param_1[0x14a] != 0) {
local_bc = param_1[0xfc];
*(int *)(param_1[0x14a] + 0x3a8) = local_bc;
}
if ((param_1[0x14a] != 0) && (param_1[0x194] == 0)) {
if ((param_1[0xec] != 0) && (param_1[0x15f] == 0)) {
FUN_004b2eac(param_1[0x14a]);
}
FUN_004b34ec(param_1[0x14a]);
}
if ((param_1[0x10e] != 0) && (param_1[0x194] == 0)) {
FUN_004b66b4(param_1[0x10e],param_1 + 0xd8);
}
FUN_0049fe80((int)param_1);
puVar2 = (uint *)(param_1 + 0x1f8);
FUN_0043ade4(puVar2,param_1[0x73]);
FUN_0043ade4((uint *)(param_1 + 0x1fb),param_1[0x72]);
FUN_0043ade4((uint *)(param_1 + 0x1fe),param_1[0x71]);
FUN_0043ade4((uint *)(param_1 + 0x201),param_1[0x75]);
FUN_0043ade4((uint *)(param_1 + 0x204),param_2);
fVar8 = FUN_0043ae47(puVar2);
local_c0 = (float)fVar8;
fVar8 = FUN_0043ae0b((uint *)(param_1 + 0x1fe));
local_c4 = (float)fVar8;
fVar8 = FUN_0043ae0b(puVar2);
local_c8 = (float)fVar8;
fVar8 = FUN_0043ae0b((uint *)(param_1 + 0x201));
local_cc = (float)fVar8;
fVar8 = FUN_0043ae0b((uint *)(param_1 + 0x204));
local_d0 = (float)fVar8;
FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4);
if (_DAT_004ab178 < local_d0) {
param_1[0x79] = (int)((local_c0 - (float)param_1[0x207]) / local_d0);
param_1[0x78] = (int)((local_c8 - (float)param_1[0x20a]) / local_d0);
param_1[0x77] = (int)((local_c4 - (float)param_1[0x208]) / local_d0);
param_1[0x7b] = (int)((local_cc - (float)param_1[0x209]) / local_d0);
}
param_1[0x207] = (int)local_c0;
param_1[0x20a] = (int)local_c8;
local_d4 = param_1 + 0x77;
param_1[0x208] = (int)local_c4;
param_1[0x209] = (int)local_cc;
FUN_00408440(param_1 + 0x20b,local_d4);
FUN_00421b2c((int)param_1);
FUN_004a4ffb(local_12c,2);
return;
}
/* @004ab188 file=? name=FUN_004ab188 */
void __cdecl FUN_004ab188(int param_1,float param_2)
{
float local_10 [3];
FUN_004086ac(local_10,(float *)(param_1 + 0x2d4),param_2);
FUN_00409f58((float *)(param_1 + 0x26c),(float *)(param_1 + 0x138),local_10);
return;
}
/* @004ab1c8 file=? name=FUN_004ab1c8 */
undefined4 __cdecl FUN_004ab1c8(int param_1,float param_2,int param_3)
{
float *pfVar1;
int iVar2;
undefined4 uVar3;
float10 fVar4;
float local_64;
undefined4 local_60;
undefined4 local_5c;
undefined4 local_58;
float local_54 [3];
float local_48 [3];
float local_3c [12];
float local_c;
float local_8;
if (*(int *)(param_1 + 0x3f4) == 0) {
*(undefined4 *)(param_1 + 0x344) = *(undefined4 *)(param_1 + 0x5b8);
}
else {
*(undefined4 *)(param_1 + 0x344) = *(undefined4 *)(param_1 + 0x5bc);
}
iVar2 = FUN_0049fb54(param_1);
if (iVar2 == 0) {
if (((*(uint *)(param_1 + 0x28) & 0xc) == 4) &&
(*(int *)(param_1 + 0x10) < *(int *)(param_1 + 0x2e0))) {
iVar2 = *(int *)(param_1 + 0x2e0) - *(int *)(param_1 + 0x778);
uVar3 = 1;
}
else {
iVar2 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x778);
uVar3 = 0;
}
local_8 = (float)iVar2 / DAT_0052140c;
if (*(int *)(param_1 + 0x77c) != 0) {
if ((*(uint *)(param_1 + 0x28) & 0xc) == 4) {
FUN_00408644((float *)(param_1 + 0x598),(float *)(param_1 + 300),(float *)(param_1 + 0x100))
;
*(undefined4 *)(param_1 + 0x5a4) = 1;
*(undefined4 *)(param_1 + 0x77c) = 0;
}
else {
FUN_00408440((undefined4 *)(param_1 + 0x260),(undefined4 *)(param_1 + 300));
*(undefined4 *)(param_1 + 0x77c) = 0;
}
}
if (((*(int *)(param_1 + 0x40) == 3) || (*(int *)(param_1 + 0x40) == 4)) &&
(*(int *)(param_1 + 0x580) != 0)) {
fVar4 = FUN_004a5bf8(param_1,param_2,param_3);
}
else {
fVar4 = FUN_004a5678(param_1,param_2,param_3);
}
local_c = (float)fVar4;
*(float *)(param_1 + 0x2a0) = -local_c / param_2;
*(undefined4 *)(param_1 + 0x29c) = 0;
*(undefined4 *)(param_1 + 0x298) = 0;
FUN_004ab188(param_1,local_8);
FUN_00408440((undefined4 *)(param_1 + 0x2a4),(undefined4 *)(param_1 + 0x2d4));
FUN_0040aadc(local_3c);
pfVar1 = (float *)(param_1 + 0x260);
FUN_0040ab44(local_3c,pfVar1);
FUN_00408744(local_48,(float *)(param_1 + 0x298),local_3c);
FUN_00408440(local_54,&DAT_004e0f74);
FUN_00408614(local_54,local_54,local_48,param_2);
FUN_004085ec(pfVar1,pfVar1,local_54);
FUN_00408440(local_54,&DAT_004e0f74);
FUN_00408614(local_54,local_54,(float *)(param_1 + 0x2a4),param_2);
local_64 = *(float *)(param_1 + 0x26c);
local_60 = *(undefined4 *)(param_1 + 0x270);
local_5c = *(undefined4 *)(param_1 + 0x274);
local_58 = *(undefined4 *)(param_1 + 0x278);
FUN_00409f58((float *)(param_1 + 0x26c),&local_64,local_54);
}
else {
FUN_0040a7f4((undefined4 *)(param_1 + 0x298),(undefined4 *)&DAT_004e0fd4);
uVar3 = 0;
}
return uVar3;
}
/* @004ab430 file=? name=FUN_004ab430 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004ab430(int *param_1,float param_2)
{
float *pfVar1;
uint *puVar2;
int iVar3;
float10 fVar4;
int local_98;
float local_94;
int local_90;
float local_8c;
int local_88;
int local_84;
float local_80;
int local_7c;
int local_78;
float local_74;
float local_70;
float local_6c;
float local_68;
float local_64;
float local_60;
int *local_5c;
int local_58;
int *local_54;
int local_50;
int local_4c;
int local_48;
int *local_44;
int *local_40;
float *local_3c;
float local_38;
int *local_34;
float local_30;
float *local_2c;
float *local_28;
float local_24;
int *local_20;
float *local_1c;
float *local_18;
float local_14;
float local_10;
float local_c;
float local_8;
FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4);
iVar3 = FUN_004ab1c8((int)param_1,param_2,1);
if (iVar3 == 0) {
if (param_1[0x169] == 1) {
local_8c = (float)param_1[0x166];
local_34 = param_1 + 5;
local_88 = param_1[0x167];
local_84 = param_1[0x168];
local_30 = (_DAT_004ab9cc - (float)(param_1[4] - *local_34) / DAT_0052140c) + param_2;
if (local_30 <= param_2) {
param_1[0x169] = 0;
}
else {
local_38 = param_2 / local_30;
FUN_004086ac(&local_8c,&local_8c,local_38);
}
pfVar1 = (float *)(param_1 + 0x98);
local_3c = pfVar1;
FUN_004085ec(pfVar1,pfVar1,&local_8c);
param_1[0x99] = param_1[0x41];
FUN_0040a938(param_1 + 0x40,pfVar1);
FUN_00408644((float *)(param_1 + 0x166),(float *)(param_1 + 0x166),&local_8c);
}
else {
param_1[0x99] = param_1[0x41];
FUN_0040a938(param_1 + 0x40,param_1 + 0x98);
}
local_40 = param_1 + 0xa6;
FUN_00408440(param_1 + 0x7d,local_40);
local_44 = param_1 + 0xa9;
FUN_00408440(param_1 + 0x74,local_44);
}
else {
local_8 = param_2 / ((float)(param_1[0xb8] - param_1[4]) / DAT_0052140c + param_2);
FUN_0040a4d8((float *)(param_1 + 0x43),(float *)(param_1 + 0x43),(float *)(param_1 + 0x9b),
local_8);
local_c = local_8;
FUN_00408848((float *)(param_1 + 0x74),(float *)(param_1 + 0x74),_DAT_004ab9c8 - local_8,
(float *)(param_1 + 0xa9),local_8);
if (param_1[0x169] == 1) {
local_80 = (float)param_1[0x166];
local_7c = param_1[0x167];
local_78 = param_1[0x168];
local_10 = (_DAT_004ab9cc - (float)(param_1[4] - param_1[5]) / DAT_0052140c) + param_2;
if (local_10 <= param_2) {
param_1[0x169] = 0;
}
else {
local_14 = param_2 / local_10;
FUN_004086ac(&local_80,&local_80,local_14);
}
pfVar1 = (float *)(param_1 + 0x98);
local_18 = pfVar1;
FUN_004085ec(pfVar1,pfVar1,&local_80);
param_1[0x99] = param_1[0x41];
local_1c = pfVar1;
FUN_00408440(param_1 + 0x40,pfVar1);
FUN_00408644((float *)(param_1 + 0x166),(float *)(param_1 + 0x166),&local_80);
}
else {
local_20 = param_1 + 0x98;
param_1[0x99] = param_1[0x41];
FUN_00408440(param_1 + 0x40,local_20);
}
local_24 = local_8;
local_28 = (float *)(param_1 + 0xa6);
local_2c = (float *)(param_1 + 0x7d);
FUN_00408848((float *)(param_1 + 0x7d),local_2c,_DAT_004ab9c8 - local_8,local_28,local_8);
}
if ((*(byte *)((int)param_1 + 0x29) & 0x40) == 0) {
(**(code **)(*param_1 + 0x34))(param_1);
local_48 = *(int *)(DAT_004efc94 + 0x30);
local_50 = param_1[0x65];
local_4c = FUN_00433ed4(local_48 + 0x14);
local_54 = *(int **)(local_4c + 0x30);
local_58 = param_1[0xba];
iVar3 = FUN_0040e36c(*local_54,local_58);
param_1[0xbc] = iVar3;
}
else {
local_5c = param_1 + 0x40;
FUN_0040ab44((float *)(param_1 + 0x34),local_5c);
}
local_98 = param_1[0x40];
local_90 = param_1[0x42];
local_94 = *(float *)(param_1[0xbb] + 8) + (float)param_1[0x41];
FUN_0040e5f0(param_1[0xbc],(int)&local_98,&local_60);
if (local_60 != _DAT_004ab9d0) {
local_60 = local_60 - *(float *)(param_1[0xbb] + 8);
param_1[0x41] = (int)((float)param_1[0x41] - local_60);
*(float *)(param_1[0xba] + 8) = *(float *)(param_1[0xba] + 8) - local_60;
*(float *)(param_1[0xba] + 0xc) = *(float *)(param_1[0xba] + 0xc) - local_60;
}
FUN_00421b6c((int)param_1);
puVar2 = (uint *)(param_1 + 0x1f8);
FUN_0043ade4(puVar2,param_1[0x73]);
FUN_0043ade4((uint *)(param_1 + 0x1fb),param_1[0x72]);
FUN_0043ade4((uint *)(param_1 + 0x1fe),param_1[0x71]);
FUN_0043ade4((uint *)(param_1 + 0x201),param_1[0x75]);
FUN_0043ade4((uint *)(param_1 + 0x204),param_2);
fVar4 = FUN_0043ae47(puVar2);
local_64 = (float)fVar4;
fVar4 = FUN_0043ae0b((uint *)(param_1 + 0x1fe));
local_68 = (float)fVar4;
fVar4 = FUN_0043ae0b(puVar2);
local_6c = (float)fVar4;
fVar4 = FUN_0043ae0b((uint *)(param_1 + 0x201));
local_70 = (float)fVar4;
fVar4 = FUN_0043ae0b((uint *)(param_1 + 0x204));
local_74 = (float)fVar4;
FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4);
if (_DAT_004ab9d4 < local_74) {
param_1[0x79] = (int)((local_64 - (float)param_1[0x207]) / local_74);
param_1[0x78] = (int)((local_6c - (float)param_1[0x20a]) / local_74);
param_1[0x77] = (int)((local_68 - (float)param_1[0x208]) / local_74);
param_1[0x7b] = (int)((local_70 - (float)param_1[0x209]) / local_74);
}
param_1[0x207] = (int)local_64;
param_1[0x20a] = (int)local_6c;
param_1[0x208] = (int)local_68;
param_1[0x209] = (int)local_70;
FUN_00421b2c((int)param_1);
return;
}
/* @004ab9d8 file=? name=FUN_004ab9d8 */
void __cdecl FUN_004ab9d8(int *param_1,float param_2)
{
int iVar1;
int local_44 [7];
int local_28;
int local_24;
int local_20;
undefined4 local_1c [6];
param_1[0x196] = 0;
FUN_0040a7c0(local_1c,param_1 + 0x77);
local_28 = param_1[0x80];
local_24 = param_1[0x81];
local_20 = param_1[0x82];
FUN_0040a7f4(param_1 + 0x77,(undefined4 *)&DAT_004e0fd4);
FUN_00408440(param_1 + 0x80,&DAT_004e0f74);
iVar1 = param_1[0x172];
FUN_0041d3b3(local_44,param_1[0x1bd] + 0xe4);
iVar1 = (**(code **)(local_44[0] + 0x34))(local_44,iVar1);
FUN_0041d3d2(local_44,2);
if ((param_1[0x1ca] != 0) && (param_1[0x1ca] != 1)) {
if (*(float *)param_1[0x1b7] < *(float *)(*(int *)(iVar1 + 0xc) + 4)) {
param_1[0xe5] = 0;
}
else {
param_1[0xe5] = 1;
}
}
FUN_004ab430(param_1,param_2);
if (param_1[0x10e] != 0) {
FUN_004b67ec(param_1[0x10e]);
}
FUN_0040a7f4(param_1 + 0x77,local_1c);
FUN_00408440(param_1 + 0x80,&local_28);
iVar1 = param_1[0x136];
if (iVar1 != param_1[0x135]) {
if (iVar1 == 0) {
FUN_004ac04c((int)param_1);
}
else if (iVar1 == 1) {
FUN_004ac064((int)param_1);
}
}
FUN_0041bbd8((int)(param_1 + 0x131),param_1[0x136]);
return;
}
/* @004abb40 file=? name=FUN_004abb40 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl
FUN_004abb40(int param_1,float param_2,int *param_3,undefined4 param_4,undefined4 *param_5)
{
int *piVar1;
int iVar2;
float10 fVar3;
undefined4 local_17c;
undefined4 local_178;
undefined4 local_174;
undefined4 local_170 [2];
undefined4 local_168;
undefined4 local_164;
undefined4 local_160 [2];
int local_158;
uint local_154;
undefined4 local_150;
undefined4 local_14c;
undefined4 local_148;
undefined4 local_144;
undefined4 local_140;
undefined4 local_13c;
undefined4 local_138;
undefined4 local_134;
undefined4 local_130;
undefined4 local_12c;
undefined4 local_128;
undefined4 local_124;
undefined4 local_120;
undefined4 local_11c;
undefined4 local_118;
undefined4 local_114;
undefined4 local_110;
undefined4 local_10c;
undefined4 local_108;
undefined4 local_104;
undefined4 local_100;
undefined4 local_fc;
undefined4 local_f8;
undefined4 local_f4;
undefined4 local_f0;
undefined4 local_ec;
float local_e8;
float local_e4;
float local_e0;
undefined4 local_dc;
undefined4 local_d8;
undefined4 local_d4;
undefined4 local_d0 [2];
undefined4 local_c8;
undefined4 local_c4;
undefined4 local_c0 [2];
int local_b8;
uint local_b4;
undefined4 local_b0;
undefined4 local_ac;
undefined4 local_a8;
undefined4 local_a4;
undefined4 local_a0;
undefined4 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;
undefined4 local_68;
undefined4 local_64;
undefined4 local_60;
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_4c;
float local_48 [3];
float local_3c;
float local_38;
float local_34;
undefined4 *local_30;
uint local_2c;
int *local_28;
undefined4 *local_24;
int local_20;
undefined4 *local_1c;
int *local_18;
float local_14;
float local_10;
float local_c;
float local_8;
iVar2 = (**(code **)(*(int *)(*(int *)(param_1 + 0x2e8) + 0x18) + 0x1c))
(*(int *)(param_1 + 0x2e8),param_3,param_1 + 500,
*(undefined4 *)(param_1 + 0x2f8),param_5 + 5,&local_10);
if (iVar2 != 0) {
if (param_2 < local_10) {
local_10 = param_2;
}
local_14 = local_10 / param_2;
local_c = *(float *)(param_1 + 0x244);
local_8 = *(float *)(param_1 + 0x240);
piVar1 = *(int **)(*param_3 + 0x1c);
fVar3 = FUN_00422ff8(param_1,param_4,param_2,local_14,(float *)(param_5 + 5),&local_c,
*(float *)(param_1 + 0x248),&local_8);
param_5[1] = (float)fVar3;
if ((piVar1 != (int *)0x0) && (iVar2 = FUN_0041a1a4(*(int *)piVar1[3],0x4e4518), iVar2 != 0)) {
local_18 = piVar1;
(**(code **)(*piVar1 + 0x20))(local_48,piVar1);
FUN_00408644(&local_3c,(float *)(param_1 + 500),local_48);
if (local_34 * (float)param_5[7] + local_38 * (float)param_5[6] + local_3c * (float)param_5[5]
< _DAT_004ac044) {
return;
}
if (local_18[1] == 0xbb9) {
FUN_0041db7c((int)&local_78);
local_1c = param_5;
local_78 = *param_5;
local_74 = param_5[1];
local_4c = param_5[0xb];
FUN_00408440(&local_70,param_5 + 2);
FUN_00408440(&local_64,local_1c + 5);
FUN_00408440(&local_58,local_1c + 8);
local_20 = DAT_0050b9ac;
local_24 = (undefined4 *)(param_1 + 0x184);
local_dc = 100;
local_d8 = 0x12;
local_d4 = 1;
FUN_00420ea4(local_d0,(undefined4 *)&DAT_00522524);
local_c8 = 0;
local_c4 = 0;
FUN_00420ea4(local_c0,local_24);
local_b8 = local_20;
local_b4 = (uint)(local_20 < 0);
local_b0 = local_78;
local_ac = local_74;
local_a8 = local_70;
local_a4 = local_6c;
local_a0 = local_68;
local_9c = local_64;
local_98 = local_60;
local_94 = local_5c;
local_90 = local_58;
local_8c = local_54;
local_88 = local_50;
local_84 = local_4c;
local_80 = 0xffffffff;
local_7c = 1;
(**(code **)(*local_18 + 0xc))(local_18,&local_dc);
}
}
if ((piVar1 != (int *)0x0) && (iVar2 = FUN_0041a1a4(*(int *)piVar1[3],0x4e7038), iVar2 != 0)) {
local_2c = piVar1[10] & 0x8000;
local_28 = piVar1;
FUN_00408644(&local_e8,(float *)(param_1 + 500),(float *)&DAT_004e0f74);
if (local_e0 * (float)param_5[7] + local_e4 * (float)param_5[6] + local_e8 * (float)param_5[5]
< _DAT_004ac044) {
return;
}
FUN_0041db7c((int)&local_118);
local_118 = *param_5;
local_114 = param_5[1];
local_ec = param_5[0xb];
FUN_00408440(&local_110,param_5 + 2);
FUN_00408440(&local_104,param_5 + 5);
FUN_00408440(&local_f8,param_5 + 8);
iVar2 = DAT_0050b9ac;
local_30 = (undefined4 *)(param_1 + 0x184);
local_17c = 100;
local_178 = 0x12;
local_174 = 1;
FUN_00420ea4(local_170,(undefined4 *)&DAT_00522524);
local_168 = 0;
local_164 = 0;
FUN_00420ea4(local_160,local_30);
local_158 = iVar2;
local_154 = (uint)(iVar2 < 0);
local_150 = local_118;
local_14c = local_114;
local_148 = local_110;
local_144 = local_10c;
local_140 = local_108;
local_13c = local_104;
local_138 = local_100;
local_134 = local_fc;
local_130 = local_f8;
local_12c = local_f4;
local_128 = local_f0;
local_124 = local_ec;
local_120 = 0xffffffff;
local_11c = 1;
(**(code **)(*local_28 + 0xc))(local_28,&local_17c);
if (local_2c == 0) {
param_5[1] = 0x3aa137f4;
}
}
if (local_c == _DAT_004ac048) {
if ((local_8 == _DAT_004ac048) && (*(int *)(param_1 + 0x44c) == 0)) {
*(undefined4 *)(param_1 + 0x44c) = 2;
}
}
else {
*(undefined4 *)(param_1 + 0x44c) = 1;
}
}
return;
}
/* @004ac04c file=? name=FUN_004ac04c */
void __cdecl FUN_004ac04c(int param_1)
{
*(undefined4 *)(*(int *)(param_1 + 0x2ec) + 0xc) = *(undefined4 *)(param_1 + 0x51c);
return;
}
/* @004ac064 file=? name=FUN_004ac064 */
void __cdecl FUN_004ac064(int param_1)
{
*(undefined4 *)(*(int *)(param_1 + 0x2ec) + 0xc) = *(undefined4 *)(param_1 + 0x518);
return;
}
/* @004ac07c file=? name=FUN_004ac07c */
float10 __cdecl FUN_004ac07c(int *param_1,undefined4 param_2)
{
float fVar1;
fVar1 = *(float *)(param_1[0x38] + 0x158);
(**(code **)(*param_1 + 0x24))(param_1,param_2);
return (float10)(*(float *)(param_1[0x38] + 0x158) - fVar1);
}
/* @004ac0bc file=? name=FUN_004ac0bc */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004ac0bc(int *param_1,undefined4 param_2)
{
(**(code **)(*(int *)param_1[0x38] + 0x18))((int *)param_1[0x38],param_2);
if (_DAT_004ac140 <= *(float *)(param_1[0x38] + 0x158)) {
FUN_0041bbd8((int)(param_1 + 0xb),1);
if (param_1[0x41] != 0) {
(**(code **)(*param_1 + 0x34))(param_1);
}
*(undefined4 *)(param_1[0x38] + 0x158) = 0x3f800000;
if (param_1[0x39] != 0) {
FUN_0041bbd8(param_1[0x34] + 0x2c,9);
}
}
return;
}
/* @004ac144 file=? name=FUN_004ac144 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl FUN_004ac144(int param_1)
{
if (_DAT_004ac18c <= *(float *)(*(int *)(param_1 + 0xe0) + 0x158)) {
return 1;
}
if (_DAT_004ac190 < *(float *)(*(int *)(param_1 + 0xe0) + 0x158)) {
return 2;
}
return 0;
}
/* @004ac194 file=? name=FUN_004ac194 */
undefined4 __cdecl FUN_004ac194(char *param_1,undefined4 *param_2)
{
int iVar1;
undefined **ppuVar2;
ppuVar2 = &PTR_s_Destroyed_0050de74;
while( true ) {
if (*ppuVar2 == (char *)0x0) {
return 0;
}
iVar1 = FUN_004d4b58(param_1,*ppuVar2);
if (iVar1 == 0) break;
ppuVar2 = ppuVar2 + 2;
}
*param_2 = ppuVar2[1];
return 1;
}
/* @004ac1d4 file=? name=FUN_004ac1d4 */
undefined4 __cdecl FUN_004ac1d4(int *param_1,int param_2)
{
undefined4 uVar1;
if (param_2 == 0) {
if (param_1[0x38] != 0) {
*(undefined4 *)(param_1[0x38] + 0x158) = 0x3f800000;
}
FUN_0041bbd8((int)(param_1 + 0xb),1);
if (param_1[0x41] != 0) {
(**(code **)(*param_1 + 0x34))(param_1);
}
return 1;
}
uVar1 = FUN_0041c800();
return uVar1;
}
/* @004ac22c file=? name=FUN_004ac22c */
void __cdecl FUN_004ac22c(int *param_1)
{
int iVar1;
iVar1 = param_1[0x38];
*(undefined4 *)(iVar1 + 0x158) = 0;
FUN_0041bbd8(iVar1 + 0x10,0);
FUN_0041bbd8((int)(param_1 + 0xb),0);
if (param_1[0x41] != 0) {
(**(code **)(*param_1 + 0x34))(param_1);
}
return;
}
/* @004ac274 file=? name=FUN_004ac274 */
void __cdecl FUN_004ac274(int *param_1,undefined4 *param_2)
{
int iVar1;
undefined4 local_dc;
undefined4 local_d8;
undefined4 local_d4;
undefined4 local_d0 [2];
undefined4 local_c8;
undefined4 local_c4;
undefined4 local_c0 [2];
int local_b8;
uint local_b4;
undefined4 local_b0;
undefined4 local_ac;
undefined4 local_a8;
undefined4 local_a4;
undefined4 local_a0;
undefined4 local_9c;
undefined4 local_98;
undefined4 local_94;
undefined4 local_90;
undefined4 local_8c;
undefined4 local_88;
undefined4 local_84;
int local_80;
uint local_7c;
undefined4 local_78 [15];
int local_3c [3];
int local_30 [4];
int local_20 [4];
int *local_10;
int local_c;
int *local_8;
FUN_0041bbd8((int)(param_1 + 0xb),2);
if (param_1[0x41] != 0) {
(**(code **)(*param_1 + 0x34))(param_1);
}
FUN_0041bbd8((int)(param_1 + 0xb),1);
if (param_1[0x41] != 0) {
(**(code **)(*param_1 + 0x34))(param_1);
}
*(undefined4 *)(param_1[0x38] + 0x158) = 0x3f800000;
FUN_004acfa9(local_20,(int)param_1,0xffffffff);
FUN_004ad03a(local_30,0);
while( true ) {
iVar1 = (**(code **)(local_20[0] + 0x28))(local_20);
if (iVar1 == 0) break;
if (*(int *)(iVar1 + 4) == 0x4e) {
(**(code **)(local_30[0] + 4))(local_30,iVar1);
}
}
FUN_004ad0a4(local_3c,(int)local_30);
iVar1 = (**(code **)(local_3c[0] + 0x14))(local_3c);
param_2[1] = (float)param_2[1] / (float)iVar1;
FUN_0040aadc(local_78);
local_8 = (int *)param_1[0x34];
while( true ) {
iVar1 = (**(code **)(local_3c[0] + 0x28))(local_3c);
if (iVar1 == 0) break;
FUN_004dbb24(&DAT_00524e20,s_ammo_explosion_damaging_0050df61,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,*(char **)(*(int *)(iVar1 + 0x15c) + 8),(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
local_c = param_1[0x36];
local_10 = local_8 + 0x61;
iVar1 = *(int *)(iVar1 + 0x13c);
local_dc = 100;
local_d8 = 0x12;
local_d4 = 1;
FUN_00420ea4(local_d0,(undefined4 *)&DAT_00522524);
local_c8 = 0;
local_c4 = 0;
FUN_00420ea4(local_c0,local_10);
local_b4 = (uint)(iVar1 < 0);
local_b0 = *param_2;
local_ac = param_2[1];
local_a8 = param_2[2];
local_a4 = param_2[3];
local_a0 = param_2[4];
local_9c = param_2[5];
local_98 = param_2[6];
local_94 = param_2[7];
local_90 = param_2[8];
local_8c = param_2[9];
local_88 = param_2[10];
local_84 = param_2[0xb];
local_80 = local_c;
local_7c = (uint)(local_c < 0);
local_b8 = iVar1;
(**(code **)(*local_8 + 0xc))(local_8,&local_dc);
}
FUN_004ad0e2(local_3c,2);
FUN_004ad059(local_30,2);
FUN_004ad00e(local_20,2);
return;
}
/* @004ac4fc file=? name=FUN_004ac4fc */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __cdecl
FUN_004ac4fc(undefined4 param_1,float param_2,float param_3,float param_4,float param_5)
{
float fVar1;
fVar1 = (_DAT_004ac52c - param_4) / (param_2 - param_3);
return (float10)fVar1 * (float10)param_5 + (float10)(param_2 - fVar1);
}
/* @004ac530 file=? name=FUN_004ac530 */
undefined4 * __cdecl
FUN_004ac530(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4,
undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8)
{
int *piVar1;
undefined4 *puVar2;
int iVar3;
int *local_8;
FUN_0041c5c0(param_1,param_2,param_3,(char *)param_4[2],param_5,param_6);
*param_1 = &PTR_FUN_0050e210;
puVar2 = (undefined4 *)FUN_00402298(0x10);
if (puVar2 == (undefined4 *)0x0) {
iVar3 = 0;
}
else {
iVar3 = FUN_004023f4(puVar2);
}
param_1[0x3d] = iVar3;
piVar1 = (int *)(param_1[0x3d] + 0xc);
*piVar1 = *piVar1 + 1;
param_1[0x3a] = param_7;
param_1[0x3b] = param_8;
param_1[0x39] = 0;
FUN_00402a98((int *)&local_8,param_1 + 0x3d,&DAT_0050df7a);
piVar1 = local_8 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(local_8,3);
}
FUN_00408440(param_1 + 0x3e,&DAT_004e0f80);
param_1[0x42] = 0;
param_1[0x43] = 0;
param_1[0x41] = 0;
param_1[0x44] = 0xffffffff;
puVar2 = (undefined4 *)FUN_00402298(0x160);
if (puVar2 == (undefined4 *)0x0) {
puVar2 = (undefined4 *)0x0;
}
else {
puVar2 = FUN_0041de1c(puVar2,param_1,0);
}
param_1[0x38] = puVar2;
piVar1 = param_4 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(param_4,3);
}
return param_1;
}
/* @004ac644 file=? name=FUN_004ac644 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
int * __cdecl
FUN_004ac644(int *param_1,undefined4 param_2,undefined4 param_3,char *param_4,undefined4 param_5,
int param_6,int param_7)
{
int *piVar1;
int iVar2;
int iVar3;
undefined4 *puVar4;
char *pcVar5;
float10 fVar6;
int *local_10;
int *local_c;
undefined4 *local_8;
FUN_0041c52c(param_1,param_2,param_3,param_4,param_5);
*param_1 = (int)&PTR_FUN_0050e210;
local_8 = (undefined4 *)FUN_00402298(0x10);
if (local_8 == (undefined4 *)0x0) {
iVar3 = 0;
}
else {
iVar3 = FUN_004023f4(local_8);
}
param_1[0x3d] = iVar3;
piVar1 = (int *)(param_1[0x3d] + 0xc);
*piVar1 = *piVar1 + 1;
param_1[0x41] = 0;
FUN_0041bbd8((int)(param_1 + 0xb),0);
if (param_1[0x41] != 0) {
(**(code **)(*param_1 + 0x34))();
}
param_1[0x3a] = param_6;
param_1[0x3b] = param_7;
param_1[0x3c] = (int)param_4;
param_1[0x44] = -1;
if (*(int *)(param_4 + 0x48) == 1) {
param_1[0x39] = 1;
}
else {
param_1[0x39] = 0;
}
FUN_00402a98((int *)&local_c,param_1 + 0x3d,param_4 + 0x4c);
piVar1 = local_c + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(local_c,3);
}
FUN_00408440(param_1 + 0x3e,(undefined4 *)(param_4 + 0xcc));
param_1[0x41] = *(int *)(param_4 + 0xd8);
param_1[0x42] = *(int *)(param_4 + 0xe0);
param_1[0x43] = *(int *)(param_4 + 0xdc);
puVar4 = (undefined4 *)FUN_00402298(0x160);
if (puVar4 == (undefined4 *)0x0) {
puVar4 = (undefined4 *)0x0;
}
else {
puVar4 = FUN_0041de1c(puVar4,param_1,0);
}
param_1[0x38] = (int)puVar4;
FUN_00402a98((int *)&local_10,(int *)(param_1[0x38] + 0x15c),(char *)param_1[0x35]);
piVar1 = local_10 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(local_10,3);
}
iVar3 = 0;
pcVar5 = param_4 + 0x30;
*(undefined4 *)(param_1[0x38] + 0x140) = *(undefined4 *)(param_4 + 0x44);
do {
*(undefined4 *)(param_1[0x38] + 0x144 + iVar3 * 4) = *(undefined4 *)pcVar5;
iVar3 = iVar3 + 1;
pcVar5 = pcVar5 + 4;
} while (iVar3 < 5);
iVar3 = 0;
do {
fVar6 = FUN_004dcd00((double)(*(float *)(param_1[0x38] + 0x144 + iVar3 * 4) -
_DAT_004ac860 / *(float *)(param_1[0x38] + 0x140)));
if ((float10)_DAT_004ac864 < fVar6) {
iVar2 = param_1[0x38];
*(float *)(iVar2 + 0x144 + iVar3 * 4) =
_DAT_004ac860 / (*(float *)(iVar2 + 0x144 + iVar3 * 4) * *(float *)(iVar2 + 0x140));
}
iVar3 = iVar3 + 1;
} while (iVar3 < 5);
return param_1;
}
/* @004ac868 file=? name=FUN_004ac868 */
void __cdecl FUN_004ac868(int *param_1,byte param_2)
{
int *piVar1;
undefined4 *puVar2;
int *piVar3;
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050e210;
puVar2 = (undefined4 *)param_1[0x38];
if (puVar2 != (undefined4 *)0x0) {
(**(code **)*puVar2)(puVar2,3);
}
piVar3 = (int *)param_1[0x3d];
piVar1 = piVar3 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(piVar3,3);
}
FUN_0041c648(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004ac8c0 file=? name=FUN_004ac8c0 */
void __cdecl FUN_004ac8c0(int param_1)
{
int iVar1;
uint uVar2;
int *piVar3;
iVar1 = *(int *)(param_1 + 0x40);
if (iVar1 == 0) {
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___DefaultState_0050df99,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
}
if (iVar1 != 1) {
if (iVar1 != 2) {
uVar2 = *(uint *)(param_1 + 0x40);
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___UnknownState______0050dfa9,(char *)0x0);
piVar3 = FUN_004db880(&DAT_00524e20,uVar2);
FUN_004d9c38(piVar3);
return;
}
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___Exploding_0050df8c,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
}
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___Destroyed_0050df7f,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
}
/* @004ac9c8 file=? name=FUN_004ac9c8 */
bool __cdecl FUN_004ac9c8(int param_1)
{
return *(int *)(*(int *)(*(int *)(param_1 + 0xd0) + 400) + 0x274) == 0;
}
/* @004ac9ec file=? name=FUN_004ac9ec */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl
FUN_004ac9ec(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
char *pcVar1;
char cVar2;
int iVar3;
undefined4 uVar4;
char *pcVar5;
uint uVar6;
uint uVar7;
char *pcVar8;
bool bVar9;
float local_20;
float local_1c;
char *local_18;
char *local_14;
char *local_10;
char *local_c;
int local_8;
iVar3 = FUN_0041c684(param_1,param_2,param_3,param_4,param_5,param_6);
if (iVar3 == 0) {
uVar4 = 0;
}
else {
param_4[0x24] = -0x1c;
param_4[0x25] = '\0';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x45;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
if (param_7 == 1) {
param_4[0xe0] = '\0';
param_4[0xe1] = '\0';
param_4[0xe2] = -0x80;
param_4[0xe3] = -0x41;
local_8 = 0;
pcVar5 = param_4 + 0x30;
do {
pcVar5[0] = '\0';
pcVar5[1] = '\0';
pcVar5[2] = -0x80;
pcVar5[3] = -0x41;
local_8 = local_8 + 1;
pcVar5 = pcVar5 + 4;
} while (local_8 < 5);
param_4[0x48] = -1;
param_4[0x49] = -1;
param_4[0x4a] = -1;
param_4[0x4b] = -1;
iVar3 = 0;
pcVar5 = param_4 + 0x4c;
do {
*pcVar5 = '\0';
iVar3 = iVar3 + 1;
pcVar5 = pcVar5 + 1;
} while (iVar3 < 0x80);
*(undefined4 *)(param_4 + 0x4c) = DAT_0050dfc0;
param_4[0x50] = DAT_0050dfc4;
local_c = param_4 + 0xcc;
FUN_00408440((undefined4 *)local_c,&DAT_004e0f80);
param_4[0x44] = '\0';
param_4[0x45] = '\0';
param_4[0x46] = -0x80;
param_4[0x47] = -0x41;
param_4[0xd8] = '\0';
param_4[0xd9] = '\0';
param_4[0xda] = '\0';
param_4[0xdb] = '\0';
param_4[0xdc] = '\0';
param_4[0xdd] = '\0';
param_4[0xde] = '\0';
param_4[0xdf] = '\0';
}
FUN_00404190(param_5,param_3,s_PrintSimulationState_0050dfc5,(undefined4 *)(param_4 + 0xd8));
FUN_00404118(param_5,param_3,s_CollisionCriticalHitWeight_0050dfda,(float *)(param_4 + 0xdc));
local_10 = s_Unspecified_0050dff5;
FUN_00404088(param_5,param_3,s_VideoObjectName_0050e001,&local_10);
pcVar8 = s_Unspecified_0050e011;
pcVar5 = local_10;
do {
bVar9 = *pcVar5 == *pcVar8;
if (!bVar9) break;
if (*pcVar5 == '\0') goto LAB_004acb51;
pcVar1 = pcVar5 + 1;
bVar9 = *pcVar1 == pcVar8[1];
if (!bVar9) break;
pcVar5 = pcVar5 + 2;
pcVar8 = pcVar8 + 2;
bVar9 = *pcVar1 == '\0';
} while (!bVar9);
if (!bVar9) {
uVar6 = 0xffffffff;
pcVar5 = local_10;
do {
pcVar8 = pcVar5;
if (uVar6 == 0) break;
uVar6 = uVar6 - 1;
pcVar8 = pcVar5 + 1;
cVar2 = *pcVar5;
pcVar5 = pcVar8;
} while (cVar2 != '\0');
uVar6 = ~uVar6;
pcVar5 = pcVar8 + -uVar6;
pcVar8 = param_4 + 0x4c;
for (uVar7 = uVar6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) {
*(undefined4 *)pcVar8 = *(undefined4 *)pcVar5;
pcVar5 = pcVar5 + 4;
pcVar8 = pcVar8 + 4;
}
for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) {
*pcVar8 = *pcVar5;
pcVar5 = pcVar5 + 1;
pcVar8 = pcVar8 + 1;
}
}
LAB_004acb51:
local_14 = s_Unspecified_0050e01d;
iVar3 = FUN_00404088(param_5,param_3,s_VitalSubsystem_0050e029,&local_14);
if ((iVar3 == 0) && (*(int *)(param_4 + 0x48) == -1)) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_VitalSubsystem__0050e038,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
uVar4 = 0;
}
else {
pcVar8 = s_Unspecified_0050e052;
pcVar5 = local_14;
do {
if (*pcVar5 != *pcVar8) goto LAB_004acbd7;
bVar9 = true;
if (*pcVar5 == '\0') break;
pcVar1 = pcVar5 + 1;
if (*pcVar1 != pcVar8[1]) goto LAB_004acbd7;
pcVar5 = pcVar5 + 2;
pcVar8 = pcVar8 + 2;
bVar9 = *pcVar1 == '\0';
} while (!bVar9);
if (!bVar9) {
LAB_004acbd7:
pcVar8 = &DAT_0050e05e;
pcVar5 = local_14;
do {
if (*pcVar5 != *pcVar8) goto LAB_004acc06;
bVar9 = true;
if (*pcVar5 == '\0') break;
pcVar1 = pcVar5 + 1;
if (*pcVar1 != pcVar8[1]) goto LAB_004acc06;
pcVar5 = pcVar5 + 2;
pcVar8 = pcVar8 + 2;
bVar9 = *pcVar1 == '\0';
} while (!bVar9);
if (bVar9) {
param_4[0x48] = '\x01';
param_4[0x49] = '\0';
param_4[0x4a] = '\0';
param_4[0x4b] = '\0';
}
else {
LAB_004acc06:
pcVar8 = s_False_0050e063;
pcVar5 = local_14;
do {
if (*pcVar5 != *pcVar8) goto LAB_004acc33;
bVar9 = true;
if (*pcVar5 == '\0') break;
pcVar1 = pcVar5 + 1;
if (*pcVar1 != pcVar8[1]) goto LAB_004acc33;
pcVar5 = pcVar5 + 2;
pcVar8 = pcVar8 + 2;
bVar9 = *pcVar1 == '\0';
} while (!bVar9);
if (!bVar9) {
LAB_004acc33:
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___VitalSubsystem_must_be_True_or_0050e069,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return 0;
}
param_4[0x48] = '\0';
param_4[0x49] = '\0';
param_4[0x4a] = '\0';
param_4[0x4b] = '\0';
}
}
iVar3 = FUN_00404088(param_5,param_3,s_SiteOffset_0050e092,&local_18);
if (iVar3 != 0) {
FUN_00408944(local_18,(float *)(param_4 + 0xcc));
}
iVar3 = FUN_00404118(param_5,param_3,s_WeaponDamagePoints_0050e09d,(float *)(param_4 + 0x44));
if ((iVar3 == 0) && (_DAT_004aceec == *(float *)(param_4 + 0x44))) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_Must_have_a_WeaponDamagePoints_0050e0b0,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_CriticalHitScoreBonus_0050e0d0,
(float *)(param_4 + 0xe0));
if ((iVar3 == 0) && (_DAT_004aceec == *(float *)(param_4 + 0xe0))) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_Must_have_a_CriticalHitScoreBonu_0050e0e6,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
uVar4 = 0;
}
else {
local_1c = _DAT_004acef0 / *(float *)(param_4 + 0x44);
local_20 = -1.0;
iVar3 = FUN_00404118(param_5,param_3,s_CollisionDamagePoints_0050e109,&local_20);
if ((iVar3 == 0) && (*(float *)(param_4 + 0x30) == _DAT_004aceec)) {
*(float *)(param_4 + 0x30) = local_1c;
}
if (local_20 != _DAT_004aceec) {
*(float *)(param_4 + 0x30) = _DAT_004acef0 / local_20;
}
local_20 = -1.0;
iVar3 = FUN_00404118(param_5,param_3,s_BallisticDamagePoints_0050e11f,&local_20);
if ((iVar3 == 0) && (*(float *)(param_4 + 0x34) == _DAT_004aceec)) {
*(float *)(param_4 + 0x34) = local_1c;
}
if (local_20 != _DAT_004aceec) {
*(float *)(param_4 + 0x34) = _DAT_004acef0 / local_20;
}
local_20 = -1.0;
iVar3 = FUN_00404118(param_5,param_3,s_ExplosiveDamagePoints_0050e135,&local_20);
if ((iVar3 == 0) && (*(float *)(param_4 + 0x38) == _DAT_004aceec)) {
*(float *)(param_4 + 0x38) = local_1c;
}
if (local_20 != _DAT_004aceec) {
*(float *)(param_4 + 0x38) = _DAT_004acef0 / local_20;
}
local_20 = -1.0;
iVar3 = FUN_00404118(param_5,param_3,s_LaserDamagePoints_0050e14b,&local_20);
if ((iVar3 == 0) && (*(float *)(param_4 + 0x3c) == _DAT_004aceec)) {
*(float *)(param_4 + 0x3c) = local_1c;
}
if (local_20 != _DAT_004aceec) {
*(float *)(param_4 + 0x3c) = _DAT_004acef0 / local_20;
}
local_20 = -1.0;
iVar3 = FUN_00404118(param_5,param_3,s_EnergyDamagePoints_0050e15d,&local_20);
if ((iVar3 == 0) && (*(float *)(param_4 + 0x40) == _DAT_004aceec)) {
*(float *)(param_4 + 0x40) = local_1c;
}
if (local_20 != _DAT_004aceec) {
*(float *)(param_4 + 0x40) = _DAT_004acef0 / local_20;
}
uVar4 = 1;
}
}
}
}
return uVar4;
}
/* @004acfa9 file=? name=FUN_004acfa9 */
undefined4 * __cdecl FUN_004acfa9(undefined4 *param_1,int param_2,undefined4 param_3)
{
FUN_00415f30(param_1,param_2,param_3);
*param_1 = &PTR_FUN_0050e1c8;
return param_1;
}
/* @004acfcc file=? name=FUN_004acfcc */
undefined4 * __cdecl FUN_004acfcc(undefined4 *param_1,int param_2,undefined4 param_3)
{
FUN_00415f30(param_1,param_2,param_3);
*param_1 = &PTR_FUN_0050e1c8;
return param_1;
}
/* @004acfef file=? name=FUN_004acfef */
undefined4 * __cdecl FUN_004acfef(undefined4 *param_1,int param_2)
{
FUN_00415f60(param_1,param_2);
*param_1 = &PTR_FUN_0050e1c8;
return param_1;
}
/* @004ad00e file=? name=FUN_004ad00e */
void __cdecl FUN_004ad00e(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050e1c8;
FUN_00415f90(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004ad03a file=? name=FUN_004ad03a */
undefined4 * __cdecl FUN_004ad03a(undefined4 *param_1,undefined4 param_2)
{
FUN_00417be0(param_1,param_2);
*param_1 = &PTR_FUN_0050e1c0;
return param_1;
}
/* @004ad059 file=? name=FUN_004ad059 */
void __cdecl FUN_004ad059(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050e1c0;
FUN_00417c0c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004ad085 file=? name=FUN_004ad085 */
undefined4 * __cdecl FUN_004ad085(undefined4 *param_1,int param_2)
{
FUN_00417d00(param_1,param_2);
*param_1 = &PTR_FUN_0050e170;
return param_1;
}
/* @004ad0a4 file=? name=FUN_004ad0a4 */
undefined4 * __cdecl FUN_004ad0a4(undefined4 *param_1,int param_2)
{
FUN_00417d00(param_1,param_2);
*param_1 = &PTR_FUN_0050e170;
return param_1;
}
/* @004ad0c3 file=? name=FUN_004ad0c3 */
undefined4 * __cdecl FUN_004ad0c3(undefined4 *param_1,int param_2)
{
FUN_00417d28(param_1,param_2);
*param_1 = &PTR_FUN_0050e170;
return param_1;
}
/* @004ad0e2 file=? name=FUN_004ad0e2 */
void __cdecl FUN_004ad0e2(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050e170;
FUN_00417d54(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004ad10e file=? name=FUN_004ad10e */
void __cdecl FUN_004ad10e(int *param_1,undefined4 param_2)
{
(**(code **)(*param_1 + 0x28))(param_1,param_2);
return;
}
/* @004ad124 file=? name=FUN_004ad124 */
undefined4 * __cdecl FUN_004ad124(undefined4 *param_1,undefined4 param_2)
{
undefined4 *puVar1;
int iVar2;
FUN_00415e90(param_1,1);
*param_1 = &PTR_FUN_0050e3d0;
FUN_004de998(param_1 + 3,0x10,7,1,FUN_004ad619);
param_1[0x1f] = param_2;
iVar2 = 0;
puVar1 = param_1 + 3;
do {
*puVar1 = 0;
puVar1[2] = 0;
puVar1[1] = 0;
puVar1[3] = 0;
iVar2 = iVar2 + 1;
puVar1 = puVar1 + 4;
} while (iVar2 < 7);
return param_1;
}
/* @004ad180 file=? name=FUN_004ad180 */
void __cdecl FUN_004ad180(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050e3d0;
FUN_00415ed8(param_1,0);
if ((param_2 & 1) != 0) {
FUN_00402f98(0x50e248,param_1);
}
}
return;
}
/* @004ad1b8 file=? name=FUN_004ad1b8 */
void __cdecl FUN_004ad1b8(int *param_1,byte param_2)
{
void *this;
int local_10 [3];
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050e3a0;
FUN_004ad68b(local_10,(int)(param_1 + 0x39));
FUN_00417858(this,local_10,1);
FUN_004ad6c9(local_10,2);
FUN_004ad640(param_1 + 0x39,2);
FUN_0041c648(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004ad228 file=? name=FUN_004ad228 */
undefined4 * __cdecl
FUN_004ad228(undefined4 *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5)
{
int iVar1;
int iVar2;
undefined4 *puVar3;
int iVar4;
FUN_0041c52c(param_1,param_2,param_3,param_4,param_5);
*param_1 = &PTR_FUN_0050e3a0;
FUN_004ad621(param_1 + 0x39,0);
if ((*(uint *)(param_2 + 0x28) & 0xc) == 0) {
param_1[7] = PTR_FUN_0050e2b0;
param_1[8] = DAT_0050e2b4;
param_1[9] = DAT_0050e2b8;
param_1[0x40] = *(undefined4 *)(param_4 + 0x30);
param_1[0x3d] = *(undefined4 *)(param_4 + 0x34);
param_1[0x3e] = *(undefined4 *)(param_4 + 0x38);
param_1[0x3f] = *(undefined4 *)(param_4 + 0x3c);
for (iVar4 = *(int *)(param_2 + 0x124) + -2; -1 < iVar4; iVar4 = iVar4 + -1) {
iVar1 = *(int *)(*(int *)(param_2 + 0x128) + iVar4 * 4);
if (((iVar1 != 0) && (iVar2 = FUN_0041a1a4(**(int **)(iVar1 + 0xc),0x50de2c), iVar2 != 0)) &&
((*(byte *)(iVar1 + 0x28) & 8) != 0)) {
puVar3 = FUN_00402f74(0x50e248);
if (puVar3 == (undefined4 *)0x0) {
puVar3 = (undefined4 *)0x0;
}
else {
puVar3 = FUN_004ad124(puVar3,iVar1);
}
(**(code **)(param_1[0x39] + 4))(param_1 + 0x39,puVar3);
}
}
}
else {
param_1[10] = param_1[10] | 2;
}
return param_1;
}
/* @004ad33c file=? name=FUN_004ad33c */
void __cdecl FUN_004ad33c(int param_1)
{
int iVar1;
uint *puVar2;
uint uVar3;
uint local_64 [7];
uint local_48 [8];
int local_28 [3];
int *local_1c;
int *local_18;
int *local_14;
uint local_10;
int *local_c;
int local_8;
local_8 = *(int *)(DAT_004efc94 + 0x38);
FUN_004ad68b(local_28,param_1 + 0xe4);
while( true ) {
iVar1 = (**(code **)(local_28[0] + 0x28))(local_28);
if (iVar1 == 0) break;
local_c = *(int **)(iVar1 + 0x7c);
local_10 = (**(code **)(*local_c + 0x30))(local_c);
puVar2 = (uint *)(iVar1 + 0xc);
iVar1 = 0;
do {
uVar3 = local_10 & 1;
if (puVar2[1] != 0) {
if ((int)puVar2[3] < *(int *)(param_1 + 0x10)) {
puVar2[1] = 0;
}
else {
uVar3 = *puVar2;
}
}
if (uVar3 != *puVar2) {
if (uVar3 == 0) {
local_1c = *(int **)(param_1 + 0xd0);
FUN_004366b8(local_64,(int)local_1c,local_c,iVar1);
FUN_004364e4(local_8,local_1c,local_64);
}
else {
local_14 = local_c;
local_18 = *(int **)(param_1 + 0xd0);
FUN_00436688(local_48,(int)local_18,local_c,iVar1,*(undefined4 *)(param_1 + 0x100));
FUN_004364e4(local_8,local_18,local_48);
}
}
*puVar2 = uVar3;
iVar1 = iVar1 + 1;
local_10 = (int)local_10 >> 1;
puVar2 = puVar2 + 4;
} while (iVar1 < 7);
}
FUN_004ad6c9(local_28,2);
return;
}
/* @004ad470 file=? name=FUN_004ad470 */
void __cdecl FUN_004ad470(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e280);
return;
}
/* @004ad48c file=? name=FUN_004ad48c */
undefined4 __cdecl
FUN_004ad48c(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
int iVar1;
undefined4 uVar2;
undefined4 *puVar3;
char *local_8;
iVar1 = FUN_0041c684(param_1,param_2,param_3,param_4,param_5,param_6);
if (iVar1 == 0) {
uVar2 = 0;
}
else {
param_4[0x24] = '@';
param_4[0x25] = '\0';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x24;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
param_4[0x30] = -1;
param_4[0x31] = -1;
param_4[0x32] = -1;
param_4[0x33] = -1;
param_4[0x34] = '\0';
param_4[0x35] = '\0';
param_4[0x36] = '\0';
param_4[0x37] = '\0';
param_4[0x38] = '\0';
param_4[0x39] = '\0';
param_4[0x3a] = '\0';
param_4[0x3b] = '\0';
param_4[0x3c] = '\0';
param_4[0x3d] = '\0';
param_4[0x3e] = '\0';
param_4[0x3f] = '\0';
if ((*(int *)(param_4 + 0x30) == -1) &&
(iVar1 = FUN_00404088(param_5,param_3,s_AlarmModel_0050e322,&local_8), iVar1 == 0)) {
return 1;
}
puVar3 = (undefined4 *)FUN_00406ff8(param_7,local_8,1,-1);
if (puVar3 == (undefined4 *)0x0) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_couldn_t_locate_0050e32d,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_8,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s__mod_0050e33f,(char *)0x0);
uVar2 = 0;
}
else {
uVar2 = 1;
*(undefined4 *)(param_4 + 0x30) = *puVar3;
}
}
return uVar2;
}
/* @004ad619 file=? name=FUN_004ad619 */
undefined4 __cdecl FUN_004ad619(undefined4 param_1)
{
return param_1;
}
/* @004ad621 file=? name=FUN_004ad621 */
undefined4 * __cdecl FUN_004ad621(undefined4 *param_1,undefined4 param_2)
{
FUN_00417be0(param_1,param_2);
*param_1 = &PTR_FUN_0050e398;
return param_1;
}
/* @004ad640 file=? name=FUN_004ad640 */
void __cdecl FUN_004ad640(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050e398;
FUN_00417c0c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004ad66c file=? name=FUN_004ad66c */
undefined4 * __cdecl FUN_004ad66c(undefined4 *param_1,int param_2)
{
FUN_00417d00(param_1,param_2);
*param_1 = &PTR_FUN_0050e348;
return param_1;
}
/* @004ad68b file=? name=FUN_004ad68b */
undefined4 * __cdecl FUN_004ad68b(undefined4 *param_1,int param_2)
{
FUN_00417d00(param_1,param_2);
*param_1 = &PTR_FUN_0050e348;
return param_1;
}
/* @004ad6aa file=? name=FUN_004ad6aa */
undefined4 * __cdecl FUN_004ad6aa(undefined4 *param_1,int param_2)
{
FUN_00417d28(param_1,param_2);
*param_1 = &PTR_FUN_0050e348;
return param_1;
}
/* @004ad6c9 file=? name=FUN_004ad6c9 */
void __cdecl FUN_004ad6c9(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050e348;
FUN_00417d54(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004ad6f8 file=? name=FUN_004ad6f8 */
void __cdecl FUN_004ad6f8(int param_1,int param_2)
{
bool bVar1;
undefined3 extraout_var;
bVar1 = FUN_004ac9c8(param_1);
if ((CONCAT31(extraout_var,bVar1) == 0) && (0 < *(int *)(param_2 + 0xc))) {
if (*(int *)(param_1 + 0x134) != 0) {
*(undefined4 *)(param_1 + 0x134) = 0;
*(undefined4 *)(param_1 + 0x15c) = 0;
return;
}
*(undefined4 *)(param_1 + 0x134) = 1;
*(undefined4 *)(param_1 + 0x15c) = 0x3f800000;
}
return;
}
/* @004ad748 file=? name=FUN_004ad748 */
void __cdecl FUN_004ad748(int *param_1,undefined4 param_2)
{
FUN_004ac0bc(param_1,param_2);
return;
}
/* @004ad760 file=? name=FUN_004ad760 */
void __cdecl FUN_004ad760(int *param_1)
{
param_1[0x45] = param_1[0x4f];
param_1[0x56] = (int)((float)param_1[0x4f] * (float)param_1[0x55]);
param_1[0x4b] = param_1[0x4a];
param_1[0x4c] = 0;
param_1[0x4d] = 1;
param_1[0x57] = 0x3f800000;
FUN_004ad884((int)param_1);
FUN_004ad7f0((int)param_1);
param_1[0x4e] = 0;
FUN_004ac22c(param_1);
return;
}
/* @004ad7d4 file=? name=FUN_004ad7d4 */
undefined4 __cdecl FUN_004ad7d4(int param_1)
{
return *(undefined4 *)(*(int *)(*(int *)(param_1 + 0xd0) + 400) + 0x260);
}
/* @004ad7f0 file=? name=FUN_004ad7f0 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004ad7f0(int param_1)
{
float fVar1;
float fVar2;
float10 fVar3;
*(float *)(param_1 + 0x1cc) = *(float *)(param_1 + 0x114) * *(float *)(param_1 + 300);
fVar1 = (float)(_DAT_004ad870 * (float10)*(float *)(param_1 + 0x1cc));
fVar2 = _DAT_004ad87c;
if ((_DAT_004ad87c <= fVar1) && (fVar2 = fVar1, _DAT_004ad880 < fVar1)) {
fVar2 = _DAT_004ad880;
}
FUN_0043ade4((uint *)(param_1 + 0x144),fVar2);
fVar3 = FUN_0043ae0b((uint *)(param_1 + 0x144));
*(float *)(param_1 + 0x120) = (float)fVar3;
return;
}
/* @004ad884 file=? name=FUN_004ad884 */
void __cdecl FUN_004ad884(int param_1)
{
int iVar1;
iVar1 = 0;
do {
FUN_0043ade4((uint *)(param_1 + 0x144),0);
iVar1 = iVar1 + 1;
} while (iVar1 < 0xf);
return;
}
/* @004ad8ac file=? name=FUN_004ad8ac */
void __cdecl FUN_004ad8ac(int param_1,float param_2)
{
int iVar1;
float10 fVar2;
int iVar3;
iVar3 = param_1 + 0x164;
iVar1 = FUN_00417ab4(iVar3);
if ((iVar1 != 0) && (*(int *)(param_1 + 0x134) != 0)) {
fVar2 = FUN_004ad9ec((short)iVar3,param_1,iVar1,param_2);
*(float *)(iVar1 + 0x1c8) = (float)fVar2 + *(float *)(iVar1 + 0x1c8);
*(float *)(param_1 + 0x1c8) = -(float)fVar2 + *(float *)(param_1 + 0x1c8);
FUN_004ada94(param_1,param_2);
}
return;
}
/* @004ad924 file=? name=FUN_004ad924 */
void __cdecl FUN_004ad924(int *param_1,float param_2)
{
int iVar1;
iVar1 = FUN_004ad7d4((int)param_1);
if (iVar1 != 0) {
param_1[0x56] = (int)((float)param_1[0x72] + (float)param_1[0x56]);
param_1[0x45] = (int)((float)param_1[0x56] / (float)param_1[0x55]);
FUN_004ad7f0((int)param_1);
param_1[0x72] = 0;
FUN_004ad8ac((int)param_1,param_2);
}
iVar1 = FUN_004ad7d4((int)param_1);
if (iVar1 != 0) {
FUN_004adbf8(param_1,param_2);
}
if ((float)param_1[0x47] < (float)param_1[0x45]) {
FUN_0041bbd8((int)(param_1 + 0x5c),2);
return;
}
if ((float)param_1[0x46] < (float)param_1[0x45]) {
FUN_0041bbd8((int)(param_1 + 0x5c),1);
return;
}
FUN_0041bbd8((int)(param_1 + 0x5c),0);
return;
}
/* @004ad9ec file=? name=FUN_004ad9ec */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __thiscall FUN_004ad9ec(undefined2 param_1,int param_2,int param_3,float param_4)
{
float fVar1;
float fVar2;
float fVar3;
float fVar4;
float fVar5;
double dVar6;
float fVar7;
float fVar8;
float10 fVar9;
fVar7 = *(float *)(param_2 + 0x154) / *(float *)(param_2 + 0x160);
fVar8 = fVar7 + *(float *)(param_3 + 0x154);
fVar1 = *(float *)(param_2 + 0x114);
fVar2 = *(float *)(param_2 + 0x160);
fVar3 = *(float *)(param_3 + 0x158);
fVar4 = *(float *)(param_3 + 0x1c8);
fVar5 = *(float *)(param_2 + 0x158);
dVar6 = (double)((-param_4 *
*(float *)(param_2 + 0x140) *
(*(float *)(param_2 + 300) / *(float *)(param_2 + 0x128)) *
*(float *)(param_2 + 0x15c)) / fVar8);
fVar9 = (float10)FUN_004dca38(param_1,SUB84(dVar6,0),(uint)((ulonglong)dVar6 >> 0x20));
return (float10)(float)((float10)(fVar1 * fVar2 - (fVar3 + fVar4 + fVar5) / fVar8) *
(float10)fVar7 * ((float10)_DAT_004ada90 - fVar9));
}
/* @004ada94 file=? name=FUN_004ada94 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004ada94(int param_1,float param_2)
{
float fVar1;
float fVar2;
float fVar3;
float fVar4;
int iVar5;
float10 fVar6;
iVar5 = FUN_00417ab4(param_1 + 0x164);
if ((iVar5 != 0) &&
(fVar6 = FUN_004dcd00((double)(*(float *)(param_1 + 0x1cc) - *(float *)(iVar5 + 0x1cc))),
(float10)_DAT_004adbf4 < fVar6)) {
fVar1 = *(float *)(iVar5 + 0x1cc) / *(float *)(param_1 + 0x114) - *(float *)(param_1 + 300);
fVar2 = *(float *)(param_1 + 0x128) * param_2;
if (-fVar2 <= fVar1) {
if (fVar2 < fVar1) {
fVar1 = fVar2;
}
}
else {
fVar1 = -fVar2;
}
fVar2 = *(float *)(param_1 + 0x128) - *(float *)(param_1 + 300);
fVar3 = -*(float *)(param_1 + 300);
fVar4 = -(*(float *)(iVar5 + 0x128) - *(float *)(iVar5 + 300));
if ((fVar3 <= fVar1) && (fVar3 = fVar1, fVar2 < fVar1)) {
fVar3 = fVar2;
}
if ((fVar4 <= fVar3) && (fVar4 = fVar3, *(float *)(iVar5 + 300) < fVar3)) {
fVar4 = *(float *)(iVar5 + 300);
}
fVar4 = *(float *)(param_1 + 0x15c) * fVar4;
*(float *)(param_1 + 300) = fVar4 + *(float *)(param_1 + 300);
*(float *)(iVar5 + 300) = *(float *)(iVar5 + 300) - fVar4;
}
return;
}
/* @004adbf8 file=? name=FUN_004adbf8 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004adbf8(int *param_1,float param_2)
{
float fVar1;
float10 fVar2;
param_1[0x4c] = (int)(*(float *)(param_1[0x38] + 0x158) * (float)param_1[0x48]);
if ((float)param_1[0x4c] < _DAT_0050e3d8) {
param_1[0x4c] = 0;
}
fVar1 = (float)param_1[0x4c] * param_2;
if ((float)param_1[0x4b] < fVar1) {
fVar1 = (float)param_1[0x4b];
}
param_1[0x4b] = (int)((float)param_1[0x4b] - fVar1);
fVar2 = FUN_004dcd00((double)fVar1);
if ((float10)_DAT_004adcfc < fVar2) {
fVar2 = (float10)(**(code **)(*param_1 + 0x38))(param_1,fVar1);
param_1[0x4b] = (int)(float)(fVar2 + (float10)(float)param_1[0x4b]);
}
if ((param_1[0x4e] != 0) || ((float)param_1[0x4c] <= _DAT_0050e3d4)) {
if ((param_1[0x4e] == 1) && ((float)param_1[0x4c] < _DAT_0050e3d8)) {
param_1[0x4e] = 0;
}
}
else {
param_1[0x4e] = 1;
}
return;
}
/* @004add00 file=? name=FUN_004add00 */
void __cdecl FUN_004add00(int param_1,float param_2)
{
int *piVar1;
piVar1 = (int *)FUN_00417ab4(param_1 + 0x164);
(**(code **)(*piVar1 + 0x38))(piVar1,*(float *)(param_1 + 0x15c) * param_2);
return;
}
/* @004add30 file=? name=FUN_004add30 */
uint __cdecl FUN_004add30(int param_1)
{
uint uVar1;
int iVar2;
uVar1 = FUN_004ac144(param_1);
if (*(int *)(param_1 + 0x184) != 0) {
uVar1 = uVar1 | 8;
}
if (*(int *)(param_1 + 0x138) != 0) {
iVar2 = FUN_004ad7d4(param_1);
if (iVar2 != 0) {
uVar1 = uVar1 | 4;
}
}
return uVar1;
}
/* @004add6c file=? name=FUN_004add6c */
undefined4 __cdecl FUN_004add6c(int *param_1,int param_2)
{
undefined4 uVar1;
if (param_2 == 1) {
*(undefined4 *)(param_1[0x38] + 0x158) = 0x3f000000;
return 1;
}
uVar1 = FUN_004ac1d4(param_1,param_2);
return uVar1;
}
/* @004adda0 file=bt/heat.cpp name=FUN_004adda0 */
int * __cdecl
FUN_004adda0(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5,
int param_6,int param_7)
{
int iVar1;
int local_8;
FUN_004ac644(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
*param_1 = (int)&PTR_FUN_0050edc4;
param_1[0x45] = *(int *)(param_4 + 0xe4);
param_1[0x46] = *(int *)(param_4 + 0xe8);
param_1[0x47] = *(int *)(param_4 + 0xec);
param_1[0x48] = 0;
param_1[0x49] = 0x3f000000;
param_1[0x4a] = 0x3f800000;
param_1[0x4b] = param_1[0x4a];
param_1[0x4c] = 0;
param_1[0x4d] = 1;
param_1[0x4e] = 0;
param_1[0x4f] = param_1[0x45];
param_1[0x50] = *(int *)(param_4 + 0xf0);
FUN_0043ad4f((uint *)(param_1 + 0x51),0xf,0);
param_1[0x54] = 0x3ecccccd;
param_1[0x55] = *(int *)(param_4 + 0xf4);
param_1[0x56] = (int)((float)param_1[0x55] * (float)param_1[0x4f]);
param_1[0x57] = 0x3f800000;
param_1[0x58] = 0x3f800000;
FUN_004af9cf(param_1 + 0x59,0);
FUN_0041b9ec(param_1 + 0x5c,3);
param_1[0x72] = 0;
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) {
param_1[7] = (int)PTR_FUN_0050e4e0;
param_1[8] = DAT_0050e4e4;
param_1[9] = DAT_0050e4e8;
}
param_1[0x71] = (int)param_4;
local_8 = 0;
iVar1 = FUN_0041a1a4(*(int *)param_1[3],0x50e590);
if (iVar1 == 0) {
if (*(int *)(param_4 + 0xf8) < *(int *)(param_2 + 0x124)) {
local_8 = *(int *)(*(int *)(param_2 + 0x128) + *(int *)(param_4 + 0xf8) * 4);
}
else {
FUN_0040385c(s_Bad_subsystem_resource_>heatSink_0050e7c9,s_d__tesla_bt_bt_HEAT_CPP_0050e804,
0x25f);
}
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) {
if (local_8 == 0) {
FUN_0040385c(s_Master_heatable_subystem_is_miss_0050e81c,s_d__tesla_bt_bt_HEAT_CPP_0050e859,
0x26b);
}
else {
(**(code **)(param_1[0x59] + 4))(param_1 + 0x59,local_8);
}
}
else if (((*(uint *)(param_2 + 0x28) & 0xc) == 4) && (local_8 != 0)) {
(**(code **)(param_1[0x59] + 4))(param_1 + 0x59,local_8);
}
}
FUN_004ad7f0((int)param_1);
return param_1;
}
/* @004adfd4 file=? name=FUN_004adfd4 */
void __cdecl FUN_004adfd4(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050edc4;
FUN_0041baa4(param_1 + 0x5c,2);
FUN_004af9ee(param_1 + 0x59,2);
FUN_0043adb5(param_1 + 0x51,2);
FUN_004ac868(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004ae034 file=? name=FUN_004ae034 */
void __cdecl FUN_004ae034(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e3ec);
return;
}
/* @004ae050 file=? name=FUN_004ae050 */
void __cdecl FUN_004ae050(int param_1)
{
int iVar1;
FUN_004ac8c0(param_1);
iVar1 = *(int *)(param_1 + 0x184);
if (iVar1 == 0) {
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___NormalHeat_0050e893,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
else {
if (iVar1 == 1) {
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___DegradationHeat_0050e880,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
}
if (iVar1 == 2) {
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___FailureHeat_0050e871,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
}
}
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_Unknown_Heat_State__0050e8a1,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
}
/* @004ae150 file=? name=FUN_004ae150 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl
FUN_004ae150(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
char *pcVar1;
int iVar2;
undefined4 uVar3;
char *pcVar4;
char *pcVar5;
bool bVar6;
char *local_8;
iVar2 = FUN_004ac9ec(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
if (iVar2 == 0) {
uVar3 = 0;
}
else {
param_4[0x24] = -4;
param_4[0x25] = '\0';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x44;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
if (param_7 == 1) {
param_4[0xe4] = '\0';
param_4[0xe5] = '\0';
param_4[0xe6] = -0x80;
param_4[0xe7] = -0x41;
param_4[0xe8] = '\0';
param_4[0xe9] = '\0';
param_4[0xea] = -0x80;
param_4[0xeb] = -0x41;
param_4[0xec] = '\0';
param_4[0xed] = '\0';
param_4[0xee] = -0x80;
param_4[0xef] = -0x41;
param_4[0xf0] = '\0';
param_4[0xf1] = '\0';
param_4[0xf2] = -0x80;
param_4[0xf3] = -0x41;
param_4[0xf4] = '\0';
param_4[0xf5] = '\0';
param_4[0xf6] = -0x80;
param_4[0xf7] = -0x41;
param_4[0xf8] = -1;
param_4[0xf9] = -1;
param_4[0xfa] = -1;
param_4[0xfb] = -1;
}
iVar2 = FUN_00404118(param_5,param_3,s_StartingTemperature_0050e8b6,(float *)(param_4 + 0xe4));
if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xe4))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_StartingTemperature__0050e8ca,(char *)0x0);
uVar3 = 0;
}
else {
iVar2 = FUN_00404118(param_5,param_3,s_DegradationTemperature_0050e8e9,
(float *)(param_4 + 0xe8));
if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xe8))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_DegradationTemperature__0050e900,(char *)0x0);
uVar3 = 0;
}
else {
iVar2 = FUN_00404118(param_5,param_3,s_FailureTemperature_0050e922,(float *)(param_4 + 0xec)
);
if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xec))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_FailureTemperature__0050e935,(char *)0x0);
uVar3 = 0;
}
else {
iVar2 = FUN_00404118(param_5,param_3,s_ThermalConductance_0050e953,
(float *)(param_4 + 0xf0));
if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xf0))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_ThermalConductance__0050e966,(char *)0x0);
uVar3 = 0;
}
else {
iVar2 = FUN_00404118(param_5,param_3,s_ThermalMass_0050e984,(float *)(param_4 + 0xf4));
if ((iVar2 == 0) && (_DAT_004ae460 == *(float *)(param_4 + 0xf4))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_ThermalMass__0050e990,(char *)0x0);
uVar3 = 0;
}
else {
local_8 = s_Unspecified_0050e9a7;
iVar2 = FUN_00404088(param_5,param_3,s_HeatSink_0050e9b3,&local_8);
if ((iVar2 == 0) && (*(int *)(param_4 + 0xf8) == -1)) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_HeatSink__0050e9bc,(char *)0x0);
uVar3 = 0;
}
else {
pcVar5 = s_Unspecified_0050e9d0;
pcVar4 = local_8;
do {
bVar6 = *pcVar4 == *pcVar5;
if (!bVar6) break;
if (*pcVar4 == '\0') goto LAB_004ae418;
pcVar1 = pcVar4 + 1;
bVar6 = *pcVar1 == pcVar5[1];
if (!bVar6) break;
pcVar4 = pcVar4 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (!bVar6) {
iVar2 = FUN_004215b0(param_5,local_8);
*(int *)(param_4 + 0xf8) = iVar2;
}
LAB_004ae418:
if (*(int *)(param_4 + 0xf8) < 0) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_has_an_invalid_heat_sink__0050e9dc,(char *)0x0
);
uVar3 = 0;
}
else {
*(int *)(param_4 + 0xf8) = *(int *)(param_4 + 0xf8) + 2;
uVar3 = 1;
}
}
}
}
}
}
}
}
return uVar3;
}
/* @004ae464 file=? name=FUN_004ae464 */
void __cdecl FUN_004ae464(int param_1,int param_2)
{
int iVar1;
bool bVar2;
undefined3 extraout_var;
bVar2 = FUN_004ac9c8(param_1);
if ((CONCAT31(extraout_var,bVar2) == 0) && (0 < *(int *)(param_2 + 0xc))) {
iVar1 = *(int *)(param_1 + 0x1d0);
if (iVar1 == 0) {
*(undefined4 *)(param_1 + 0x1d0) = 1;
}
else if (iVar1 == 1) {
*(undefined4 *)(param_1 + 0x1d0) = 5;
}
else if (iVar1 == 5) {
*(undefined4 *)(param_1 + 0x1d0) = 0x32;
}
else if (iVar1 == 0x32) {
*(undefined4 *)(param_1 + 0x1d0) = 0;
}
FUN_0049f788(*(int *)(param_1 + 0xd0));
}
return;
}
/* @004ae4d8 file=? name=FUN_004ae4d8 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004ae4d8(int *param_1,undefined4 param_2)
{
float fVar1;
param_1[0x58] = (int)((_DAT_004ae530 - *(float *)(param_1[0x38] + 0x158)) * (float)param_1[0x76]);
fVar1 = _DAT_004ae530;
if (_DAT_004ae530 <= (float)param_1[0x58]) {
fVar1 = (float)param_1[0x58];
}
param_1[0x58] = (int)fVar1;
FUN_004ad748(param_1,param_2);
return;
}
/* @004ae534 file=? name=FUN_004ae534 */
void __cdecl FUN_004ae534(int *param_1,int param_2)
{
FUN_004ad760(param_1);
if (param_2 != 0) {
param_1[0x74] = 1;
param_1[0x58] = param_1[0x76];
}
return;
}
/* @004ae568 file=? name=FUN_004ae568 */
int * __cdecl FUN_004ae568(int *param_1,int param_2,undefined4 param_3,char *param_4)
{
char *pcVar1;
int iVar2;
FUN_004adda0(param_1,param_2,param_3,param_4,&DAT_0050e4ec,0,0);
*param_1 = (int)&PTR_FUN_0050ed88;
FUN_0041b9ec(param_1 + 0x77,3);
param_1[0x74] = 1;
param_1[0x57] = 0;
param_1[0x58] = *(int *)(param_4 + 0xfc);
param_1[0x76] = param_1[0x58];
param_1[10] = param_1[10] | 8;
pcVar1 = (char *)param_1[0x35];
iVar2 = FUN_004d4a78(pcVar1);
iVar2 = FUN_004dd1e0(pcVar1 + iVar2 + -1);
param_1[0x75] = iVar2;
return param_1;
}
/* @004ae5fc file=? name=FUN_004ae5fc */
void __cdecl FUN_004ae5fc(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050ed88;
FUN_0041baa4(param_1 + 0x77,2);
FUN_004adfd4(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004ae63c file=? name=FUN_004ae63c */
void __cdecl FUN_004ae63c(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e4fc);
return;
}
/* @004ae658 file=? name=FUN_004ae658 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl
FUN_004ae658(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
int iVar1;
undefined4 uVar2;
iVar1 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
if (iVar1 == 0) {
uVar2 = 0;
}
else {
param_4[0x24] = '\0';
param_4[0x25] = '\x01';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x43;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
if (param_7 == 1) {
param_4[0xfc] = '\0';
param_4[0xfd] = '\0';
param_4[0xfe] = -0x80;
param_4[0xff] = -0x41;
}
iVar1 = FUN_00404118(param_5,param_3,s_RefrigerationFactor_0050ea38,(float *)(param_4 + 0xfc));
if ((iVar1 == 0) && (_DAT_004ae708 == *(float *)(param_4 + 0xfc))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_RefrigerationFactor__0050ea4c,(char *)0x0);
uVar2 = 0;
}
else {
uVar2 = 1;
}
}
return uVar2;
}
/* @004ae70c file=? name=FUN_004ae70c */
void __cdecl FUN_004ae70c(int *param_1)
{
FUN_004ad760(param_1);
return;
}
/* @004ae724 file=? name=FUN_004ae724 */
void __cdecl FUN_004ae724(int *param_1,undefined4 param_2)
{
FUN_004ad748(param_1,param_2);
return;
}
/* @004ae73c file=? name=FUN_004ae73c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004ae73c(int *param_1,float param_2)
{
float fVar1;
float fVar2;
double dVar3;
float fVar4;
int iVar5;
float10 fVar6;
int *piVar7;
iVar5 = FUN_004ad7d4((int)param_1);
if (iVar5 != 0) {
param_1[0x56] = (int)((float)param_1[0x72] + (float)param_1[0x56]);
param_1[0x45] = (int)((float)param_1[0x56] / (float)param_1[0x55]);
piVar7 = param_1;
FUN_004ad7f0((int)param_1);
param_1[0x72] = 0;
fVar4 = _DAT_004ae89c - (_DAT_004ae89c - (float)param_1[0x75]) * _DAT_004ae8a0;
fVar1 = (float)param_1[0x45];
fVar2 = (float)param_1[0x58];
dVar3 = (double)((-param_2 *
(float)param_1[0x50] *
(_DAT_004ae8a4 - *(float *)(param_1[0x38] + 0x158)) *
((float)param_1[0x4b] / (float)param_1[0x4a]) * (float)param_1[0x57]) /
(float)param_1[0x55]);
fVar6 = (float10)FUN_004dca38((short)piVar7,SUB84(dVar3,0),(uint)((ulonglong)dVar3 >> 0x20));
param_1[0x72] =
(int)(-(float)((float10)(fVar1 * fVar2 - fVar4) * (float10)(float)param_1[0x55] *
((float10)_DAT_004ae8a4 - fVar6)) + (float)param_1[0x72]);
}
fVar1 = (float)param_1[0x4a] - (float)param_1[0x4b];
if (_DAT_004ae8a8 < fVar1) {
fVar6 = FUN_004dcd00((double)fVar1);
if ((float10)_DAT_004ae8ac < fVar6) {
fVar6 = (float10)(**(code **)(*param_1 + 0x38))(param_1,fVar1);
param_1[0x4b] = (int)(float)(fVar6 + (float10)(float)param_1[0x4b]);
}
}
return;
}
/* @004ae8b0 file=? name=FUN_004ae8b0 */
void __cdecl FUN_004ae8b0(int param_1,float param_2)
{
int iVar1;
iVar1 = FUN_00417ab4(param_1 + 0x1d8);
FUN_004af3b0(iVar1,param_2);
return;
}
/* @004ae8d0 file=? name=FUN_004ae8d0 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
int * __cdecl FUN_004ae8d0(int *param_1,int param_2,undefined4 param_3,char *param_4)
{
FUN_004adda0(param_1,param_2,param_3,param_4,&DAT_0050e580,0,0);
*param_1 = (int)&PTR_FUN_0050ed4c;
param_1[0x74] = *(int *)(param_4 + 0xfc);
param_1[0x75] = 0x43960000;
FUN_004afa1a(param_1 + 0x76,0);
param_1[0x50] =
(int)(float)(_DAT_004ae974 * (float10)param_1[0x74] * (float10)(float)param_1[0x50]);
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) {
param_1[7] = (int)PTR_FUN_0050e5e8;
param_1[8] = DAT_0050e5ec;
param_1[9] = DAT_0050e5f0;
}
return param_1;
}
/* @004ae980 file=? name=FUN_004ae980 */
void __cdecl FUN_004ae980(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050ed4c;
FUN_004afa39(param_1 + 0x76,2);
FUN_004adfd4(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004ae9c0 file=? name=FUN_004ae9c0 */
void __cdecl FUN_004ae9c0(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e590);
return;
}
/* @004ae9dc file=? name=FUN_004ae9dc */
undefined4 __cdecl
FUN_004ae9dc(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
bool bVar1;
int iVar2;
undefined4 uVar3;
undefined3 extraout_var;
iVar2 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
if (iVar2 == 0) {
uVar3 = 0;
}
else {
param_4[0x24] = '\0';
param_4[0x25] = '\x01';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x42;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
if (param_7 == 1) {
param_4[0xfc] = -1;
param_4[0xfd] = -1;
param_4[0xfe] = -1;
param_4[0xff] = -1;
}
bVar1 = FUN_004040d8(param_5,param_3,s_HeatSinkCount_0050ea95,(int *)(param_4 + 0xfc));
if ((CONCAT31(extraout_var,bVar1) == 0) && (*(int *)(param_4 + 0xfc) == -1)) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_HeatSinkCount__0050eaa3,(char *)0x0);
uVar3 = 0;
}
else {
uVar3 = 1;
}
}
return uVar3;
}
/* @004aea84 file=? name=FUN_004aea84 */
void __cdecl FUN_004aea84(int *param_1,undefined4 param_2)
{
FUN_004ac0bc(param_1,param_2);
return;
}
/* @004aea9c file=? name=FUN_004aea9c */
void __cdecl FUN_004aea9c(int *param_1)
{
FUN_004ac22c(param_1);
FUN_0041bbd8((int)(param_1 + 0x4b),0);
return;
}
/* @004aeac4 file=? name=FUN_004aeac4 */
void __cdecl FUN_004aeac4(int param_1)
{
int iVar1;
iVar1 = FUN_00417ab4(param_1 + 0x114);
if (*(float *)(iVar1 + 0x114) <= *(float *)(param_1 + 0x124)) {
if (*(float *)(iVar1 + 0x114) <= *(float *)(param_1 + 0x120)) {
FUN_0041bbd8(param_1 + 300,0);
}
else {
FUN_0041bbd8(param_1 + 300,1);
}
}
else {
FUN_0041bbd8(param_1 + 300,2);
}
return;
}
/* @004aeb40 file=? name=FUN_004aeb40 */
int * __cdecl
FUN_004aeb40(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5)
{
FUN_004ac644(param_1,param_2,param_3,param_4,param_5,0,0);
*param_1 = (int)&PTR_FUN_0050ed10;
FUN_004af9cf(param_1 + 0x45,0);
param_1[0x48] = *(int *)(param_4 + 0xe8);
param_1[0x49] = *(int *)(param_4 + 0xec);
param_1[0x4a] = *(int *)(param_4 + 0xe4);
FUN_0041b9ec(param_1 + 0x4b,3);
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) {
param_1[7] = (int)PTR_FUN_0050e634;
param_1[8] = DAT_0050e638;
param_1[9] = DAT_0050e63c;
}
return param_1;
}
/* @004aebe8 file=? name=FUN_004aebe8 */
void __cdecl FUN_004aebe8(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050ed10;
FUN_0041baa4(param_1 + 0x4b,2);
FUN_004af9ee(param_1 + 0x45,2);
FUN_004ac868(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004aec38 file=? name=FUN_004aec38 */
void __cdecl FUN_004aec38(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e604);
return;
}
/* @004aec54 file=? name=FUN_004aec54 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl
FUN_004aec54(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
char *pcVar1;
int iVar2;
undefined4 uVar3;
char *pcVar4;
char *pcVar5;
bool bVar6;
char *local_8;
iVar2 = FUN_004ac9ec(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
if (iVar2 == 0) {
uVar3 = 0;
}
else {
param_4[0x24] = -0x10;
param_4[0x25] = '\0';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x41;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
if (param_7 == 1) {
param_4[0xe4] = -1;
param_4[0xe5] = -1;
param_4[0xe6] = -1;
param_4[0xe7] = -1;
}
iVar2 = FUN_00404118(param_5,param_3,s_DegradationTemperature_0050eac8,(float *)(param_4 + 0xe8)
);
if ((iVar2 == 0) && (_DAT_004aee28 == *(float *)(param_4 + 0xe8))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_DegradationTemperature__0050eadf,(char *)0x0);
uVar3 = 0;
}
else {
iVar2 = FUN_00404118(param_5,param_3,s_FailureTemperature_0050eb01,(float *)(param_4 + 0xec));
if ((iVar2 == 0) && (_DAT_004aee28 == *(float *)(param_4 + 0xec))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_FailureTemperature__0050eb14,(char *)0x0);
uVar3 = 0;
}
else {
local_8 = s_Unspecified_0050eb32;
iVar2 = FUN_00404088(param_5,param_3,s_WatchedSubsystem_0050eb3e,&local_8);
if ((iVar2 == 0) && (*(int *)(param_4 + 0xe4) == -1)) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_WatchedSubsystem__0050eb4f,(char *)0x0);
uVar3 = 0;
}
else {
pcVar5 = s_Unspecified_0050eb6b;
pcVar4 = local_8;
do {
bVar6 = *pcVar4 == *pcVar5;
if (!bVar6) break;
if (*pcVar4 == '\0') goto LAB_004aede2;
pcVar1 = pcVar4 + 1;
bVar6 = *pcVar1 == pcVar5[1];
if (!bVar6) break;
pcVar4 = pcVar4 + 2;
pcVar5 = pcVar5 + 2;
bVar6 = *pcVar1 == '\0';
} while (!bVar6);
if (!bVar6) {
iVar2 = FUN_004215b0(param_5,local_8);
*(int *)(param_4 + 0xe4) = iVar2;
}
LAB_004aede2:
if (*(int *)(param_4 + 0xe4) < 0) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_has_an_invalid_watched_subsystem_0050eb77,
(char *)0x0);
uVar3 = 0;
}
else {
*(int *)(param_4 + 0xe4) = *(int *)(param_4 + 0xe4) + 2;
uVar3 = 1;
}
}
}
}
}
return uVar3;
}
/* @004aee2c file=? name=FUN_004aee2c */
void __cdecl FUN_004aee2c(int param_1)
{
uint uVar1;
uVar1 = *(uint *)(*(int *)(param_1 + 0xd0) + 0x28);
if (((uVar1 & 0xc) == 0) && ((uVar1 & 0x100) != 0)) {
(**(code **)(*(int *)(param_1 + 0x114) + 4))
(param_1 + 0x114,
*(undefined4 *)
(*(int *)(*(int *)(param_1 + 0xd0) + 0x128) + *(int *)(param_1 + 0x128) * 4));
}
return;
}
/* @004aee70 file=? name=FUN_004aee70 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004aee70(int param_1,int param_2)
{
bool bVar1;
undefined3 extraout_var;
bVar1 = FUN_004ac9c8(param_1);
if (CONCAT31(extraout_var,bVar1) == 0) {
if (*(int *)(param_2 + 0xc) < 1) {
FUN_0041bbd8(param_1 + 0x1d0,0);
}
else {
if ((*(int *)(param_1 + 0x1e4) != 1) && (_DAT_004aeedc < *(float *)(param_1 + 300))) {
FUN_0041bbd8(param_1 + 0x1d0,1);
}
*(undefined4 *)(param_1 + 0x228) = 0;
}
*(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1;
}
return;
}
/* @004aeee0 file=? name=FUN_004aeee0 */
void __cdecl FUN_004aeee0(int *param_1)
{
FUN_004ad760(param_1);
return;
}
/* @004aeef8 file=? name=FUN_004aeef8 */
void __cdecl FUN_004aeef8(int param_1,int param_2)
{
FUN_0041bd34(param_1,param_2);
if (*(int *)(param_2 + 0x10) == 0) {
FUN_0041bbd8(param_1 + 0x1d0,0);
}
else {
FUN_0041bbd8(param_1 + 0x1d0,1);
}
return;
}
/* @004aef40 file=? name=FUN_004aef40 */
void __cdecl FUN_004aef40(int param_1,undefined4 *param_2,undefined2 param_3)
{
FUN_0041c500(param_1,param_2,param_3);
*param_2 = 0x14;
param_2[4] = (uint)(*(int *)(param_1 + 0x1e4) == 1);
return;
}
/* @004aef78 file=? name=FUN_004aef78 */
void __cdecl FUN_004aef78(int param_1,float param_2)
{
if (*(int *)(param_1 + 0x1e4) == 1) {
*(float *)(param_1 + 0x228) = param_2 + *(float *)(param_1 + 0x228);
FUN_004aefa4(param_1,param_2);
}
return;
}
/* @004aefa4 file=? name=FUN_004aefa4 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004aefa4(int param_1,float param_2)
{
float fVar1;
int iVar2;
int iVar3;
float10 fVar4;
int local_6c [3];
int local_60 [3];
int local_54 [3];
int local_48 [3];
int local_3c [4];
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 + 300);
fVar4 = FUN_004dcd00((double)local_8);
if ((float10)_DAT_004af3a0 < fVar4) {
iVar3 = *(int *)(param_1 + 0xd0);
FUN_004afa65(local_3c,0);
FUN_004a4f15(local_48,iVar3 + 0x7cc);
while (iVar2 = (**(code **)(local_48[0] + 0x28))(), iVar2 != 0) {
(**(code **)(local_3c[0] + 4))(local_3c);
}
FUN_004afab0(local_54,iVar3 + 0x7bc);
while (iVar2 = (**(code **)(local_54[0] + 0x28))(), iVar2 != 0) {
(**(code **)(local_3c[0] + 4))(local_3c);
}
FUN_004a4f9e(local_60,iVar3 + 0x7ac);
while (iVar3 = (**(code **)(local_60[0] + 0x28))(), iVar3 != 0) {
(**(code **)(local_3c[0] + 4))(local_3c);
}
FUN_00417ab4(param_1 + 0x164);
(**(code **)(local_3c[0] + 4))(local_3c);
FUN_004afb58(local_6c,(int)local_3c);
while (iVar3 = (**(code **)(local_6c[0] + 0x28))(), iVar3 != 0) {
local_c = *(float *)(param_1 + 300);
fVar4 = FUN_004dcd00((double)local_c);
if (fVar4 <= (float10)_DAT_004af3a0) {
FUN_004afb96(local_6c,2);
FUN_004a4ffb(local_60,2);
FUN_004afb0d(local_54,2);
FUN_004a4f72(local_48,2);
FUN_004afa84(local_3c,2);
return;
}
if (*(float *)(iVar3 + 0x15c) != _DAT_004af3a4) {
fVar1 = -*(float *)(param_1 + 0x224) * *(float *)(iVar3 + 0x15c) * param_2;
local_14 = -*(float *)(param_1 + 300);
local_10 = local_14;
if ((local_14 <= fVar1) && (local_10 = fVar1, _DAT_004af3a4 < fVar1)) {
local_10 = _DAT_004af3a4;
}
local_24 = *(float *)(iVar3 + 300);
fVar4 = FUN_004dcd00((double)local_24);
if ((float10)_DAT_004af3a0 < fVar4) {
local_20 = local_10;
if (local_10 <= _DAT_004af3a4) {
local_20 = -local_10;
}
local_20 = local_20 / *(float *)(iVar3 + 300);
local_1c = local_10;
if (local_10 <= _DAT_004af3a4) {
local_1c = -local_10;
}
local_1c = local_1c / *(float *)(param_1 + 300);
local_18 = *(float *)(iVar3 + 0x158) * local_20 - *(float *)(param_1 + 0x158) * local_1c;
}
else {
local_20 = local_10;
if (local_10 <= _DAT_004af3a4) {
local_20 = -local_10;
}
local_20 = local_20 / *(float *)(iVar3 + 0x128);
local_1c = local_10;
if (local_10 <= _DAT_004af3a4) {
local_1c = -local_10;
}
local_1c = local_1c / *(float *)(param_1 + 300);
local_18 = *(float *)(iVar3 + 0x158) * local_20 - *(float *)(param_1 + 0x158) * local_1c;
}
*(float *)(param_1 + 300) = local_10 + *(float *)(param_1 + 300);
*(float *)(iVar3 + 300) = *(float *)(iVar3 + 300) - local_10;
if (_DAT_004af3a4 <= *(float *)(iVar3 + 300)) {
if (*(float *)(iVar3 + 300) <= *(float *)(iVar3 + 0x128)) {
fVar1 = *(float *)(iVar3 + 300);
}
else {
fVar1 = *(float *)(iVar3 + 0x128);
}
}
else {
fVar1 = (float)_DAT_004af3a8;
}
*(float *)(iVar3 + 300) = fVar1;
if (*(float *)(iVar3 + 0x154) * *(float *)(param_1 + 0x13c) < local_18) {
local_18 = *(float *)(iVar3 + 0x154) * *(float *)(param_1 + 0x13c);
}
local_2c = -local_18;
if (_DAT_004af3a4 < local_2c) {
local_2c = _DAT_004af3a4;
}
*(float *)(iVar3 + 0x1c8) = local_2c + *(float *)(iVar3 + 0x1c8);
local_28 = local_2c;
}
}
FUN_004afb96(local_6c,2);
FUN_004a4ffb(local_60,2);
FUN_004afb0d(local_54,2);
FUN_004a4f72(local_48,2);
FUN_004afa84(local_3c,2);
}
return;
}
/* @004af3b0 file=? name=FUN_004af3b0 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __cdecl FUN_004af3b0(int param_1,float param_2)
{
float fVar1;
fVar1 = _DAT_004af404;
if ((_DAT_004af404 <= param_2) && (fVar1 = param_2, *(float *)(param_1 + 300) < param_2)) {
fVar1 = *(float *)(param_1 + 300);
}
*(float *)(param_1 + 300) = *(float *)(param_1 + 300) - fVar1;
return (float10)fVar1;
}
/* @004af408 file=? name=FUN_004af408 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
int * __cdecl
FUN_004af408(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5)
{
int iVar1;
FUN_004adda0(param_1,param_2,param_3,param_4,param_5,0,0);
*param_1 = (int)&PTR_FUN_0050ecd4;
FUN_0041b9ec(param_1 + 0x74,2);
param_1[0x8b] = 0x3f000000;
param_1[0x4a] = *(int *)(param_4 + 0xfc);
param_1[0x89] = *(int *)(param_4 + 0x100);
param_1[0x4b] = param_1[0x4a];
param_1[0x57] = 0;
FUN_0041bbd8((int)(param_1 + 0x74),0);
param_1[0x8a] = 0;
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) {
param_1[7] = (int)PTR_FUN_0050e6b4;
param_1[8] = DAT_0050e6b8;
param_1[9] = DAT_0050e6bc;
iVar1 = FUN_00417ab4((int)(param_1 + 0x59));
(**(code **)(*(int *)(iVar1 + 0x1d8) + 4))(iVar1 + 0x1d8,param_1);
param_1[0x4a] =
(int)(float)(_DAT_004af518 * (float10)*(int *)(iVar1 + 0x1d0) *
(float10)(float)param_1[0x4a]);
param_1[0x4b] = param_1[0x4a];
}
else {
param_1[10] = param_1[10] | 2;
}
return param_1;
}
/* @004af524 file=? name=FUN_004af524 */
void __cdecl FUN_004af524(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050ecd4;
FUN_0041baa4(param_1 + 0x74,2);
FUN_004adfd4(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004af564 file=? name=FUN_004af564 */
void __cdecl FUN_004af564(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50e650);
return;
}
/* @004af580 file=? name=FUN_004af580 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl
FUN_004af580(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
int iVar1;
undefined4 uVar2;
iVar1 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
if (iVar1 == 0) {
uVar2 = 0;
}
else {
param_4[0x24] = '\x04';
param_4[0x25] = '\x01';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x40;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
if (param_7 == 1) {
param_4[0xfc] = '\0';
param_4[0xfd] = '\0';
param_4[0xfe] = -0x80;
param_4[0xff] = -0x41;
param_4[0x100] = '\0';
param_4[0x101] = '\0';
param_4[0x102] = -0x80;
param_4[0x103] = -0x41;
}
iVar1 = FUN_00404118(param_5,param_3,s_CoolantCapacity_0050ebc2,(float *)(param_4 + 0xfc));
if ((iVar1 == 0) && (_DAT_004af694 == *(float *)(param_4 + 0xfc))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_CoolantCapacity__0050ebd2,(char *)0x0);
uVar2 = 0;
}
else {
iVar1 = FUN_00404118(param_5,param_3,s_CoolantSquirtMass_0050ebed,(float *)(param_4 + 0x100));
if ((iVar1 == 0) && (_DAT_004af694 == *(float *)(param_4 + 0x100))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_CoolantSquirtMass__0050ebff,(char *)0x0);
uVar2 = 0;
}
else {
uVar2 = 1;
}
}
}
return uVar2;
}
/* @004af9cf file=? name=FUN_004af9cf */
undefined4 * __cdecl FUN_004af9cf(undefined4 *param_1,undefined4 param_2)
{
FUN_004179d4(param_1,param_2);
*param_1 = &PTR_FUN_0050eccc;
return param_1;
}
/* @004af9ee file=? name=FUN_004af9ee */
void __cdecl FUN_004af9ee(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050eccc;
FUN_004179f8(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004afa1a file=? name=FUN_004afa1a */
undefined4 * __cdecl FUN_004afa1a(undefined4 *param_1,undefined4 param_2)
{
FUN_004179d4(param_1,param_2);
*param_1 = &PTR_FUN_0050ecc4;
return param_1;
}
/* @004afa39 file=? name=FUN_004afa39 */
void __cdecl FUN_004afa39(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050ecc4;
FUN_004179f8(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004afa65 file=? name=FUN_004afa65 */
undefined4 * __cdecl FUN_004afa65(undefined4 *param_1,undefined4 param_2)
{
FUN_00417be0(param_1,param_2);
*param_1 = &PTR_FUN_0050ecbc;
return param_1;
}
/* @004afa84 file=? name=FUN_004afa84 */
void __cdecl FUN_004afa84(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050ecbc;
FUN_00417c0c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004afab0 file=? name=FUN_004afab0 */
undefined4 * __cdecl FUN_004afab0(undefined4 *param_1,int param_2)
{
FUN_00417d00(param_1,param_2);
*param_1 = &PTR_FUN_0050ec6c;
return param_1;
}
/* @004afacf file=? name=FUN_004afacf */
undefined4 * __cdecl FUN_004afacf(undefined4 *param_1,int param_2)
{
FUN_00417d00(param_1,param_2);
*param_1 = &PTR_FUN_0050ec6c;
return param_1;
}
/* @004afaee file=? name=FUN_004afaee */
undefined4 * __cdecl FUN_004afaee(undefined4 *param_1,int param_2)
{
FUN_00417d28(param_1,param_2);
*param_1 = &PTR_FUN_0050ec6c;
return param_1;
}
/* @004afb0d file=? name=FUN_004afb0d */
void __cdecl FUN_004afb0d(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050ec6c;
FUN_00417d54(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004afb39 file=? name=FUN_004afb39 */
undefined4 * __cdecl FUN_004afb39(undefined4 *param_1,int param_2)
{
FUN_00417d00(param_1,param_2);
*param_1 = &PTR_FUN_0050ec1c;
return param_1;
}
/* @004afb58 file=? name=FUN_004afb58 */
undefined4 * __cdecl FUN_004afb58(undefined4 *param_1,int param_2)
{
FUN_00417d00(param_1,param_2);
*param_1 = &PTR_FUN_0050ec1c;
return param_1;
}
/* @004afb77 file=? name=FUN_004afb77 */
undefined4 * __cdecl FUN_004afb77(undefined4 *param_1,int param_2)
{
FUN_00417d28(param_1,param_2);
*param_1 = &PTR_FUN_0050ec1c;
return param_1;
}
/* @004afb96 file=? name=FUN_004afb96 */
void __cdecl FUN_004afb96(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050ec1c;
FUN_00417d54(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004afbc4 file=bt/mechmppr.cpp name=FUN_004afbc4 */
void FUN_004afbc4(void)
{
FUN_0040385c(s_Unhandled_button_mapping__0050f24a,s_d__tesla_bt_bt_MECHMPPR_CPP_0050f265,0x7a);
return;
}
/* @004afbe0 file=? name=FUN_004afbe0 */
void __cdecl FUN_004afbe0(int *param_1,int param_2)
{
int iVar1;
int iVar2;
if (0 < *(int *)(param_2 + 0xc)) {
param_1[100] = param_1[100] + 1;
if (2 < param_1[100]) {
param_1[100] = 0;
}
(**(code **)(*param_1 + 0x48))(param_1,param_1[100]);
iVar1 = *(int *)(param_1[0x34] + 0x438);
iVar2 = *(int *)(param_1[0x34] + 0x5b4);
if (param_1[100] == 0) {
*(undefined4 *)(iVar1 + 0x1f0) = 0;
*(undefined4 *)(iVar1 + 0x274) = 1;
*(undefined4 *)(iVar1 + 0x220) = *(undefined4 *)(iVar1 + 0x228);
*(undefined4 *)(iVar1 + 0x224) = *(undefined4 *)(iVar1 + 0x22c);
*(undefined4 *)(iVar2 + 0x2a0) = 1;
}
else if (param_1[100] - 1U < 2) {
*(undefined4 *)(iVar1 + 0x220) = *(undefined4 *)(iVar1 + 0x230);
*(undefined4 *)(iVar1 + 0x224) = *(undefined4 *)(iVar1 + 0x234);
}
}
return;
}
/* @004afcac file=? name=FUN_004afcac */
void __cdecl FUN_004afcac(int *param_1,int param_2)
{
if (0 < *(int *)(param_2 + 0xc)) {
param_1[0x65] = param_1[0x65] + 1;
if (2 < param_1[0x65]) {
param_1[0x65] = 0;
}
(**(code **)(*param_1 + 0x4c))(param_1,param_1[0x65]);
}
return;
}
/* @004afce8 file=? name=FUN_004afce8 */
void __cdecl FUN_004afce8(int param_1,int param_2)
{
if (0 < *(int *)(param_2 + 0xc)) {
FUN_004bff74(*(int *)(*(int *)(param_1 + 0xd0) + 400));
}
return;
}
/* @004afd10 file=? name=FUN_004afd10 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004afd10(int param_1)
{
float fVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
float10 fVar6;
undefined4 local_44;
undefined4 local_40;
int local_38 [3];
undefined4 local_2c;
undefined4 local_28;
undefined4 local_24;
undefined4 local_20;
float local_1c;
float local_18;
float local_14;
float local_10;
float local_c;
float local_8;
iVar2 = *(int *)(param_1 + 0xd0);
if (*(int *)(param_1 + 0x124) < 1) {
*(float *)(param_1 + 0x128) =
*(float *)(iVar2 + 0x34c) * *(float *)(param_1 + 0x11c) * *(float *)(iVar2 + 0x5c0);
}
else {
*(float *)(param_1 + 0x128) = -*(float *)(iVar2 + 0x34c) * *(float *)(param_1 + 0x11c);
}
local_8 = *(float *)(param_1 + 0x114) * *(float *)(param_1 + 0x114);
local_c = *(float *)(param_1 + 0x118) * *(float *)(param_1 + 0x118);
local_10 = *(float *)(param_1 + 0x120) * *(float *)(param_1 + 0x120) * *(float *)(param_1 + 0x120)
;
if (*(float *)(param_1 + 0x114) < _DAT_004b0274) {
local_8 = -local_8;
}
if (*(float *)(param_1 + 0x118) < _DAT_004b0274) {
local_c = -local_c;
}
*(undefined4 *)(param_1 + 300) = 0;
iVar5 = *(int *)(iVar2 + 0x438);
iVar3 = *(int *)(iVar2 + 0x5b4);
iVar4 = *(int *)(param_1 + 400);
if (iVar4 == 0) {
*(float *)(param_1 + 300) = local_8;
*(float *)(iVar5 + 500) = local_c;
*(undefined4 *)(iVar5 + 0x1f0) = 0;
*(undefined4 *)(iVar3 + 0x28c) = 0;
if (*(float *)(param_1 + 300) <= _DAT_004b0274) {
fVar1 = -*(float *)(param_1 + 300);
}
else {
fVar1 = *(float *)(param_1 + 300);
}
local_14 = (*(float *)(iVar2 + 0x34c) - *(float *)(iVar2 + 0x534)) * (_DAT_004b0278 - fVar1) +
*(float *)(iVar2 + 0x534);
if (*(float *)(param_1 + 300) <= _DAT_004b0274) {
local_18 = -*(float *)(param_1 + 300);
}
else {
local_18 = *(float *)(param_1 + 300);
}
fVar6 = FUN_004dcd00((double)local_18);
if ((float10)_DAT_004b027c < fVar6) {
if (-local_14 <= *(float *)(param_1 + 0x128)) {
fVar1 = local_14;
if (*(float *)(param_1 + 0x128) <= local_14) {
fVar1 = *(float *)(param_1 + 0x128);
}
}
else {
fVar1 = -local_14;
}
*(float *)(param_1 + 0x128) = fVar1;
}
}
else if (iVar4 == 1) {
if (*(int *)(iVar5 + 0x250) == 0) {
*(float *)(iVar3 + 0x28c) = local_8;
}
else {
*(float *)(iVar5 + 0x1f0) = local_8;
}
*(float *)(iVar5 + 500) = local_c;
if (local_10 == _DAT_004b0274) {
*(undefined4 *)(param_1 + 300) = 0;
}
else {
*(float *)(param_1 + 300) = local_10;
}
if (*(float *)(param_1 + 300) <= _DAT_004b0274) {
fVar1 = -*(float *)(param_1 + 300);
}
else {
fVar1 = *(float *)(param_1 + 300);
}
local_14 = (*(float *)(iVar2 + 0x34c) - *(float *)(iVar2 + 0x534)) * (_DAT_004b0278 - fVar1) +
*(float *)(iVar2 + 0x534);
if (*(float *)(param_1 + 300) <= _DAT_004b0274) {
local_1c = -*(float *)(param_1 + 300);
}
else {
local_1c = *(float *)(param_1 + 300);
}
fVar6 = FUN_004dcd00((double)local_1c);
if ((float10)_DAT_004b027c < fVar6) {
if (-local_14 <= *(float *)(param_1 + 0x128)) {
fVar1 = local_14;
if (*(float *)(param_1 + 0x128) <= local_14) {
fVar1 = *(float *)(param_1 + 0x128);
}
}
else {
fVar1 = -local_14;
}
*(float *)(param_1 + 0x128) = fVar1;
}
}
else if (iVar4 == 2) {
if (*(int *)(iVar5 + 0x250) == 0) {
*(float *)(iVar3 + 0x28c) = local_8;
}
else {
*(float *)(iVar5 + 0x1f0) = local_8;
}
*(float *)(iVar5 + 500) = local_c;
if (local_10 == _DAT_004b0274) {
*(undefined4 *)(param_1 + 300) = 0;
}
else {
*(float *)(param_1 + 300) = local_10;
}
}
*(undefined4 *)(param_1 + 0x19c) = *(undefined4 *)(param_1 + 0x198);
if (*(int *)(param_1 + 0x134) < 1) {
if (*(int *)(param_1 + 0x138) < 1) {
if (*(int *)(param_1 + 0x13c) < 1) {
if (*(int *)(param_1 + 0x140) < 1) {
*(undefined4 *)(param_1 + 0x198) = 0;
}
else {
*(undefined4 *)(param_1 + 0x198) = 4;
}
}
else {
*(undefined4 *)(param_1 + 0x198) = 3;
}
}
else {
*(undefined4 *)(param_1 + 0x198) = 2;
}
}
else {
*(undefined4 *)(param_1 + 0x198) = 1;
}
if (*(int *)(param_1 + 0x198) != *(int *)(param_1 + 0x19c)) {
FUN_004afacf(local_38,iVar2 + 0x7bc);
switch(*(undefined4 *)(param_1 + 0x198)) {
case 0:
FUN_00408e90(&local_44,&DAT_004e0f8c);
*(undefined4 *)(iVar2 + 0x378) = 1;
while (iVar5 = (**(code **)(local_38[0] + 0x28))(), iVar5 != 0) {
*(uint *)(iVar5 + 0x3e0) = (uint)(*(int *)(iVar5 + 0x334) == 0);
}
break;
case 1:
FUN_00408e90(&local_44,&DAT_004e0f8c);
local_40 = *(undefined4 *)(iVar2 + 0x564);
*(undefined4 *)(iVar2 + 0x378) = 0;
local_20 = local_40;
while (iVar5 = (**(code **)(local_38[0] + 0x28))(), iVar5 != 0) {
*(undefined4 *)(iVar5 + 0x3e0) = 0;
}
break;
case 2:
FUN_00408e90(&local_44,&DAT_004e0f8c);
local_40 = *(undefined4 *)(iVar2 + 0x568);
*(undefined4 *)(iVar2 + 0x378) = 0;
local_24 = local_40;
while (iVar5 = (**(code **)(local_38[0] + 0x28))(), iVar5 != 0) {
*(undefined4 *)(iVar5 + 0x3e0) = 0;
}
break;
case 3:
FUN_00408e90(&local_44,&DAT_004e0f8c);
local_40 = 0x40490fdb;
local_44 = *(undefined4 *)(iVar2 + 0x570);
*(undefined4 *)(iVar2 + 0x378) = *(undefined4 *)(iVar2 + 0x410);
local_28 = local_44;
while (iVar5 = (**(code **)(local_38[0] + 0x28))(), iVar5 != 0) {
*(undefined4 *)(iVar5 + 0x3e0) = *(undefined4 *)(iVar5 + 0x334);
}
break;
case 4:
FUN_00408e90(&local_44,&DAT_004e0f8c);
local_44 = *(undefined4 *)(iVar2 + 0x56c);
*(undefined4 *)(iVar2 + 0x378) = 0;
local_2c = local_44;
while (iVar5 = (**(code **)(local_38[0] + 0x28))(), iVar5 != 0) {
*(undefined4 *)(iVar5 + 0x3e0) = 0;
}
}
FUN_00408e90((undefined4 *)(iVar2 + 0x360),&local_44);
FUN_004afb0d(local_38,2);
}
return;
}
/* @004b0280 file=bt/mechmppr.cpp name=FUN_004b0280 */
void FUN_004b0280(void)
{
FUN_0040385c(s_EnterConfiguration_not_overridde_0050f36c,s_d__tesla_bt_bt_MECHMPPR_CPP_0050f390,
0x23d);
return;
}
/* @004b029c file=bt/mechmppr.cpp name=FUN_004b029c */
void FUN_004b029c(void)
{
FUN_0040385c(s_ExitConfiguration_not_overridden_0050f3ac,s_d__tesla_bt_bt_MECHMPPR_CPP_0050f3cf,
0x245);
return;
}
/* @004b02b8 file=bt/mechmppr.cpp name=FUN_004b02b8 */
void FUN_004b02b8(void)
{
FUN_0040385c(s_Unhandled_mapping__0050f3eb,s_d__tesla_bt_bt_MECHMPPR_CPP_0050f3ff,0x24f);
return;
}
/* @004b02d4 file=bt/mechmppr.cpp name=FUN_004b02d4 */
void FUN_004b02d4(void)
{
FUN_0040385c(s_Unhandled_mapping__0050f41b,s_d__tesla_bt_bt_MECHMPPR_CPP_0050f42f,0x25a);
return;
}
/* @004b02f0 file=? name=FUN_004b02f0 */
undefined4 * __cdecl
FUN_004b02f0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4,
undefined4 param_5,undefined4 param_6)
{
int *piVar1;
int iVar2;
param_4[3] = param_4[3] + 1;
FUN_004ac530(param_1,param_2,param_3,param_4,param_5,param_6,0,0);
*param_1 = &PTR_FUN_0050f45c;
param_1[7] = PTR_FUN_0050f120;
param_1[8] = DAT_0050f124;
param_1[9] = DAT_0050f128;
param_1[0x45] = 0;
param_1[0x46] = 0;
param_1[0x47] = 0;
param_1[0x48] = 0;
param_1[0x4a] = 0;
param_1[0x4b] = 0;
param_1[0x49] = 0;
param_1[0x4d] = 0;
param_1[0x4e] = 0;
param_1[0x4f] = 0;
param_1[0x50] = 0;
param_1[0x4c] = 0;
param_1[0x66] = 0;
param_1[0x51] = 0;
param_1[0x52] = 0;
param_1[0x53] = 0;
param_1[0x54] = 0;
param_1[0x55] = 0;
param_1[100] = 0;
param_1[0x65] = 0;
iVar2 = *(int *)(param_1[0x34] + 0x438);
*(undefined4 *)(iVar2 + 0x220) = *(undefined4 *)(iVar2 + 0x228);
*(undefined4 *)(iVar2 + 0x224) = *(undefined4 *)(iVar2 + 0x22c);
param_1[0x56] = 0;
param_1[0x61] = 0;
param_1[0x62] = 0;
param_1[0x57] = 0;
piVar1 = param_4 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(param_4,3);
}
return param_1;
}
/* @004b044c file=? name=FUN_004b044c */
void __cdecl FUN_004b044c(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050f45c;
if ((int *)param_1[0x62] != (int *)0x0) {
FUN_004022e8((int *)param_1[0x62]);
}
FUN_004ac868(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004b048c file=? name=FUN_004b048c */
void FUN_004b048c(void)
{
return;
}
/* @004b0494 file=? name=FUN_004b0494 */
void FUN_004b0494(void)
{
return;
}
/* @004b049c file=? name=FUN_004b049c */
void __cdecl FUN_004b049c(int param_1,int param_2)
{
int iVar1;
undefined4 uVar2;
if ((*(int *)(param_1 + 0x184) != 0) && (*(int *)(param_1 + 0x15c) != 0)) {
uVar2 = 0;
iVar1 = *(int *)(param_1 + 0x15c + param_2 * 4);
if (iVar1 != 0) {
uVar2 = *(undefined4 *)(iVar1 + 0x1fc);
}
*(undefined4 *)(*(int *)(param_1 + 0x15c) + 0x284) = uVar2;
}
return;
}
/* @004b04d8 file=? name=FUN_004b04d8 */
void __cdecl FUN_004b04d8(int param_1,int param_2)
{
int iVar1;
int iVar2;
int iVar3;
float local_28;
float local_24;
float local_20;
int *local_1c;
float local_18;
int local_14;
int local_10;
float local_c;
undefined4 local_8;
if ((*(int *)(param_1 + 0x184) != 0) && (*(int *)(param_1 + 0x15c) != 0)) {
local_8 = 0;
local_c = 0.0;
local_1c = (int *)(param_1 + 0x160);
local_10 = 0;
local_14 = 1;
for (iVar3 = 1; iVar3 < *(int *)(param_1 + 0x18c); iVar3 = iVar3 + 1) {
iVar1 = *(int *)(*local_1c + 0x1fc);
FUN_00408644(&local_28,(float *)(*local_1c + 0x100),
(float *)(*(int *)(param_1 + 0x15c) + 0x100));
local_18 = local_20 * local_20 + local_24 * local_24 + local_28 * local_28;
if (local_14 == 1) {
iVar2 = FUN_0049fb54(iVar1);
if ((iVar2 == 0) && (iVar1 != param_2)) {
local_14 = 0;
local_c = local_18;
local_10 = iVar3;
}
}
else {
iVar2 = FUN_0049fb54(iVar1);
if (((iVar2 == 0) && (iVar1 != param_2)) && (local_18 < local_c)) {
local_c = local_18;
local_10 = iVar3;
}
}
local_1c = local_1c + 1;
}
if (local_14 != 1) {
iVar3 = *(int *)(param_1 + 0x15c + local_10 * 4);
if (iVar3 != 0) {
local_8 = *(undefined4 *)(iVar3 + 0x1fc);
}
*(undefined4 *)(*(int *)(param_1 + 0x15c) + 0x284) = local_8;
}
}
return;
}
/* @004b0600 file=? name=FUN_004b0600 */
void __cdecl FUN_004b0600(int param_1)
{
int iVar1;
undefined4 uVar2;
undefined4 *puVar3;
int local_10 [3];
if (*(int *)(param_1 + 0x184) == 0) {
*(undefined4 *)(param_1 + 0x184) = 1;
iVar1 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_Players_0050f44b);
*(undefined4 *)(param_1 + 0x18c) = 0;
if (iVar1 != 0) {
FUN_00421414(local_10,iVar1 + 0x10);
while( true ) {
iVar1 = (**(code **)(local_10[0] + 0x28))(local_10);
if (iVar1 == 0) break;
if ((*(byte *)(iVar1 + 0x29) & 0x40) == 0) {
*(int *)(param_1 + 0x18c) = *(int *)(param_1 + 0x18c) + 1;
}
}
FUN_00421452(local_10,2);
}
uVar2 = FUN_004022b0(*(int *)(param_1 + 0x18c) << 2);
*(undefined4 *)(param_1 + 0x188) = uVar2;
puVar3 = (undefined4 *)(param_1 + 0x15c);
for (iVar1 = 0; iVar1 <= *(int *)(param_1 + 0x18c); iVar1 = iVar1 + 1) {
*puVar3 = 0;
puVar3 = puVar3 + 1;
}
FUN_004b06cc(param_1);
FUN_004b07f0(param_1);
}
return;
}
/* @004b06cc file=? name=FUN_004b06cc */
void __cdecl FUN_004b06cc(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
int local_18 [3];
int *local_c;
int local_8;
local_8 = 1;
for (iVar1 = 0; iVar1 < *(int *)(param_1 + 0x18c); iVar1 = iVar1 + 1) {
*(undefined4 *)(*(int *)(param_1 + 0x188) + iVar1 * 4) = 0xffffffff;
}
if ((*(int *)(DAT_004efc94 + 0x6c) != 0) &&
(iVar1 = *(int *)(*(int *)(DAT_004efc94 + 0x6c) + 400), iVar1 != 0)) {
*(int *)(param_1 + 0x15c) = iVar1;
**(undefined4 **)(param_1 + 0x188) = *(undefined4 *)(iVar1 + 0x1e0);
iVar2 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_Players_0050f453);
if (iVar2 != 0) {
FUN_00421414(local_18,iVar2 + 0x10);
iVar2 = *(int *)(param_1 + 0x158) * *(int *)(param_1 + 0x18c);
while ((0 < iVar2 && (iVar3 = (**(code **)(local_18[0] + 0x28))(local_18), iVar3 != 0))) {
iVar2 = iVar2 + 1;
}
local_c = (int *)(param_1 + 0x15c + local_8 * 4);
do {
do {
iVar2 = (**(code **)(local_18[0] + 0x28))(local_18);
if (iVar2 == 0) goto LAB_004b07d9;
} while (((*(byte *)(iVar2 + 0x29) & 0x40) != 0) || (iVar1 == iVar2));
*local_c = iVar2;
*(undefined4 *)(*(int *)(param_1 + 0x188) + local_8 * 4) = *(undefined4 *)(iVar2 + 0x1e0);
local_c = local_c + 1;
local_8 = local_8 + 1;
} while (local_8 < *(int *)(param_1 + 0x18c));
LAB_004b07d9:
FUN_00421452(local_18,2);
}
}
return;
}
/* @004b07f0 file=? name=FUN_004b07f0 */
void __cdecl FUN_004b07f0(int param_1)
{
int *piVar1;
int iVar2;
int unaff_ESI;
int iVar3;
undefined4 local_8;
local_8 = 0;
if (*(int *)(param_1 + 0x18c) != 1) {
if (*(int *)(param_1 + 0x18c) == **(int **)(param_1 + 0x188)) {
iVar2 = 1;
piVar1 = *(int **)(param_1 + 0x188);
while ((piVar1 = piVar1 + 1, iVar3 = unaff_ESI, iVar2 < *(int *)(param_1 + 0x18c) &&
(iVar3 = iVar2, *piVar1 != 1))) {
iVar2 = iVar2 + 1;
}
}
else {
iVar2 = 1;
piVar1 = *(int **)(param_1 + 0x188);
while ((piVar1 = piVar1 + 1, iVar3 = unaff_ESI, iVar2 < *(int *)(param_1 + 0x18c) &&
(iVar3 = iVar2, **(int **)(param_1 + 0x188) + 1 != *piVar1))) {
iVar2 = iVar2 + 1;
}
}
iVar2 = *(int *)(param_1 + 0x15c + iVar3 * 4);
if (iVar2 != 0) {
local_8 = *(undefined4 *)(iVar2 + 0x1fc);
}
*(undefined4 *)(*(int *)(param_1 + 0x15c) + 0x284) = local_8;
}
return;
}
/* @004b0898 file=? name=FUN_004b0898 */
undefined4 __cdecl FUN_004b0898(int param_1,int param_2)
{
if (*(int *)(param_1 + 0x18c) <= param_2) {
return 0;
}
if (param_2 < 0) {
return 0;
}
return *(undefined4 *)(param_1 + 0x15c + param_2 * 4);
}
/* @004b08c0 file=? name=FUN_004b08c0 */
void __cdecl FUN_004b08c0(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50ee10);
return;
}
/* @004b099c file=? name=FUN_004b099c */
void __cdecl FUN_004b099c(int param_1,int param_2)
{
bool bVar1;
undefined3 extraout_var;
int iVar2;
bVar1 = FUN_004ac9c8(param_1);
if ((CONCAT31(extraout_var,bVar1) == 0) && (0 < *(int *)(param_2 + 0xc))) {
iVar2 = FUN_004b0b18(param_1,1);
FUN_004b0dd8(param_1,iVar2);
FUN_0041bbd8(param_1 + 0x2b8,1);
}
return;
}
/* @004b09e4 file=? name=FUN_004b09e4 */
void __cdecl FUN_004b09e4(int param_1,int param_2)
{
bool bVar1;
undefined3 extraout_var;
int iVar2;
bVar1 = FUN_004ac9c8(param_1);
if ((CONCAT31(extraout_var,bVar1) == 0) && (0 < *(int *)(param_2 + 0xc))) {
iVar2 = FUN_004b0b18(param_1,2);
FUN_004b0dd8(param_1,iVar2);
FUN_0041bbd8(param_1 + 0x2b8,1);
}
return;
}
/* @004b0a2c file=? name=FUN_004b0a2c */
void __cdecl FUN_004b0a2c(int param_1,int param_2)
{
bool bVar1;
undefined3 extraout_var;
int iVar2;
bVar1 = FUN_004ac9c8(param_1);
if ((CONCAT31(extraout_var,bVar1) == 0) && (0 < *(int *)(param_2 + 0xc))) {
iVar2 = FUN_004b0b18(param_1,3);
FUN_004b0dd8(param_1,iVar2);
FUN_0041bbd8(param_1 + 0x2b8,1);
}
return;
}
/* @004b0a74 file=? name=FUN_004b0a74 */
void __cdecl FUN_004b0a74(int param_1,int param_2)
{
bool bVar1;
undefined3 extraout_var;
int iVar2;
bVar1 = FUN_004ac9c8(param_1);
if ((CONCAT31(extraout_var,bVar1) == 0) && (0 < *(int *)(param_2 + 0xc))) {
iVar2 = FUN_004b0b18(param_1,4);
FUN_004b0dd8(param_1,iVar2);
FUN_0041bbd8(param_1 + 0x2b8,1);
}
return;
}
/* @004b0abc file=? name=FUN_004b0abc */
void __cdecl FUN_004b0abc(int param_1,int param_2)
{
bool bVar1;
undefined3 extraout_var;
bVar1 = FUN_004ac9c8(param_1);
if ((CONCAT31(extraout_var,bVar1) == 0) && (0 < *(int *)(param_2 + 0xc))) {
if (*(uint *)(param_1 + 0x2cc) < 2) {
FUN_0041bbd8(param_1 + 0x2b8,2);
return;
}
if (*(uint *)(param_1 + 0x2cc) != 2) {
return;
}
FUN_004b0e30(param_1);
FUN_0041bbd8(param_1 + 0x2b8,0);
}
return;
}
/* @004b0b18 file=? name=FUN_004b0b18 */
int __cdecl FUN_004b0b18(int param_1,int param_2)
{
int iVar1;
int iVar2;
int *piVar3;
iVar2 = 0;
piVar3 = *(int **)(*(int *)(param_1 + 0xd0) + 0x128);
while( true ) {
if (*(int *)(*(int *)(param_1 + 0xd0) + 0x124) <= iVar2) {
return 0;
}
iVar1 = *piVar3;
if ((*(int *)(iVar1 + 4) == 0xbc1) && (param_2 == *(int *)(iVar1 + 0x1e0))) break;
iVar2 = iVar2 + 1;
piVar3 = piVar3 + 1;
}
return iVar1;
}
/* @004b0b5c file=? name=FUN_004b0b5c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl FUN_004b0b5c(int param_1,int param_2)
{
float10 fVar1;
if (param_2 == 0) {
param_2 = FUN_00417ab4(param_1 + 0x1d0);
}
if (((param_2 != 0) && (*(int *)(param_2 + 0x210) == 2)) &&
(fVar1 = FUN_004dcd00((double)(*(float *)(param_2 + 0x1dc) - _DAT_004b0bcc)),
(float10)_DAT_004b0bcc < fVar1)) {
return 1;
}
return 0;
}
/* @004b0bd0 file=? name=FUN_004b0bd0 */
void __cdecl FUN_004b0bd0(int *param_1,float param_2)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
FUN_004ad924(param_1,param_2);
iVar1 = FUN_00417ab4((int)(param_1 + 0x74));
if (iVar1 == 0) {
FUN_0041bbd8((int)(param_1 + 0x99),1);
}
else {
if (*(int *)(iVar1 + 0x210) == 3) {
FUN_0041bbd8((int)(param_1 + 0x99),2);
}
if ((*(int *)(iVar1 + 0x210) == 1) || (*(int *)(iVar1 + 0x210) == 4)) {
FUN_0041bbd8((int)(param_1 + 0x99),3);
}
}
iVar4 = param_1[0x9e];
if (iVar4 == 0) {
param_1[0xc6] = (int)(param_2 + (float)param_1[0xc6]);
if ((float)param_1[0xc5] <= (float)param_1[0xc6]) {
FUN_0041bbd8((int)(param_1 + 0x99),4);
}
}
else if (iVar4 == 1) {
if (iVar1 != 0) {
FUN_0041bbd8((int)(param_1 + 0x99),0);
param_1[0xc6] = 0;
}
}
else if (((iVar4 - 2U < 2) && (iVar1 != 0)) && (*(int *)(iVar1 + 0x210) == 2)) {
FUN_0041bbd8((int)(param_1 + 0x99),0);
param_1[0xc6] = 0;
}
iVar1 = param_1[0xb3];
if (((iVar1 != 0) && (iVar1 != 1)) &&
((iVar1 == 2 && (iVar1 = (**(code **)(*param_1 + 0x40))(param_1,0), iVar1 == 0)))) {
iVar1 = param_1[0x34];
iVar4 = 0;
while ((iVar4 < *(int *)(iVar1 + 0x124) &&
(((iVar3 = *(int *)(*(int *)(iVar1 + 0x128) + iVar4 * 4), *(int *)(iVar3 + 4) != 0xbc1 ||
(iVar2 = (**(code **)(*param_1 + 0x40))(param_1,iVar3), iVar2 == 0)) ||
(iVar3 = FUN_004b0dd8((int)param_1,iVar3), iVar3 == -1))))) {
iVar4 = iVar4 + 1;
}
}
return;
}
/* @004b0d50 file=? name=FUN_004b0d50 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __cdecl FUN_004b0d50(int param_1)
{
float fVar1;
int iVar2;
iVar2 = FUN_00417ab4(param_1 + 0x1d0);
fVar1 = *(float *)(iVar2 + 0x114) - *(float *)(iVar2 + 0x13c);
if (fVar1 < _DAT_004b0dd0) {
fVar1 = _DAT_004b0dd0;
}
fVar1 = (*(float *)(param_1 + 0x30c) * fVar1 + _DAT_004b0dd4) * *(float *)(param_1 + 0x310);
if (fVar1 < *(float *)(param_1 + 0x310)) {
fVar1 = *(float *)(param_1 + 0x310);
}
return (float10)fVar1;
}
/* @004b0dd8 file=? name=FUN_004b0dd8 */
int __cdecl FUN_004b0dd8(int param_1,int param_2)
{
int iVar1;
if (*(int *)(param_2 + 0x1e8) < *(int *)(param_2 + 0x1e4)) {
*(int *)(param_2 + 0x1e8) = *(int *)(param_2 + 0x1e8) + 1;
iVar1 = *(int *)(param_2 + 0x1e8);
}
else {
iVar1 = -1;
}
if (-1 < iVar1) {
FUN_004b0e30(param_1);
(**(code **)(*(int *)(param_1 + 0x1d0) + 4))(param_1 + 0x1d0,param_2);
}
return iVar1;
}
/* @004b0e30 file=? name=FUN_004b0e30 */
void __cdecl FUN_004b0e30(int param_1)
{
int iVar1;
iVar1 = FUN_00417ab4(param_1 + 0x1d0);
if (iVar1 != 0) {
*(int *)(iVar1 + 0x1e8) = *(int *)(iVar1 + 0x1e8) + -1;
FUN_00417a5c(param_1 + 0x1d0);
}
FUN_0041bbd8(param_1 + 0x264,1);
return;
}
/* @004b0e6c file=? name=FUN_004b0e6c */
void __cdecl FUN_004b0e6c(int *param_1,int param_2)
{
int iVar1;
FUN_004ad760(param_1);
if (param_2 == 0) {
iVar1 = FUN_00417ab4((int)(param_1 + 0x74));
if (iVar1 != 0) {
FUN_0041bbd8((int)(param_1 + 0x99),0);
param_1[0xc6] = 0;
}
}
else {
iVar1 = FUN_00417ab4((int)(param_1 + 0x74));
if (iVar1 != 0) {
iVar1 = FUN_00417ab4((int)(param_1 + 0x74));
if (*(int *)(iVar1 + 0x210) == 2) {
FUN_0041bbd8((int)(param_1 + 0x99),4);
param_1[0xc6] = param_1[0xc5];
}
}
}
return;
}
/* @004b0efc file=? name=FUN_004b0efc */
void __cdecl FUN_004b0efc(int *param_1,int *param_2)
{
int iVar1;
bool bVar2;
undefined3 extraout_var;
FUN_004ad748(param_1,param_2);
iVar1 = *(int *)(param_1[0x34] + 400);
bVar2 = FUN_004ac9c8((int)param_1);
if (((CONCAT31(extraout_var,bVar2) == 0) && (*(int *)(iVar1 + 0x25c) != 0)) && (*param_2 == 4)) {
FUN_004b11bc((int)param_1);
}
return;
}
/* @004b0f48 file=? name=FUN_004b0f48 */
uint __cdecl FUN_004b0f48(int *param_1)
{
uint uVar1;
int iVar2;
uVar1 = FUN_004add30((int)param_1);
iVar2 = (**(code **)(*param_1 + 0x40))(param_1,0);
if (iVar2 == 0) {
uVar1 = uVar1 | 0x40;
}
return uVar1;
}
/* @004b0f74 file=bt/powersub.cpp name=FUN_004b0f74 */
int * __cdecl
FUN_004b0f74(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5,
int param_6,int param_7)
{
char cVar1;
uint uVar2;
uint uVar3;
int *piVar4;
char *pcVar5;
char *pcVar6;
int *piVar7;
int local_8;
FUN_004adda0(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
*param_1 = (int)&PTR_FUN_0050f9d8;
FUN_004b1bb1(param_1 + 0x74,0);
FUN_0041b9ec(param_1 + 0x99,5);
FUN_0041b9ec(param_1 + 0xae,3);
local_8 = 0;
if (*(int *)(param_4 + 0xfc) < *(int *)(param_2 + 0x124)) {
local_8 = *(int *)(*(int *)(param_2 + 0x128) + *(int *)(param_4 + 0xfc) * 4);
}
else {
FUN_0040385c(s_Bad_voltageSourceIndex_to_connec_0050f700,s_d__tesla_bt_bt_POWERSUB_CPP_0050f72d,
0x264);
}
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) {
param_1[7] = (int)PTR_FUN_0050f5b0;
param_1[8] = DAT_0050f5b4;
param_1[9] = DAT_0050f5b8;
if (local_8 == 0) {
FUN_0040385c(s_Master_PoweredSubsystem_is_missi_0050f749,
s_d__tesla_bt_bt_POWERSUB_CPP_0050f780,0x272);
}
else {
FUN_004b0dd8((int)param_1,local_8);
}
}
else if (((*(uint *)(param_2 + 0x28) & 0xc) == 4) && (local_8 != 0)) {
FUN_004b0dd8((int)param_1,local_8);
}
param_1[0xc3] = *(int *)(param_4 + 0x100);
param_1[0xc5] = *(int *)(param_4 + 0x18c);
param_1[0xc6] = param_1[0xc5];
FUN_0041bbd8((int)(param_1 + 0x99),4);
FUN_0041bbd8((int)(param_1 + 0xae),1);
param_1[0xc4] = 0x3f800000;
param_1[0x77] = *(int *)(param_4 + 0x104);
param_1[0x78] = *(int *)(param_4 + 0x108);
uVar2 = 0xffffffff;
pcVar5 = param_4 + 0x10c;
do {
pcVar6 = pcVar5;
if (uVar2 == 0) break;
uVar2 = uVar2 - 1;
pcVar6 = pcVar5 + 1;
cVar1 = *pcVar5;
pcVar5 = pcVar6;
} while (cVar1 != '\0');
uVar2 = ~uVar2;
piVar4 = (int *)(pcVar6 + -uVar2);
piVar7 = param_1 + 0x79;
for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) {
*piVar7 = *piVar4;
piVar4 = piVar4 + 1;
piVar7 = piVar7 + 1;
}
for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) {
*(char *)piVar7 = (char)*piVar4;
piVar4 = (int *)((int)piVar4 + 1);
piVar7 = (int *)((int)piVar7 + 1);
}
uVar2 = 0xffffffff;
pcVar5 = param_4 + 0x14c;
do {
pcVar6 = pcVar5;
if (uVar2 == 0) break;
uVar2 = uVar2 - 1;
pcVar6 = pcVar5 + 1;
cVar1 = *pcVar5;
pcVar5 = pcVar6;
} while (cVar1 != '\0');
uVar2 = ~uVar2;
piVar4 = (int *)(pcVar6 + -uVar2);
piVar7 = param_1 + 0x89;
for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) {
*piVar7 = *piVar4;
piVar4 = piVar4 + 1;
piVar7 = piVar7 + 1;
}
for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) {
*(char *)piVar7 = (char)*piVar4;
piVar4 = (int *)((int)piVar4 + 1);
piVar7 = (int *)((int)piVar7 + 1);
}
return param_1;
}
/* @004b115c file=? name=FUN_004b115c */
void __cdecl FUN_004b115c(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050f9d8;
FUN_0041baa4(param_1 + 0xae,2);
FUN_0041baa4(param_1 + 0x99,2);
FUN_004b1bd0(param_1 + 0x74,2);
FUN_004adfd4(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004b11bc file=? name=FUN_004b11bc */
void __cdecl FUN_004b11bc(int param_1)
{
bool bVar1;
undefined3 extraout_var;
int iVar2;
undefined3 extraout_var_00;
bVar1 = FUN_004ac9c8(param_1);
if (CONCAT31(extraout_var,bVar1) == 0) {
iVar2 = FUN_00417ab4(param_1 + 0x1d0);
if (iVar2 != 0) {
bVar1 = FUN_004ac9c8(iVar2);
if (CONCAT31(extraout_var_00,bVar1) == 0) {
FUN_0041bbd8(iVar2 + 0x1fc,3);
*(undefined4 *)(iVar2 + 0x1f8) = 0;
}
}
}
return;
}
/* @004b1208 file=? name=FUN_004b1208 */
void __cdecl FUN_004b1208(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50f4bc);
return;
}
/* @004b1224 file=? name=FUN_004b1224 */
void __cdecl FUN_004b1224(int param_1)
{
FUN_004ae050(param_1);
switch(*(undefined4 *)(param_1 + 0x278)) {
case 0:
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___Starting_0050f79c,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
case 1:
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___NoVoltage_0050f7a8,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
case 2:
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___Shorted_0050f7b5,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
case 3:
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___GeneratorOff_0050f7c0,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
case 4:
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___Ready_0050f7d0,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
default:
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_Unknown_Electrical_State__0050f7d9,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
}
}
/* @004b13ac file=? name=FUN_004b13ac */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl
FUN_004b13ac(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
char *pcVar1;
char cVar2;
int iVar3;
undefined4 uVar4;
undefined3 extraout_var;
undefined3 extraout_var_00;
uint uVar5;
uint uVar6;
char *pcVar7;
char *pcVar8;
bool bVar9;
char *local_c;
char *local_8;
iVar3 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
if (iVar3 == 0) {
uVar4 = 0;
}
else {
param_4[0x24] = -0x70;
param_4[0x25] = '\x01';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x3e;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
if (param_7 == 1) {
param_4[0xfc] = -1;
param_4[0xfd] = -1;
param_4[0xfe] = -1;
param_4[0xff] = -1;
param_4[0x100] = '\0';
param_4[0x101] = '\0';
param_4[0x102] = -0x80;
param_4[0x103] = -0x41;
param_4[0x104] = -1;
param_4[0x105] = -1;
param_4[0x106] = -1;
param_4[0x107] = -1;
param_4[0x108] = -1;
param_4[0x109] = -1;
param_4[0x10a] = -1;
param_4[0x10b] = -1;
param_4[0x18c] = '\0';
param_4[0x18d] = '\0';
param_4[0x18e] = -0x80;
param_4[399] = -0x41;
iVar3 = 0;
pcVar7 = param_4 + 0x10c;
do {
*pcVar7 = '\0';
iVar3 = iVar3 + 1;
pcVar7 = pcVar7 + 1;
} while (iVar3 < 0x40);
iVar3 = 0;
pcVar7 = param_4 + 0x14c;
do {
*pcVar7 = '\0';
iVar3 = iVar3 + 1;
pcVar7 = pcVar7 + 1;
} while (iVar3 < 0x40);
}
local_8 = s_Unspecified_0050f7f4;
iVar3 = FUN_00404088(param_5,param_3,s_VoltageSource_0050f800,&local_8);
if ((iVar3 == 0) && (*(int *)(param_4 + 0xfc) == -1)) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_VoltageSource__0050f80e,(char *)0x0);
uVar4 = 0;
}
else {
pcVar8 = s_Unspecified_0050f827;
pcVar7 = local_8;
do {
bVar9 = *pcVar7 == *pcVar8;
if (!bVar9) break;
if (*pcVar7 == '\0') goto LAB_004b14db;
pcVar1 = pcVar7 + 1;
bVar9 = *pcVar1 == pcVar8[1];
if (!bVar9) break;
pcVar7 = pcVar7 + 2;
pcVar8 = pcVar8 + 2;
bVar9 = *pcVar1 == '\0';
} while (!bVar9);
if (!bVar9) {
iVar3 = FUN_004215b0(param_5,local_8);
*(int *)(param_4 + 0xfc) = iVar3;
}
LAB_004b14db:
if (*(int *)(param_4 + 0xfc) < 0) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_has_an_invalid_voltage_source__0050f833,(char *)0x0);
uVar4 = 0;
}
else {
pcVar8 = s_Unspecified_0050f854;
pcVar7 = local_8;
do {
bVar9 = *pcVar7 == *pcVar8;
if (!bVar9) break;
if (*pcVar7 == '\0') goto LAB_004b153f;
pcVar1 = pcVar7 + 1;
bVar9 = *pcVar1 == pcVar8[1];
if (!bVar9) break;
pcVar7 = pcVar7 + 2;
pcVar8 = pcVar8 + 2;
bVar9 = *pcVar1 == '\0';
} while (!bVar9);
if (!bVar9) {
*(int *)(param_4 + 0xfc) = *(int *)(param_4 + 0xfc) + 2;
}
LAB_004b153f:
iVar3 = FUN_00404118(param_5,param_3,s_ThermalResistivityCoefficient_0050f860,
(float *)(param_4 + 0x100));
if ((iVar3 == 0) && (_DAT_004b177c == *(float *)(param_4 + 0x100))) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_ThermalResistivityCoeffi_0050f87e,(char *)0x0);
uVar4 = 0;
}
else {
bVar9 = FUN_004040d8(param_5,param_3,s_AuxScreenPlacement_0050f8a7,
(int *)(param_4 + 0x108));
if ((CONCAT31(extraout_var,bVar9) == 0) && (*(int *)(param_4 + 0x108) == -1)) {
param_4[0x108] = -1;
param_4[0x109] = -1;
param_4[0x10a] = -1;
param_4[0x10b] = -1;
}
bVar9 = FUN_004040d8(param_5,param_3,s_AuxScreenNumber_0050f8ba,(int *)(param_4 + 0x104));
if ((CONCAT31(extraout_var_00,bVar9) == 0) && (*(int *)(param_4 + 0x104) == -1)) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_AuxScreenNumber__0050f8ca,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404088(param_5,param_3,s_AuxScreenLabel_0050f8e5,&local_c);
if (iVar3 == 0) {
if (param_4[0x10c] == '\0') {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_AuxScreenLabel__0050f8f4,(char *)0x0);
return 0;
}
}
else {
uVar5 = 0xffffffff;
pcVar7 = local_c;
do {
pcVar8 = pcVar7;
if (uVar5 == 0) break;
uVar5 = uVar5 - 1;
pcVar8 = pcVar7 + 1;
cVar2 = *pcVar7;
pcVar7 = pcVar8;
} while (cVar2 != '\0');
uVar5 = ~uVar5;
pcVar7 = pcVar8 + -uVar5;
pcVar8 = param_4 + 0x10c;
for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
*(undefined4 *)pcVar8 = *(undefined4 *)pcVar7;
pcVar7 = pcVar7 + 4;
pcVar8 = pcVar8 + 4;
}
for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) {
*pcVar8 = *pcVar7;
pcVar7 = pcVar7 + 1;
pcVar8 = pcVar8 + 1;
}
param_4[0x14b] = '\0';
}
iVar3 = FUN_00404088(param_5,param_3,s_EngScreenLabel_0050f90e,&local_c);
if (iVar3 == 0) {
if (param_4[0x14c] == '\0') {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_EngScreenLabel__0050f91d,(char *)0x0);
return 0;
}
}
else {
uVar5 = 0xffffffff;
do {
pcVar7 = local_c;
if (uVar5 == 0) break;
uVar5 = uVar5 - 1;
pcVar7 = local_c + 1;
cVar2 = *local_c;
local_c = pcVar7;
} while (cVar2 != '\0');
uVar5 = ~uVar5;
pcVar7 = pcVar7 + -uVar5;
pcVar8 = param_4 + 0x14c;
for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
*(undefined4 *)pcVar8 = *(undefined4 *)pcVar7;
pcVar7 = pcVar7 + 4;
pcVar8 = pcVar8 + 4;
}
for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) {
*pcVar8 = *pcVar7;
pcVar7 = pcVar7 + 1;
pcVar8 = pcVar8 + 1;
}
param_4[0x18b] = '\0';
}
iVar3 = FUN_00404118(param_5,param_3,s_StartTime_0050f937,(float *)(param_4 + 0x18c));
if ((iVar3 == 0) && (_DAT_004b177c == *(float *)(param_4 + 0x18c))) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_StartTime__0050f941,(char *)0x0);
uVar4 = 0;
}
else {
uVar4 = 1;
}
}
}
}
}
}
return uVar4;
}
/* @004b1780 file=? name=FUN_004b1780 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __cdecl FUN_004b1780(undefined4 param_1,float param_2)
{
return _DAT_004b1790 * (float10)param_2;
}
/* @004b179c file=? name=FUN_004b179c */
void __cdecl FUN_004b179c(int *param_1,int *param_2)
{
bool bVar1;
int iVar2;
undefined3 extraout_var;
if (*param_2 == 4) {
iVar2 = FUN_00417ab4((int)(param_1 + 0x45));
iVar2 = FUN_00417ab4(iVar2 + 0x1d0);
if (iVar2 != 0) {
bVar1 = FUN_004ac9c8(iVar2);
if (CONCAT31(extraout_var,bVar1) == 0) {
FUN_0041bbd8(iVar2 + 0x1fc,3);
*(undefined4 *)(iVar2 + 0x1f8) = 0;
}
}
}
FUN_004aea84(param_1,param_2);
return;
}
/* @004b1804 file=? name=FUN_004b1804 */
void __cdecl FUN_004b1804(int *param_1)
{
FUN_004aea9c(param_1);
return;
}
/* @004b181c file=? name=FUN_004b181c */
void __cdecl FUN_004b181c(int param_1)
{
int iVar1;
int iVar2;
FUN_004aeac4(param_1);
iVar1 = FUN_00417ab4(param_1 + 0x114);
iVar2 = FUN_00417ab4(iVar1 + 0x1d0);
FUN_0041bbd8(param_1 + 0x184,*(int *)(iVar1 + 0x278));
if (((*(int *)(iVar1 + 0x278) == 4) && (iVar2 != 0)) &&
(*(float *)(iVar2 + 0x1dc) <= *(float *)(param_1 + 0x180) * *(float *)(iVar2 + 0x1d8))) {
FUN_0041bbd8(param_1 + 0x184,1);
}
return;
}
/* @004b18a4 file=? name=FUN_004b18a4 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
int * __cdecl
FUN_004b18a4(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5)
{
FUN_004aeb40(param_1,param_2,param_3,param_4,param_5);
*param_1 = (int)&PTR_FUN_0050f99c;
param_1[0x60] = (int)(float)(_DAT_004b1924 * (float10)*(float *)(param_4 + 0xf0));
FUN_0041b9ec(param_1 + 0x61,5);
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) {
param_1[7] = (int)PTR_FUN_0050f5fc;
param_1[8] = DAT_0050f600;
param_1[9] = DAT_0050f604;
}
return param_1;
}
/* @004b1930 file=? name=FUN_004b1930 */
void __cdecl FUN_004b1930(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050f99c;
FUN_0041baa4(param_1 + 0x61,2);
FUN_004aebe8(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004b1970 file=? name=FUN_004b1970 */
void __cdecl FUN_004b1970(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50f5cc);
return;
}
/* @004b198c file=? name=FUN_004b198c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl
FUN_004b198c(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
int iVar1;
undefined4 uVar2;
iVar1 = FUN_004aec54(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
if (iVar1 == 0) {
uVar2 = 0;
}
else {
param_4[0x24] = -0xc;
param_4[0x25] = '\0';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x2b;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
if (param_7 == 1) {
param_4[0xf0] = '\0';
param_4[0xf1] = '\0';
param_4[0xf2] = -0x80;
param_4[0xf3] = -0x41;
}
iVar1 = FUN_00404118(param_5,param_3,s_MinVoltagePercent_0050f963,(float *)(param_4 + 0xf0));
if ((iVar1 == 0) && (_DAT_004b1a3c == *(float *)(param_4 + 0xf0))) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_MinVoltagePercent__0050f975,(char *)0x0);
uVar2 = 0;
}
else {
uVar2 = 1;
}
}
return uVar2;
}
/* @004b1a40 file=? name=FUN_004b1a40 */
void __cdecl FUN_004b1a40(int param_1)
{
uint uVar1;
uVar1 = *(uint *)(*(int *)(param_1 + 0xd0) + 0x28);
if (((uVar1 & 0xc) == 0) && ((uVar1 & 0x100) != 0)) {
(**(code **)(*(int *)(param_1 + 0x114) + 4))
(param_1 + 0x114,
*(undefined4 *)
(*(int *)(*(int *)(param_1 + 0xd0) + 0x128) + *(int *)(param_1 + 0x128) * 4));
}
return;
}
/* @004b1bb1 file=? name=FUN_004b1bb1 */
undefined4 * __cdecl FUN_004b1bb1(undefined4 *param_1,undefined4 param_2)
{
FUN_004179d4(param_1,param_2);
*param_1 = &PTR_FUN_0050f994;
return param_1;
}
/* @004b1bd0 file=? name=FUN_004b1bd0 */
void __cdecl FUN_004b1bd0(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050f994;
FUN_004179f8(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004b1bfc file=? name=FUN_004b1bfc */
void __cdecl FUN_004b1bfc(int *param_1,int *param_2)
{
FUN_004b0efc(param_1,param_2);
return;
}
/* @004b1c18 file=? name=FUN_004b1c18 */
void __cdecl FUN_004b1c18(int *param_1,int param_2)
{
if (param_2 != 0) {
param_1[199] = 0x3f800000;
param_1[200] = 0;
param_1[0xc9] = 0;
}
FUN_004b0e6c(param_1,param_2);
return;
}
/* @004b1c4c file=? name=FUN_004b1c4c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004b1c4c(int *param_1,float param_2)
{
int iVar1;
FUN_004b0bd0(param_1,param_2);
param_1[199] = (int)(_DAT_004b1d10 - *(float *)(param_1[0x38] + 0x158));
if (param_1[0x10] == 1) {
param_1[199] = 0;
param_1[200] = 0;
}
else {
param_1[200] = 1;
}
if (param_1[0x9e] == 4) {
param_1[0xc9] = 0;
}
else {
param_1[0xc9] = 1;
param_1[199] = 0;
}
iVar1 = param_1[0x61];
if (iVar1 == 0) {
param_1[200] = 1;
}
else {
if (iVar1 == 1) {
param_1[199] = (int)((float)param_1[199] * _DAT_004b1d14);
param_1[200] = 1;
return;
}
if (iVar1 == 2) {
param_1[199] = 0;
param_1[200] = 0;
return;
}
}
return;
}
/* @004b1d18 file=? name=FUN_004b1d18 */
int * __cdecl FUN_004b1d18(int *param_1,int param_2,undefined4 param_3,char *param_4)
{
FUN_004b0f74(param_1,param_2,param_3,param_4,&DAT_0050fa1c,0,0);
*param_1 = (int)&PTR_FUN_0050fb0c;
param_1[199] = 0x3f800000;
param_1[200] = 0;
param_1[0xc9] = 0;
param_1[10] = param_1[10] | 8;
if ((*(uint *)(param_2 + 0x28) & 0xc) != 4) {
param_1[7] = (int)PTR_FUN_0050fa94;
param_1[8] = DAT_0050fa98;
param_1[9] = DAT_0050fa9c;
}
return param_1;
}
/* @004b1d90 file=? name=FUN_004b1d90 */
void __cdecl FUN_004b1d90(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050fb0c;
*(undefined4 *)(param_1[0x34] + 0x374) = 0;
FUN_004b115c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004b1dcc file=? name=FUN_004b1dcc */
bool __cdecl
FUN_004b1dcc(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
int iVar1;
iVar1 = FUN_004b13ac(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
if (iVar1 != 0) {
param_4[0x24] = -0x70;
param_4[0x25] = '\x01';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x3d;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
}
return iVar1 != 0;
}
/* @004b1e18 file=? name=FUN_004b1e18 */
void __cdecl FUN_004b1e18(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x50fa2c);
return;
}
/* @004b1ed0 file=? name=FUN_004b1ed0 */
void __cdecl FUN_004b1ed0(int param_1,int param_2)
{
bool bVar1;
undefined3 extraout_var;
bVar1 = FUN_004ac9c8(param_1);
if ((CONCAT31(extraout_var,bVar1) == 0) && (0 < *(int *)(param_2 + 0xc))) {
if (*(int *)(param_1 + 0x1d4) == 0) {
if (*(int *)(param_1 + 0x184) == 0) {
*(undefined4 *)(param_1 + 0x1f0) = 0;
FUN_0041bbd8(param_1 + 0x1fc,0);
}
else {
*(undefined4 *)(param_1 + 0x1f0) = 0;
}
*(undefined4 *)(param_1 + 0x1d4) = 1;
*(undefined4 *)(param_1 + 0x134) = 1;
*(undefined4 *)(param_1 + 0x15c) = 0x3f800000;
return;
}
FUN_0041bbd8(param_1 + 0x1fc,1);
*(undefined4 *)(param_1 + 0x1d4) = 0;
*(undefined4 *)(param_1 + 0x134) = 0;
*(undefined4 *)(param_1 + 0x15c) = 0;
}
return;
}
/* @004b1f7c file=? name=FUN_004b1f7c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004b1f7c(int *param_1,float param_2)
{
float fVar1;
FUN_004ad924(param_1,param_2);
if (param_1[0x10] == 1) {
FUN_0041bbd8((int)(param_1 + 0x7f),1);
}
if (param_1[0x61] == 2) {
FUN_0041bbd8((int)(param_1 + 0x7f),4);
}
switch(param_1[0x84]) {
case 0:
param_1[0x77] = 0;
param_1[0x7c] = (int)(param_2 + (float)param_1[0x7c]);
if ((float)param_1[0x7b] <= (float)param_1[0x7c]) {
FUN_0041bbd8((int)(param_1 + 0x7f),2);
param_1[0x77] =
(int)((_DAT_004b2154 - *(float *)(param_1[0x38] + 0x158)) * (float)param_1[0x76]);
}
break;
case 1:
param_1[0x77] = 0;
break;
case 3:
param_1[0x77] = 0;
param_1[0x7e] = (int)(param_2 + (float)param_1[0x7e]);
if ((float)param_1[0x7d] <= (float)param_1[0x7e]) {
FUN_0041bbd8((int)(param_1 + 0x7f),2);
param_1[0x77] =
(int)((_DAT_004b2154 - *(float *)(param_1[0x38] + 0x158)) * (float)param_1[0x76]);
}
break;
case 4:
param_1[0x77] = 0;
if (param_1[0x61] == 0) {
if (param_1[0x75] == 0) {
FUN_0041bbd8((int)(param_1 + 0x7f),1);
}
else {
param_1[0x7c] = 0;
FUN_0041bbd8((int)(param_1 + 0x7f),0);
}
}
}
param_1[0x74] = (int)((float)param_1[0x77] / (float)param_1[0x76]);
fVar1 = _DAT_004b2158;
if ((_DAT_004b2158 <= (float)param_1[0x74]) &&
(fVar1 = _DAT_004b2154, (float)param_1[0x74] <= _DAT_004b2154)) {
fVar1 = (float)param_1[0x74];
}
param_1[0x74] = (int)fVar1;
return;
}
/* @004b215c file=? name=FUN_004b215c */
void __cdecl FUN_004b215c(int *param_1)
{
FUN_004ad760(param_1);
param_1[0x75] = 1;
param_1[0x7c] = 0;
FUN_0041bbd8((int)(param_1 + 0x7f),0);
FUN_0041bbd8((int)(param_1 + 0x7f),2);
param_1[0x77] = param_1[0x76];
param_1[0x4d] = 1;
param_1[0x57] = 0x3f800000;
param_1[0x7c] = param_1[0x7b];
return;
}
/* @004b21d0 file=? name=FUN_004b21d0 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004b21d0(int *param_1,int *param_2)
{
bool bVar1;
undefined3 extraout_var;
FUN_004ad748(param_1,param_2);
if (*(int *)(*(int *)(param_1[0x34] + 400) + 0x274) != 0) {
if (*param_2 == 4) {
if ((param_1[0x10] == 2) || (param_1[0x10] == 0)) {
bVar1 = FUN_004ac9c8((int)param_1);
if (CONCAT31(extraout_var,bVar1) == 0) {
FUN_0041bbd8((int)(param_1 + 0x7f),3);
param_1[0x7e] = 0;
}
}
}
else {
param_1[0x77] =
(int)((_DAT_004b2258 - *(float *)(param_1[0x38] + 0x158)) * (float)param_1[0x76]);
}
}
return;
}
/* @004b225c file=? name=FUN_004b225c */
int * __cdecl FUN_004b225c(int *param_1,int param_2,undefined4 param_3,char *param_4)
{
char *pcVar1;
int iVar2;
FUN_004adda0(param_1,param_2,param_3,param_4,&DAT_0050fb50,0,0);
*param_1 = (int)&PTR_FUN_0050fd74;
FUN_0041b9ec(param_1 + 0x7f,5);
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) {
param_1[7] = (int)PTR_FUN_0050fc14;
param_1[8] = DAT_0050fc18;
param_1[9] = DAT_0050fc1c;
}
param_1[0x76] = *(int *)(param_4 + 0xfc);
param_1[0x77] = param_1[0x76];
param_1[0x79] = *(int *)(param_4 + 0x100);
param_1[0x7a] = 0;
param_1[0x77] = param_1[0x76];
param_1[0x74] = 0x3f800000;
param_1[0x7b] = *(int *)(param_4 + 0x104);
param_1[0x7c] = param_1[0x7b];
FUN_0041bbd8((int)(param_1 + 0x7f),2);
param_1[0x75] = 1;
param_1[0x7d] = *(int *)(param_4 + 0x108);
param_1[0x7e] = param_1[0x7d];
param_1[10] = param_1[10] | 8;
pcVar1 = (char *)param_1[0x35];
iVar2 = FUN_004d4a78(pcVar1);
param_1[0x78] = pcVar1[iVar2 + -1] + -0x40;
return param_1;
}
/* @004b237c file=? name=FUN_004b237c */
void __cdecl FUN_004b237c(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0050fd74;
FUN_0041baa4(param_1 + 0x7f,2);
FUN_004adfd4(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004b23bc file=? name=FUN_004b23bc */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl
FUN_004b23bc(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
bool bVar1;
int iVar2;
undefined4 uVar3;
undefined3 extraout_var;
iVar2 = FUN_004ae150(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
if (iVar2 == 0) {
uVar3 = 0;
}
else {
param_4[0x24] = '\f';
param_4[0x25] = '\x01';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x3f;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
if (param_7 == 1) {
param_4[0xfc] = '\0';
param_4[0xfd] = '\0';
param_4[0xfe] = -0x80;
param_4[0xff] = -0x41;
param_4[0x104] = '\0';
param_4[0x105] = '\0';
param_4[0x106] = -0x80;
param_4[0x107] = -0x41;
param_4[0x108] = '\0';
param_4[0x109] = '\0';
param_4[0x10a] = -0x80;
param_4[0x10b] = -0x41;
}
iVar2 = FUN_00404118(param_5,param_3,s_RatedVoltage_0050fcde,(float *)(param_4 + 0xfc));
if ((iVar2 == 0) && (_DAT_004b2580 == *(float *)(param_4 + 0xfc))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_RatedVoltage__0050fceb,(char *)0x0);
uVar3 = 0;
}
else {
bVar1 = FUN_004040d8(param_5,param_3,s_MaxTapCount_0050fd03,(int *)(param_4 + 0x100));
if ((CONCAT31(extraout_var,bVar1) == 0) && (*(int *)(param_4 + 0x100) == -1)) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_MaxTapCount__0050fd0f,(char *)0x0);
uVar3 = 0;
}
else {
iVar2 = FUN_00404118(param_5,param_3,s_StartTime_0050fd26,(float *)(param_4 + 0x104));
if ((iVar2 == 0) && (_DAT_004b2580 == *(float *)(param_4 + 0x104))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_StartTime__0050fd30,(char *)0x0);
uVar3 = 0;
}
else {
iVar2 = FUN_00404118(param_5,param_3,s_ShortRecoveryTime_0050fd45,
(float *)(param_4 + 0x108));
if ((iVar2 == 0) && (_DAT_004b2580 == *(float *)(param_4 + 0x108))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_ShortRecoveryTime__0050fd57,(char *)0x0);
uVar3 = 0;
}
else {
uVar3 = 1;
}
}
}
}
}
return uVar3;
}
/* @004b2660 file=? name=FUN_004b2660 */
void __cdecl FUN_004b2660(int *param_1,int *param_2)
{
FUN_004b179c(param_1,param_2);
return;
}
/* @004b2678 file=? name=FUN_004b2678 */
void __cdecl FUN_004b2678(int *param_1,int param_2)
{
if (param_2 != 0) {
param_1[0xef] = 0;
param_1[0xf0] = 0;
param_1[0xea] = 0;
param_1[0xf1] = 0;
FUN_00408440(param_1 + 0x77,&DAT_004e0f74);
FUN_00408440(param_1 + 0x8c,&DAT_004e0f74);
FUN_00408440(param_1 + 0x8f,&DAT_004e0f74);
FUN_00408440(param_1 + 0x92,&DAT_004e0f74);
FUN_00408e90(param_1 + 0xad,&DAT_004e0f8c);
FUN_00408440(param_1 + 0xc2,&DAT_004e0f74);
FUN_00408440(param_1 + 0xc5,&DAT_004e0f74);
FUN_00408440(param_1 + 200,&DAT_004e0f74);
}
FUN_004b1804(param_1);
return;
}
/* @004b275c file=? name=FUN_004b275c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004b275c(int param_1,float param_2)
{
float fVar1;
undefined4 uVar2;
undefined4 local_c;
undefined4 local_8;
FUN_004b181c(param_1);
if (((*(int *)(param_1 + 0x40) == 1) || (*(int *)(param_1 + 0x198) != 4)) ||
(*(int *)(param_1 + 0x140) == 2)) {
local_8 = *(float *)(param_1 + 0x3a4) * param_2;
if (*(float *)(param_1 + 0x3b0) + *(float *)(param_1 + 0x3a8) < *(float *)(param_1 + 0x3bc)) {
local_8 = -local_8;
}
*(float *)(param_1 + 0x3bc) = local_8 + *(float *)(param_1 + 0x3bc);
if (local_8 <= _DAT_004b297c) {
if (local_8 < _DAT_004b297c) {
if (*(float *)(param_1 + 0x3b0) + *(float *)(param_1 + 0x3a8) <= *(float *)(param_1 + 0x3bc)
) {
fVar1 = *(float *)(param_1 + 0x3bc);
}
else {
fVar1 = *(float *)(param_1 + 0x3b0) + *(float *)(param_1 + 0x3a8);
}
*(float *)(param_1 + 0x3bc) = fVar1;
}
}
else {
if (*(float *)(param_1 + 0x3bc) <= *(float *)(param_1 + 0x3b0) + *(float *)(param_1 + 0x3a8))
{
fVar1 = *(float *)(param_1 + 0x3bc);
}
else {
fVar1 = *(float *)(param_1 + 0x3b0) + *(float *)(param_1 + 0x3a8);
}
*(float *)(param_1 + 0x3bc) = fVar1;
}
}
else {
local_c = *(float *)(param_1 + 0x3a4) * param_2;
if (*(float *)(param_1 + 0x3ac) + *(float *)(param_1 + 0x3a8) < *(float *)(param_1 + 0x3bc)) {
local_c = -local_c;
}
*(float *)(param_1 + 0x3bc) = local_c + *(float *)(param_1 + 0x3bc);
if (local_c <= _DAT_004b297c) {
if (local_c < _DAT_004b297c) {
if (*(float *)(param_1 + 0x3ac) + *(float *)(param_1 + 0x3a8) <= *(float *)(param_1 + 0x3bc)
) {
fVar1 = *(float *)(param_1 + 0x3bc);
}
else {
fVar1 = *(float *)(param_1 + 0x3ac) + *(float *)(param_1 + 0x3a8);
}
*(float *)(param_1 + 0x3bc) = fVar1;
}
}
else {
if (*(float *)(param_1 + 0x3bc) <= *(float *)(param_1 + 0x3ac) + *(float *)(param_1 + 0x3a8))
{
fVar1 = *(float *)(param_1 + 0x3bc);
}
else {
fVar1 = *(float *)(param_1 + 0x3ac) + *(float *)(param_1 + 0x3a8);
}
*(float *)(param_1 + 0x3bc) = fVar1;
}
}
if (*(float *)(param_1 + 0x3bc) <= *(float *)(param_1 + 0x39c)) {
uVar2 = *(undefined4 *)(param_1 + 0x3bc);
}
else {
uVar2 = *(undefined4 *)(param_1 + 0x39c);
}
*(undefined4 *)(param_1 + 0x3bc) = uVar2;
if (*(float *)(param_1 + 0x3a0) <= *(float *)(param_1 + 0x3bc)) {
uVar2 = *(undefined4 *)(param_1 + 0x3bc);
}
else {
uVar2 = *(undefined4 *)(param_1 + 0x3a0);
}
*(undefined4 *)(param_1 + 0x3bc) = uVar2;
FUN_004b2ec0(param_1,param_2);
FUN_004b30ec(param_1,param_2);
return;
}
/* @004b2980 file=? name=FUN_004b2980 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004b2980(int param_1,int param_2,float param_3)
{
int iVar1;
float10 fVar2;
int in_stack_00000034;
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;
if ((param_3 != _DAT_004b2d80) && (param_2 != 0)) {
local_14 = 0.0;
local_10 = 0.0;
local_c = 0.0;
local_8 = 0.0;
iVar1 = FUN_004084fc((float *)&stack0x00000010,(float *)&DAT_004e0f74,0.0001);
if (iVar1 == 0) {
FUN_00408440(&local_20,(undefined4 *)&stack0x00000010);
}
else {
fVar2 = FUN_00408050();
if (fVar2 < (float10)_DAT_004b2d84) {
fVar2 = FUN_00408050();
fVar2 = -fVar2;
}
else {
fVar2 = FUN_00408050();
}
local_20 = (float)fVar2;
fVar2 = FUN_00408050();
if (fVar2 < (float10)_DAT_004b2d84) {
fVar2 = FUN_00408050();
fVar2 = -fVar2;
}
else {
fVar2 = FUN_00408050();
}
local_18 = (float)fVar2;
local_1c = 0.0;
}
FUN_004087f4(&local_20,&local_20);
*(undefined4 *)(param_1 + 0x2ac) = **(undefined4 **)(param_1 + 600);
*(float *)(param_1 + 0x2a8) = 0.0;
*(undefined4 *)(param_1 + 0x2b0) = 0;
FUN_00409a00((float *)(param_1 + 0x298),(float *)(param_1 + 0x2a8));
FUN_00408440((undefined4 *)(param_1 + 0x28c),&DAT_004e0f74);
FUN_0040ab44((float *)(param_1 + 0x25c),(undefined4 *)(param_1 + 0x28c));
local_2c = local_20;
local_28 = local_1c;
local_24 = local_18;
FUN_00408744(&local_20,&local_2c,(float *)(param_1 + 0x25c));
FUN_004087f4(&local_20,&local_20);
switch(param_2) {
case 0:
local_14 = 0.0;
local_10 = 0.0;
local_c = 0.0;
local_8 = 0.0;
break;
case 1:
local_14 = (param_3 / *(float *)(param_1 + 0x330)) * *(float *)(param_1 + 0x350);
local_10 = (param_3 / *(float *)(param_1 + 0x330)) * *(float *)(param_1 + 0x354);
local_c = (param_3 / *(float *)(param_1 + 0x330)) * *(float *)(param_1 + 0x358);
local_8 = (param_3 / *(float *)(param_1 + 0x330)) * *(float *)(param_1 + 0x35c);
break;
case 2:
local_14 = (((float)in_stack_00000034 * param_3) / *(float *)(param_1 + 0x334)) *
*(float *)(param_1 + 0x360);
local_10 = (((float)in_stack_00000034 * param_3) / *(float *)(param_1 + 0x334)) *
*(float *)(param_1 + 0x364);
local_c = (((float)in_stack_00000034 * param_3) / *(float *)(param_1 + 0x334)) *
*(float *)(param_1 + 0x368);
local_8 = (((float)in_stack_00000034 * param_3) / *(float *)(param_1 + 0x334)) *
*(float *)(param_1 + 0x36c);
break;
case 3:
local_14 = (param_3 / *(float *)(param_1 + 0x338)) * *(float *)(param_1 + 0x370);
local_10 = (param_3 / *(float *)(param_1 + 0x338)) * *(float *)(param_1 + 0x374);
local_c = (param_3 / *(float *)(param_1 + 0x338)) * *(float *)(param_1 + 0x378);
local_8 = (param_3 / *(float *)(param_1 + 0x338)) * *(float *)(param_1 + 0x37c);
break;
case 4:
local_14 = (param_3 / *(float *)(param_1 + 0x33c)) * *(float *)(param_1 + 0x380);
local_10 = (param_3 / *(float *)(param_1 + 0x33c)) * *(float *)(param_1 + 900);
local_c = (param_3 / *(float *)(param_1 + 0x33c)) * *(float *)(param_1 + 0x388);
local_8 = (param_3 / *(float *)(param_1 + 0x33c)) * *(float *)(param_1 + 0x38c);
}
if (_DAT_004b2d88 < local_14) {
local_14 = _DAT_004b2d88;
}
if (_DAT_004b2d88 < local_10) {
local_10 = _DAT_004b2d88;
}
if (_DAT_004b2d88 < local_c) {
local_c = _DAT_004b2d88;
}
if (_DAT_004b2d88 < local_8) {
local_8 = _DAT_004b2d88;
}
FUN_004b2d8c(param_1,local_20,local_1c,local_18,local_14);
FUN_004b2de4(param_1,local_20,local_1c,local_18,local_10);
FUN_004b2d8c(param_1,*(float *)(param_1 + 0x390),*(float *)(param_1 + 0x394),
*(float *)(param_1 + 0x398),local_8);
FUN_004b2e50(param_1,local_20,local_1c,local_18,local_c);
}
return;
}
/* @004b2d8c file=? name=FUN_004b2d8c */
void __cdecl FUN_004b2d8c(int param_1,float param_2,float param_3,float param_4,float param_5)
{
param_2 = -param_2;
param_3 = -param_3;
param_4 = -param_4;
param_5 = *(float *)(param_1 + 0x1d8) * param_5;
FUN_004086ac(&param_2,&param_2,param_5);
FUN_004085ec((float *)(param_1 + 0x230),&param_2,(float *)(param_1 + 0x230));
return;
}
/* @004b2de4 file=? name=FUN_004b2de4 */
void __cdecl FUN_004b2de4(int param_1,float param_2,float param_3,float param_4,float param_5)
{
param_2 = -param_2;
param_3 = -param_3;
param_4 = -param_4;
param_5 = *(float *)(param_1 + 0x1d8) * param_5;
FUN_004086ac(&param_2,&param_2,param_5);
FUN_004085ec((float *)(param_1 + 0x308),&param_2,(float *)(param_1 + 0x308));
*(undefined4 *)(param_1 + 0x30c) = 0;
*(float *)(param_1 + 0x308) = -*(float *)(param_1 + 0x308);
return;
}
/* @004b2e50 file=? name=FUN_004b2e50 */
void __cdecl
FUN_004b2e50(int param_1,float param_2,undefined4 param_3,undefined4 param_4,float param_5)
{
param_3 = 0;
param_4 = 0;
param_5 = *(float *)(param_1 + 0x1d8) * param_5;
FUN_004086ac(&param_2,&param_2,param_5);
FUN_004085ec((float *)(param_1 + 0x308),&param_2,(float *)(param_1 + 0x308));
*(undefined4 *)(param_1 + 0x30c) = *(undefined4 *)(param_1 + 0x308);
return;
}
/* @004b2eac file=? name=FUN_004b2eac */
void __cdecl FUN_004b2eac(int param_1)
{
FUN_004b33e0(param_1);
return;
}
/* @004b2ec0 file=? name=FUN_004b2ec0 */
void __cdecl FUN_004b2ec0(int param_1,float param_2)
{
float *pfVar1;
float *pfVar2;
undefined4 uVar3;
float local_7c [12];
float local_4c [3];
float local_40 [3];
float local_34 [3];
float local_28 [3];
float local_1c [3];
float local_10 [3];
FUN_00408644(local_10,(float *)(param_1 + 0x1dc),(float *)(param_1 + 0x224));
FUN_00408644(local_1c,(float *)(param_1 + 0x1dc),(float *)(param_1 + 0x218));
FUN_004086d0(local_28,(float *)(param_1 + 0x1e8),local_10);
FUN_004086d0(local_34,(float *)(param_1 + 0x1e8),local_1c);
pfVar1 = (float *)(param_1 + 0x230);
FUN_004085ec(pfVar1,pfVar1,local_28);
FUN_004085ec(pfVar1,pfVar1,local_34);
FUN_00408440((undefined4 *)(param_1 + 0x248),pfVar1);
FUN_004086ac(local_40,(float *)(param_1 + 0x248),param_2);
pfVar2 = (float *)(param_1 + 0x23c);
FUN_004085ec(pfVar2,pfVar2,local_40);
FUN_004086d0(pfVar1,(float *)(param_1 + 500),pfVar2);
FUN_00408440((undefined4 *)(param_1 + 0x248),pfVar1);
FUN_004086ac(local_40,(float *)(param_1 + 0x248),param_2);
FUN_004085ec(pfVar2,pfVar2,local_40);
FUN_0040aadc(local_7c);
FUN_00408744(local_4c,pfVar2,local_7c);
FUN_004085ec((float *)(param_1 + 0x1dc),(float *)(param_1 + 0x1dc),local_4c);
if (*(float *)(param_1 + 0x1dc) <= *(float *)(param_1 + 0x200)) {
uVar3 = *(undefined4 *)(param_1 + 0x1dc);
}
else {
uVar3 = *(undefined4 *)(param_1 + 0x200);
}
*(undefined4 *)(param_1 + 0x1dc) = uVar3;
if (*(float *)(param_1 + 0x1e0) <= *(float *)(param_1 + 0x204)) {
uVar3 = *(undefined4 *)(param_1 + 0x1e0);
}
else {
uVar3 = *(undefined4 *)(param_1 + 0x204);
}
*(undefined4 *)(param_1 + 0x1e0) = uVar3;
if (*(float *)(param_1 + 0x1e4) <= *(float *)(param_1 + 0x208)) {
uVar3 = *(undefined4 *)(param_1 + 0x1e4);
}
else {
uVar3 = *(undefined4 *)(param_1 + 0x208);
}
*(undefined4 *)(param_1 + 0x1e4) = uVar3;
if (*(float *)(param_1 + 0x20c) <= *(float *)(param_1 + 0x1dc)) {
uVar3 = *(undefined4 *)(param_1 + 0x1dc);
}
else {
uVar3 = *(undefined4 *)(param_1 + 0x20c);
}
*(undefined4 *)(param_1 + 0x1dc) = uVar3;
if (*(float *)(param_1 + 0x210) <= *(float *)(param_1 + 0x1e0)) {
uVar3 = *(undefined4 *)(param_1 + 0x1e0);
}
else {
uVar3 = *(undefined4 *)(param_1 + 0x210);
}
*(undefined4 *)(param_1 + 0x1e0) = uVar3;
if (*(float *)(param_1 + 0x214) <= *(float *)(param_1 + 0x1e4)) {
uVar3 = *(undefined4 *)(param_1 + 0x1e4);
}
else {
uVar3 = *(undefined4 *)(param_1 + 0x214);
}
*(undefined4 *)(param_1 + 0x1e4) = uVar3;
return;
}
/* @004b30ec file=? name=FUN_004b30ec */
void __cdecl FUN_004b30ec(int param_1,float param_2)
{
float *pfVar1;
float *pfVar2;
undefined4 *puVar3;
float local_ac [12];
float local_7c;
float local_78;
float local_74;
float local_70 [3];
float local_64;
float local_60;
float local_5c;
float local_58;
float local_54;
float local_50;
float local_4c;
float local_48;
float local_44;
float local_40;
float local_3c;
float local_38;
float local_1c;
float local_18;
float local_14;
float local_10;
float local_c;
float local_8;
local_40 = *(float *)(param_1 + 0x2b4) - *(float *)(param_1 + 0x2fc);
local_3c = *(float *)(param_1 + 0x2b8) - *(float *)(param_1 + 0x300);
local_38 = *(float *)(param_1 + 700) - *(float *)(param_1 + 0x304);
local_4c = *(float *)(param_1 + 0x2b4) - *(float *)(param_1 + 0x2f0);
local_48 = *(float *)(param_1 + 0x2b8) - *(float *)(param_1 + 0x2f4);
local_44 = *(float *)(param_1 + 700) - *(float *)(param_1 + 0x2f8);
local_58 = *(float *)(param_1 + 0x2c0) * local_38;
local_54 = *(float *)(param_1 + 0x2c4) * local_3c;
local_50 = *(float *)(param_1 + 0x2c8) * local_40;
local_64 = *(float *)(param_1 + 0x2c0) * local_44;
local_60 = *(float *)(param_1 + 0x2c4) * local_48;
local_5c = *(float *)(param_1 + 0x2c8) * local_4c;
local_1c = local_44;
local_18 = local_48;
local_14 = local_4c;
local_10 = local_38;
local_c = local_3c;
local_8 = local_40;
FUN_004085ec((float *)(param_1 + 0x308),(float *)(param_1 + 0x308),&local_58);
pfVar1 = (float *)(param_1 + 0x308);
FUN_004085ec(pfVar1,pfVar1,&local_64);
FUN_00408440((undefined4 *)(param_1 + 800),pfVar1);
FUN_004086ac(local_70,(float *)(param_1 + 800),param_2);
pfVar2 = (float *)(param_1 + 0x314);
FUN_004085ec(pfVar2,pfVar2,local_70);
FUN_004086d0(pfVar1,(float *)(param_1 + 0x2cc),pfVar2);
FUN_00408440((undefined4 *)(param_1 + 800),pfVar1);
FUN_004086ac(local_70,(float *)(param_1 + 800),param_2);
FUN_004085ec(pfVar2,pfVar2,local_70);
FUN_0040aadc(local_ac);
FUN_00408744(&local_7c,pfVar2,local_ac);
*(float *)(param_1 + 0x2b4) = local_74 + *(float *)(param_1 + 0x2b4);
*(float *)(param_1 + 0x2b8) = local_78 + *(float *)(param_1 + 0x2b8);
*(float *)(param_1 + 700) = local_7c + *(float *)(param_1 + 700);
if (*(float *)(param_1 + 0x2b8) <= *(float *)(param_1 + 0x2dc)) {
puVar3 = (undefined4 *)(param_1 + 0x2b8);
}
else {
puVar3 = (undefined4 *)(param_1 + 0x2dc);
}
*(undefined4 *)(param_1 + 0x2b8) = *puVar3;
if (*(float *)(param_1 + 0x2b4) <= *(float *)(param_1 + 0x2d8)) {
puVar3 = (undefined4 *)(param_1 + 0x2b4);
}
else {
puVar3 = (undefined4 *)(param_1 + 0x2d8);
}
*(undefined4 *)(param_1 + 0x2b4) = *puVar3;
if (*(float *)(param_1 + 700) <= *(float *)(param_1 + 0x2e0)) {
puVar3 = (undefined4 *)(param_1 + 700);
}
else {
puVar3 = (undefined4 *)(param_1 + 0x2e0);
}
*(undefined4 *)(param_1 + 700) = *puVar3;
if (*(float *)(param_1 + 0x2e8) <= *(float *)(param_1 + 0x2b8)) {
puVar3 = (undefined4 *)(param_1 + 0x2b8);
}
else {
puVar3 = (undefined4 *)(param_1 + 0x2e8);
}
*(undefined4 *)(param_1 + 0x2b8) = *puVar3;
if (*(float *)(param_1 + 0x2e4) <= *(float *)(param_1 + 0x2b4)) {
puVar3 = (undefined4 *)(param_1 + 0x2b4);
}
else {
puVar3 = (undefined4 *)(param_1 + 0x2e4);
}
*(undefined4 *)(param_1 + 0x2b4) = *puVar3;
if (*(float *)(param_1 + 0x2ec) <= *(float *)(param_1 + 700)) {
puVar3 = (undefined4 *)(param_1 + 700);
}
else {
puVar3 = (undefined4 *)(param_1 + 0x2ec);
}
*(undefined4 *)(param_1 + 700) = *puVar3;
return;
}
/* @004b33e0 file=? name=FUN_004b33e0 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004b33e0(int param_1)
{
uint uVar1;
float *pfVar2;
int iVar3;
float10 fVar4;
float local_2c [3];
float local_20;
float local_1c;
float local_18;
float local_14;
float local_10;
float local_c;
float local_8;
local_14 = *(float *)(param_1 + 0x3bc);
uVar1 = *(uint *)(*(int *)(param_1 + 0x3c8) + 0x10);
local_8 = local_14;
if (uVar1 < 3) {
pfVar2 = (float *)(*(int *)(*(int *)(param_1 + 0x3c8) + 0xc) + 4);
local_10 = *pfVar2;
local_1c = local_14 * local_10;
local_20 = *pfVar2;
local_18 = local_20;
local_c = local_1c;
fVar4 = FUN_004dcd00((double)(local_20 - local_1c));
if ((float10)_DAT_004b34e8 < fVar4) {
FUN_0041d0a8(*(int *)(param_1 + 0x3c8),&local_c);
}
}
else if (uVar1 - 4 < 2) {
pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x3c8));
FUN_004092fc(local_2c,pfVar2,local_14);
pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x3c8));
iVar3 = FUN_004091f4(pfVar2,local_2c,0.0001);
if (iVar3 == 0) {
FUN_0041d020(*(int *)(param_1 + 0x3c8),local_2c);
}
}
return;
}
/* @004b34ec file=? name=FUN_004b34ec */
void __cdecl FUN_004b34ec(int param_1)
{
int iVar1;
float *pfVar2;
if (*(int *)(*(int *)(param_1 + 0x3cc) + 0x10) == 5) {
iVar1 = FUN_004084fc(*(float **)(*(int *)(param_1 + 0x3cc) + 0xc),(float *)(param_1 + 0x1dc),
0.0001);
if (iVar1 == 0) {
FUN_0041d11c(*(int *)(param_1 + 0x3cc),(float *)(param_1 + 0x1dc));
}
pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x3cc));
iVar1 = FUN_004091f4(pfVar2,(float *)(param_1 + 0x2b4),0.0001);
if (iVar1 == 0) {
FUN_0041d020(*(int *)(param_1 + 0x3cc),(float *)(param_1 + 0x2b4));
}
}
return;
}
/* @004b357c file=? name=FUN_004b357c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
bool __cdecl FUN_004b357c(int param_1,float param_2)
{
float *pfVar1;
float *pfVar2;
float fVar3;
float local_74 [3];
float local_68 [3];
float local_5c [4];
float local_4c;
undefined4 local_48;
float local_44;
undefined4 local_40;
float local_3c;
float local_38;
undefined4 local_34;
undefined4 local_30;
undefined4 local_2c;
undefined4 local_28;
undefined4 local_24;
undefined4 local_20;
undefined4 local_1c;
undefined4 local_18;
undefined4 local_14;
undefined4 local_10;
undefined4 local_c;
undefined4 local_8;
local_8 = 0;
local_c = 0;
local_10 = 0;
local_5c[0] = 0.0;
local_5c[1] = 0.0;
local_5c[2] = 0.0;
local_1c = 0;
local_18 = 0;
local_14 = 0;
local_28 = 0x3f800000;
local_24 = 0;
local_20 = 0x3f800000;
local_34 = 0x40000000;
local_30 = 0;
local_2c = 0x40000000;
if (*(int *)(param_1 + 0x3c4) == 0) {
*(undefined4 *)(param_1 + 0x3c4) = 1;
*(undefined4 *)(param_1 + 0x3c0) = 0x40000000;
}
fVar3 = param_2 / *(float *)(param_1 + 0x3c0);
local_38 = fVar3;
switch(*(undefined4 *)(*(int *)(param_1 + 0x3c8) + 0x10)) {
case 0:
FUN_00408dd4(&local_40,*(undefined4 **)(*(int *)(param_1 + 0x3c8) + 0xc),(int)&local_18,fVar3);
FUN_0041d0a8(*(int *)(param_1 + 0x3c8),&local_3c);
break;
case 1:
FUN_00408dd4(&local_48,*(undefined4 **)(*(int *)(param_1 + 0x3c8) + 0xc),(int)&local_24,fVar3);
FUN_0041d0a8(*(int *)(param_1 + 0x3c8),&local_44);
break;
case 2:
FUN_00408dd4(local_5c + 3,*(undefined4 **)(*(int *)(param_1 + 0x3c8) + 0xc),(int)&local_30,fVar3
);
FUN_0041d0a8(*(int *)(param_1 + 0x3c8),&local_4c);
break;
case 4:
pfVar2 = local_5c;
pfVar1 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x3c8));
FUN_00409390(local_74,pfVar1,pfVar2,fVar3);
FUN_0041d020(*(int *)(param_1 + 0x3c8),local_74);
break;
case 5:
pfVar2 = local_5c;
pfVar1 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x3c8));
FUN_00409390(local_68,pfVar1,pfVar2,fVar3);
FUN_0041d020(*(int *)(param_1 + 0x3c8),local_68);
}
*(float *)(param_1 + 0x3c0) = *(float *)(param_1 + 0x3c0) - param_2;
fVar3 = _DAT_004b3774;
if (*(float *)(param_1 + 0x3c0) <= _DAT_004b3774) {
*(undefined4 *)(param_1 + 0x3c4) = 0;
}
return *(float *)(param_1 + 0x3c0) <= fVar3;
}
/* @004b3778 file=? name=FUN_004b3778 */
int * __cdecl FUN_004b3778(int *param_1,int param_2,undefined4 param_3,char *param_4)
{
uint *puVar1;
int iVar2;
int iVar3;
int *piVar4;
int *piVar5;
int local_15c [7];
int local_140 [7];
float local_124 [12];
float local_f4 [12];
int *local_c4;
undefined4 local_c0;
undefined4 local_bc;
int local_b8;
int local_b4;
undefined4 local_b0;
undefined4 local_ac;
char *local_a8;
uint *local_a4;
uint *local_a0;
char *local_9c;
uint *local_98;
float *local_94;
float *local_90;
float *local_8c;
float *local_88;
int *local_84;
char *local_80;
int *local_7c;
char *local_78;
int *local_74;
int *local_70;
int *local_6c;
int *local_68;
int *local_64;
int *local_60;
int *local_5c;
int *local_58;
int *local_54;
int *local_50;
int *local_4c;
int *local_48;
int *local_44;
int *local_40;
int *local_3c;
int *local_38;
int *local_34;
int *local_30;
int *local_2c;
int *local_28;
int *local_24;
int *local_20;
int *local_1c;
int *local_18;
int *local_14;
int *local_10;
int *local_c;
int *local_8;
FUN_004b18a4(param_1,param_2,param_3,param_4,&DAT_0050fdb0);
*param_1 = (int)&PTR_FUN_00510abc;
local_8 = param_1 + 0x77;
local_c = param_1 + 0x7a;
local_10 = param_1 + 0x7d;
local_14 = param_1 + 0x80;
local_18 = param_1 + 0x83;
local_1c = param_1 + 0x86;
local_20 = param_1 + 0x89;
local_24 = param_1 + 0x8c;
local_28 = param_1 + 0x8f;
local_2c = param_1 + 0x92;
local_30 = param_1 + 0x97;
FUN_0040aadc(local_30);
local_34 = param_1 + 0xa3;
local_38 = param_1 + 0xaa;
local_3c = param_1 + 0xad;
local_40 = param_1 + 0xb0;
local_44 = param_1 + 0xb3;
local_48 = param_1 + 0xb6;
local_4c = param_1 + 0xb9;
local_50 = param_1 + 0xbc;
local_54 = param_1 + 0xbf;
local_58 = param_1 + 0xc2;
local_5c = param_1 + 0xc5;
local_60 = param_1 + 200;
local_64 = param_1 + 0xe4;
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(byte *)(param_2 + 0x29) & 1) != 0)) {
param_1[7] = (int)PTR_FUN_0050fe08;
param_1[8] = DAT_0050fe0c;
param_1[9] = DAT_0050fe10;
}
param_1[0x76] = *(int *)(param_4 + 0xf8);
param_1[0xe8] = *(int *)(param_4 + 0x100);
param_1[0xe7] = *(int *)(param_4 + 0xfc);
param_1[0xe9] = *(int *)(param_4 + 0x104);
param_1[0xeb] = *(int *)(param_4 + 0x108);
param_1[0xec] = *(int *)(param_4 + 0x10c);
param_1[0xed] = *(int *)(param_4 + 0x110);
local_68 = param_1 + 0x7a;
param_1[0xee] = *(int *)(param_4 + 0x114);
FUN_00408440(local_68,(undefined4 *)(param_4 + 0x118));
local_6c = param_1 + 0x7d;
FUN_00408440(local_6c,(undefined4 *)(param_4 + 0x124));
local_70 = param_1 + 0x86;
FUN_00408440(local_70,(undefined4 *)(param_4 + 0x130));
local_74 = param_1 + 0x89;
FUN_00408440(local_74,(undefined4 *)(param_4 + 0x13c));
local_78 = param_4 + 0x148;
local_7c = param_1 + 0xb0;
FUN_00408440(local_7c,(undefined4 *)local_78);
local_80 = param_4 + 0x154;
local_84 = param_1 + 0xb3;
FUN_00408440(local_84,(undefined4 *)local_80);
FUN_00408e90(param_1 + 0xbc,(undefined4 *)(param_4 + 0x160));
FUN_00408e90(param_1 + 0xbf,(undefined4 *)(param_4 + 0x16c));
param_1[0xcb] = *(int *)(param_4 + 0x1b8);
param_1[0xcc] = *(int *)(param_4 + 0x1bc);
param_1[0xcd] = *(int *)(param_4 + 0x1c0);
param_1[0xce] = *(int *)(param_4 + 0x1c4);
param_1[0xcf] = *(int *)(param_4 + 0x1c8);
piVar4 = (int *)(param_4 + 0x1cc);
piVar5 = param_1 + 0xd0;
for (iVar3 = 4; iVar3 != 0; iVar3 = iVar3 + -1) {
*piVar5 = *piVar4;
piVar4 = piVar4 + 1;
piVar5 = piVar5 + 1;
}
piVar4 = (int *)(param_4 + 0x1dc);
piVar5 = param_1 + 0xd4;
for (iVar3 = 4; iVar3 != 0; iVar3 = iVar3 + -1) {
*piVar5 = *piVar4;
piVar4 = piVar4 + 1;
piVar5 = piVar5 + 1;
}
piVar4 = (int *)(param_4 + 0x1ec);
piVar5 = param_1 + 0xd8;
for (iVar3 = 4; iVar3 != 0; iVar3 = iVar3 + -1) {
*piVar5 = *piVar4;
piVar4 = piVar4 + 1;
piVar5 = piVar5 + 1;
}
piVar4 = (int *)(param_4 + 0x1fc);
piVar5 = param_1 + 0xdc;
for (iVar3 = 4; iVar3 != 0; iVar3 = iVar3 + -1) {
*piVar5 = *piVar4;
piVar4 = piVar4 + 1;
piVar5 = piVar5 + 1;
}
piVar4 = (int *)(param_4 + 0x20c);
piVar5 = param_1 + 0xe0;
for (iVar3 = 4; iVar3 != 0; iVar3 = iVar3 + -1) {
*piVar5 = *piVar4;
piVar4 = piVar4 + 1;
piVar5 = piVar5 + 1;
}
FUN_0040aadc(local_f4);
local_88 = (float *)(param_1 + 0x86);
local_8c = (float *)(param_1 + 0x80);
FUN_00408744(local_8c,local_88,local_f4);
FUN_0040aadc(local_124);
local_90 = (float *)(param_1 + 0x89);
local_94 = (float *)(param_1 + 0x83);
FUN_00408744(local_94,local_90,local_124);
FUN_004092fc((float *)(param_1 + 0xb6),(float *)(param_1 + 0xbc),2.0);
FUN_004092fc((float *)(param_1 + 0xb9),(float *)(param_1 + 0xbf),2.0);
local_9c = param_4 + 0x178;
local_a0 = (uint *)FUN_00402298(0x10);
if (local_a0 == (uint *)0x0) {
local_98 = (uint *)0x0;
}
else {
local_98 = FUN_00402460(local_a0,local_9c);
}
local_98[3] = local_98[3] + 1;
local_a8 = param_4 + 0x198;
puVar1 = (uint *)FUN_00402298(0x10);
if (puVar1 == (uint *)0x0) {
local_a4 = (uint *)0x0;
}
else {
local_a4 = FUN_00402460(puVar1,local_a8);
}
local_a4[3] = local_a4[3] + 1;
iVar3 = FUN_00417ab4(param_2 + 0x31c);
local_98[3] = local_98[3] + 1;
local_b4 = FUN_00424b60(param_2,(int *)local_98);
local_ac = *(undefined4 *)(local_b4 + 0xc0);
local_a4[3] = local_a4[3] + 1;
local_b8 = FUN_00424b60(param_2,(int *)local_a4);
local_b0 = *(undefined4 *)(local_b8 + 0xc0);
local_bc = local_ac;
FUN_0041d3b3(local_140,iVar3 + 0xe4);
iVar2 = (**(code **)(local_140[0] + 0x34))(local_140,local_bc);
FUN_0041d3d2(local_140,2);
param_1[0xf2] = iVar2;
local_c0 = local_b0;
FUN_0041d3b3(local_15c,iVar3 + 0xe4);
iVar3 = (**(code **)(local_15c[0] + 0x34))(local_15c,local_c0);
FUN_0041d3d2(local_15c,2);
param_1[0xf3] = iVar3;
param_1[0xe4] = 0;
param_1[0xe5] = 0x3f800000;
param_1[0xe6] = 0;
param_1[0xef] = 0;
param_1[0xf0] = 0;
param_1[0xf1] = 0;
param_1[0xea] = 0;
FUN_00409a00((float *)(param_1 + 0xa6),(float *)&DAT_004e0f8c);
FUN_00408440(param_1 + 0xa3,&DAT_004e0f74);
FUN_00408e90(param_1 + 0xaa,&DAT_004e0f8c);
param_1[0x95] = 0;
local_c4 = param_1 + 0xa3;
param_1[0x96] = (int)(param_1 + 0x95);
FUN_0040ab44((float *)(param_1 + 0x97),local_c4);
FUN_00408440(param_1 + 0x77,&DAT_004e0f74);
FUN_00408440(param_1 + 0x8c,&DAT_004e0f74);
FUN_00408440(param_1 + 0x8f,&DAT_004e0f74);
FUN_00408440(param_1 + 0x92,&DAT_004e0f74);
FUN_00408e90(param_1 + 0xad,&DAT_004e0f8c);
FUN_00408440(param_1 + 0xc2,&DAT_004e0f74);
FUN_00408440(param_1 + 0xc5,&DAT_004e0f74);
FUN_00408440(param_1 + 200,&DAT_004e0f74);
puVar1 = local_a4 + 3;
*puVar1 = *puVar1 - 1;
if (*puVar1 == 0) {
FUN_004024d8((int *)local_a4,3);
}
puVar1 = local_98 + 3;
*puVar1 = *puVar1 - 1;
if (*puVar1 == 0) {
FUN_004024d8((int *)local_98,3);
}
return param_1;
}
/* @004b3e88 file=? name=FUN_004b3e88 */
void __cdecl FUN_004b3e88(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_00510abc;
FUN_004b1930(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004b3eb4 file=? name=FUN_004b3eb4 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4
FUN_004b3eb4(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
char *pcVar1;
char cVar2;
int iVar3;
undefined4 uVar4;
char *pcVar5;
int *piVar6;
int *piVar7;
uint uVar8;
uint uVar9;
char *pcVar10;
bool bVar11;
char *local_124;
char *local_120;
char *local_11c;
char *local_118;
char *local_114;
char *local_110;
char *local_10c;
char *local_108;
char *local_104;
char *local_100;
char *local_fc;
char *local_f8;
char *local_f4;
char *local_f0;
char *local_ec;
char *local_e8;
char *local_e4;
char *local_e0;
char *local_dc;
char *local_d8;
char *local_d4;
char *local_d0;
char *local_cc;
char *local_c8;
char *local_c4;
char *local_c0;
char *local_bc;
char *local_b8;
char *local_b4;
char *local_b0;
float local_ac;
float local_a8;
char *local_a4;
float local_a0;
float local_9c;
char *local_98;
float local_94;
float local_90;
char *local_8c;
float local_88;
float local_84;
char *local_80;
float local_7c;
float local_78;
char *local_74;
float local_70;
float local_6c;
char *local_68;
float local_64;
char *local_60;
char *local_5c;
char *local_58;
char *local_54;
char *local_50;
char *local_4c;
char *local_48;
char *local_44;
char *local_40;
char *local_3c;
char *local_38;
char *local_34;
char *local_30;
char *local_2c;
char *local_28;
char *local_24;
char *local_20;
char *local_1c;
char *local_18;
char *local_14;
char *local_10;
char *local_c;
char *local_8;
iVar3 = FUN_004b198c(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
if (iVar3 == 0) {
uVar4 = 0;
}
else {
param_4[0x24] = '\x1c';
param_4[0x25] = '\x02';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x3c;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
if (param_7 == 1) {
param_4[0xf4] = '\0';
param_4[0xf5] = '\0';
param_4[0xf6] = -0x80;
param_4[0xf7] = -0x41;
param_4[0xf8] = '\0';
param_4[0xf9] = '\0';
param_4[0xfa] = -0x80;
param_4[0xfb] = -0x41;
param_4[0xfc] = '\0';
param_4[0xfd] = '\0';
param_4[0xfe] = -0x80;
param_4[0xff] = -0x41;
param_4[0x100] = '\0';
param_4[0x101] = '\0';
param_4[0x102] = -0x80;
param_4[0x103] = -0x41;
param_4[0x104] = '\0';
param_4[0x105] = '\0';
param_4[0x106] = -0x80;
param_4[0x107] = -0x41;
param_4[0x108] = '\0';
param_4[0x109] = '\0';
param_4[0x10a] = -0x80;
param_4[0x10b] = -0x41;
param_4[0x10c] = '\0';
param_4[0x10d] = '\0';
param_4[0x10e] = -0x80;
param_4[0x10f] = -0x41;
param_4[0x110] = '\0';
param_4[0x111] = '\0';
param_4[0x112] = -0x80;
param_4[0x113] = -0x41;
param_4[0x114] = '\0';
param_4[0x115] = '\0';
param_4[0x116] = -0x80;
param_4[0x117] = -0x41;
param_4[0x118] = '\0';
param_4[0x119] = '\0';
param_4[0x11a] = -0x80;
param_4[0x11b] = -0x41;
param_4[0x11c] = '\0';
param_4[0x11d] = '\0';
param_4[0x11e] = -0x80;
param_4[0x11f] = -0x41;
param_4[0x120] = '\0';
param_4[0x121] = '\0';
param_4[0x122] = -0x80;
param_4[0x123] = -0x41;
param_4[0x124] = '\0';
param_4[0x125] = '\0';
param_4[0x126] = -0x80;
param_4[0x127] = -0x41;
param_4[0x128] = '\0';
param_4[0x129] = '\0';
param_4[0x12a] = -0x80;
param_4[299] = -0x41;
param_4[300] = '\0';
param_4[0x12d] = '\0';
param_4[0x12e] = -0x80;
param_4[0x12f] = -0x41;
param_4[0x130] = '\0';
param_4[0x131] = '\0';
param_4[0x132] = -0x80;
param_4[0x133] = -0x41;
param_4[0x134] = '\0';
param_4[0x135] = '\0';
param_4[0x136] = -0x80;
param_4[0x137] = -0x41;
param_4[0x138] = '\0';
param_4[0x139] = '\0';
param_4[0x13a] = -0x80;
param_4[0x13b] = -0x41;
param_4[0x13c] = '\0';
param_4[0x13d] = '\0';
param_4[0x13e] = -0x80;
param_4[0x13f] = -0x41;
param_4[0x140] = '\0';
param_4[0x141] = '\0';
param_4[0x142] = -0x80;
param_4[0x143] = -0x41;
param_4[0x144] = '\0';
param_4[0x145] = '\0';
param_4[0x146] = -0x80;
param_4[0x147] = -0x41;
param_4[0x148] = '\0';
param_4[0x149] = '\0';
param_4[0x14a] = -0x80;
param_4[0x14b] = -0x41;
param_4[0x14c] = '\0';
param_4[0x14d] = '\0';
param_4[0x14e] = -0x80;
param_4[0x14f] = -0x41;
param_4[0x150] = '\0';
param_4[0x151] = '\0';
param_4[0x152] = -0x80;
param_4[0x153] = -0x41;
param_4[0x154] = '\0';
param_4[0x155] = '\0';
param_4[0x156] = -0x80;
param_4[0x157] = -0x41;
param_4[0x158] = '\0';
param_4[0x159] = '\0';
param_4[0x15a] = -0x80;
param_4[0x15b] = -0x41;
param_4[0x15c] = '\0';
param_4[0x15d] = '\0';
param_4[0x15e] = -0x80;
param_4[0x15f] = -0x41;
param_4[0x160] = '\0';
param_4[0x161] = '\0';
param_4[0x162] = -0x80;
param_4[0x163] = -0x41;
param_4[0x164] = '\0';
param_4[0x165] = '\0';
param_4[0x166] = -0x80;
param_4[0x167] = -0x41;
param_4[0x168] = '\0';
param_4[0x169] = '\0';
param_4[0x16a] = -0x80;
param_4[0x16b] = -0x41;
param_4[0x16c] = '\0';
param_4[0x16d] = '\0';
param_4[0x16e] = -0x80;
param_4[0x16f] = -0x41;
param_4[0x170] = '\0';
param_4[0x171] = '\0';
param_4[0x172] = -0x80;
param_4[0x173] = -0x41;
param_4[0x174] = '\0';
param_4[0x175] = '\0';
param_4[0x176] = -0x80;
param_4[0x177] = -0x41;
param_4[0x1b8] = '\0';
param_4[0x1b9] = '\0';
param_4[0x1ba] = -0x80;
param_4[0x1bb] = -0x41;
param_4[0x1bc] = '\0';
param_4[0x1bd] = '\0';
param_4[0x1be] = -0x80;
param_4[0x1bf] = -0x41;
param_4[0x1c0] = '\0';
param_4[0x1c1] = '\0';
param_4[0x1c2] = -0x80;
param_4[0x1c3] = -0x41;
param_4[0x1c4] = '\0';
param_4[0x1c5] = '\0';
param_4[0x1c6] = -0x80;
param_4[0x1c7] = -0x41;
param_4[0x1c8] = '\0';
param_4[0x1c9] = '\0';
param_4[0x1ca] = -0x80;
param_4[0x1cb] = -0x41;
param_4[0x1cc] = '\0';
param_4[0x1cd] = '\0';
param_4[0x1ce] = -0x80;
param_4[0x1cf] = -0x41;
param_4[0x1d0] = '\0';
param_4[0x1d1] = '\0';
param_4[0x1d2] = -0x80;
param_4[0x1d3] = -0x41;
param_4[0x1d4] = '\0';
param_4[0x1d5] = '\0';
param_4[0x1d6] = -0x80;
param_4[0x1d7] = -0x41;
param_4[0x1d8] = '\0';
param_4[0x1d9] = '\0';
param_4[0x1da] = -0x80;
param_4[0x1db] = -0x41;
param_4[0x1dc] = '\0';
param_4[0x1dd] = '\0';
param_4[0x1de] = -0x80;
param_4[0x1df] = -0x41;
param_4[0x1e0] = '\0';
param_4[0x1e1] = '\0';
param_4[0x1e2] = -0x80;
param_4[0x1e3] = -0x41;
param_4[0x1e4] = '\0';
param_4[0x1e5] = '\0';
param_4[0x1e6] = -0x80;
param_4[0x1e7] = -0x41;
param_4[0x1e8] = '\0';
param_4[0x1e9] = '\0';
param_4[0x1ea] = -0x80;
param_4[0x1eb] = -0x41;
param_4[0x1ec] = '\0';
param_4[0x1ed] = '\0';
param_4[0x1ee] = -0x80;
param_4[0x1ef] = -0x41;
param_4[0x1f0] = '\0';
param_4[0x1f1] = '\0';
param_4[0x1f2] = -0x80;
param_4[499] = -0x41;
param_4[500] = '\0';
param_4[0x1f5] = '\0';
param_4[0x1f6] = -0x80;
param_4[0x1f7] = -0x41;
param_4[0x1f8] = '\0';
param_4[0x1f9] = '\0';
param_4[0x1fa] = -0x80;
param_4[0x1fb] = -0x41;
param_4[0x1fc] = '\0';
param_4[0x1fd] = '\0';
param_4[0x1fe] = -0x80;
param_4[0x1ff] = -0x41;
param_4[0x200] = '\0';
param_4[0x201] = '\0';
param_4[0x202] = -0x80;
param_4[0x203] = -0x41;
param_4[0x204] = '\0';
param_4[0x205] = '\0';
param_4[0x206] = -0x80;
param_4[0x207] = -0x41;
param_4[0x208] = '\0';
param_4[0x209] = '\0';
param_4[0x20a] = -0x80;
param_4[0x20b] = -0x41;
param_4[0x20c] = '\0';
param_4[0x20d] = '\0';
param_4[0x20e] = -0x80;
param_4[0x20f] = -0x41;
param_4[0x210] = '\0';
param_4[0x211] = '\0';
param_4[0x212] = -0x80;
param_4[0x213] = -0x41;
param_4[0x214] = '\0';
param_4[0x215] = '\0';
param_4[0x216] = -0x80;
param_4[0x217] = -0x41;
param_4[0x218] = '\0';
param_4[0x219] = '\0';
param_4[0x21a] = -0x80;
param_4[0x21b] = -0x41;
}
iVar3 = FUN_00404118(param_5,param_3,s_PercentageOnNormal_0050fe6b,(float *)(param_4 + 0x108));
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x108))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_PercentageOnNormal__0050fe7e,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_PercentageOnDestruction_0050fe9c,
(float *)(param_4 + 0x10c));
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x10c))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_PercentageOnDestruction__0050feb4,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_PercentageOnDegradation_0050fed7,
(float *)(param_4 + 0x110));
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x110))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_PercentageOnDegradation__0050feef,(char *)0x0)
;
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_PercentageOnFailure_0050ff12,
(float *)(param_4 + 0x114));
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x114))) {
local_8 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_PercentageOnFailure__0050ff26,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_RotationPerSecond_0050ff45,
(float *)(param_4 + 0x104));
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x104))) {
local_c = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_RotationPerSecond__0050ff57,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_Exageration_0050ff74,(float *)(param_4 + 0xf8))
;
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0xf8))) {
local_10 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_Exageration__0050ff80,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_MaxAnimationNoise_0050ff97,
(float *)(param_4 + 0xfc));
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0xfc))) {
local_14 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_MaxAnimationNoise__0050ffa9,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_MinAnimationNoise_0050ffc6,
(float *)(param_4 + 0x100));
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x100))) {
local_18 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_MinAnimationNoise__0050ffd8,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_SpringConstantX_0050fff5,
(float *)(param_4 + 0x118));
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x118))) {
local_1c = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_SpringConstantX__00510005,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_SpringConstantY_00510020,
(float *)(param_4 + 0x11c));
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x11c))) {
local_20 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_SpringConstantY__00510030,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_SpringConstantZ_0051004b,
(float *)(param_4 + 0x120));
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x120))) {
local_24 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_SpringConstantZ__0051005b,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_DampingConstantX_00510076,
(float *)(param_4 + 0x124));
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x124))) {
local_28 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_DampingConstantX__00510087,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_DampingConstantY_005100a3,
(float *)(param_4 + 0x128));
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x128))) {
local_2c = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_DampingConstantY__005100b4
,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_DampingConstantZ_005100d0,
(float *)(param_4 + 300));
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 300))) {
local_30 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_DampingConstantZ__005100e1,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_NegSpringX_005100fd,
(float *)(param_4 + 0x13c));
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x13c)))
{
local_34 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_NegSpringX__00510108,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_NegSpringY_0051011e,
(float *)(param_4 + 0x140));
if ((iVar3 == 0) && (_DAT_004b5b20 == *(float *)(param_4 + 0x140))
) {
local_38 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_NegSpringY__00510129
,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_NegSpringZ_0051013f,
(float *)(param_4 + 0x144));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x144))) {
local_3c = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_NegSpringZ__0051014a,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_PosSpringX_00510160,
(float *)(param_4 + 0x130));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x130))) {
local_40 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_PosSpringX__0051016b,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_PosSpringY_00510181,
(float *)(param_4 + 0x134));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x134))) {
local_44 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_PosSpringY__0051018c,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_PosSpringZ_005101a2
,(float *)(param_4 + 0x138));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x138))) {
local_48 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_PosSpringZ__005101ad,(char *)0x0)
;
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_RotationSpringConstantPitch_005101c3,
(float *)(param_4 + 0x150));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x150))) {
local_4c = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0)
;
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_RotationSpringConstantPi_005101df,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_RotationSpringConstantYaw_00510206,
(float *)(param_4 + 0x14c));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x14c))) {
local_50 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_RotationSpringConstantYa_00510220,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_RotationSpringConstantRoll_00510245,
(float *)(param_4 + 0x148));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x148))) {
local_54 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_RotationSpringConstantRo_00510260,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_RotationDampingConstantPitch_00510286,
(float *)(param_4 + 0x15c));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x15c)))
{
local_58 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_RotationDampingConstantP_005102a3,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_RotationDampingConstantYaw_005102cb,
(float *)(param_4 + 0x158));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x158)))
{
local_5c = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_RotationDampingConstantY_005102e6,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_RotationDampingConstantRoll_0051030c,
(float *)(param_4 + 0x154));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x154)))
{
local_60 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_RotationDampingConstantR_00510328,
(char *)0x0);
uVar4 = 0;
}
else {
local_64 = -1.0;
iVar3 = FUN_00404118(param_5,param_3,
s_RotationNegSpringPitch_0051034f,&local_64);
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x16c)))
{
local_68 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_RotationNegSpringPitch__00510366,
(char *)0x0);
uVar4 = 0;
}
else {
if (local_64 != _DAT_004b5b20) {
local_6c = local_64;
local_70 = local_64;
*(float *)(param_4 + 0x16c) =
local_64 * _DAT_004b5b24;
}
local_64 = -1.0;
iVar3 = FUN_00404118(param_5,param_3,
s_RotationNegSpringYaw_00510388,&local_64);
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x170)))
{
local_74 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_RotationNegSpringYaw__0051039d,
(char *)0x0);
uVar4 = 0;
}
else {
if (local_64 != _DAT_004b5b20) {
local_78 = local_64;
local_7c = local_64;
*(float *)(param_4 + 0x170) =
local_64 * _DAT_004b5b24;
}
local_64 = -1.0;
iVar3 = FUN_00404118(param_5,param_3,
s_RotationNegSpringRoll_005103bd,&local_64);
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x174)))
{
local_80 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_RotationNegSpringRoll__005103d3,
(char *)0x0);
uVar4 = 0;
}
else {
if (local_64 != _DAT_004b5b20) {
local_84 = local_64;
local_88 = local_64;
*(float *)(param_4 + 0x174) =
local_64 * _DAT_004b5b24;
}
local_64 = -1.0;
iVar3 = FUN_00404118(param_5,param_3,
s_RotationPosSpringPitch_005103f4,&local_64);
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x160)))
{
local_8c = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_RotationPosSpringPitch__0051040b,
(char *)0x0);
uVar4 = 0;
}
else {
if (local_64 != _DAT_004b5b20) {
local_90 = local_64;
local_94 = local_64;
*(float *)(param_4 + 0x160) =
local_64 * _DAT_004b5b24;
}
local_64 = -1.0;
iVar3 = FUN_00404118(param_5,param_3,
s_RotationPosSpringYaw_0051042d,&local_64);
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x164)))
{
local_98 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_RotationPosSpringYaw__00510442,
(char *)0x0);
uVar4 = 0;
}
else {
if (local_64 != _DAT_004b5b20) {
local_9c = local_64;
local_a0 = local_64;
*(float *)(param_4 + 0x164) =
local_64 * _DAT_004b5b24;
}
local_64 = -1.0;
iVar3 = FUN_00404118(param_5,param_3,
s_RotationPosSpringRoll_00510462,&local_64);
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x168)))
{
local_a4 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_RotationPosSpringRoll__00510478,
(char *)0x0);
uVar4 = 0;
}
else {
if (local_64 != _DAT_004b5b20) {
local_a8 = local_64;
local_ac = local_64;
*(float *)(param_4 + 0x168) =
local_64 * _DAT_004b5b24;
}
iVar3 = FUN_00404118(param_5,param_3,
s_CollisionDamageMultiplier_00510499,
(float *)(param_4 + 0x1b8));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1b8)))
{
local_b0 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_CollisionDamageMultiplie_005104b3,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_BallisticDamageMultiplier_005104d8,
(float *)(param_4 + 0x1bc));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1bc)))
{
local_b4 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_BallisticDamageMultiplie_005104f2,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_ExplosiveDamageMultiplier_00510517,
(float *)(param_4 + 0x1c0));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1c0)))
{
local_b8 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_ExplosiveDamageMultiplie_00510531,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_LaserDamageMultiplier_00510556,
(float *)(param_4 + 0x1c4));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1c4)))
{
local_bc = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_LaserDamageMultiplier__0051056c,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_EnergyDamageMultiplier_0051058d,
(float *)(param_4 + 0x1c8));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1c8)))
{
local_c0 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_EnergyDamageMultiplier__005105a4,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_CollisionDamageTrans_005105c6,
(float *)(param_4 + 0x1cc));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1cc)))
{
local_c4 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_CollisionDamageTrans__005105db,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_CollisionDamagePitchRoll_005105fb,
(float *)(param_4 + 0x1d0));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1d0)))
{
local_c8 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_CollisionDamagePitchRoll_00510614,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_CollisionDamageYaw_00510638,
(float *)(param_4 + 0x1d4));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1d4)))
{
local_cc = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_CollisionDamageYaw__0051064b,(char *)0x0
);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_CollisionDamageVibration_00510669,
(float *)(param_4 + 0x1d8));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1d8)))
{
local_d0 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_CollisionDamageVibration_00510682,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_BallisticDamageTrans_005106a6,
(float *)(param_4 + 0x1dc));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1dc)))
{
local_d4 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_BallisticDamageTrans__005106bb,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_BallisticDamagePitchRoll_005106db,
(float *)(param_4 + 0x1e0));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1e0)))
{
local_d8 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_BallisticDamagePitchRoll_005106f4,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_BallisticDamageYaw_00510718,
(float *)(param_4 + 0x1e4));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1e4)))
{
local_dc = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_BallisticDamageYaw__0051072b,(char *)0x0
);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_BallisticDamageVibration_00510749,
(float *)(param_4 + 0x1e8));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1e8)))
{
local_e0 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_BallisticDamageVibration_00510762,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_ExplosiveDamageTrans_00510786,
(float *)(param_4 + 0x1ec));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1ec)))
{
local_e4 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_ExplosiveDamageTrans__0051079b,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_ExplosiveDamagePitchRoll_005107bb,
(float *)(param_4 + 0x1f0));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1f0)))
{
local_e8 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_ExplosiveDamagePitchRoll_005107d4,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_ExplosiveDamageYaw_005107f8,
(float *)(param_4 + 500));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 500))) {
local_ec = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_ExplosiveDamageYaw__0051080b,(char *)0x0
);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_ExplosiveDamageVibration_00510829,
(float *)(param_4 + 0x1f8));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1f8)))
{
local_f0 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_ExplosiveDamageVibration_00510842,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_LaserDamageTrans_00510866
,(float *)(param_4 + 0x1fc)
);
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x1fc)
)) {
local_f4 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_LaserDamageTrans__00510877,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_LaserDamagePitchRoll_00510893,
(float *)(param_4 + 0x200));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x200)))
{
local_f8 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_LaserDamagePitchRoll__005108a8,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_LaserDamageYaw_005108c8,
(float *)(param_4 + 0x204))
;
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x204)
)) {
local_fc = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_LaserDamageYaw__005108d7,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_LaserDamageVibration_005108f1,
(float *)(param_4 + 0x208));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x208)))
{
local_100 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_LaserDamageVibration__00510906,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_EnergyDamageTrans_00510926,
(float *)(param_4 + 0x20c));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x20c)))
{
local_104 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_EnergyDamageTrans__00510938,(char *)0x0)
;
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_EnergyDamagePitchRoll_00510955,
(float *)(param_4 + 0x210));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x210)))
{
local_108 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_EnergyDamagePitchRoll__0051096b,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_EnergyDamageYaw_0051098c,
(float *)(param_4 + 0x214))
;
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x214)
)) {
local_10c = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_EnergyDamageYaw__0051099c,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,
s_EnergyDamageVibration_005109b7,
(float *)(param_4 + 0x218));
if ((iVar3 == 0) &&
(_DAT_004b5b20 == *(float *)(param_4 + 0x218)))
{
local_110 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_EnergyDamageVibration__005109cd,
(char *)0x0);
uVar4 = 0;
}
else {
local_114 = s_Unspecified_005109ee;
iVar3 = FUN_00404088(param_5,param_3,
s_EyeJoint_005109fa,
&local_114);
if (iVar3 == 0) {
pcVar10 = s_Unspecified_00510a03;
pcVar5 = local_114;
do {
bVar11 = *pcVar5 == *pcVar10;
if (!bVar11) break;
if (*pcVar5 == '\0') goto LAB_004b5837;
pcVar1 = pcVar5 + 1;
bVar11 = *pcVar1 == pcVar10[1];
if (!bVar11) break;
pcVar5 = pcVar5 + 2;
pcVar10 = pcVar10 + 2;
bVar11 = *pcVar1 == '\0';
} while (!bVar11);
if (!bVar11) {
local_118 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_EyeJoint__00510a0f,
(char *)0x0);
return 0;
}
}
LAB_004b5837:
pcVar10 = s_Unspecified_00510a23;
pcVar5 = local_114;
do {
bVar11 = *pcVar5 == *pcVar10;
if (!bVar11) break;
if (*pcVar5 == '\0') goto LAB_004b5891;
pcVar1 = pcVar5 + 1;
bVar11 = *pcVar1 == pcVar10[1];
if (!bVar11) break;
pcVar5 = pcVar5 + 2;
pcVar10 = pcVar10 + 2;
bVar11 = *pcVar1 == '\0';
} while (!bVar11);
if (!bVar11) {
uVar8 = 0xffffffff;
pcVar5 = local_114;
do {
pcVar10 = pcVar5;
if (uVar8 == 0) break;
uVar8 = uVar8 - 1;
pcVar10 = pcVar5 + 1;
cVar2 = *pcVar5;
pcVar5 = pcVar10;
} while (cVar2 != '\0');
uVar8 = ~uVar8;
pcVar5 = pcVar10 + -uVar8;
pcVar10 = param_4 + 0x178;
for (uVar9 = uVar8 >> 2; uVar9 != 0;
uVar9 = uVar9 - 1) {
*(undefined4 *)pcVar10 =
*(undefined4 *)pcVar5;
pcVar5 = pcVar5 + 4;
pcVar10 = pcVar10 + 4;
}
for (uVar8 = uVar8 & 3; uVar8 != 0;
uVar8 = uVar8 - 1) {
*pcVar10 = *pcVar5;
pcVar5 = pcVar5 + 1;
pcVar10 = pcVar10 + 1;
}
}
LAB_004b5891:
local_11c = s_Unspecified_00510a2f;
iVar3 = FUN_00404088(param_5,param_3,
s_MechJoint_00510a3b,
&local_11c);
if (iVar3 == 0) {
pcVar10 = s_Unspecified_00510a45;
pcVar5 = local_11c;
do {
bVar11 = *pcVar5 == *pcVar10;
if (!bVar11) break;
if (*pcVar5 == '\0') goto LAB_004b5915;
pcVar1 = pcVar5 + 1;
bVar11 = *pcVar1 == pcVar10[1];
if (!bVar11) break;
pcVar5 = pcVar5 + 2;
pcVar10 = pcVar10 + 2;
bVar11 = *pcVar1 == '\0';
} while (!bVar11);
if (!bVar11) {
local_120 = param_3;
FUN_004dbb24((int *)&DAT_00524e68,param_3,
(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_MechJoint__00510a51,
(char *)0x0);
return 0;
}
}
LAB_004b5915:
pcVar10 = s_Unspecified_00510a66;
pcVar5 = local_11c;
do {
bVar11 = *pcVar5 == *pcVar10;
if (!bVar11) break;
if (*pcVar5 == '\0') goto LAB_004b596b;
pcVar1 = pcVar5 + 1;
bVar11 = *pcVar1 == pcVar10[1];
if (!bVar11) break;
pcVar5 = pcVar5 + 2;
pcVar10 = pcVar10 + 2;
bVar11 = *pcVar1 == '\0';
} while (!bVar11);
if (!bVar11) {
uVar8 = 0xffffffff;
pcVar5 = local_11c;
do {
pcVar10 = pcVar5;
if (uVar8 == 0) break;
uVar8 = uVar8 - 1;
pcVar10 = pcVar5 + 1;
cVar2 = *pcVar5;
pcVar5 = pcVar10;
} while (cVar2 != '\0');
uVar8 = ~uVar8;
pcVar5 = pcVar10 + -uVar8;
pcVar10 = param_4 + 0x198;
for (uVar9 = uVar8 >> 2; uVar9 != 0;
uVar9 = uVar9 - 1) {
*(undefined4 *)pcVar10 =
*(undefined4 *)pcVar5;
pcVar5 = pcVar5 + 4;
pcVar10 = pcVar10 + 4;
}
for (uVar8 = uVar8 & 3; uVar8 != 0;
uVar8 = uVar8 - 1) {
*pcVar10 = *pcVar5;
pcVar5 = pcVar5 + 1;
pcVar10 = pcVar10 + 1;
}
}
LAB_004b596b:
iVar3 = FUN_00404088(param_1,s_video_00510a72,
s_skeleton_00510a78,
&local_124);
if (iVar3 == 0) {
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0
);
FUN_004dbb24(&DAT_00524e20,
s_is_missing_skeleton_file__00510a81,(char *)0x0);
uVar4 = 0xffffffff;
}
else {
piVar6 = (int *)FUN_004064fc(*(char **)(param_6
+ 0x10),local_124);
piVar7 = (int *)FUN_00402298(0x20);
if (piVar7 == (int *)0x0) {
piVar7 = (int *)0x0;
}
else {
piVar7 = FUN_00403e84(piVar7,(char *)piVar6,1);
}
iVar3 = FUN_00403f84((int)piVar7,param_4 + 0x178);
if (iVar3 == 0) {
FUN_004dbb24(&DAT_00524e20,param_4 + 0x178,
(char *)0x0);
FUN_004dbb24(&DAT_00524e20,
s_not_found_in_00510a9d,(char *)0x0
);
FUN_004dbb24(&DAT_00524e20,local_124,(char *)0x0
);
FUN_004d9c38(&DAT_00524e20);
}
else {
iVar3 = FUN_00403f84((int)piVar7,param_4 + 0x198
);
if (iVar3 != 0) {
FUN_004022d0(piVar6);
FUN_00403ecc(piVar7,3);
return 1;
}
FUN_004dbb24(&DAT_00524e20,param_4 + 0x198,
(char *)0x0);
FUN_004dbb24(&DAT_00524e20,
s_not_found_in_00510aac,(char *)0x0
);
FUN_004dbb24(&DAT_00524e20,local_124,(char *)0x0
);
FUN_004d9c38(&DAT_00524e20);
}
FUN_004022d0(piVar6);
FUN_00403ecc(piVar7,3);
uVar4 = 0xffffffff;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
return uVar4;
}
/* @004b5be0 file=? name=FUN_004b5be0 */
void __cdecl FUN_004b5be0(int *param_1,int *param_2)
{
FUN_004b179c(param_1,param_2);
return;
}
/* @004b5bf8 file=? name=FUN_004b5bf8 */
void __cdecl FUN_004b5bf8(int *param_1,int param_2)
{
undefined4 local_10 [3];
FUN_004b1804(param_1);
if (param_2 != 0) {
param_1[0x91] = param_1[0x8f];
param_1[0x92] = param_1[0x90];
param_1[0x96] = 0;
param_1[0x97] = 0;
param_1[0x98] = 0;
param_1[0x99] = 0;
}
param_1[0x7e] = 0;
param_1[0x7f] = 0;
param_1[0x80] = 0;
param_1[0x81] = 0;
param_1[0x82] = 0;
param_1[0x7c] = 0;
param_1[0x7d] = 0;
param_1[0x76] = 0;
param_1[0x79] = 0;
param_1[0x7a] = 0;
param_1[0x7b] = 0;
param_1[0x87] = 0;
param_1[0x86] = 0;
param_1[0x8e] = 0;
param_1[0x9c] = 0;
param_1[0x9d] = 0;
FUN_004b66b4((int)param_1,local_10);
return;
}
/* @004b5cf0 file=? name=FUN_004b5cf0 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004b5cf0(int param_1,float param_2)
{
float fVar1;
float fVar2;
int iVar3;
float fVar4;
float fVar5;
float fVar6;
bool bVar7;
undefined3 extraout_var;
undefined4 *puVar8;
float10 fVar9;
float local_90;
FUN_004b181c(param_1);
fVar1 = *(float *)(param_1 + 0x1d8);
fVar2 = *(float *)(param_1 + 0x1e4);
*(undefined4 *)(param_1 + 0x244) = *(undefined4 *)(param_1 + 0x23c);
*(undefined4 *)(param_1 + 0x248) = *(undefined4 *)(param_1 + 0x240);
if (*(int *)(param_1 + 0x40) == 1) {
*(undefined4 *)(param_1 + 0x244) = 0;
}
if (*(int *)(param_1 + 0x198) != 4) {
*(undefined4 *)(param_1 + 0x244) = 0;
}
iVar3 = *(int *)(param_1 + 0x140);
if (iVar3 != 0) {
if (iVar3 == 1) {
*(float *)(param_1 + 0x244) = _DAT_004b64f8 * *(float *)(param_1 + 0x23c);
}
else if (iVar3 == 2) {
*(undefined4 *)(param_1 + 0x244) = 0;
}
}
fVar4 = *(float *)(param_1 + 0x244) * param_2;
fVar5 = *(float *)(param_1 + 0x248) * param_2;
if (*(int *)(param_1 + 0x268) == 0) {
*(undefined4 *)(param_1 + 0x26c) = *(undefined4 *)(param_1 + 0x214);
}
else {
*(float *)(param_1 + 0x26c) =
*(float *)(param_1 + 0x210) * param_2 + *(float *)(param_1 + 0x26c);
fVar6 = _DAT_004b64fc;
if (*(float *)(param_1 + 0x26c) <= _DAT_004b64fc) {
fVar6 = *(float *)(param_1 + 0x26c);
}
*(float *)(param_1 + 0x26c) = fVar6;
*(undefined4 *)(param_1 + 0x268) = 0;
}
*(undefined4 *)(param_1 + 0x26c) = 0x3f800000;
if (0 < *(int *)(param_1 + 0x1f8)) {
*(float *)(param_1 + 0x1e4) = fVar5 * *(float *)(param_1 + 0x26c) + *(float *)(param_1 + 0x1e4);
if (*(float *)(param_1 + 0x1e4) <= *(float *)(param_1 + 0x220)) {
puVar8 = (undefined4 *)(param_1 + 0x1e4);
}
else {
puVar8 = (undefined4 *)(param_1 + 0x220);
}
*(undefined4 *)(param_1 + 0x1e4) = *puVar8;
*(undefined4 *)(param_1 + 0x268) = 1;
}
if (0 < *(int *)(param_1 + 0x1fc)) {
*(float *)(param_1 + 0x1e4) = *(float *)(param_1 + 0x1e4) - fVar5 * *(float *)(param_1 + 0x26c);
if (*(float *)(param_1 + 0x224) <= *(float *)(param_1 + 0x1e4)) {
puVar8 = (undefined4 *)(param_1 + 0x1e4);
}
else {
puVar8 = (undefined4 *)(param_1 + 0x224);
}
*(undefined4 *)(param_1 + 0x1e4) = *puVar8;
*(undefined4 *)(param_1 + 0x268) = 1;
}
if (0 < *(int *)(param_1 + 0x200)) {
*(float *)(param_1 + 0x1d8) = fVar4 * *(float *)(param_1 + 0x26c) + *(float *)(param_1 + 0x1d8);
if (*(float *)(param_1 + 0x1d8) <= *(float *)(param_1 + 0x1e0)) {
puVar8 = (undefined4 *)(param_1 + 0x1d8);
}
else {
puVar8 = (undefined4 *)(param_1 + 0x1e0);
}
*(undefined4 *)(param_1 + 0x1d8) = *puVar8;
*(undefined4 *)(param_1 + 0x274) = 0;
*(undefined4 *)(param_1 + 0x268) = 1;
}
if (0 < *(int *)(param_1 + 0x204)) {
*(float *)(param_1 + 0x1d8) = *(float *)(param_1 + 0x1d8) - fVar4 * *(float *)(param_1 + 0x26c);
if (*(float *)(param_1 + 0x1dc) <= *(float *)(param_1 + 0x1d8)) {
puVar8 = (undefined4 *)(param_1 + 0x1d8);
}
else {
puVar8 = (undefined4 *)(param_1 + 0x1dc);
}
*(undefined4 *)(param_1 + 0x1d8) = *puVar8;
*(undefined4 *)(param_1 + 0x274) = 0;
*(undefined4 *)(param_1 + 0x268) = 1;
}
if (0 < *(int *)(param_1 + 0x208)) {
*(undefined4 *)(param_1 + 0x274) = 1;
*(undefined4 *)(param_1 + 0x268) = 0;
}
if (*(float *)(param_1 + 0x1f0) != _DAT_004b6500) {
*(float *)(param_1 + 0x1d8) = *(float *)(param_1 + 0x1f0) * fVar4 + *(float *)(param_1 + 0x1d8);
if (*(float *)(param_1 + 0x1d8) <= *(float *)(param_1 + 0x1e0)) {
puVar8 = (undefined4 *)(param_1 + 0x1d8);
}
else {
puVar8 = (undefined4 *)(param_1 + 0x1e0);
}
*(undefined4 *)(param_1 + 0x1d8) = *puVar8;
if (*(float *)(param_1 + 0x1dc) <= *(float *)(param_1 + 0x1d8)) {
puVar8 = (undefined4 *)(param_1 + 0x1d8);
}
else {
puVar8 = (undefined4 *)(param_1 + 0x1dc);
}
*(undefined4 *)(param_1 + 0x1d8) = *puVar8;
*(undefined4 *)(param_1 + 0x274) = 0;
}
if (*(float *)(param_1 + 500) != _DAT_004b6500) {
*(float *)(param_1 + 0x1e4) = *(float *)(param_1 + 500) * fVar5 + *(float *)(param_1 + 0x1e4);
if (*(float *)(param_1 + 0x1e4) <= *(float *)(param_1 + 0x220)) {
puVar8 = (undefined4 *)(param_1 + 0x1e4);
}
else {
puVar8 = (undefined4 *)(param_1 + 0x220);
}
*(undefined4 *)(param_1 + 0x1e4) = *puVar8;
if (*(float *)(param_1 + 0x224) <= *(float *)(param_1 + 0x1e4)) {
puVar8 = (undefined4 *)(param_1 + 0x1e4);
}
else {
puVar8 = (undefined4 *)(param_1 + 0x224);
}
*(undefined4 *)(param_1 + 0x1e4) = *puVar8;
}
if (*(int *)(param_1 + 0x274) != 0) {
bVar7 = FUN_004b6918(param_1,param_2);
*(uint *)(param_1 + 0x274) = CONCAT31(extraout_var,bVar7);
}
local_90 = *(float *)(param_1 + 0x238);
if (_DAT_004b6500 < param_2) {
*(float *)(param_1 + 0x1e8) = (*(float *)(param_1 + 0x1d8) - fVar1) / param_2;
*(float *)(param_1 + 0x1ec) = (*(float *)(param_1 + 0x1e4) - fVar2) / param_2;
*(undefined4 *)(param_1 + 0x238) = *(undefined4 *)(param_1 + 0x1e8);
if (*(float *)(param_1 + 0x1e8) <= _DAT_004b6500) {
fVar1 = -*(float *)(param_1 + 0x1e8);
}
else {
fVar1 = *(float *)(param_1 + 0x1e8);
}
*(float *)(param_1 + 0x1e8) = fVar1;
if (*(float *)(param_1 + 0x1ec) <= _DAT_004b6500) {
fVar1 = -*(float *)(param_1 + 0x1ec);
}
else {
fVar1 = *(float *)(param_1 + 0x1ec);
}
*(float *)(param_1 + 0x1ec) = fVar1;
}
fVar9 = FUN_004dcd00((double)*(float *)(param_1 + 0x238));
if (fVar9 <= (float10)_DAT_004b6504) {
*(undefined4 *)(param_1 + 0x238) = 0;
}
fVar9 = FUN_004dcd00((double)local_90);
if (fVar9 <= (float10)_DAT_004b6504) {
local_90 = 0.0;
}
FUN_004b6510(param_1);
fVar1 = *(float *)(param_1 + 0x1d8) - *(float *)(param_1 + 0x218);
bVar7 = false;
if ((*(float *)(param_1 + 0x238) == _DAT_004b6500) && (local_90 != _DAT_004b6500)) {
bVar7 = true;
}
local_90 = *(float *)(param_1 + 0x238) - local_90;
if (fVar1 <= _DAT_004b6500) {
fVar1 = -fVar1;
}
if (fVar1 <= _DAT_004b6508) {
if (local_90 <= _DAT_004b6500) {
local_90 = -local_90;
}
if ((local_90 <= _DAT_004b650c) && (!bVar7)) goto LAB_004b6318;
}
*(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1;
LAB_004b6318:
*(undefined4 *)(param_1 + 0x20c) = 0;
fVar9 = FUN_004dcd00((double)(*(float *)(param_1 + 0x1d8) - *(float *)(param_1 + 0x1e0)));
if ((float10)_DAT_004b6504 < fVar9) {
*(undefined4 *)(param_1 + 0x260) = 0;
}
else if (*(int *)(param_1 + 0x260) == 0) {
*(undefined4 *)(param_1 + 0x260) = 1;
*(undefined4 *)(param_1 + 0x20c) = 2;
}
fVar9 = FUN_004dcd00((double)(*(float *)(param_1 + 0x1d8) - *(float *)(param_1 + 0x1dc)));
if ((float10)_DAT_004b6504 < fVar9) {
*(undefined4 *)(param_1 + 0x264) = 0;
}
else if (*(int *)(param_1 + 0x264) == 0) {
*(undefined4 *)(param_1 + 0x264) = 1;
*(undefined4 *)(param_1 + 0x20c) = 2;
}
fVar9 = FUN_004dcd00((double)(*(float *)(param_1 + 0x1e4) - *(float *)(param_1 + 0x220)));
if ((float10)_DAT_004b6504 < fVar9) {
*(undefined4 *)(param_1 + 600) = 0;
}
else if (*(int *)(param_1 + 600) == 0) {
*(undefined4 *)(param_1 + 600) = 1;
*(undefined4 *)(param_1 + 0x20c) = 2;
}
fVar9 = FUN_004dcd00((double)(*(float *)(param_1 + 0x1e4) - *(float *)(param_1 + 0x224)));
if ((float10)_DAT_004b6504 < fVar9) {
*(undefined4 *)(param_1 + 0x25c) = 0;
}
else if (*(int *)(param_1 + 0x25c) == 0) {
*(undefined4 *)(param_1 + 0x25c) = 1;
*(undefined4 *)(param_1 + 0x20c) = 2;
}
if (*(int *)(param_1 + 0x274) != 0) {
*(undefined4 *)(param_1 + 0x20c) = 1;
}
return;
}
/* @004b6510 file=? name=FUN_004b6510 */
undefined4 __cdecl FUN_004b6510(int param_1)
{
undefined4 *puVar1;
int iVar2;
undefined4 uVar3;
undefined4 local_8;
if ((*(int *)(param_1 + 0x24c) == 0) || (*(int *)(param_1 + 0x254) <= *(int *)(param_1 + 0x10))) {
iVar2 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x14);
uVar3 = 0;
}
else {
iVar2 = *(int *)(param_1 + 0x254) - *(int *)(param_1 + 0x14);
uVar3 = 1;
}
local_8 = (float)iVar2 / DAT_0052140c;
*(float *)(param_1 + 0x218) = *(float *)(param_1 + 0x21c) + *(float *)(param_1 + 0x238) * local_8;
if (*(float *)(param_1 + 0x218) <= *(float *)(param_1 + 0x1e0)) {
puVar1 = (undefined4 *)(param_1 + 0x218);
}
else {
puVar1 = (undefined4 *)(param_1 + 0x1e0);
}
*(undefined4 *)(param_1 + 0x218) = *puVar1;
if (*(float *)(param_1 + 0x1dc) <= *(float *)(param_1 + 0x218)) {
puVar1 = (undefined4 *)(param_1 + 0x218);
}
else {
puVar1 = (undefined4 *)(param_1 + 0x1dc);
}
*(undefined4 *)(param_1 + 0x218) = *puVar1;
return uVar3;
}
/* @004b65f8 file=? name=FUN_004b65f8 */
void __cdecl FUN_004b65f8(int param_1,float param_2)
{
int iVar1;
undefined4 *puVar2;
iVar1 = FUN_004b6510(param_1);
if (iVar1 == 0) {
*(undefined4 *)(param_1 + 0x1d8) = *(undefined4 *)(param_1 + 0x218);
}
else {
FUN_004081e0((float *)(param_1 + 0x1d8),(float *)(param_1 + 0x1d8),(float *)(param_1 + 0x218),
param_2 / ((float)(*(int *)(param_1 + 0x254) - *(int *)(param_1 + 0x10)) /
DAT_0052140c + param_2));
}
if (*(float *)(param_1 + 0x218) <= *(float *)(param_1 + 0x1e0)) {
puVar2 = (undefined4 *)(param_1 + 0x218);
}
else {
puVar2 = (undefined4 *)(param_1 + 0x1e0);
}
*(undefined4 *)(param_1 + 0x218) = *puVar2;
if (*(float *)(param_1 + 0x1dc) <= *(float *)(param_1 + 0x218)) {
puVar2 = (undefined4 *)(param_1 + 0x218);
}
else {
puVar2 = (undefined4 *)(param_1 + 0x1dc);
}
*(undefined4 *)(param_1 + 0x218) = *puVar2;
return;
}
/* @004b66b4 file=? name=FUN_004b66b4 */
void __cdecl FUN_004b66b4(int param_1,undefined4 *param_2)
{
uint uVar1;
float *pfVar2;
float local_2c;
undefined4 local_28;
float local_24;
float local_20;
undefined4 local_1c;
float local_18;
undefined4 local_14;
float local_10;
undefined4 local_c;
float local_8;
*param_2 = *(undefined4 *)(param_1 + 0x1e4);
if (*(int *)(param_1 + 0x250) != 0) {
uVar1 = *(uint *)(*(int *)(param_1 + 0x278) + 0x10);
if (uVar1 < 3) {
local_c = **(undefined4 **)(*(int *)(param_1 + 0x278) + 0xc);
local_8 = *(float *)(param_1 + 0x1d8);
FUN_0041d0a8(*(int *)(param_1 + 0x278),&local_8);
}
else if (uVar1 - 4 < 2) {
pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x278));
local_20 = *pfVar2;
local_18 = pfVar2[2];
local_1c = *(undefined4 *)(param_1 + 0x1d8);
FUN_0041d020(*(int *)(param_1 + 0x278),&local_20);
}
uVar1 = *(uint *)(*(int *)(param_1 + 0x27c) + 0x10);
if (uVar1 < 3) {
local_14 = **(undefined4 **)(*(int *)(param_1 + 0x27c) + 0xc);
local_10 = *(float *)(param_1 + 0x1d8);
FUN_0041d0a8(*(int *)(param_1 + 0x27c),&local_10);
}
else if (uVar1 - 4 < 2) {
pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x27c));
local_2c = *pfVar2;
local_24 = pfVar2[2];
local_28 = *(undefined4 *)(param_1 + 0x1d8);
FUN_0041d020(*(int *)(param_1 + 0x27c),&local_2c);
}
}
return;
}
/* @004b67ec file=? name=FUN_004b67ec */
void __cdecl FUN_004b67ec(int param_1)
{
uint uVar1;
float *pfVar2;
float local_2c;
undefined4 local_28;
float local_24;
float local_20;
undefined4 local_1c;
float local_18;
undefined4 local_14;
float local_10;
undefined4 local_c;
float local_8;
if (*(int *)(param_1 + 0x250) != 0) {
uVar1 = *(uint *)(*(int *)(param_1 + 0x278) + 0x10);
if (uVar1 < 3) {
local_c = **(undefined4 **)(*(int *)(param_1 + 0x278) + 0xc);
local_8 = *(float *)(param_1 + 0x1d8);
FUN_0041d0a8(*(int *)(param_1 + 0x278),&local_8);
}
else if (uVar1 - 4 < 2) {
pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x278));
local_20 = *pfVar2;
local_18 = pfVar2[2];
local_1c = *(undefined4 *)(param_1 + 0x1d8);
FUN_0041d020(*(int *)(param_1 + 0x278),&local_20);
}
uVar1 = *(uint *)(*(int *)(param_1 + 0x27c) + 0x10);
if (uVar1 < 3) {
local_14 = **(undefined4 **)(*(int *)(param_1 + 0x27c) + 0xc);
local_10 = *(float *)(param_1 + 0x1d8);
FUN_0041d0a8(*(int *)(param_1 + 0x27c),&local_10);
}
else if (uVar1 - 4 < 2) {
pfVar2 = (float *)FUN_0041cfa0(*(int *)(param_1 + 0x27c));
local_2c = *pfVar2;
local_24 = pfVar2[2];
local_28 = *(undefined4 *)(param_1 + 0x1d8);
FUN_0041d020(*(int *)(param_1 + 0x27c),&local_2c);
}
}
return;
}
/* @004b6918 file=? name=FUN_004b6918 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
bool __cdecl FUN_004b6918(int param_1,float param_2)
{
undefined4 *puVar1;
float10 fVar2;
undefined4 local_20;
undefined4 local_1c;
float local_18;
undefined4 local_14;
undefined4 local_10;
float local_c;
float local_8;
local_8 = *(float *)(param_1 + 0x244) * param_2;
if (_DAT_004b6a14 < *(float *)(param_1 + 0x1d8)) {
local_c = local_8;
*(float *)(param_1 + 0x1d8) = *(float *)(param_1 + 0x1d8) - local_8;
local_10 = 0;
if (0.0 <= *(float *)(param_1 + 0x1d8)) {
puVar1 = (undefined4 *)(param_1 + 0x1d8);
}
else {
local_14 = 0;
puVar1 = &local_14;
}
*(undefined4 *)(param_1 + 0x1d8) = *puVar1;
}
if (*(float *)(param_1 + 0x1d8) < _DAT_004b6a14) {
local_18 = local_8;
*(float *)(param_1 + 0x1d8) = local_8 + *(float *)(param_1 + 0x1d8);
local_1c = 0;
if (*(float *)(param_1 + 0x1d8) <= 0.0) {
puVar1 = (undefined4 *)(param_1 + 0x1d8);
}
else {
local_20 = 0;
puVar1 = &local_20;
}
*(undefined4 *)(param_1 + 0x1d8) = *puVar1;
}
fVar2 = FUN_004dcd00((double)(*(float *)(param_1 + 0x1d8) - _DAT_004b6a14));
return (float10)_DAT_004b6a18 < fVar2;
}
/* @004b6a1c file=? name=FUN_004b6a1c */
void __cdecl FUN_004b6a1c(int param_1,undefined4 *param_2,undefined2 param_3)
{
FUN_0041c500(param_1,param_2,param_3);
*param_2 = 0x1c;
param_2[4] = *(undefined4 *)(param_1 + 0x1d8);
param_2[5] = *(undefined4 *)(param_1 + 0x1e8);
param_2[6] = *(undefined4 *)(param_1 + 0x238);
*(undefined4 *)(param_1 + 0x21c) = *(undefined4 *)(param_1 + 0x1d8);
return;
}
/* @004b6a78 file=? name=FUN_004b6a78 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004b6a78(int param_1,int param_2)
{
undefined4 *puVar1;
puVar1 = (undefined4 *)FUN_00414b60();
*(undefined4 *)(param_1 + 0x254) = *puVar1;
if ((float)(*(int *)(param_1 + 0x254) - *(int *)(param_1 + 0x14)) / DAT_0052140c < _DAT_004b6b08)
{
*(int *)(param_1 + 0x254) =
*(int *)(param_1 + 0x254) + (*(int *)(param_1 + 0x254) - *(int *)(param_1 + 0x14));
}
FUN_0041bd34(param_1,param_2);
*(undefined4 *)(param_1 + 0x21c) = *(undefined4 *)(param_2 + 0x10);
*(undefined4 *)(param_1 + 0x1e8) = *(undefined4 *)(param_2 + 0x14);
*(undefined4 *)(param_1 + 0x238) = *(undefined4 *)(param_2 + 0x18);
return;
}
/* @004b6b0c file=? name=FUN_004b6b0c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
int * __cdecl FUN_004b6b0c(int *param_1,int param_2,undefined4 param_3,char *param_4)
{
uint *puVar1;
int iVar2;
int local_cc [7];
int local_b0 [10];
uint *local_88;
uint *local_84;
undefined4 local_80;
int local_7c;
uint *local_78;
char *local_74;
uint *local_70;
undefined4 local_6c;
int local_68;
int local_64;
undefined4 local_60;
uint *local_5c;
char *local_58;
uint *local_54;
float local_50;
int *local_4c;
int *local_48;
int *local_44;
int *local_40;
int *local_3c;
int *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;
FUN_004b18a4(param_1,param_2,param_3,param_4,&DAT_00510af8);
*param_1 = (int)&PTR_FUN_0051103c;
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(byte *)(param_2 + 0x29) & 1) != 0)) {
param_1[0x93] = 0;
param_1[7] = (int)PTR_FUN_00510c10;
param_1[8] = DAT_00510c14;
param_1[9] = DAT_00510c18;
}
else {
param_1[0x93] = 1;
param_1[7] = (int)PTR_FUN_00510c1c;
param_1[8] = DAT_00510c20;
param_1[9] = DAT_00510c24;
}
param_1[0x83] = 0;
param_1[0x84] = *(int *)(param_4 + 0x150);
param_1[0x85] = *(int *)(param_4 + 0x154);
local_c = *(float *)(param_4 + 0xf4);
param_1[0x8f] = (int)(local_c * _DAT_004b6fb8);
local_14 = *(float *)(param_4 + 0xf8);
param_1[0x90] = (int)(local_14 * _DAT_004b6fb8);
local_1c = *(float *)(param_4 + 0xfc);
param_1[0x77] = (int)(local_1c * _DAT_004b6fb8);
local_24 = *(float *)(param_4 + 0x100);
param_1[0x78] = (int)(local_24 * _DAT_004b6fb8);
local_2c = *(float *)(param_4 + 0x104);
param_1[0x88] = (int)(local_2c * _DAT_004b6fb8);
local_34 = *(float *)(param_4 + 0x108);
param_1[0x89] = (int)(local_34 * _DAT_004b6fb8);
local_38 = param_1 + 0x88;
local_3c = param_1 + 0x8c;
local_40 = param_1 + 0x89;
*local_3c = *local_38;
local_44 = param_1 + 0x8d;
local_48 = param_1 + 0x88;
*local_44 = *local_40;
local_4c = param_1 + 0x8a;
*local_4c = *local_48;
local_50 = (float)param_1[0x89] * _DAT_004b6fbc;
param_1[0x8b] = (int)local_50;
param_1[0x9a] = 0;
param_1[0x9b] = 0;
param_1[0x94] = *(int *)(param_4 + 0x14c);
if (param_1[0x94] != 0) {
local_58 = param_4 + 0x10c;
local_30 = local_34;
local_28 = local_2c;
local_20 = local_24;
local_18 = local_1c;
local_10 = local_14;
local_8 = local_c;
local_5c = (uint *)FUN_00402298(0x10);
if (local_5c == (uint *)0x0) {
local_54 = (uint *)0x0;
}
else {
local_54 = FUN_00402460(local_5c,local_58);
}
local_54[3] = local_54[3] + 1;
local_64 = FUN_00417ab4(param_2 + 0x31c);
local_54[3] = local_54[3] + 1;
local_68 = FUN_00424b60(param_2,(int *)local_54);
local_6c = *(undefined4 *)(local_68 + 0xc0);
local_60 = local_6c;
FUN_0041d3b3(local_b0,local_64 + 0xe4);
iVar2 = (**(code **)(local_b0[0] + 0x34))(local_b0,local_6c);
FUN_0041d3d2(local_b0,2);
local_74 = param_4 + 300;
param_1[0x9e] = iVar2;
local_78 = (uint *)FUN_00402298(0x10);
if (local_78 == (uint *)0x0) {
local_70 = (uint *)0x0;
}
else {
local_70 = FUN_00402460(local_78,local_74);
}
local_70[3] = local_70[3] + 1;
local_70[3] = local_70[3] + 1;
local_7c = FUN_00424b60(param_2,(int *)local_70);
local_80 = *(undefined4 *)(local_7c + 0xc0);
local_60 = local_80;
FUN_0041d3b3(local_cc,local_64 + 0xe4);
iVar2 = (**(code **)(local_cc[0] + 0x34))(local_cc,local_80);
FUN_0041d3d2(local_cc,2);
param_1[0x9f] = iVar2;
local_84 = local_70;
puVar1 = local_70 + 3;
*puVar1 = *puVar1 - 1;
if (*puVar1 == 0) {
FUN_004024d8((int *)local_70,3);
}
local_88 = local_54;
puVar1 = local_54 + 3;
*puVar1 = *puVar1 - 1;
if (*puVar1 == 0) {
FUN_004024d8((int *)local_54,3);
}
}
param_1[0x96] = 0;
param_1[0x97] = 0;
param_1[0x98] = 0;
param_1[0x99] = 0;
param_1[0x91] = param_1[0x8f];
param_1[0x92] = param_1[0x90];
param_1[0x76] = 0;
param_1[0x79] = 0;
param_1[0x7a] = 0;
param_1[0x7b] = 0;
param_1[0x87] = 0;
param_1[0x86] = 0;
param_1[0x8e] = 0;
param_1[0x9c] = 0;
param_1[0x9d] = 0;
param_1[0x7e] = 0;
param_1[0x7f] = 0;
param_1[0x80] = 0;
param_1[0x81] = 0;
param_1[0x82] = 0;
param_1[0x7c] = 0;
param_1[0x7d] = 0;
param_1[0x95] = param_1[5];
return param_1;
}
/* @004b6fc0 file=? name=FUN_004b6fc0 */
void __cdecl FUN_004b6fc0(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0051103c;
FUN_004b1930(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004b6fec file=? name=FUN_004b6fec */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl
FUN_004b6fec(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
char *pcVar1;
char cVar2;
int iVar3;
undefined4 uVar4;
char *pcVar5;
int *piVar6;
int *piVar7;
uint uVar8;
uint uVar9;
char *pcVar10;
bool bVar11;
char *local_14;
char *local_10;
char *local_c;
char *local_8;
iVar3 = FUN_004b198c(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
if (iVar3 == 0) {
uVar4 = 0;
}
else {
param_4[0x24] = 'X';
param_4[0x25] = '\x01';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x3b;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
if (param_7 == 1) {
iVar3 = FUN_00404088(param_5,param_3,s_TorsoHorizontalEnabled_00510d43,&local_8);
if (iVar3 == 0) {
param_4[0x14c] = '\x01';
param_4[0x14d] = '\0';
param_4[0x14e] = '\0';
param_4[0x14f] = '\0';
}
else {
iVar3 = FUN_004d4b58(local_8,s_false_00510d5a);
if (iVar3 == 0) {
param_4[0x14c] = '\0';
param_4[0x14d] = '\0';
param_4[0x14e] = '\0';
param_4[0x14f] = '\0';
}
else {
param_4[0x14c] = '\x01';
param_4[0x14d] = '\0';
param_4[0x14e] = '\0';
param_4[0x14f] = '\0';
}
}
}
if (param_7 == 1) {
param_4[0x150] = '\0';
param_4[0x151] = '\0';
param_4[0x152] = -0x80;
param_4[0x153] = -0x41;
param_4[0x154] = '\0';
param_4[0x155] = '\0';
param_4[0x156] = -0x80;
param_4[0x157] = -0x41;
param_4[0xf4] = '\0';
param_4[0xf5] = '\0';
param_4[0xf6] = -0x80;
param_4[0xf7] = -0x41;
param_4[0xf8] = '\0';
param_4[0xf9] = '\0';
param_4[0xfa] = -0x80;
param_4[0xfb] = -0x41;
param_4[0x100] = '\0';
param_4[0x101] = '\0';
param_4[0x102] = -0x80;
param_4[0x103] = -0x41;
param_4[0xfc] = '\0';
param_4[0xfd] = '\0';
param_4[0xfe] = -0x80;
param_4[0xff] = -0x41;
param_4[0x104] = '\0';
param_4[0x105] = '\0';
param_4[0x106] = -0x80;
param_4[0x107] = -0x41;
param_4[0x108] = '\0';
param_4[0x109] = '\0';
param_4[0x10a] = -0x80;
param_4[0x10b] = -0x41;
}
iVar3 = FUN_00404118(param_5,param_3,s_ButtonAccelerationPerSecond_00510d60,
(float *)(param_4 + 0x150));
if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0x150))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_ButtonAccelerationPerSec_00510d7c,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_ButtonAccelerationStartValue_00510da3,
(float *)(param_4 + 0x154));
if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0x154))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_ButtonAccelerationStartV_00510dc0,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_HorizontalRotationPerSecond_00510de8,
(float *)(param_4 + 0xf4));
if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0xf4))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_HorizontalRotationPerSec_00510e04,(char *)0x0)
;
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_VerticalRotationPerSecond_00510e2b,
(float *)(param_4 + 0xf8));
if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0xf8))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_VerticalRotationPerSecon_00510e45,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_HorizontalLimitRight_00510e6a,
(float *)(param_4 + 0xfc));
if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0xfc))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_HorizontalLimitRight__00510e7f,(char *)0x0
);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_HorizontalLimitLeft_00510e9f,
(float *)(param_4 + 0x100));
if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0x100))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_HorizontalLimitLeft__00510eb3,
(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_VerticalLimitTop_00510ed2,
(float *)(param_4 + 0x104));
if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0x104))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_VerticalLimitTop__00510ee3,(char *)0x0
);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_5,param_3,s_VerticalLimitBottom_00510eff,
(float *)(param_4 + 0x108));
if ((iVar3 == 0) && (_DAT_004b76c4 == *(float *)(param_4 + 0x108))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_VerticalLimitBottom__00510f13,
(char *)0x0);
uVar4 = 0;
}
else {
local_c = s_Unspecified_00510f32;
local_10 = s_Unspecified_00510f3e;
if (*(int *)(param_4 + 0x14c) != 0) {
iVar3 = FUN_00404088(param_5,param_3,s_TorsoHorizontalJoint_00510f4a,&local_c)
;
if (iVar3 == 0) {
pcVar10 = s_Unspecified_00510f5f;
pcVar5 = local_c;
do {
bVar11 = *pcVar5 == *pcVar10;
if (!bVar11) break;
if (*pcVar5 == '\0') goto LAB_004b7420;
pcVar1 = pcVar5 + 1;
bVar11 = *pcVar1 == pcVar10[1];
if (!bVar11) break;
pcVar5 = pcVar5 + 2;
pcVar10 = pcVar10 + 2;
bVar11 = *pcVar1 == '\0';
} while (!bVar11);
if (!bVar11) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_TorsoHorizontalJoint__00510f6b
,(char *)0x0);
return 0;
}
}
LAB_004b7420:
pcVar10 = s_Unspecified_00510f8b;
pcVar5 = local_c;
do {
bVar11 = *pcVar5 == *pcVar10;
if (!bVar11) break;
if (*pcVar5 == '\0') goto LAB_004b7474;
pcVar1 = pcVar5 + 1;
bVar11 = *pcVar1 == pcVar10[1];
if (!bVar11) break;
pcVar5 = pcVar5 + 2;
pcVar10 = pcVar10 + 2;
bVar11 = *pcVar1 == '\0';
} while (!bVar11);
if (!bVar11) {
uVar8 = 0xffffffff;
pcVar5 = local_c;
do {
pcVar10 = pcVar5;
if (uVar8 == 0) break;
uVar8 = uVar8 - 1;
pcVar10 = pcVar5 + 1;
cVar2 = *pcVar5;
pcVar5 = pcVar10;
} while (cVar2 != '\0');
uVar8 = ~uVar8;
pcVar5 = pcVar10 + -uVar8;
pcVar10 = param_4 + 0x10c;
for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {
*(undefined4 *)pcVar10 = *(undefined4 *)pcVar5;
pcVar5 = pcVar5 + 4;
pcVar10 = pcVar10 + 4;
}
for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) {
*pcVar10 = *pcVar5;
pcVar5 = pcVar5 + 1;
pcVar10 = pcVar10 + 1;
}
}
LAB_004b7474:
iVar3 = FUN_00404088(param_5,param_3,s_TorsoHorizontalShadowJoint_00510f97,
&local_10);
if (iVar3 == 0) {
pcVar10 = s_Unspecified_00510fb2;
pcVar5 = local_c;
do {
bVar11 = *pcVar5 == *pcVar10;
if (!bVar11) break;
if (*pcVar5 == '\0') goto LAB_004b74de;
pcVar1 = pcVar5 + 1;
bVar11 = *pcVar1 == pcVar10[1];
if (!bVar11) break;
pcVar5 = pcVar5 + 2;
pcVar10 = pcVar10 + 2;
bVar11 = *pcVar1 == '\0';
} while (!bVar11);
if (!bVar11) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,
s_missing_TorsoHorizontalShadowJoi_00510fbe,(char *)0x0);
return 0;
}
}
LAB_004b74de:
pcVar10 = s_Unspecified_00510fe4;
pcVar5 = local_10;
do {
bVar11 = *pcVar5 == *pcVar10;
if (!bVar11) break;
if (*pcVar5 == '\0') goto LAB_004b752e;
pcVar1 = pcVar5 + 1;
bVar11 = *pcVar1 == pcVar10[1];
if (!bVar11) break;
pcVar5 = pcVar5 + 2;
pcVar10 = pcVar10 + 2;
bVar11 = *pcVar1 == '\0';
} while (!bVar11);
if (!bVar11) {
uVar8 = 0xffffffff;
pcVar5 = local_10;
do {
pcVar10 = pcVar5;
if (uVar8 == 0) break;
uVar8 = uVar8 - 1;
pcVar10 = pcVar5 + 1;
cVar2 = *pcVar5;
pcVar5 = pcVar10;
} while (cVar2 != '\0');
uVar8 = ~uVar8;
pcVar5 = pcVar10 + -uVar8;
pcVar10 = param_4 + 300;
for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {
*(undefined4 *)pcVar10 = *(undefined4 *)pcVar5;
pcVar5 = pcVar5 + 4;
pcVar10 = pcVar10 + 4;
}
for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) {
*pcVar10 = *pcVar5;
pcVar5 = pcVar5 + 1;
pcVar10 = pcVar10 + 1;
}
}
LAB_004b752e:
iVar3 = FUN_00404088(param_1,s_video_00510ff0,s_skeleton_00510ff6,&local_14);
if (iVar3 == 0) {
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_is_missing_skeleton_file__00510fff,(char *)0x0)
;
return 0xffffffff;
}
piVar6 = (int *)FUN_004064fc(*(char **)(param_6 + 0x10),local_14);
piVar7 = (int *)FUN_00402298(0x20);
if (piVar7 == (int *)0x0) {
piVar7 = (int *)0x0;
}
else {
piVar7 = FUN_00403e84(piVar7,(char *)piVar6,1);
}
iVar3 = FUN_00403f84((int)piVar7,param_4 + 0x10c);
if (iVar3 == 0) {
FUN_004dbb24(&DAT_00524e20,param_4 + 0x10c,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_not_found_in_0051101b,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_14,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
FUN_004022d0(piVar6);
FUN_00403ecc(piVar7,3);
return 0xffffffff;
}
iVar3 = FUN_00403f84((int)piVar7,param_4 + 300);
if (iVar3 == 0) {
FUN_004dbb24(&DAT_00524e20,param_4 + 300,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_not_found_in_0051102a,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_14,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
FUN_004022d0(piVar6);
FUN_00403ecc(piVar7,3);
return 0xffffffff;
}
FUN_004022d0(piVar6);
FUN_00403ecc(piVar7,3);
}
uVar4 = 1;
}
}
}
}
}
}
}
}
}
return uVar4;
}
/* @004b7780 file=? name=FUN_004b7780 */
void __cdecl FUN_004b7780(int *param_1,int *param_2)
{
if (*param_2 == 4) {
param_1[0x8a] = 1;
}
else {
param_1[0x8b] = 1;
param_1[0x87] = 0;
}
FUN_004b179c(param_1,param_2);
return;
}
/* @004b77bc file=? name=FUN_004b77bc */
void __cdecl FUN_004b77bc(int *param_1,int param_2)
{
if (param_2 != 0) {
param_1[0x86] = 0;
param_1[0x8b] = 0;
param_1[0x87] = 0;
param_1[0x8c] = 0;
}
param_1[0xa5] = 0;
param_1[0xa3] = 0;
param_1[0xa4] = 0;
FUN_004b1804(param_1);
return;
}
/* @004b7810 file=? name=FUN_004b7810 */
void __cdecl FUN_004b7810(int param_1,undefined4 *param_2)
{
FUN_00408440((undefined4 *)(param_1 + 0x208),param_2);
return;
}
/* @004b7830 file=? name=FUN_004b7830 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004b7830(int param_1,float param_2)
{
float fVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
float10 fVar5;
float local_16c;
undefined4 local_168;
undefined4 local_164;
int local_160 [7];
float local_144 [12];
float local_114 [12];
float local_e4 [12];
float local_b4 [12];
float local_84 [12];
float local_54;
undefined4 local_50;
undefined4 local_4c;
float local_48 [3];
float local_3c;
float local_38;
float local_34;
undefined4 local_30;
int local_2c;
int local_28;
float local_24;
undefined4 *local_20;
undefined4 *local_1c;
float local_18;
float local_14;
undefined4 local_10;
int local_c;
uint local_8;
iVar2 = *(int *)(param_1 + 0xd0);
FUN_004b181c(param_1);
local_8 = (uint)(*(int *)(param_1 + 0x40) != 1);
if (*(int *)(param_1 + 0x198) == 2) {
local_8 = (uint)(local_8 != 0);
FUN_0041bbd8(param_1 + 0x238,0);
}
else if (*(int *)(param_1 + 0x198) == 4) {
local_8 = (uint)(local_8 != 0);
FUN_0041bbd8(param_1 + 0x238,1);
}
else {
FUN_0041bbd8(param_1 + 0x238,1);
local_8 = 0;
}
iVar3 = *(int *)(param_1 + 0x140);
if (iVar3 == 0) {
local_8 = (uint)(local_8 != 0);
FUN_0041bbd8(param_1 + 0x238,1);
}
else if (iVar3 == 1) {
local_8 = (uint)(local_8 != 0);
FUN_0041bbd8(param_1 + 0x238,0);
}
else if (iVar3 == 2) {
local_8 = 0;
FUN_0041bbd8(param_1 + 0x238,1);
}
if (*(int *)(param_1 + 0x24c) == 0) {
*(float *)(param_1 + 0x218) = param_2 + *(float *)(param_1 + 0x218);
if (*(float *)(param_1 + 0x218) != *(float *)(param_1 + 0x1d8)) {
*(undefined4 *)(param_1 + 0x218) = 0;
*(uint *)(param_1 + 0x224) = (uint)(*(int *)(param_1 + 0x224) == 0);
}
}
else if (*(int *)(param_1 + 0x24c) == 1) {
*(undefined4 *)(param_1 + 0x224) = 1;
}
if ((local_8 == 0) || (*(int *)(param_1 + 0x224) == 0)) {
local_8 = 0;
}
else {
local_8 = 1;
}
iVar3 = **(int **)(iVar2 + 0x128);
*(undefined4 *)(param_1 + 500) = 1;
iVar3 = *(int *)(iVar3 + 0x198);
if (iVar3 == 0) {
*(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) | 1;
*(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) & 0xfffffffd;
*(uint *)(param_1 + 500) = (uint)(*(int *)(param_1 + 500) != 0);
}
else if (iVar3 == 3) {
*(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) | 2;
*(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) & 0xfffffffe;
if ((*(int *)(param_1 + 500) == 0) || (*(int *)(iVar2 + 0x410) == 0)) {
uVar4 = 0;
}
else {
uVar4 = 1;
}
*(undefined4 *)(param_1 + 500) = uVar4;
}
else {
*(undefined4 *)(param_1 + 500) = 0;
}
if (*(int *)(param_1 + 500) == 0) {
*(undefined4 *)(iVar2 + 0x374) = 0;
}
else {
*(undefined4 *)(iVar2 + 0x374) = 1;
}
if (local_8 == 0) {
*(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) & 0xffffffdf;
}
else {
*(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) | 0x20;
}
iVar3 = *(int *)(iVar2 + 0x388);
if (((iVar3 == 0) || (*(int *)(iVar3 + 0x120) == 0)) ||
(_DAT_004b7ec4 <= *(float *)(*(int *)(param_1 + 0xe0) + 0x158))) {
*(undefined4 *)(param_1 + 0x1f8) = 0;
}
else {
local_c = *(int *)(iVar2 + 0x38c);
if (local_c == -1) {
local_c = 0;
}
if (_DAT_004b7ec8 <= *(float *)(*(int *)(*(int *)(iVar3 + 0x120) + local_c * 4) + 0x158)) {
*(undefined4 *)(param_1 + 0x1f8) = 0;
}
else {
*(undefined4 *)(param_1 + 0x1f8) = 1;
}
}
if (*(int *)(iVar2 + 0x388) == 0) {
*(undefined4 *)(param_1 + 0x1ec) = 0x44960000;
}
else if (*(int *)(param_1 + 0x22c) == 0) {
FUN_00408644(&local_3c,(float *)(iVar2 + 0x37c),(float *)(iVar2 + 0x100));
fVar5 = FUN_004dd138((double)(local_34 * local_34 + local_38 * local_38 + local_3c * local_3c));
*(float *)(param_1 + 0x1ec) = (float)fVar5;
}
if (*(int *)(param_1 + 0x22c) != 0) {
*(float *)(param_1 + 0x1ec) = *(float *)(param_1 + 0x1ec) - _DAT_004b7ecc;
*(float *)(param_1 + 0x21c) = param_2 + *(float *)(param_1 + 0x21c);
if (*(float *)(param_1 + 0x1d8) <= *(float *)(param_1 + 0x21c)) {
*(undefined4 *)(param_1 + 0x21c) = 0;
*(undefined4 *)(param_1 + 0x22c) = 0;
}
}
local_10 = 0x43fa0000;
if (param_2 * 500.0 <= _DAT_004b7ed0) {
local_14 = param_2 * -500.0;
}
else {
local_14 = param_2 * 500.0;
}
local_18 = *(float *)(param_1 + 0x1ec) - *(float *)(param_1 + 0x230);
if (-local_14 <= local_18) {
if (local_14 < local_18) {
local_18 = local_14;
}
}
else {
local_18 = -local_14;
}
local_20 = (undefined4 *)(param_1 + 0x1dc);
*(float *)(param_1 + 0x1ec) = *(float *)(param_1 + 0x230) + local_18;
*(undefined4 *)(param_1 + 0x230) = *(undefined4 *)(param_1 + 0x1ec);
local_1c = (undefined4 *)(*(int *)(param_1 + 0x234) + 0x1d8);
*local_20 = *local_1c;
*(undefined4 *)(param_1 + 0x1e8) = *(undefined4 *)(*(int *)(param_1 + 0x234) + 0x1e8);
FUN_0040954c(local_48,(float *)(iVar2 + 0x10c));
local_24 = local_48[0] + *(float *)(param_1 + 0x1dc);
*(float *)(param_1 + 0x214) = local_24;
local_28 = *(int *)(iVar2 + 400);
local_2c = *(int *)(local_28 + 0x284);
if (local_2c == 0) {
FUN_00408440((undefined4 *)(param_1 + 0x1fc),&DAT_004e0f74);
}
else {
FUN_0040aadc(local_84);
FUN_0040aadc(local_b4);
FUN_0040aadc(local_e4);
FUN_0040aadc(local_114);
FUN_0040aadc(local_144);
local_30 = *(undefined4 *)(param_1 + 0xdc);
FUN_0041f216(local_160,iVar2 + 0x300);
iVar3 = (**(code **)(local_160[0] + 0x34))(local_160);
FUN_0041f235(local_160,2);
FUN_00424da8(iVar2,iVar3,local_84);
FUN_0040bc54(local_b4,local_84);
FUN_0040ac6c(local_144,(float *)(iVar2 + 0x360));
FUN_0040bc54(local_114,local_144);
FUN_0040b104(local_e4,local_b4,local_114);
FUN_00408440(&local_54,(undefined4 *)(local_2c + 0x100));
local_16c = local_54;
local_168 = local_50;
local_164 = local_4c;
FUN_00408b98(&local_54,&local_16c,local_e4);
FUN_00408440((undefined4 *)(param_1 + 0x1fc),&local_54);
}
if (*(int *)(local_28 + 0x274) == 0) {
*(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) & 0xffffffef;
}
else {
*(uint *)(iVar2 + 0x390) = *(uint *)(iVar2 + 0x390) | 0x10;
}
if ((*(float *)(param_1 + 0x28c) == _DAT_004b7ed0) || (*(int *)(param_1 + 0x2a0) != 0)) {
if (*(int *)(param_1 + 0x2a0) != 0) {
uVar4 = FUN_004b7ed4(param_1,param_2);
*(undefined4 *)(param_1 + 0x2a0) = uVar4;
}
}
else {
*(float *)(param_1 + 0x294) =
-*(float *)(param_1 + 0x28c) * *(float *)(param_1 + 0x298) * param_2 +
*(float *)(param_1 + 0x294);
if (*(float *)(param_1 + 0x294) <= *(float *)(param_1 + 0x29c)) {
uVar4 = *(undefined4 *)(param_1 + 0x294);
}
else {
uVar4 = *(undefined4 *)(param_1 + 0x29c);
}
*(undefined4 *)(param_1 + 0x294) = uVar4;
if (-*(float *)(param_1 + 0x29c) <= *(float *)(param_1 + 0x294)) {
fVar1 = *(float *)(param_1 + 0x294);
}
else {
fVar1 = -*(float *)(param_1 + 0x29c);
}
*(float *)(param_1 + 0x294) = fVar1;
}
*(undefined4 *)(iVar2 + 0x36c) = *(undefined4 *)(param_1 + 0x294);
return;
}
/* @004b7ed4 file=? name=FUN_004b7ed4 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl FUN_004b7ed4(int param_1,float param_2)
{
float fVar1;
float fVar2;
fVar1 = *(float *)(param_1 + 0x298) * param_2;
if (_DAT_004b7f90 < *(float *)(param_1 + 0x294)) {
*(float *)(param_1 + 0x294) = *(float *)(param_1 + 0x294) - fVar1;
fVar2 = _DAT_004b7f90;
if (_DAT_004b7f90 <= *(float *)(param_1 + 0x294)) {
fVar2 = *(float *)(param_1 + 0x294);
}
*(float *)(param_1 + 0x294) = fVar2;
}
if (*(float *)(param_1 + 0x294) < _DAT_004b7f90) {
*(float *)(param_1 + 0x294) = fVar1 + *(float *)(param_1 + 0x294);
fVar1 = _DAT_004b7f90;
if (*(float *)(param_1 + 0x294) < _DAT_004b7f90) {
fVar1 = *(float *)(param_1 + 0x294);
}
*(float *)(param_1 + 0x294) = fVar1;
}
if (*(float *)(param_1 + 0x294) != _DAT_004b7f90) {
return 1;
}
return 0;
}
/* @004b7f94 file=? name=FUN_004b7f94 */
int * __cdecl FUN_004b7f94(int *param_1,int param_2,undefined4 param_3,char *param_4)
{
int iVar1;
FUN_004b18a4(param_1,param_2,param_3,param_4,&DAT_00511078);
*param_1 = (int)&PTR_FUN_00511510;
param_1[0x76] = 0;
param_1[0x77] = 0;
param_1[0x78] = 0;
param_1[0x79] = 0;
param_1[0x7a] = 0;
param_1[0x7b] = 0;
param_1[0x7d] = 1;
param_1[0x7e] = 0;
param_1[0x7f] = DAT_004e0f74;
param_1[0x80] = DAT_004e0f78;
param_1[0x81] = DAT_004e0f7c;
param_1[0x82] = DAT_004e0f74;
param_1[0x83] = DAT_004e0f78;
param_1[0x84] = DAT_004e0f7c;
param_1[0x85] = 0;
param_1[0x86] = 0;
param_1[0x87] = 0;
param_1[0x88] = 0;
param_1[0x89] = 1;
param_1[0x8a] = 0;
param_1[0x8b] = 0;
param_1[0x8c] = 0;
FUN_0041b9ec(param_1 + 0x8e,2);
param_1[0xa3] = 0;
param_1[0xa4] = 0;
param_1[0xa5] = 0;
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) {
param_1[7] = (int)PTR_FUN_00511170;
param_1[8] = DAT_00511174;
param_1[9] = DAT_00511178;
}
param_1[0x76] = *(int *)(param_4 + 0xf4);
param_1[0xa6] = *(int *)(param_4 + 0xfc);
param_1[0xa7] = *(int *)(param_4 + 0x100);
iVar1 = *(int *)(param_2 + 0x438);
param_1[0x8d] = iVar1;
param_1[0x78] = *(int *)(iVar1 + 0x1dc);
param_1[0x79] = *(int *)(param_1[0x8d] + 0x1e0);
param_1[0x77] = *(int *)(param_1[0x8d] + 0x1d8);
param_1[0x7a] = *(int *)(param_1[0x8d] + 0x1e8);
return param_1;
}
/* @004b816c file=? name=FUN_004b816c */
void __cdecl FUN_004b816c(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_00511510;
*(undefined4 *)(param_1[0x34] + 0x374) = 0;
FUN_0041baa4(param_1 + 0x8e,2);
FUN_004b1930(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004b81b8 file=? name=FUN_004b81b8 */
void __cdecl FUN_004b81b8(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x511088);
return;
}
/* @004b81d4 file=? name=FUN_004b81d4 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl
FUN_004b81d4(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
int iVar1;
undefined4 uVar2;
iVar1 = FUN_004b198c(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
if (iVar1 == 0) {
uVar2 = 0;
}
else {
param_4[0x24] = '\x04';
param_4[0x25] = '\x01';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x2a;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
if (param_7 == 1) {
param_4[0xf4] = '\0';
param_4[0xf5] = '\0';
param_4[0xf6] = -0x80;
param_4[0xf7] = -0x41;
*(undefined4 *)(param_4 + 0xf8) = *(undefined4 *)(param_4 + 0x28);
}
if ((*(int *)(param_4 + 0xf8) == -1) && (1 < param_7)) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_SegmentPageName__00511395,(char *)0x0);
uVar2 = 0;
}
else {
if (1 < param_7) {
*(undefined4 *)(param_4 + 0x28) = *(undefined4 *)(param_4 + 0xf8);
}
iVar1 = FUN_00404118(param_5,param_3,s_FlickerRate_005113af,(float *)(param_4 + 0xf4));
if ((iVar1 == 0) && (_DAT_004b8388 == *(float *)(param_4 + 0xf4))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_FlickerRate__005113bb,(char *)0x0);
uVar2 = 0;
}
else {
iVar1 = FUN_00404118(param_5,param_3,s_HorizontalMovementPerSecond_005113d2,
(float *)(param_4 + 0xfc));
if ((iVar1 == 0) && (_DAT_004b8388 == *(float *)(param_4 + 0xfc))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_HorizontalMovementPerSec_005113ee,(char *)0x0)
;
uVar2 = 0;
}
else {
iVar1 = FUN_00404118(param_5,param_3,s_HorizontalLimit_00511415,(float *)(param_4 + 0x100)
);
if ((iVar1 == 0) && (_DAT_004b8388 == *(float *)(param_4 + 0x100))) {
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_HorizontalLimit__00511425,(char *)0x0);
uVar2 = 0;
}
else {
uVar2 = 1;
}
}
}
}
}
return uVar2;
}
/* @004b838c file=? name=FUN_004b838c */
void __cdecl FUN_004b838c(int param_1,int param_2)
{
if (0 < *(int *)(param_2 + 0xc)) {
*(uint *)(param_1 + 0x1e0) = (uint)(*(int *)(param_1 + 0x1e0) == 0);
}
*(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1;
return;
}
/* @004b83b8 file=? name=FUN_004b83b8 */
void __cdecl FUN_004b83b8(int param_1,int param_2)
{
int iVar1;
FUN_0041bd34(param_1,param_2);
iVar1 = *(int *)(param_2 + 0x10);
*(int *)(param_1 + 0x1d8) = iVar1;
FUN_0041bbd8(param_1 + 0x1e4,iVar1);
return;
}
/* @004b83f0 file=? name=FUN_004b83f0 */
void __cdecl FUN_004b83f0(int param_1,undefined4 *param_2,undefined2 param_3)
{
FUN_0041c500(param_1,param_2,param_3);
*param_2 = 0x14;
param_2[4] = *(undefined4 *)(param_1 + 0x1d8);
return;
}
/* @004b841c file=? name=FUN_004b841c */
void __cdecl FUN_004b841c(int param_1)
{
int iVar1;
FUN_004b181c(param_1);
iVar1 = *(int *)(param_1 + 0x1d8);
if (*(int *)(param_1 + 0x40) == 1) {
*(undefined4 *)(param_1 + 0x1d8) = 0;
}
else {
*(undefined4 *)(param_1 + 0x1d8) = *(undefined4 *)(param_1 + 0x1e0);
}
if (*(int *)(param_1 + 0x198) == 4) {
*(uint *)(param_1 + 0x1d8) = (uint)(*(int *)(param_1 + 0x1d8) != 0);
}
else {
*(undefined4 *)(param_1 + 0x1d8) = 0;
}
if (*(uint *)(param_1 + 0x140) < 2) {
*(uint *)(param_1 + 0x1d8) = (uint)(*(int *)(param_1 + 0x1d8) != 0);
}
else if (*(uint *)(param_1 + 0x140) == 2) {
*(undefined4 *)(param_1 + 0x1d8) = 0;
}
FUN_0041bbd8(param_1 + 0x1e4,*(int *)(param_1 + 0x1d8));
if (iVar1 != *(int *)(param_1 + 0x1d8)) {
*(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1;
}
return;
}
/* @004b84dc file=? name=FUN_004b84dc */
int * __cdecl FUN_004b84dc(int *param_1,int param_2,undefined4 param_3,char *param_4)
{
FUN_004b18a4(param_1,param_2,param_3,param_4,&DAT_00511198);
*param_1 = (int)&PTR_FUN_005114d4;
param_1[0x76] = 0;
param_1[0x78] = 0;
FUN_0041b9ec(param_1 + 0x79,2);
param_1[0x77] = *(int *)(param_4 + 0x28);
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) {
param_1[7] = (int)PTR_FUN_00511200;
param_1[8] = DAT_00511204;
param_1[9] = DAT_00511208;
}
else {
param_1[10] = param_1[10] | 2;
}
return param_1;
}
/* @004b8568 file=? name=FUN_004b8568 */
void __cdecl FUN_004b8568(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_005114d4;
FUN_0041baa4(param_1 + 0x79,2);
FUN_004b1930(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004b85a8 file=? name=FUN_004b85a8 */
undefined4 __cdecl
FUN_004b85a8(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
int iVar1;
iVar1 = FUN_004b198c(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
if (iVar1 == 0) {
return 0;
}
param_4[0x24] = -0xc;
param_4[0x25] = '\0';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x28;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
return 1;
}
/* @004b85f0 file=? name=FUN_004b85f0 */
void __cdecl FUN_004b85f0(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x5111a8);
return;
}
/* @004b860c file=? name=FUN_004b860c */
void __cdecl FUN_004b860c(int param_1,int param_2)
{
if ((0 < *(int *)(param_2 + 0xc)) &&
(*(int *)(*(int *)(*(int *)(param_1 + 0xd0) + 400) + 0x25c) != 0)) {
*(uint *)(param_1 + 0x1dc) = (uint)(*(int *)(param_1 + 0x1dc) == 0);
}
return;
}
/* @004b8648 file=? name=FUN_004b8648 */
void __cdecl FUN_004b8648(int param_1)
{
int iVar1;
FUN_004b181c(param_1);
iVar1 = *(int *)(param_1 + 0x1d8);
if (*(int *)(param_1 + 0x40) == 1) {
*(undefined4 *)(param_1 + 0x1d8) = 0;
}
else {
*(undefined4 *)(param_1 + 0x1d8) = *(undefined4 *)(param_1 + 0x1dc);
}
if (*(int *)(param_1 + 0x198) == 4) {
*(uint *)(param_1 + 0x1d8) = (uint)(*(int *)(param_1 + 0x1d8) != 0);
}
else {
*(undefined4 *)(param_1 + 0x1d8) = 0;
}
if (*(uint *)(param_1 + 0x140) < 2) {
*(uint *)(param_1 + 0x1d8) = (uint)(*(int *)(param_1 + 0x1d8) != 0);
}
else if (*(uint *)(param_1 + 0x140) == 2) {
*(undefined4 *)(param_1 + 0x1d8) = 0;
}
FUN_0041bbd8(param_1 + 0x1e0,*(int *)(param_1 + 0x1d8));
if ((iVar1 != *(int *)(param_1 + 0x1d8)) && (*(int *)(*(int *)PTR_DAT_004fd4b8 + 0x48) != 0)) {
FUN_0045fe44();
}
return;
}
/* @004b8718 file=? name=FUN_004b8718 */
int * __cdecl FUN_004b8718(int *param_1,int param_2,undefined4 param_3,char *param_4)
{
FUN_004b18a4(param_1,param_2,param_3,param_4,&DAT_00511228);
*param_1 = (int)&PTR_FUN_00511498;
param_1[0x76] = 0;
param_1[0x77] = 0;
FUN_0041b9ec(param_1 + 0x78,2);
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) {
param_1[7] = (int)PTR_FUN_00511290;
param_1[8] = DAT_00511294;
param_1[9] = DAT_00511298;
}
return param_1;
}
/* @004b8794 file=? name=FUN_004b8794 */
void __cdecl FUN_004b8794(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_00511498;
FUN_0041baa4(param_1 + 0x78,2);
FUN_004b1930(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004b87d4 file=? name=FUN_004b87d4 */
undefined4 __cdecl
FUN_004b87d4(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
int iVar1;
iVar1 = FUN_004b198c(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
if (iVar1 == 0) {
return 0;
}
param_4[0x24] = -0xc;
param_4[0x25] = '\0';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x22;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
return 1;
}
/* @004b881c file=? name=FUN_004b881c */
void __cdecl FUN_004b881c(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x511238);
return;
}
/* @004b8a48 file=? name=FUN_004b8a48 */
int __cdecl FUN_004b8a48(int param_1,int param_2)
{
bool bVar1;
undefined3 extraout_var;
int iVar2;
int iVar3;
int iVar4;
bVar1 = FUN_004ac9c8(param_1);
iVar3 = CONCAT31(extraout_var,bVar1);
if (CONCAT31(extraout_var,bVar1) == 0) {
iVar2 = FUN_004ad7d4(param_1);
iVar3 = 0;
if ((iVar2 != 0) && (iVar3 = param_2, 0 < *(int *)(param_2 + 0xc))) {
iVar4 = *(int *)(param_1 + 0x32c) + 1;
iVar2 = *(int *)(param_1 + 800) + 1;
iVar3 = iVar2 / iVar4;
*(int *)(param_1 + 800) = iVar2 % iVar4;
}
}
return iVar3;
}
/* @004b8a8c file=? name=FUN_004b8a8c */
void __cdecl FUN_004b8a8c(int *param_1,int *param_2)
{
FUN_004b0efc(param_1,param_2);
return;
}
/* @004b8aa4 file=? name=FUN_004b8aa4 */
void __cdecl FUN_004b8aa4(int *param_1,int param_2)
{
FUN_004b0e6c(param_1,param_2);
return;
}
/* @004b8ac0 file=? name=FUN_004b8ac0 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __cdecl FUN_004b8ac0(int param_1,float param_2)
{
float fVar1;
float fVar2;
undefined4 local_10;
fVar1 = *(float *)(*(int *)(param_1 + 0xd0) + 0x34c) *
(param_2 / *(float *)(param_1 + 0x330 + *(int *)(param_1 + 0x324) * 4));
if (*(float *)(param_1 + 0x118) <= *(float *)(param_1 + 0x114)) {
if (*(float *)(param_1 + 0x11c) <= *(float *)(param_1 + 0x114)) {
local_10 = 0.0;
}
else {
fVar2 = *(float *)(param_1 + 0x114) - *(float *)(param_1 + 0x118);
if (fVar1 == _DAT_004b8b94) {
local_10 = 1.0;
}
else {
local_10 = (fVar1 - fVar2 * fVar2 * (fVar1 / *(float *)(param_1 + 0x34c))) / fVar1;
}
}
}
else {
local_10 = 1.0;
}
return (float10)((_DAT_004b8b98 - *(float *)(*(int *)(param_1 + 0xe0) + 0x158)) * fVar1 * local_10
);
}
/* @004b8b9c file=? name=FUN_004b8b9c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004b8b9c(int *param_1,float param_2)
{
int iVar1;
int iVar2;
float10 fVar3;
undefined4 local_3c;
undefined4 local_38;
undefined4 local_1c [3];
undefined4 local_10;
float local_c;
float local_8;
FUN_004b0bd0(param_1,param_2);
iVar1 = param_1[0x34];
if ((param_1[0x9e] == 1) && (*(float *)(param_1[0x38] + 0x158) < _DAT_004b8d10)) {
FUN_0041db7c((int)&local_3c);
local_3c = 2;
local_38 = 0xbc343958;
local_10 = 1;
FUN_00408440(local_1c,(undefined4 *)(iVar1 + 0x100));
(**(code **)(*(int *)param_1[0x38] + 0x18))((int *)param_1[0x38],&local_3c);
}
if (param_1[0x10] == 1) {
param_1[0xd1] = 0;
}
iVar2 = FUN_00417ab4((int)(param_1 + 0x74));
if (param_1[0x9e] == 4) {
param_1[0xd1] = *(int *)(iVar2 + 0x1dc);
}
else {
param_1[0xd1] = 0;
}
iVar2 = (**(code **)(*param_1 + 0x40))(param_1,0);
if (iVar2 == 0) {
param_1[199] = 0;
}
else {
if ((float)param_1[param_1[200] + 0xcc] <= (float)param_1[0xd1]) {
local_8 = (float)param_1[param_1[200] + 0xcc];
}
else {
local_8 = (float)param_1[0xd1];
}
if ((float)param_1[param_1[0xcb] + 0xcc] < local_8) {
local_8 = (float)param_1[param_1[0xcb] + 0xcc];
}
fVar3 = FUN_004b8ac0((int)param_1,local_8);
local_c = (float)fVar3;
param_1[199] = (int)(local_c / *(float *)(iVar1 + 0x34c));
}
if (_DAT_004b8d14 < (float)param_1[0xd1]) {
FUN_004b8d18((int)param_1,param_2);
}
return;
}
/* @004b8d18 file=? name=FUN_004b8d18 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004b8d18(int param_1,float param_2)
{
float fVar1;
float fVar2;
float fVar3;
float fVar4;
float fVar5;
float fVar6;
float fVar7;
float fVar8;
float fVar9;
float fVar10;
float fVar11;
int iVar12;
float10 fVar13;
iVar12 = *(int *)(param_1 + 0xd0);
fVar1 = *(float *)(iVar12 + 0x1c4);
fVar2 = *(float *)(iVar12 + 0x1c4);
fVar3 = *(float *)(iVar12 + 0x1c8);
fVar4 = *(float *)(iVar12 + 0x1c8);
fVar5 = *(float *)(iVar12 + 0x1cc);
fVar6 = *(float *)(iVar12 + 0x1cc);
fVar13 = FUN_004dd138((double)(*(float *)(iVar12 + 0x1cc) * *(float *)(iVar12 + 0x1cc) +
*(float *)(iVar12 + 0x1c8) * *(float *)(iVar12 + 0x1c8) +
*(float *)(iVar12 + 0x1c4) * *(float *)(iVar12 + 0x1c4)));
fVar7 = (float)fVar13;
fVar13 = FUN_004dd138((double)(*(float *)(iVar12 + 0x834) * *(float *)(iVar12 + 0x834) +
*(float *)(iVar12 + 0x830) * *(float *)(iVar12 + 0x830) +
*(float *)(iVar12 + 0x82c) * *(float *)(iVar12 + 0x82c)));
fVar8 = (float)fVar13;
fVar9 = *(float *)(iVar12 + 0x1c8);
fVar10 = *(float *)(iVar12 + 0x20c);
fVar11 = **(float **)(iVar12 + 0x250);
fVar1 = fVar10 * (fVar5 * fVar6 + fVar3 * fVar4 + fVar1 * fVar2) * _DAT_004b8ee4;
if (fVar8 <= _DAT_004b8ee8) {
fVar8 = -fVar8;
}
if (fVar7 <= _DAT_004b8ee8) {
fVar7 = -fVar7;
}
if (fVar9 <= _DAT_004b8ee8) {
fVar9 = -fVar9;
}
fVar3 = _DAT_004b8eec - *(float *)(param_1 + 0x354);
fVar5 = _DAT_004b8eec - *(float *)(param_1 + 0x350);
fVar4 = _DAT_004b8eec - *(float *)(param_1 + 0x354);
fVar6 = _DAT_004b8eec + *(float *)(*(int *)(param_1 + 0xe0) + 0x158);
fVar2 = *(float *)(param_1 + 0x330 + *(int *)(param_1 + 800) * 4) /
*(float *)(param_1 + 0x330 + *(int *)(param_1 + 0x324) * 4);
if (fVar2 < _DAT_004b8eec) {
fVar2 = _DAT_004b8eec;
}
iVar12 = FUN_004ad7d4(param_1);
if (iVar12 != 0) {
*(float *)(param_1 + 0x1c8) =
fVar2 * fVar2 *
fVar6 * (fVar4 * fVar9 * fVar10 * fVar11 * param_2 +
fVar5 * fVar1 + fVar3 * fVar7 * fVar8 * fVar10 * param_2) +
*(float *)(param_1 + 0x1c8);
}
return;
}
/* @004b8ef0 file=? name=FUN_004b8ef0 */
void __cdecl FUN_004b8ef0(int param_1)
{
float fVar1;
int iVar2;
float10 fVar3;
iVar2 = *(int *)(param_1 + 0xd0);
fVar3 = FUN_004b8ac0(param_1,*(float *)(param_1 + 0x330 + *(int *)(param_1 + 0x32c) * 4));
fVar1 = (float)fVar3;
if (fVar1 < *(float *)(iVar2 + 0x7a0)) {
fVar1 = *(float *)(iVar2 + 0x7a0);
}
*(float *)(iVar2 + 0x7a0) = fVar1;
return;
}
/* @004b8f3c file=? name=FUN_004b8f3c */
undefined4 __cdecl FUN_004b8f3c(int param_1,int param_2)
{
if (param_2 == 0) {
param_2 = FUN_00417ab4(param_1 + 0x1d0);
}
if (param_2 == 0) {
return 0;
}
if ((*(float *)(param_1 + 0x330 + *(int *)(param_1 + 800) * 4) <= *(float *)(param_2 + 0x1dc)) &&
(*(int *)(param_2 + 0x210) == 2)) {
return 1;
}
return 0;
}
/* @004b8f94 file=? name=FUN_004b8f94 */
void __cdecl FUN_004b8f94(int param_1,float param_2)
{
float10 fVar1;
fVar1 = FUN_004b8ac0(param_1,param_2);
FUN_004dd138((double)(((float)(fVar1 * (float10)3.6) - 0.0) / 350.0));
return;
}
/* @004b8fec file=? name=FUN_004b8fec */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
int * __cdecl FUN_004b8fec(int *param_1,int param_2,undefined4 param_3,char *param_4)
{
int iVar1;
int iVar2;
float *pfVar3;
float *pfVar4;
FUN_004b0f74(param_1,param_2,param_3,param_4,&DAT_0051154c,0,0);
*param_1 = (int)&PTR_FUN_005117dc;
param_1[199] = 0x3f800000;
param_1[0xd2] = (int)((float)param_1[0x47] - (float)param_1[0x46]);
param_1[0xd3] = (int)((float)param_1[0xd2] * (float)param_1[0xd2]);
param_1[0xd4] = *(int *)(param_4 + 400);
param_1[0xd5] = *(int *)(param_4 + 0x194);
param_1[0x54] = 0x3e19999a;
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) {
param_1[7] = (int)PTR_FUN_00511620;
param_1[8] = DAT_00511624;
param_1[9] = DAT_00511628;
}
iVar1 = FUN_00417ab4((int)(param_1 + 0x74));
param_1[10] = param_1[10] | 8;
iVar2 = 0;
pfVar4 = (float *)(param_1 + 0xcc);
pfVar3 = (float *)(param_4 + 0x198);
do {
if (*pfVar3 == _DAT_004b9110) {
param_1[0xcb] = iVar2 + -1;
break;
}
*pfVar4 = *pfVar3 * *(float *)(iVar1 + 0x1d8);
iVar2 = iVar2 + 1;
pfVar4 = pfVar4 + 1;
pfVar3 = pfVar3 + 1;
} while (iVar2 < 5);
iVar1 = *(int *)(param_4 + 0x1ac);
param_1[0xc9] = iVar1;
param_1[200] = iVar1;
param_1[0xca] = 0;
return param_1;
}
/* @004b9114 file=? name=FUN_004b9114 */
void __cdecl FUN_004b9114(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_005117dc;
FUN_004b115c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004b9140 file=? name=FUN_004b9140 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl
FUN_004b9140(int param_1,char *param_2,char *param_3,char *param_4,int param_5,int param_6,
int param_7)
{
int *piVar1;
uint *puVar2;
undefined4 *puVar3;
int iVar4;
undefined4 uVar5;
char *pcVar6;
undefined4 *puVar7;
uint *puVar8;
char cVar9;
float10 fVar10;
float *local_1c;
int *local_10;
int *local_c;
int *local_8;
iVar4 = FUN_004b13ac(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
if (iVar4 == 0) {
uVar5 = 0;
}
else {
param_4[0x24] = -0x50;
param_4[0x25] = '\x01';
param_4[0x26] = '\0';
param_4[0x27] = '\0';
param_4[0x20] = -0x3a;
param_4[0x21] = '\v';
param_4[0x22] = '\0';
param_4[0x23] = '\0';
if (param_7 == 1) {
param_4[400] = '\0';
param_4[0x191] = '\0';
param_4[0x192] = -0x80;
param_4[0x193] = -0x41;
param_4[0x194] = '\0';
param_4[0x195] = '\0';
param_4[0x196] = -0x80;
param_4[0x197] = -0x41;
iVar4 = 0;
pcVar6 = param_4 + 0x198;
do {
pcVar6[0] = '\0';
pcVar6[1] = '\0';
pcVar6[2] = -0x80;
pcVar6[3] = -0x41;
iVar4 = iVar4 + 1;
pcVar6 = pcVar6 + 4;
} while (iVar4 < 5);
param_4[0x1ac] = -1;
param_4[0x1ad] = -1;
param_4[0x1ae] = -1;
param_4[0x1af] = -1;
}
iVar4 = FUN_00404118(param_5,param_3,s_VelocityEfficiency_00511709,(float *)(param_4 + 400));
if ((iVar4 == 0) && (_DAT_004b9470 == *(float *)(param_4 + 400))) {
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_Missing_VelocityEfficiency__0051171c,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
uVar5 = 0;
}
else {
iVar4 = FUN_00404118(param_5,param_3,s_AccelerationEfficiency_00511739,
(float *)(param_4 + 0x194));
if ((iVar4 == 0) && (_DAT_004b9470 == *(float *)(param_4 + 0x194))) {
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_Missing_AccelerationEfficiency__00511750,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
uVar5 = 0;
}
else {
local_8 = FUN_00404720(param_5,param_3,s_SeekVoltage_00511771);
iVar4 = FUN_00403b60((int)local_8);
if ((iVar4 == 0) && (*(int *)(param_4 + 0x1ac) == -1)) {
if (local_8 != (int *)0x0) {
(**(code **)*local_8)(local_8,3);
}
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_SeekVoltage_0051177d,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
else {
local_1c = (float *)(param_4 + 0x198);
puVar3 = (undefined4 *)local_8[1];
while (puVar3 != (undefined4 *)0x0) {
puVar7 = (undefined4 *)FUN_00402298(0x10);
if (puVar7 == (undefined4 *)0x0) {
local_c = (int *)0x0;
}
else {
local_c = (int *)FUN_004023f4(puVar7);
}
local_c[3] = local_c[3] + 1;
FUN_00402a98((int *)&local_10,(int *)&local_c,(char *)(puVar3 + 2));
piVar1 = local_10 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(local_10,3);
}
puVar8 = (uint *)FUN_00402298(0x10);
if (puVar8 == (uint *)0x0) {
puVar8 = (uint *)0x0;
}
else {
puVar8 = FUN_00402460(puVar8,s_SeekVoltageRecommendedIndex_00511793);
}
puVar8[3] = puVar8[3] + 1;
iVar4 = FUN_004027d8((int)local_c,(int)puVar8);
cVar9 = iVar4 == 0;
puVar2 = puVar8 + 3;
*puVar2 = *puVar2 - 1;
if (*puVar2 == 0) {
FUN_004024d8((int *)puVar8,3);
}
if (cVar9 == '\0') {
fVar10 = (float10)FUN_004dd1cc(puVar3[1]);
*local_1c = (float)fVar10;
local_1c = local_1c + 1;
}
else {
iVar4 = FUN_004dd1e0((char *)puVar3[1]);
*(int *)(param_4 + 0x1ac) = iVar4;
}
puVar3 = (undefined4 *)*puVar3;
piVar1 = local_c + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(local_c,3);
}
}
if (*(int *)(param_4 + 0x1ac) == -1) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_SeekVoltageRecommendedIn_005117af,(char *)0x0);
if (local_8 != (int *)0x0) {
(**(code **)*local_8)(local_8,3);
}
return 0;
}
if (local_8 != (int *)0x0) {
(**(code **)*local_8)(local_8,3);
}
}
uVar5 = 1;
}
}
}
return uVar5;
}
/* @004b9550 file=? name=FUN_004b9550 */
void __cdecl FUN_004b9550(int param_1,int param_2)
{
int *piVar1;
int iVar2;
uint uVar3;
uVar3 = (int)*(uint *)(param_2 + 0xc) >> 0x1f;
iVar2 = ((*(uint *)(param_2 + 0xc) ^ uVar3) - uVar3) + -1;
piVar1 = (int *)**(undefined4 **)(*(int *)(param_1 + 0xd0) + 0x128);
if (*(int *)(param_2 + 0xc) < 1) {
(**(code **)(*piVar1 + 0x3c))(piVar1,iVar2);
*(undefined4 *)(param_1 + 0x110) = 0xffffffff;
}
else {
*(undefined4 *)(param_1 + 0x110) = 0;
(**(code **)(*piVar1 + 0x38))(piVar1,iVar2,param_1 + 0x31c,param_1,10,9,0);
}
return;
}
/* @004b95b8 file=? name=FUN_004b95b8 */
void __cdecl FUN_004b95b8(int param_1,int param_2)
{
int *piVar1;
if (0 < *(int *)(param_2 + 0xc)) {
piVar1 = (int *)**(undefined4 **)(*(int *)(param_1 + 0xd0) + 0x128);
(**(code **)(*piVar1 + 0x44))(piVar1,*(int *)(param_2 + 0xc),param_1 + 0x31c);
}
return;
}
/* @004b95ec file=bt/mechweap.cpp name=FUN_004b95ec */
void FUN_004b95ec(void)
{
FUN_0040385c(s_MechWeapon_abstract_class_should_00511a4c,s_d__tesla_bt_bt_MECHWEAP_CPP_00511a86,
0xc9);
return;
}
/* @004b9608 file=? name=FUN_004b9608 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl FUN_004b9608(int param_1)
{
undefined4 uVar1;
if (((float)*(int *)(param_1 + 0x31c) <= _DAT_004b9648) ||
(_DAT_004b9648 < (float)*(int *)(param_1 + 0x3a4))) {
uVar1 = 0;
}
else {
uVar1 = 1;
}
*(undefined4 *)(param_1 + 0x3a4) = *(undefined4 *)(param_1 + 0x31c);
return uVar1;
}
/* @004b964c file=? name=FUN_004b964c */
void __cdecl FUN_004b964c(int param_1,int param_2)
{
FUN_0041bd34(param_1,param_2);
if (*(int *)(param_2 + 0x14) != 0) {
FUN_0041bbd8(param_1 + 0x350,0);
}
FUN_0041bbd8(param_1 + 0x350,*(int *)(param_2 + 0x10));
return;
}
/* @004b9690 file=? name=FUN_004b9690 */
void __cdecl FUN_004b9690(int param_1,undefined4 *param_2,undefined2 param_3)
{
FUN_0041c500(param_1,param_2,param_3);
*param_2 = 0x18;
param_2[4] = *(undefined4 *)(param_1 + 0x364);
if (*(int *)(param_1 + 0x360) == 0) {
param_2[5] = 1;
}
else {
param_2[5] = 0;
}
return;
}
/* @004b96d4 file=? name=FUN_004b96d4 */
void __cdecl FUN_004b96d4(int *param_1,int *param_2)
{
FUN_004b0efc(param_1,param_2);
return;
}
/* @004b96ec file=? name=FUN_004b96ec */
void __cdecl FUN_004b96ec(int *param_1,int param_2)
{
FUN_004b0e6c(param_1,param_2);
param_1[0xfa] = 0;
param_1[200] = 0x3f800000;
param_1[199] = 0;
param_1[0xe9] = 0;
return;
}
/* @004b9728 file=? name=FUN_004b9728 */
void __cdecl FUN_004b9728(int param_1,int param_2,undefined4 *param_3)
{
int iVar1;
int iVar2;
undefined4 local_70;
undefined4 local_6c;
undefined4 local_68;
undefined4 local_64 [2];
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54 [2];
int local_4c;
uint 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;
undefined4 local_18;
int local_14;
uint local_10;
undefined4 *local_c;
int local_8;
iVar1 = *(int *)(param_1 + 0xd0);
iVar2 = FUN_0041a1a4(**(int **)(param_2 + 0xc),0x50bdb4);
if ((iVar2 == 0) || (*(int *)(iVar1 + 0x38c) != -1)) {
FUN_00408440(param_3 + 8,(undefined4 *)(iVar1 + 0x37c));
local_8 = *(int *)(param_1 + 0xd8);
local_c = (undefined4 *)(iVar1 + 0x184);
iVar2 = *(int *)(iVar1 + 0x38c);
local_70 = 100;
local_6c = 0x12;
local_68 = 1;
FUN_00420ea4(local_64,(undefined4 *)&DAT_00522524);
local_5c = 0;
local_58 = 0;
FUN_00420ea4(local_54,local_c);
local_48 = (uint)(iVar2 < 0);
local_44 = *param_3;
local_40 = param_3[1];
local_3c = param_3[2];
local_38 = param_3[3];
local_34 = param_3[4];
local_30 = param_3[5];
local_2c = param_3[6];
local_28 = param_3[7];
local_24 = param_3[8];
local_20 = param_3[9];
local_1c = param_3[10];
local_18 = param_3[0xb];
local_14 = local_8;
local_10 = (uint)(local_8 < 0);
local_4c = iVar2;
FUN_0049b6d8(*(int *)(iVar1 + 0x434),param_2,(int)&local_70);
}
return;
}
/* @004b9864 file=? name=FUN_004b9864 */
void __cdecl FUN_004b9864(undefined4 param_1,float *param_2,float *param_3)
{
float10 fVar1;
float local_68 [12];
float local_38;
float local_34;
undefined4 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;
FUN_004087f4(&local_2c,param_3);
fVar1 = FUN_004dc8ec((double)-local_2c,SUB84((double)-local_24,0),
(uint)((ulonglong)(double)-local_24 >> 0x20));
local_c = (float)fVar1;
local_8 = local_c;
fVar1 = FUN_00408110(local_c);
local_10 = (float)fVar1;
local_8 = local_10;
fVar1 = FUN_004dd138((double)(local_24 * local_24 + local_2c * local_2c));
local_14 = (float)fVar1;
fVar1 = FUN_004dc8ec((double)local_28,SUB84((double)local_14,0),
(uint)((ulonglong)(double)local_14 >> 0x20));
local_1c = (float)fVar1;
local_18 = local_1c;
fVar1 = FUN_00408110(local_1c);
local_34 = (float)fVar1;
local_38 = local_8;
local_30 = 0;
local_20 = local_34;
local_18 = local_34;
FUN_0040aadc(local_68);
FUN_0040ad2c(local_68,&local_38);
FUN_00409a70(param_2,local_68);
return;
}
/* @004b9948 file=? name=FUN_004b9948 */
void __cdecl FUN_004b9948(int param_1,float *param_2)
{
int iVar1;
undefined4 uVar2;
int iVar3;
int local_20 [7];
iVar1 = *(int *)(param_1 + 0xd0);
uVar2 = *(undefined4 *)(param_1 + 0xdc);
FUN_0041f216(local_20,iVar1 + 0x300);
iVar3 = (**(code **)(local_20[0] + 0x34))(local_20,uVar2);
FUN_0041f235(local_20,2);
FUN_00424da8(iVar1,iVar3,param_2);
return;
}
/* @004b99a8 file=? name=FUN_004b99a8 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
int * __cdecl
FUN_004b99a8(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5,
undefined4 param_6,int *param_7,int param_8)
{
int *piVar1;
int iVar2;
char *pcVar3;
int local_24 [7];
int *local_8;
if (param_7 == (int *)0x0) {
param_7 = param_1 + 199;
}
FUN_004b0f74(param_1,param_2,param_3,param_4,param_5,(int)param_7,param_8);
*param_1 = (int)&PTR_FUN_00511d2c;
iVar2 = _DAT_004b9b98;
param_1[0xd1] = _DAT_004b9b98;
param_1[0xd0] = iVar2;
param_1[0xcf] = iVar2;
FUN_0041b9ec(param_1 + 0xd4,param_6);
FUN_0041db7c((int)(param_1 + 0xea));
param_1[0xf7] = *(int *)(param_4 + 400);
param_1[0xf9] = *(int *)(param_4 + 0x198);
param_1[0xea] = *(int *)(param_4 + 0x1a0);
param_1[0xeb] = *(int *)(param_4 + 0x19c);
param_1[0xfb] = *(int *)(param_4 + 0x28);
param_1[0xca] = *(int *)(param_4 + 0x194);
param_1[0xf6] = *(int *)(param_4 + 0x1a4);
param_1[0xce] = *(int *)(param_4 + 0x1a8);
param_1[0xcf] = *(int *)(param_4 + 0x1ac);
param_1[0xd0] = *(int *)(param_4 + 0x1b0);
param_1[0xd1] = *(int *)(param_4 + 0x1b4);
param_1[0xd2] = *(int *)(param_4 + 0x1b8);
param_1[0xcb] = param_1[0xca];
param_1[10] = param_1[10] | 8;
param_1[0xc9] = 0;
param_1[0xd3] = 0;
iVar2 = param_1[0x37];
FUN_0041f216(local_24,param_2 + 0x300);
iVar2 = (**(code **)(local_24[0] + 0x34))(local_24,iVar2);
FUN_0041f235(local_24,2);
local_8 = *(int **)(iVar2 + 0x11c);
local_8[3] = local_8[3] + 1;
pcVar3 = FUN_004d4c78((char *)local_8[2],&DAT_00511aa2);
if (pcVar3 == (char *)0x0) {
param_1[0xcd] = 0;
}
else {
param_1[0xcd] = 1;
}
param_1[0xfa] = 0;
param_1[200] = 0x3f800000;
param_1[199] = 0;
param_1[0xe9] = 0;
param_1[0xf8] = (uint)(param_1[0xcd] == 0);
param_1[0xcc] = 0;
piVar1 = local_8 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(local_8,3);
}
return param_1;
}
/* @004b9b9c file=? name=FUN_004b9b9c */
void __cdecl FUN_004b9b9c(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_00511d2c;
FUN_0041baa4(param_1 + 0xd4,2);
FUN_004b115c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004b9bdc file=? name=FUN_004b9bdc */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004b9bdc(int param_1)
{
int iVar1;
float10 fVar2;
float local_10;
float local_c;
float local_8;
iVar1 = *(int *)(param_1 + 0xd0);
if (*(int *)(iVar1 + 0x388) == 0) {
*(undefined4 *)(param_1 + 0x324) = 0xbf800000;
*(undefined4 *)(param_1 + 0x34c) = 0;
}
else {
FUN_00408644(&local_10,(float *)(iVar1 + 0x37c),(float *)(iVar1 + 0x100));
fVar2 = FUN_004dd138((double)(local_8 * local_8 + local_c * local_c + local_10 * local_10));
*(float *)(param_1 + 0x324) = (float)fVar2;
*(float *)(param_1 + 0x328) =
(_DAT_004b9c98 - *(float *)(*(int *)(param_1 + 0xe0) + 0x158)) *
*(float *)(param_1 + 0x32c);
if (*(float *)(param_1 + 0x328) <= *(float *)(param_1 + 0x324)) {
*(undefined4 *)(param_1 + 0x34c) = 0;
}
else {
*(undefined4 *)(param_1 + 0x34c) = 1;
}
}
return;
}
/* @004b9c9c file=? name=FUN_004b9c9c */
void __cdecl FUN_004b9c9c(int param_1)
{
*(float *)(param_1 + 800) =
(*(float *)(param_1 + 0x3dc) - *(float *)(param_1 + 1000)) / *(float *)(param_1 + 0x3dc);
return;
}
/* @004b9cbc file=? name=FUN_004b9cbc */
void __cdecl FUN_004b9cbc(int param_1,undefined4 *param_2)
{
FUN_0040a7f4(param_2,(undefined4 *)(*(int *)(param_1 + 0xd0) + 0x1c4));
return;
}
/* @004b9cdc file=? name=FUN_004b9cdc */
void __cdecl FUN_004b9cdc(int param_1,float *param_2,float *param_3)
{
FUN_00408644(param_3,(float *)(*(int *)(param_1 + 0xd0) + 0x37c),param_2);
return;
}
/* @004b9d00 file=? name=FUN_004b9d00 */
void __cdecl FUN_004b9d00(int param_1)
{
FUN_004b1224(param_1);
return;
}
/* @004b9d10 file=? name=FUN_004b9d10 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl
FUN_004b9d10(int param_1,int param_2,char *param_3,char *param_4,char *param_5,int param_6,
int param_7,int param_8)
{
char *pcVar1;
float fVar2;
bool bVar3;
int iVar4;
undefined4 uVar5;
undefined3 extraout_var;
char *pcVar6;
char *pcVar7;
undefined4 *puVar8;
float local_2c;
float local_28;
float local_24;
float local_20;
float local_1c;
float local_18;
char *local_14;
char *local_10;
byte *local_c;
char *local_8;
iVar4 = FUN_004b13ac(param_2,param_3,param_4,param_5,param_6,param_7,param_8);
if (iVar4 == 0) {
uVar5 = 0;
}
else {
param_5[0x24] = -0x44;
param_5[0x25] = '\x01';
param_5[0x26] = '\0';
param_5[0x27] = '\0';
param_5[0x20] = -0x33;
param_5[0x21] = '\v';
param_5[0x22] = '\0';
param_5[0x23] = '\0';
if (param_8 == 1) {
param_5[0x19c] = '\0';
param_5[0x19d] = '\0';
param_5[0x19e] = -0x80;
param_5[0x19f] = -0x41;
param_5[400] = '\0';
param_5[0x191] = '\0';
param_5[0x192] = -0x80;
param_5[0x193] = -0x41;
param_5[0x194] = '\0';
param_5[0x195] = '\0';
param_5[0x196] = -0x80;
param_5[0x197] = -0x41;
param_5[0x1a4] = '\0';
param_5[0x1a5] = '\0';
param_5[0x1a6] = -0x80;
param_5[0x1a7] = -0x41;
param_5[0x1a0] = -1;
param_5[0x1a1] = -1;
param_5[0x1a2] = -1;
param_5[0x1a3] = -1;
param_5[0x198] = -1;
param_5[0x199] = -1;
param_5[0x19a] = -1;
param_5[0x19b] = -1;
param_5[0x1a8] = -1;
fVar2 = _DAT_004ba37c;
param_5[0x1a9] = -1;
param_5[0x1aa] = -1;
param_5[0x1ab] = -1;
local_18 = _DAT_004ba37c;
local_1c = _DAT_004ba37c;
local_20 = _DAT_004ba37c;
*(float *)(param_5 + 0x1ac) = _DAT_004ba37c;
*(float *)(param_5 + 0x1b0) = fVar2;
*(float *)(param_5 + 0x1b4) = fVar2;
param_5[0x1b8] = -1;
param_5[0x1b9] = -1;
param_5[0x1ba] = -1;
param_5[0x1bb] = -1;
}
if ((*(int *)(param_5 + 0x28) == -1) && (1 < param_8)) {
FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_SegmentPageName__00511aa4,(char *)0x0);
uVar5 = 0;
}
else {
iVar4 = FUN_00404118(param_6,param_4,s_DamageAmount_00511abe,(float *)(param_5 + 0x19c));
if ((iVar4 == 0) && (_DAT_004ba37c == *(float *)(param_5 + 0x19c))) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_Missing_DamageAmount_00511acb,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
uVar5 = 0;
}
else {
iVar4 = FUN_00404118(param_6,param_4,s_HeatCostToFire_00511ae1,(float *)(param_5 + 0x1a4));
if ((iVar4 == 0) && (_DAT_004ba37c == *(float *)(param_5 + 0x1a4))) {
FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_HeatCostToFire___00511af0,(char *)0x0);
uVar5 = 0;
}
else {
bVar3 = FUN_004040d8(param_6,param_4,s_PipPosition_00511b0a,(int *)(param_5 + 0x1a8));
if ((CONCAT31(extraout_var,bVar3) == 0) && (*(int *)(param_5 + 0x1a8) == -1)) {
FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_PipPosition___00511b16,(char *)0x0);
uVar5 = 0;
}
else {
local_8 = s_Unspecified_00511b2d;
iVar4 = FUN_00404088(param_6,param_4,s_PipColor_00511b39,&local_8);
if (iVar4 == 0) {
local_c = (byte *)(param_5 + 0x1ac);
local_24 = _DAT_004ba37c;
local_28 = _DAT_004ba37c;
local_2c = _DAT_004ba37c;
iVar4 = FUN_004d4b14((byte *)&local_2c,local_c,0xc);
if (iVar4 == 0) {
FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_PipColor__00511b42,(char *)0x0);
return 0;
}
}
pcVar7 = s_Unspecified_00511b55;
pcVar6 = local_8;
do {
bVar3 = *pcVar6 == *pcVar7;
if (!bVar3) break;
if (*pcVar6 == '\0') goto LAB_004b9fcd;
pcVar1 = pcVar6 + 1;
bVar3 = *pcVar1 == pcVar7[1];
if (!bVar3) break;
pcVar6 = pcVar6 + 2;
pcVar7 = pcVar7 + 2;
bVar3 = *pcVar1 == '\0';
} while (!bVar3);
if (!bVar3) {
FUN_00406824(local_8,(float *)(param_5 + 0x1ac));
}
LAB_004b9fcd:
iVar4 = FUN_00404190(param_6,param_4,s_PipExtendedRange_00511b61,
(undefined4 *)(param_5 + 0x1b8));
if ((iVar4 == 0) && (*(int *)(param_5 + 0x1b8) == -1)) {
FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_PipExtendedRange__00511b72,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
uVar5 = 0;
}
else {
iVar4 = FUN_00404118(param_6,param_4,s_RechargeRate_00511b8e,(float *)(param_5 + 400))
;
if ((iVar4 == 0) && (_DAT_004ba37c == *(float *)(param_5 + 400))) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_Missing_RechargeRate_00511b9b,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
uVar5 = 0;
}
else {
iVar4 = FUN_00404118(param_6,param_4,s_WeaponRange_00511bb1,
(float *)(param_5 + 0x194));
if ((iVar4 == 0) && (_DAT_004ba37c == *(float *)(param_5 + 0x194))) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_Missing_WeaponRange_00511bbd,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
uVar5 = 0;
}
else {
local_10 = s_Unspecified_00511bd2;
iVar4 = FUN_00404088(param_6,param_4,s_DamageType_00511bde,&local_10);
if ((iVar4 == 0) && (_DAT_004ba37c == *(float *)(param_5 + 0x19c))) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_DamageType__00511be9,(char *)0x0);
uVar5 = 0;
}
else {
pcVar7 = s_Unspecified_00511bff;
pcVar6 = local_10;
do {
if (*pcVar7 != *pcVar6) goto LAB_004ba177;
bVar3 = true;
if (*pcVar7 == '\0') break;
pcVar1 = pcVar7 + 1;
if (*pcVar1 != pcVar6[1]) goto LAB_004ba177;
pcVar7 = pcVar7 + 2;
pcVar6 = pcVar6 + 2;
bVar3 = *pcVar1 == '\0';
} while (!bVar3);
if (!bVar3) {
LAB_004ba177:
iVar4 = FUN_004d4b58(local_10,s_CollisionDamage_00511c0b);
if (iVar4 == 0) {
param_5[0x1a0] = '\0';
param_5[0x1a1] = '\0';
param_5[0x1a2] = '\0';
param_5[0x1a3] = '\0';
}
else {
iVar4 = FUN_004d4b58(local_10,s_BallisticDamage_00511c1b);
if (iVar4 == 0) {
param_5[0x1a0] = '\x01';
param_5[0x1a1] = '\0';
param_5[0x1a2] = '\0';
param_5[0x1a3] = '\0';
}
else {
iVar4 = FUN_004d4b58(local_10,s_ExplosiveDamage_00511c2b);
if (iVar4 == 0) {
param_5[0x1a0] = '\x02';
param_5[0x1a1] = '\0';
param_5[0x1a2] = '\0';
param_5[0x1a3] = '\0';
}
else {
iVar4 = FUN_004d4b58(local_10,s_LaserDamage_00511c3b);
if (iVar4 == 0) {
param_5[0x1a0] = '\x03';
param_5[0x1a1] = '\0';
param_5[0x1a2] = '\0';
param_5[0x1a3] = '\0';
}
else {
iVar4 = FUN_004d4b58(local_10,s_EnergyDamage_00511c47);
pcVar6 = local_10;
if (iVar4 != 0) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_has_an_unknown_DamageType_of_00511c54,
(char *)0x0);
FUN_004dbb24(&DAT_00524e20,pcVar6,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return 0;
}
param_5[0x1a0] = '\x04';
param_5[0x1a1] = '\0';
param_5[0x1a2] = '\0';
param_5[0x1a3] = '\0';
}
}
}
}
}
local_14 = s_Unspecified_00511c73;
iVar4 = FUN_00404088(param_6,param_4,s_ExplosionModelFile_00511c7f,&local_14);
if ((iVar4 == 0) && (*(int *)(param_5 + 0x198) == -1)) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_ExplosionModelFile__00511c92,(char *)0x0)
;
uVar5 = 0;
}
else {
puVar8 = (undefined4 *)0x0;
pcVar7 = s_Unspecified_00511cb0;
pcVar6 = local_14;
do {
bVar3 = *pcVar6 == *pcVar7;
if (!bVar3) break;
if (*pcVar6 == '\0') goto LAB_004ba302;
pcVar1 = pcVar6 + 1;
bVar3 = *pcVar1 == pcVar7[1];
if (!bVar3) break;
pcVar6 = pcVar6 + 2;
pcVar7 = pcVar7 + 2;
bVar3 = *pcVar1 == '\0';
} while (!bVar3);
if (!bVar3) {
puVar8 = (undefined4 *)FUN_00406ff8(param_1,local_14,1,-1);
}
LAB_004ba302:
pcVar6 = local_14;
if ((puVar8 == (undefined4 *)0x0) && (*(int *)(param_5 + 0x198) == -1)) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_cannot_find_00511cbc,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,pcVar6,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_in_resource_file__00511cca,(char *)0x0);
uVar5 = 0;
}
else {
if (puVar8 != (undefined4 *)0x0) {
*(undefined4 *)(param_5 + 0x198) = *puVar8;
}
uVar5 = 1;
}
}
}
}
}
}
}
}
}
}
}
return uVar5;
}
/* @004ba45c file=bt/mechweap.hpp name=FUN_004ba45c */
void FUN_004ba45c(void)
{
FUN_0040385c(s_ERROR__Accessing_Pure_Virtual_Me_00511cde,s_d__tesla_bt_bt_mechweap_hpp_00511d0f,
0x157);
return;
}
/* @004ba478 file=? name=FUN_004ba478 */
int __cdecl FUN_004ba478(int param_1,int param_2)
{
bool bVar1;
undefined3 extraout_var;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
bVar1 = FUN_004ac9c8(param_1);
iVar4 = CONCAT31(extraout_var,bVar1);
if (CONCAT31(extraout_var,bVar1) == 0) {
iVar2 = FUN_004ad7d4(param_1);
iVar4 = 0;
if ((iVar2 != 0) && (iVar4 = param_2, 0 < *(int *)(param_2 + 0xc))) {
iVar2 = *(int *)(param_1 + 0x3f0);
iVar5 = *(int *)(param_1 + 0x3fc) + 1;
iVar3 = iVar2 + 1;
iVar4 = iVar3 / iVar5;
iVar3 = iVar3 % iVar5;
*(int *)(param_1 + 0x3f0) = iVar3;
if (iVar2 < iVar3) {
iVar4 = FUN_004ba9a8(param_1);
}
}
}
return iVar4;
}
/* @004ba4d0 file=? name=FUN_004ba4d0 */
void __cdecl FUN_004ba4d0(int *param_1,int param_2)
{
undefined4 local_10;
undefined4 local_c;
undefined4 local_8;
FUN_004b96ec(param_1,param_2);
FUN_0041bbd8((int)(param_1 + 0xd4),3);
param_1[0x105] = 0;
param_1[0x117] = 0;
param_1[0x11b] = 0;
param_1[0x11d] = 0;
local_10 = 0x3f800000;
local_c = 0x3f800000;
local_8 = 0x3f800000;
FUN_00408440(param_1 + 0x10b,&local_10);
FUN_00409968(param_1 + 0x107,&DAT_004e0fa4);
param_1[0x106] = 0;
*(ushort *)(param_1 + 6) = *(ushort *)(param_1 + 6) | 1;
return;
}
/* @004ba568 file=? name=FUN_004ba568 */
void __cdecl FUN_004ba568(int param_1,int param_2)
{
int iVar1;
undefined4 uVar2;
undefined4 local_14 [2];
int local_c;
int local_8;
iVar1 = FUN_00421070((int *)(param_2 + 0x30),(int *)&DAT_00522524);
if (iVar1 == 0) {
*(undefined4 *)(param_1 + 0x474) = 0;
}
else {
local_c = param_2 + 0x30;
local_8 = *(int *)(DAT_004efc94 + 0x2c);
uVar2 = (**(code **)(*(int *)(local_8 + 0x54) + 0xc))(local_8 + 0x54,local_c);
*(undefined4 *)(param_1 + 0x474) = uVar2;
if (*(int *)(param_1 + 0x474) == 0) {
return;
}
}
FUN_004b964c(param_1,param_2);
iVar1 = *(int *)(param_2 + 0x18);
*(int *)(param_1 + 0x418) = iVar1;
if (iVar1 == 0) {
FUN_0041bbd8(param_1 + 0x350,2);
}
else {
FUN_0041bbd8(param_1 + 0x350,0);
}
*(undefined4 *)(param_1 + 0x46c) = *(undefined4 *)(param_2 + 0x28);
FUN_00408440((undefined4 *)(param_1 + 0x460),(undefined4 *)(param_2 + 0x1c));
FUN_00420ea4(local_14,(undefined4 *)(param_2 + 0x30));
*(undefined4 *)(param_1 + 0x470) = *(undefined4 *)(param_2 + 0x2c);
*(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) & 0xfffffffd;
*(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_1 + 0x14);
return;
}
/* @004ba65c file=? name=FUN_004ba65c */
void __cdecl FUN_004ba65c(int param_1,undefined4 *param_2,undefined2 param_3)
{
FUN_004b9690(param_1,param_2,param_3);
*param_2 = 0x38;
param_2[6] = *(undefined4 *)(param_1 + 0x418);
param_2[10] = *(undefined4 *)(param_1 + 0x46c);
FUN_00408440(param_2 + 7,(undefined4 *)(param_1 + 0x460));
param_2[0xb] = *(undefined4 *)(param_1 + 0x470);
if (*(int *)(param_1 + 0x474) == 0) {
FUN_00420ef4(param_2 + 0xc,(undefined4 *)&DAT_00522524);
}
else {
FUN_00420ef4(param_2 + 0xc,(undefined4 *)(*(int *)(param_1 + 0x474) + 0x184));
}
return;
}
/* @004ba6e0 file=? name=FUN_004ba6e0 */
undefined4 __cdecl FUN_004ba6e0(int param_1,int param_2)
{
if (param_2 == 0) {
param_2 = FUN_00417ab4(param_1 + 0x1d0);
}
if (param_2 == 0) {
return 0;
}
if ((*(float *)(param_1 + 0x400 + *(int *)(param_1 + 0x3f0) * 4) <= *(float *)(param_2 + 0x1dc))
&& (*(int *)(param_2 + 0x210) == 2)) {
return 1;
}
return 0;
}
/* @004ba738 file=? name=FUN_004ba738 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004ba738(int param_1)
{
float fVar1;
float10 fVar2;
fVar2 = FUN_004dcd00((double)(*(float *)(param_1 + 0x414) - _DAT_004ba818));
if ((float10)_DAT_004ba81c < fVar2) {
*(float *)(param_1 + 800) =
*(float *)(param_1 + 0x414) / *(float *)(param_1 + 0x400 + *(int *)(param_1 + 0x3f0) * 4);
}
else {
*(undefined4 *)(param_1 + 800) = 0;
}
fVar2 = FUN_004dcd00((double)(*(float *)(param_1 + 800) - _DAT_004ba820));
if (fVar2 <= (float10)_DAT_004ba824) {
*(undefined4 *)(param_1 + 800) = 0x3f800000;
}
if (_DAT_004ba818 <= *(float *)(param_1 + 800)) {
if (*(float *)(param_1 + 800) <= _DAT_004ba820) {
fVar1 = *(float *)(param_1 + 800);
}
else {
fVar1 = (float)_DAT_004ba830;
}
}
else {
fVar1 = (float)_DAT_004ba828;
}
*(float *)(param_1 + 800) = fVar1;
return;
}
/* @004ba838 file=? name=FUN_004ba838 */
void __cdecl FUN_004ba838(int param_1,float param_2)
{
int iVar1;
float10 fVar2;
iVar1 = FUN_00417ab4(param_1 + 0x1d0);
fVar2 = FUN_004b0d50(param_1);
*(float *)(param_1 + 0x45c) =
(*(float *)(iVar1 + 0x1dc) - *(float *)(param_1 + 0x414)) / (float)fVar2;
*(float *)(param_1 + 0x414) =
(*(float *)(param_1 + 0x45c) / *(float *)(param_1 + 0x454)) * param_2 +
*(float *)(param_1 + 0x414);
iVar1 = FUN_004ad7d4(param_1);
if (iVar1 != 0) {
iVar1 = FUN_00417ab4(param_1 + 0x1d0);
*(float *)(iVar1 + 0x1c8) =
*(float *)(param_1 + 0x45c) * *(float *)(param_1 + 0x45c) * (float)fVar2 * param_2 +
*(float *)(iVar1 + 0x1c8);
}
return;
}
/* @004ba8d0 file=? name=FUN_004ba8d0 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004ba8d0(int param_1,float param_2)
{
int iVar1;
if (*(int *)(param_1 + 0x418) == 0) {
*(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) | 2;
return;
}
FUN_0041bbd8(param_1 + 0x350,0);
*(float *)(param_1 + 0x440) = *(float *)(param_1 + 0x440) - param_2;
if (*(float *)(param_1 + 0x440) <= _DAT_004ba9a4) {
LAB_004ba916:
*(undefined4 *)(param_1 + 0x418) = 0;
FUN_0041bbd8(param_1 + 0x350,2);
*(undefined4 *)(param_1 + 0x46c) = 0;
*(undefined4 *)(param_1 + 0x440) = *(undefined4 *)(param_1 + 0x43c);
*(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) | 2;
return;
}
if (*(int *)(param_1 + 0x474) != 0) {
iVar1 = FUN_0041a1a4(**(int **)(*(int *)(param_1 + 0x474) + 0xc),0x50bdb4);
if (iVar1 != 0) {
iVar1 = FUN_0049fb54(*(int *)(param_1 + 0x474));
if (iVar1 != 0) goto LAB_004ba916;
}
}
FUN_0041c350(param_1,PTR_FUN_00511e6c,DAT_00511e70,DAT_00511e74);
return;
}
/* @004ba9a8 file=? name=FUN_004ba9a8 */
void __cdecl FUN_004ba9a8(int param_1)
{
undefined4 local_10;
undefined4 local_c;
undefined4 local_8;
FUN_00409968((undefined4 *)(param_1 + 0x41c),&DAT_004e0fa4);
local_10 = 0x3f800000;
local_c = 0x3f800000;
local_8 = 0x3f800000;
FUN_00408440((undefined4 *)(param_1 + 0x42c),&local_10);
*(undefined4 *)(param_1 + 0x474) = 0;
*(undefined4 *)(param_1 + 0x418) = 0;
*(undefined4 *)(param_1 + 0x46c) = 0;
FUN_0041bbd8(param_1 + 0x350,3);
return;
}
/* @004baa20 file=? name=FUN_004baa20 */
void __cdecl FUN_004baa20(int param_1)
{
int iVar1;
if (*(int *)(param_1 + 0x46c) != 0) {
iVar1 = FUN_0041a1a4(**(int **)(*(int *)(param_1 + 0x474) + 0xc),0x50bdb4);
if (iVar1 != 0) {
iVar1 = FUN_0049fb54(*(int *)(param_1 + 0x474));
if (iVar1 != 0) {
FUN_004ba9a8(param_1);
return;
}
}
FUN_0041c350(param_1,PTR_FUN_00511e78,DAT_00511e7c,DAT_00511e80);
}
return;
}
/* @004baa88 file=? name=FUN_004baa88 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004baa88(int *param_1,float param_2)
{
int iVar1;
int iVar2;
int iVar3;
FUN_004b0bd0(param_1,param_2);
iVar1 = FUN_004b9608((int)param_1);
iVar2 = FUN_004b9bdc((int)param_1);
param_1[0xd3] = iVar2;
iVar2 = param_1[0x34];
if (((param_1[0x10] == 1) || (param_1[0x61] == 2)) || (iVar3 = FUN_0049fb54(iVar2), iVar3 != 0)) {
FUN_004ba9a8((int)param_1);
param_1[0x105] = 0;
(**(code **)(*param_1 + 0x44))(param_1);
return;
}
iVar3 = param_1[0xd9];
if (iVar3 == 0) {
param_1[0x110] = (int)((float)param_1[0x110] - param_2);
if ((float)param_1[0x110] <= _DAT_004bac08) {
FUN_004ba9a8((int)param_1);
return;
}
FUN_004baa20((int)param_1);
return;
}
if (iVar3 != 2) {
if (iVar3 != 3) {
return;
}
if (iVar1 != 0) {
FUN_0041bbd8((int)(param_1 + 0xd4),4);
FUN_0041bbd8((int)(param_1 + 0xd4),3);
}
if (param_1[0x9e] == 4) {
FUN_004ba838((int)param_1,param_2);
}
(**(code **)(*param_1 + 0x44))(param_1);
if (_DAT_004bac04 != (float)param_1[200]) {
return;
}
FUN_0041bbd8((int)(param_1 + 0xd4),2);
return;
}
if (iVar1 == 0) {
return;
}
if ((param_1[0xf8] != 0) && (*(int *)(iVar2 + 0x388) != 0)) {
FUN_0041bbd8((int)(param_1 + 0xd4),0);
(**(code **)(*param_1 + 0x48))(param_1);
FUN_004baa20((int)param_1);
return;
}
FUN_0041bbd8((int)(param_1 + 0xd4),4);
FUN_0041bbd8((int)(param_1 + 0xd4),2);
return;
}
/* @004bac0c file=? name=FUN_004bac0c */
void __cdecl FUN_004bac0c(int param_1)
{
float10 fVar1;
float local_6c;
float local_68;
float local_64;
undefined4 local_60 [7];
float local_44 [12];
float local_14 [3];
float local_8;
if (*(int *)(param_1 + 0x470) == 0) {
if (*(int *)(param_1 + 0x474) == 0) {
return;
}
FUN_00408b98(local_14,(float *)(param_1 + 0x460),(float *)(*(int *)(param_1 + 0x474) + 0xd0));
}
else {
FUN_00408440(local_14,(undefined4 *)(param_1 + 0x460));
}
FUN_0040aadc(local_44);
FUN_004b9948(param_1,local_44);
FUN_0040a968(local_60,local_44);
FUN_00408bf8(&local_6c,local_14,local_44);
fVar1 = FUN_004dd138((double)(local_64 * local_64 + local_68 * local_68 + local_6c * local_6c));
local_8 = (float)fVar1;
*(float *)(param_1 + 0x434) = local_8 / *(float *)(param_1 + 0x438);
FUN_004b9864(param_1,(float *)(param_1 + 0x41c),&local_6c);
return;
}
/* @004bace8 file=? name=FUN_004bace8 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004bace8(int *param_1)
{
float *pfVar1;
int iVar2;
int iVar3;
float10 fVar4;
float local_c4;
float local_c0;
float local_bc;
float local_b8 [3];
float local_ac [12];
int local_7c [7];
float local_60 [7];
float local_44 [12];
int *local_14;
int *local_10;
float local_c;
float local_8;
iVar2 = param_1[0x34];
if (*(int *)(iVar2 + 0x388) != 0) {
param_1[0x110] = param_1[0x10f];
local_8 = (float)param_1[0x105] * (float)param_1[0x105] * _DAT_004bafb8 * (float)param_1[0x115];
param_1[0x113] = (int)((float)param_1[0x111] * local_8);
param_1[0x114] = (int)(local_8 - (float)param_1[0x113]);
param_1[0x113] = (int)(float)(_DAT_004bafbc * (float10)(float)param_1[0x113]);
iVar3 = FUN_004ad7d4((int)param_1);
if (iVar3 != 0) {
local_c = (float)param_1[0x114];
param_1[0x72] = (int)(local_c + (float)param_1[0x72]);
}
(**(code **)(*param_1 + 0x44))();
param_1[0x105] = 0;
param_1[0x106] = 1;
FUN_0040aadc(local_44);
FUN_004b9948((int)param_1,local_44);
FUN_0040a968(local_60,local_44);
FUN_0041f216(local_7c,iVar2 + 0x300);
iVar3 = (**(code **)(local_7c[0] + 0x34))(local_7c);
FUN_0041f235(local_7c,2);
FUN_0040aadc(local_ac);
FUN_00424da8(iVar2,iVar3,local_ac);
param_1[0x11b] = 1;
pfVar1 = (float *)(iVar2 + 0x37c);
FUN_00408bf8(local_b8,pfVar1,local_ac);
FUN_004b9864(param_1,(float *)(param_1 + 0x107),local_b8);
FUN_0040a138((float *)(param_1 + 0x107));
FUN_00408644(&local_c4,pfVar1,local_60);
fVar4 = FUN_004dd138((double)(local_bc * local_bc + local_c0 * local_c0 + local_c4 * local_c4));
param_1[0x10d] = (int)(float)(fVar4 / (float10)(float)param_1[0x10e]);
fVar4 = FUN_004dd138((double)(local_bc * local_bc + local_c0 * local_c0 + local_c4 * local_c4));
if (fVar4 <= (float10)(float)param_1[0xca]) {
local_10 = param_1 + 0xf2;
FUN_00408440(local_10,pfVar1);
local_14 = param_1 + 0xec;
FUN_00408440(local_14,&local_c4);
param_1[0xeb] = param_1[0x113];
FUN_004b9728((int)param_1,*(int *)(iVar2 + 0x388),param_1 + 0xea);
}
iVar3 = *(int *)(iVar2 + 0x388);
param_1[0x11d] = iVar3;
if ((*(byte *)(iVar3 + 0x29) & 1) == 0) {
param_1[0x11c] = 1;
FUN_00408440(param_1 + 0x118,pfVar1);
}
else {
param_1[0x11c] = 0;
FUN_00408bf8((float *)(param_1 + 0x118),pfVar1,(float *)(*(int *)(iVar2 + 0x388) + 0xd0));
}
*(ushort *)(param_1 + 6) = *(ushort *)(param_1 + 6) | 1;
}
return;
}
/* @004bafc8 file=? name=FUN_004bafc8 */
void __cdecl FUN_004bafc8(int *param_1,int *param_2)
{
if ((*param_2 == 4) && (param_1[0xd9] == 3)) {
FUN_0041bbd8((int)(param_1 + 0x99),2);
param_1[0x105] = 0;
(**(code **)(*param_1 + 0x44))(param_1);
}
FUN_004b96d4(param_1,param_2);
return;
}
/* @004bb014 file=? name=FUN_004bb014 */
void __cdecl FUN_004bb014(int param_1)
{
int iVar1;
FUN_004b9d00(param_1);
iVar1 = *(int *)(param_1 + 0x364);
if (iVar1 == 0) {
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___Firing_00511f8e,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
}
if (iVar1 == 2) {
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___Loaded_00511f98,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
}
if (iVar1 == 3) {
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___Loading_00511fa2,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
}
if (iVar1 == 4) {
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___TriggerDuringLoad_00511fad,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
return;
}
/* @004bb120 file=? name=FUN_004bb120 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
int * __cdecl
FUN_004bb120(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5)
{
float fVar1;
double dVar2;
int *piVar3;
float *pfVar4;
int iVar5;
float *pfVar6;
float10 fVar7;
undefined4 local_18;
undefined4 local_14;
undefined4 local_10;
int local_8;
FUN_004b99a8(param_1,param_2,param_3,param_4,param_5,5,(int *)0x0,0);
*param_1 = (int)&PTR_FUN_00512078;
if ((*(uint *)(param_2 + 0x28) & 0xc) == 4) {
param_1[7] = (int)PTR_FUN_00511e90;
param_1[8] = DAT_00511e94;
param_1[9] = DAT_00511e98;
param_1[10] = param_1[10] | 2;
}
else {
param_1[7] = (int)PTR_FUN_00511e84;
param_1[8] = DAT_00511e88;
param_1[9] = DAT_00511e8c;
}
FUN_0041bbd8((int)(param_1 + 0xd4),3);
FUN_00408440(param_1 + 0x118,&DAT_004e0f80);
param_1[0x11b] = 0;
param_1[0x11d] = 0;
param_1[0x11c] = 0;
local_18 = 0x3f800000;
local_14 = 0x3f800000;
local_10 = 0x3f800000;
FUN_00408440(param_1 + 0x10b,&local_18);
FUN_00409968(param_1 + 0x107,&DAT_004e0fa4);
param_1[0x106] = 0;
param_1[0x105] = 0;
param_1[0x113] = 0;
param_1[0x114] = 0;
param_1[0x116] = 0;
param_1[0x10e] = *(int *)(param_4 + 0x1bc);
param_1[0x10f] = *(int *)(param_4 + 0x1c0);
param_1[0x110] = param_1[0x10f];
param_1[0x112] = (int)(((float)param_1[0xeb] + (float)param_1[0xf6]) * _DAT_004bb3ac);
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) {
local_8 = FUN_00417ab4((int)(param_1 + 0x74));
iVar5 = 0;
piVar3 = param_1 + 0x100;
do {
iVar5 = iVar5 + 1;
*piVar3 = 0;
piVar3 = piVar3 + 1;
} while (iVar5 < 5);
iVar5 = 0;
pfVar6 = (float *)(param_1 + 0x100);
pfVar4 = (float *)(param_4 + 0x1c4);
do {
if (*pfVar4 == _DAT_004bb3b0) {
param_1[0xff] = iVar5 + -1;
break;
}
iVar5 = iVar5 + 1;
fVar1 = *pfVar4;
pfVar4 = pfVar4 + 1;
*pfVar6 = fVar1 * *(float *)(local_8 + 0x1d8);
pfVar6 = pfVar6 + 1;
} while (iVar5 < 5);
iVar5 = *(int *)(param_4 + 0x1d8);
param_1[0xfd] = iVar5;
param_1[0xfc] = iVar5;
param_1[0xfe] = 0;
param_1[0x115] =
(int)((float)param_1[0x112] /
((float)param_1[param_1[0xfd] + 0x100] * (float)param_1[param_1[0xfd] + 0x100] *
_DAT_004bb3b4));
dVar2 = (double)((float10)_DAT_004bb3c4 -
_DAT_004bb3b8 * (float10)(float)param_1[param_1[0xfd] + 0x100]);
fVar7 = (float10)FUN_004dce24(SUB84(dVar2,0),(int)((ulonglong)dVar2 >> 0x20));
param_1[0xc4] = (int)((float)((float10)(float)param_1[0xf7] / -fVar7) / (float)param_1[0x115]);
}
param_1[0x111] = (int)((float)param_1[0xeb] / ((float)param_1[0xeb] + (float)param_1[0xf6]));
param_1[0x117] = 0;
return param_1;
}
/* @004bb3c8 file=? name=FUN_004bb3c8 */
void __cdecl FUN_004bb3c8(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_00512078;
FUN_004b9b9c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004bb3f4 file=? name=FUN_004bb3f4 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __cdecl FUN_004bb3f4(int param_1,float param_2)
{
return (float10)(*(float *)(param_1 + 0x444) *
param_2 * param_2 * _DAT_004bb428 * *(float *)(param_1 + 0x454));
}
/* @004bb42c file=? name=FUN_004bb42c */
void __cdecl FUN_004bb42c(int param_1,float param_2)
{
float10 fVar1;
fVar1 = FUN_004bb3f4(param_1,param_2);
FUN_004dd138((double)(((float)fVar1 - 0.0) / 2e+08));
return;
}
/* @004bb478 file=? name=FUN_004bb478 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl
FUN_004bb478(int param_1,int param_2,char *param_3,char *param_4,char *param_5,int param_6,
int param_7,int param_8)
{
int *piVar1;
uint *puVar2;
undefined4 *puVar3;
int iVar4;
undefined4 uVar5;
char *pcVar6;
undefined4 *puVar7;
uint *puVar8;
char cVar9;
float10 fVar10;
float *local_1c;
int *local_10;
int *local_c;
int *local_8;
iVar4 = FUN_004b9d10(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
if (iVar4 == 0) {
uVar5 = 0;
}
else {
param_5[0x24] = -0x24;
param_5[0x25] = '\x01';
param_5[0x26] = '\0';
param_5[0x27] = '\0';
param_5[0x20] = -0x38;
param_5[0x21] = '\v';
param_5[0x22] = '\0';
param_5[0x23] = '\0';
if (param_8 == 1) {
param_5[0x1bc] = '\0';
param_5[0x1bd] = '\0';
param_5[0x1be] = -0x80;
param_5[0x1bf] = -0x41;
param_5[0x1c0] = '\0';
param_5[0x1c1] = '\0';
param_5[0x1c2] = -0x80;
param_5[0x1c3] = -0x41;
iVar4 = 0;
pcVar6 = param_5 + 0x1c4;
do {
pcVar6[0] = '\0';
pcVar6[1] = '\0';
pcVar6[2] = -0x80;
pcVar6[3] = -0x41;
iVar4 = iVar4 + 1;
pcVar6 = pcVar6 + 4;
} while (iVar4 < 5);
param_5[0x1d8] = -1;
param_5[0x1d9] = -1;
param_5[0x1da] = -1;
param_5[0x1db] = -1;
}
iVar4 = FUN_00404118(param_6,param_4,s_DischargeTime_00511fc2,(float *)(param_5 + 0x1c0));
if ((iVar4 == 0) && (_DAT_004bb798 == *(float *)(param_5 + 0x1c0))) {
FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_DischargeTime__00511fd0,(char *)0x0);
uVar5 = 0;
}
else {
iVar4 = FUN_00404118(param_6,param_4,s_GraphicLength_00511fe9,(float *)(param_5 + 0x1bc));
if ((iVar4 == 0) && (_DAT_004bb798 == *(float *)(param_5 + 0x1bc))) {
FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_GraphicLength__00511ff7,(char *)0x0);
uVar5 = 0;
}
else {
local_8 = FUN_00404720(param_6,param_4,s_SeekVoltage_00512010);
iVar4 = FUN_00403b60((int)local_8);
if ((iVar4 == 0) && (*(int *)(param_5 + 0x1d8) == -1)) {
if (local_8 != (int *)0x0) {
(**(code **)*local_8)(local_8,3);
}
FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_SeekVoltage_0051201c,(char *)0x0);
FUN_004d9c38((int *)&DAT_00524e68);
}
else {
local_1c = (float *)(param_5 + 0x1c4);
puVar3 = (undefined4 *)local_8[1];
while (puVar3 != (undefined4 *)0x0) {
puVar7 = (undefined4 *)FUN_00402298(0x10);
if (puVar7 == (undefined4 *)0x0) {
local_c = (int *)0x0;
}
else {
local_c = (int *)FUN_004023f4(puVar7);
}
local_c[3] = local_c[3] + 1;
FUN_00402a98((int *)&local_10,(int *)&local_c,(char *)(puVar3 + 2));
piVar1 = local_10 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(local_10,3);
}
puVar8 = (uint *)FUN_00402298(0x10);
if (puVar8 == (uint *)0x0) {
puVar8 = (uint *)0x0;
}
else {
puVar8 = FUN_00402460(puVar8,s_SeekVoltageRecommendedIndex_00512032);
}
puVar8[3] = puVar8[3] + 1;
iVar4 = FUN_004027d8((int)local_c,(int)puVar8);
cVar9 = iVar4 == 0;
puVar2 = puVar8 + 3;
*puVar2 = *puVar2 - 1;
if (*puVar2 == 0) {
FUN_004024d8((int *)puVar8,3);
}
if (cVar9 == '\0') {
fVar10 = (float10)FUN_004dd1cc(puVar3[1]);
*local_1c = (float)fVar10;
local_1c = local_1c + 1;
}
else {
iVar4 = FUN_004dd1e0((char *)puVar3[1]);
*(int *)(param_5 + 0x1d8) = iVar4;
}
puVar3 = (undefined4 *)*puVar3;
piVar1 = local_c + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(local_c,3);
}
}
if (*(int *)(param_5 + 0x1d8) == -1) {
FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_SeekVoltageRecommendedIn_0051204e,
(char *)0x0);
if (local_8 != (int *)0x0) {
(**(code **)*local_8)(local_8,3);
}
return 0;
}
if (local_8 != (int *)0x0) {
(**(code **)*local_8)(local_8,3);
}
}
uVar5 = 1;
}
}
}
return uVar5;
}
/* @004bb878 file=? name=FUN_004bb878 */
void __cdecl FUN_004bb878(int *param_1)
{
FUN_004bace8(param_1);
return;
}
/* @004bb888 file=? name=FUN_004bb888 */
int * __cdecl
FUN_004bb888(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5)
{
FUN_004bb120(param_1,param_2,param_3,param_4,param_5);
*param_1 = (int)&PTR_FUN_0051214c;
return param_1;
}
/* @004bb8b4 file=? name=FUN_004bb8b4 */
void __cdecl FUN_004bb8b4(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0051214c;
FUN_004bb3c8(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004bb8e0 file=? name=FUN_004bb8e0 */
undefined4 __cdecl
FUN_004bb8e0(int param_1,int param_2,char *param_3,char *param_4,char *param_5,int param_6,
int param_7,int param_8)
{
int iVar1;
iVar1 = FUN_004bb478(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
if (iVar1 == 0) {
return 0;
}
param_5[0x24] = -0x24;
param_5[0x25] = '\x01';
param_5[0x26] = '\0';
param_5[0x27] = '\0';
param_5[0x20] = -0x2c;
param_5[0x21] = '\v';
param_5[0x22] = '\0';
param_5[0x23] = '\0';
return 1;
}
/* @004bb92c file=? name=FUN_004bb92c */
void __cdecl FUN_004bb92c(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x5120d4);
return;
}
/* @004bb9b8 file=? name=FUN_004bb9b8 */
void __cdecl FUN_004bb9b8(int param_1,int param_2)
{
bool bVar1;
undefined3 extraout_var;
int iVar2;
bVar1 = FUN_004ac9c8(param_1);
if (CONCAT31(extraout_var,bVar1) == 0) {
if ((0 < *(int *)(param_2 + 0xc)) && (iVar2 = FUN_00417ab4(param_1 + 0x43c), iVar2 != 0)) {
iVar2 = FUN_00417ab4(param_1 + 0x43c);
FUN_0041bbd8(iVar2 + 0x194,3);
*(undefined4 *)(param_1 + 0x3f4) = *(undefined4 *)(param_1 + 0x3f0);
*(undefined4 *)(param_1 + 0x3f8) = 0;
*(undefined4 *)(param_1 + 0x400) = 0;
return;
}
if (*(int *)(param_1 + 0x400) == 0) {
iVar2 = FUN_00417ab4(param_1 + 0x43c);
if (iVar2 == 0) {
FUN_0041bbd8(param_1 + 0x350,7);
}
else {
FUN_0041bbd8(iVar2 + 0x194,4);
FUN_0041bbd8(iVar2 + 0x194,1);
FUN_004bd4f4(iVar2);
if (*(int *)(iVar2 + 0x1a8) == 2) {
FUN_0041bbd8(param_1 + 0x350,7);
}
else {
FUN_0041bbd8(param_1 + 0x350,3);
*(undefined4 *)(param_1 + 1000) = *(undefined4 *)(param_1 + 0x3dc);
}
*(undefined4 *)(param_1 + 0x3f4) = *(undefined4 *)(param_1 + 0x3f0);
*(undefined4 *)(param_1 + 0x3f8) = 0;
}
}
*(undefined4 *)(param_1 + 0x400) = 0xffffffff;
}
return;
}
/* @004bbae0 file=? name=FUN_004bbae0 */
void __cdecl FUN_004bbae0(int *param_1,int *param_2)
{
FUN_004b96d4(param_1,param_2);
return;
}
/* @004bbaf8 file=? name=FUN_004bbaf8 */
void __cdecl FUN_004bbaf8(int *param_1,int param_2)
{
FUN_004b96ec(param_1,param_2);
FUN_0041bbd8((int)(param_1 + 0xd4),3);
param_1[0xfa] = param_1[0xf7];
param_1[0xfd] = param_1[0xfc];
param_1[0xfe] = 0;
param_1[0x100] = -1;
*(ushort *)(param_1 + 6) = *(ushort *)(param_1 + 6) | 1;
return;
}
/* @004bbb50 file=? name=FUN_004bbb50 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004bbb50(int param_1,float param_2)
{
float fVar1;
int iVar2;
float10 fVar3;
if (*(int *)(param_1 + 0x400) == 0) {
*(float *)(param_1 + 0x3f4) = *(float *)(param_1 + 0x3f4) - param_2;
fVar1 = _DAT_004bbc18;
if (_DAT_004bbc18 <= *(float *)(param_1 + 0x3f4)) {
fVar1 = *(float *)(param_1 + 0x3f4);
}
*(float *)(param_1 + 0x3f4) = fVar1;
*(float *)(param_1 + 0x3f8) =
(*(float *)(param_1 + 0x3f0) - *(float *)(param_1 + 0x3f4)) / *(float *)(param_1 + 0x3f0);
}
fVar3 = FUN_004dcd00((double)(*(float *)(param_1 + 0x3f4) - _DAT_004bbc18));
if (fVar3 <= (float10)_DAT_004bbc1c) {
iVar2 = FUN_00417ab4(param_1 + 0x43c);
if (iVar2 != 0) {
FUN_004bd588(iVar2);
FUN_0041bbd8(param_1 + 0x350,7);
}
*(undefined4 *)(param_1 + 0x400) = 0xffffffff;
}
return;
}
/* @004bbc20 file=? name=FUN_004bbc20 */
undefined4 __cdecl FUN_004bbc20(int param_1,int param_2)
{
if (param_2 == 0) {
param_2 = FUN_00417ab4(param_1 + 0x1d0);
}
if (param_2 == 0) {
return 0;
}
if ((*(float *)(param_1 + 0x404) * *(float *)(param_2 + 0x1d8) <= *(float *)(param_2 + 0x1dc)) &&
(*(int *)(param_2 + 0x210) == 2)) {
return 1;
}
return 0;
}
/* @004bbc78 file=? name=FUN_004bbc78 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004bbc78(int param_1,float param_2)
{
float fVar1;
int iVar2;
float10 fVar3;
float local_c;
fVar3 = FUN_004b0d50(param_1);
fVar1 = (float)((float10)_DAT_004bbd00 / fVar3);
if (fVar1 < _DAT_004bbd00) {
fVar1 = _DAT_004bbd00;
}
iVar2 = FUN_00417ab4(param_1 + 0x1d0);
local_c = *(float *)(iVar2 + 0x1dc) / *(float *)(iVar2 + 0x1d8);
if (local_c < *(float *)(param_1 + 0x404)) {
local_c = 0.0;
}
*(float *)(param_1 + 1000) = *(float *)(param_1 + 1000) - (param_2 * local_c) / fVar1;
return;
}
/* @004bbd04 file=? name=FUN_004bbd04 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004bbd04(int *param_1,float param_2)
{
int *piVar1;
int iVar2;
int iVar3;
int iVar4;
int iVar5;
FUN_004b0bd0(param_1,param_2);
iVar3 = FUN_004b9608((int)param_1);
FUN_004bbb50((int)param_1,param_2);
iVar5 = param_1[0x34];
if (((param_1[0x10] == 1) || (param_1[0x61] == 2)) || (iVar4 = FUN_0049fb54(iVar5), iVar4 != 0)) {
param_1[0xfa] = param_1[0xf7];
FUN_0041bbd8((int)(param_1 + 0xd4),7);
}
iVar4 = FUN_00417ab4((int)(param_1 + 0x10f));
if (((*(int *)(iVar4 + 0x1a8) == 2) || (*(int *)(iVar4 + 0x1a8) == 3)) ||
(*(int *)(iVar4 + 0x40) == 1)) {
FUN_0041bbd8((int)(param_1 + 0xd4),7);
}
iVar2 = param_1[0xd9];
if (iVar2 == 2) {
if (iVar3 != 0) {
if ((param_1[0xf8] == 0) || (*(int *)(iVar5 + 0x388) == 0)) {
FUN_0041bbd8((int)(param_1 + 0xd4),4);
FUN_0041bbd8((int)(param_1 + 0xd4),2);
}
else {
iVar5 = FUN_004bd4f4(iVar4);
if (iVar5 != 0) {
piVar1 = param_1 + 0xd4;
FUN_0041bbd8((int)piVar1,0);
*(ushort *)(param_1 + 6) = *(ushort *)(param_1 + 6) | 1;
(**(code **)(*param_1 + 0x48))(param_1);
if (*(int *)(iVar4 + 0x1a8) == 2) {
FUN_0041bbd8((int)piVar1,7);
}
else {
iVar5 = FUN_004bbfcc((int)param_1);
if (iVar5 == 0) {
FUN_0041bbd8((int)piVar1,3);
}
else {
FUN_0041bbd8((int)piVar1,5);
}
}
*(ushort *)(param_1 + 6) = *(ushort *)(param_1 + 6) | 1;
param_1[0xfa] = param_1[0xf7];
}
}
}
}
else if (iVar2 == 3) {
if (iVar3 != 0) {
FUN_0041bbd8((int)(param_1 + 0xd4),4);
FUN_0041bbd8((int)(param_1 + 0xd4),3);
}
if (((param_1[0x9e] == 4) &&
(FUN_004bbc78((int)param_1,param_2), (float)param_1[0xfa] < _DAT_004bbf84)) &&
(param_1[0xfa] = 0, *(int *)(iVar4 + 0x1a8) == 1)) {
FUN_0041bbd8((int)(param_1 + 0xd4),2);
}
(**(code **)(*param_1 + 0x44))(param_1);
}
else if (iVar2 == 5) {
if (iVar3 != 0) {
FUN_0041bbd8((int)(param_1 + 0xd4),6);
FUN_0041bbd8((int)(param_1 + 0xd4),5);
}
param_1[0xfa] = param_1[0xf7];
}
else if (iVar2 == 7) {
if (iVar3 != 0) {
FUN_0041bbd8((int)(param_1 + 0xd4),1);
}
FUN_0041bbd8((int)(param_1 + 0xd4),7);
param_1[0xfa] = param_1[0xf7];
(**(code **)(*param_1 + 0x44))(param_1);
}
return;
}
/* @004bbf88 file=? name=FUN_004bbf88 */
uint __cdecl FUN_004bbf88(int *param_1)
{
uint uVar1;
int iVar2;
uVar1 = FUN_004b0f48(param_1);
if (param_1[0xd9] == 5) {
uVar1 = uVar1 | 0x20;
}
iVar2 = FUN_00417ab4((int)(param_1 + 0x10f));
if ((iVar2 != 0) && (*(int *)(iVar2 + 0x18c) != 0)) {
uVar1 = uVar1 | 0x10;
}
return uVar1;
}
/* @004bbfcc file=? name=FUN_004bbfcc */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl FUN_004bbfcc(int param_1)
{
float fVar1;
float10 fVar2;
if (*(int *)(*(int *)(*(int *)(param_1 + 0xd0) + 400) + 0x25c) == 0) {
return 0;
}
if (*(int *)(param_1 + 0x184) != 0) {
fVar1 = (_DAT_004bc064 * *(float *)(param_1 + 0x114)) / *(float *)(param_1 + 0x11c);
if (*(float *)(param_1 + 0x3fc) <= fVar1) {
if (_DAT_004bc068 < fVar1) {
fVar1 = _DAT_004bc068;
}
}
else {
fVar1 = *(float *)(param_1 + 0x3fc);
}
fVar2 = FUN_00408050();
if ((float10)fVar1 <= fVar2) {
return 0;
}
return 1;
}
return 0;
}
/* @004bc06c file=? name=FUN_004bc06c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __cdecl FUN_004bc06c(int param_1)
{
float *pfVar1;
int iVar2;
float10 fVar3;
pfVar1 = (float *)(param_1 + 0x420);
FUN_004b9cbc(param_1,pfVar1);
*(float *)(param_1 + 0x420) = *(float *)(param_1 + 0x410) + *(float *)(param_1 + 0x420);
*(float *)(param_1 + 0x424) = *(float *)(param_1 + 0x414) + *(float *)(param_1 + 0x424);
*(undefined4 *)(param_1 + 0x428) = *(undefined4 *)(param_1 + 0x418);
iVar2 = FUN_004b9bdc(param_1);
if (iVar2 == 0) {
fVar3 = (float10)*(float *)(param_1 + 0x40c) + (float10)_DAT_004bc100;
}
else {
fVar3 = FUN_004dd138((double)(*(float *)(param_1 + 0x428) * *(float *)(param_1 + 0x428) +
*(float *)(param_1 + 0x424) * *(float *)(param_1 + 0x424) +
*pfVar1 * *pfVar1));
fVar3 = (float10)*(float *)(param_1 + 0x324) / fVar3;
}
return fVar3;
}
/* @004bc104 file=? name=FUN_004bc104 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004bc104(int param_1)
{
bool bVar1;
int iVar2;
int iVar3;
float10 fVar4;
float local_104;
undefined4 local_100;
undefined4 local_fc;
float local_f8;
undefined4 local_f4;
undefined4 local_f0;
undefined4 local_ec;
float local_e8;
undefined4 local_e4;
undefined4 local_e0;
undefined4 local_dc;
undefined4 local_d8;
undefined4 local_d4;
undefined4 local_d0;
undefined4 local_cc;
undefined4 local_c8;
undefined4 local_c4;
undefined4 local_c0;
float local_bc;
float local_b8;
float local_b4;
float local_b0 [12];
int local_80 [7];
float local_64 [7];
float local_48 [12];
undefined4 local_18;
undefined4 local_14;
undefined4 local_10;
float local_c;
float local_8;
iVar2 = FUN_004ad7d4(param_1);
if (iVar2 != 0) {
local_8 = *(float *)(param_1 + 0x3d8);
*(float *)(param_1 + 0x1c8) = local_8 + *(float *)(param_1 + 0x1c8);
}
iVar2 = *(int *)(param_1 + 0xd0);
if ((_DAT_004bc3f4 < *(float *)(param_1 + 0x3ac)) && (*(int *)(iVar2 + 0x528) != 0)) {
local_c = *(float *)(param_1 + 0x3ac) * _DAT_004bc3f8;
local_18 = 0;
local_14 = 0x3f19999a;
local_10 = 0xbfc00000;
FUN_004b2d8c(*(int *)(iVar2 + 0x528),0.0,0.6,-1.5,local_c);
}
*(int *)(param_1 + 0x408) = *(int *)(param_1 + 0x408) + 1;
if ((*(int *)(param_1 + 0x438) == 0) ||
(*(int *)(param_1 + 0x408) % *(int *)(param_1 + 0x438) != 0)) {
bVar1 = false;
}
else {
bVar1 = true;
}
if (bVar1) {
FUN_0040aadc(local_48);
FUN_004b9948(param_1,local_48);
FUN_0040a968(local_64,local_48);
FUN_004bc06c(param_1);
FUN_0041f216(local_80,iVar2 + 0x300);
iVar3 = (**(code **)(local_80[0] + 0x34))(local_80);
FUN_0041f235(local_80,2);
FUN_0040aadc(local_b0);
FUN_00424da8(iVar2,iVar3,local_b0);
FUN_00408644(&local_bc,(float *)(iVar2 + 0x37c),local_64);
fVar4 = FUN_004dd138((double)(local_b4 * local_b4 + local_b8 * local_b8 + local_bc * local_bc));
if (fVar4 <= (float10)*(float *)(param_1 + 0x328)) {
local_ec = *(undefined4 *)(param_1 + 0x3a8);
local_e4 = *(undefined4 *)(param_1 + 0x3b0);
local_e0 = *(undefined4 *)(param_1 + 0x3b4);
local_dc = *(undefined4 *)(param_1 + 0x3b8);
local_d8 = *(undefined4 *)(param_1 + 0x3bc);
local_d4 = *(undefined4 *)(param_1 + 0x3c0);
local_d0 = *(undefined4 *)(param_1 + 0x3c4);
local_cc = *(undefined4 *)(param_1 + 0x3c8);
local_c8 = *(undefined4 *)(param_1 + 0x3cc);
local_c4 = *(undefined4 *)(param_1 + 0x3d0);
local_c0 = *(undefined4 *)(param_1 + 0x3d4);
local_e8 = (float)*(int *)(param_1 + 0x408) * *(float *)(param_1 + 0x3ac);
local_f8 = DAT_004e0f74;
local_f4 = DAT_004e0f78;
local_f0 = DAT_004e0f7c;
local_104 = DAT_004e0f74;
local_100 = DAT_004e0f78;
local_fc = DAT_004e0f7c;
FUN_00408744(&local_104,(float *)(param_1 + 0x420),local_b0);
FUN_004086ac(&local_f8,&local_104,*(float *)(param_1 + 0x41c));
FUN_00408440(&local_e4,&local_f8);
FUN_004b9728(param_1,*(int *)(iVar2 + 0x388),&local_ec);
}
*(undefined4 *)(param_1 + 0x408) = 0;
}
return;
}
/* @004bc3fc file=? name=FUN_004bc3fc */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
int * __cdecl
FUN_004bc3fc(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5)
{
int iVar1;
int iVar2;
float10 fVar3;
undefined4 local_60;
float local_5c;
float local_44 [12];
undefined4 *local_14;
undefined4 *local_10;
int *local_c;
float local_8;
FUN_004b99a8(param_1,param_2,param_3,param_4,param_5,8,(int *)0x0,0);
*param_1 = (int)&PTR_FUN_0051242c;
FUN_004bcbb0(param_1 + 0x10f,0);
param_1[0x10e] = *(int *)(param_4 + 0x1bc);
param_1[0x103] = *(int *)(param_4 + 0x1c4);
param_1[0xff] = *(int *)(param_4 + 0x1cc);
FUN_0040a7f4(param_1 + 0x108,(undefined4 *)&DAT_004e0fd4);
param_1[0x101] = *(int *)(param_4 + 0x1c8);
param_1[0x102] = 0;
FUN_0040aadc(local_44);
FUN_004b9948((int)param_1,local_44);
FUN_0040a968(&local_60,local_44);
fVar3 = FUN_004dd138((double)(_DAT_004bc67c * (float10)_DAT_004bc678 * (float10)local_5c));
local_8 = (float)fVar3;
local_c = param_1 + 0x104;
FUN_00408440(local_c,&DAT_004e0f74);
param_1[0x106] = (int)-((float)param_1[0xca] / local_8);
param_1[0xfc] = 0x40400000;
param_1[0xfd] = param_1[0xfc];
param_1[0xfe] = 0;
param_1[0x100] = -1;
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) {
param_1[7] = (int)PTR_FUN_0051222c;
param_1[8] = DAT_00512230;
param_1[9] = DAT_00512234;
}
else {
param_1[10] = param_1[10] | 2;
}
if (*(int *)(param_4 + 0x1c0) < *(int *)(param_2 + 0x124)) {
iVar1 = *(int *)(*(int *)(param_2 + 0x128) + *(int *)(param_4 + 0x1c0) * 4);
(**(code **)(param_1[0x10f] + 4))(param_1 + 0x10f);
*(int *)(iVar1 + 0x1f0) = param_1[0xea];
*(int *)(iVar1 + 500) = param_1[0xeb];
local_10 = (undefined4 *)(iVar1 + 0x1f8);
*(int *)(iVar1 + 0x21c) = param_1[0xf5];
FUN_00408440(local_10,param_1 + 0xec);
local_14 = (undefined4 *)(iVar1 + 0x204);
FUN_00408440(local_14,param_1 + 0xef);
FUN_00408440((undefined4 *)(iVar1 + 0x210),param_1 + 0xf2);
}
iVar1 = FUN_00417ab4((int)(param_1 + 0x10f));
if (iVar1 == 0) {
FUN_004dbb24(&DAT_00524e20,(char *)param_1[0x35],(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_Could_not_get_ammo_bin__005122c0,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
iVar2 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),*(int *)(iVar1 + 0x1e8),0xf);
iVar1 = *(int *)(iVar2 + 4);
*(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
if (iVar1 == 0) {
FUN_00406cd0(iVar2);
}
param_1[0x107] = **(int **)(iVar2 + 0x3c);
*(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1;
return param_1;
}
/* @004bc688 file=? name=FUN_004bc688 */
void __cdecl FUN_004bc688(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0051242c;
FUN_004bcbcf(param_1 + 0x10f,2);
FUN_004b9b9c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004bc6c8 file=? name=FUN_004bc6c8 */
void __cdecl FUN_004bc6c8(int param_1)
{
int iVar1;
FUN_004b9d00(param_1);
iVar1 = *(int *)(param_1 + 0x364);
if (iVar1 == 5) {
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___Jammed_005122e3,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
}
if (iVar1 != 6) {
if (iVar1 == 7) {
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___NoAmmo_005122d9,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
}
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_Unknown_weapon_state__00512301,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
}
FUN_004dbb24(&DAT_00524e20,*(char **)(param_1 + 0xd4),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___TriggerDuringJam_005122ed,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
return;
}
/* @004bc7cc file=? name=FUN_004bc7cc */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl
FUN_004bc7cc(int param_1,int param_2,char *param_3,char *param_4,char *param_5,int param_6,
int param_7,int param_8)
{
char *pcVar1;
bool bVar2;
int iVar3;
undefined4 uVar4;
undefined3 extraout_var;
char *pcVar5;
char *pcVar6;
char *local_8;
iVar3 = FUN_004b9d10(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
if (iVar3 == 0) {
uVar4 = 0;
}
else {
param_5[0x24] = -0x30;
param_5[0x25] = '\x01';
param_5[0x26] = '\0';
param_5[0x27] = '\0';
param_5[0x20] = -0x33;
param_5[0x21] = '\v';
param_5[0x22] = '\0';
param_5[0x23] = '\0';
if (param_8 == 1) {
param_5[0x1bc] = -1;
param_5[0x1bd] = -1;
param_5[0x1be] = -1;
param_5[0x1bf] = -1;
param_5[0x1c0] = -1;
param_5[0x1c1] = -1;
param_5[0x1c2] = -1;
param_5[0x1c3] = -1;
param_5[0x1c4] = '\0';
param_5[0x1c5] = '\0';
param_5[0x1c6] = -0x80;
param_5[0x1c7] = -0x41;
param_5[0x1c8] = '\0';
param_5[0x1c9] = '\0';
param_5[0x1ca] = -0x80;
param_5[0x1cb] = -0x41;
param_5[0x1cc] = '\0';
param_5[0x1cd] = '\0';
param_5[0x1ce] = -0x80;
param_5[0x1cf] = -0x41;
}
bVar2 = FUN_004040d8(param_6,param_4,s_TracerInterval_00512318,(int *)(param_5 + 0x1bc));
if ((CONCAT31(extraout_var,bVar2) == 0) && (*(int *)(param_5 + 0x1bc) == -1)) {
FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_TracerInterval__00512327,(char *)0x0);
uVar4 = 0;
}
else {
local_8 = s_Unspecified_00512340;
iVar3 = FUN_00404088(param_6,param_4,s_AmmoBin_0051234c,&local_8);
if ((iVar3 == 0) && (*(int *)(param_5 + 0x1c0) == -1)) {
FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_AmmoBin__00512354,(char *)0x0);
uVar4 = 0;
}
else {
pcVar6 = s_Unspecified_00512366;
pcVar5 = local_8;
do {
bVar2 = *pcVar5 == *pcVar6;
if (!bVar2) break;
if (*pcVar5 == '\0') goto LAB_004bc929;
pcVar1 = pcVar5 + 1;
bVar2 = *pcVar1 == pcVar6[1];
if (!bVar2) break;
pcVar5 = pcVar5 + 2;
pcVar6 = pcVar6 + 2;
bVar2 = *pcVar1 == '\0';
} while (!bVar2);
if (!bVar2) {
iVar3 = FUN_004215b0(param_6,local_8);
*(int *)(param_5 + 0x1c0) = iVar3;
}
LAB_004bc929:
if (*(int *)(param_5 + 0x1c0) < 0) {
FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_has_an_invalid_Ammo_Bin__00512372,(char *)0x0);
uVar4 = 0;
}
else {
pcVar6 = s_Unspecified_0051238d;
pcVar5 = local_8;
do {
bVar2 = *pcVar5 == *pcVar6;
if (!bVar2) break;
if (*pcVar5 == '\0') goto LAB_004bc98d;
pcVar1 = pcVar5 + 1;
bVar2 = *pcVar1 == pcVar6[1];
if (!bVar2) break;
pcVar5 = pcVar5 + 2;
pcVar6 = pcVar6 + 2;
bVar2 = *pcVar1 == '\0';
} while (!bVar2);
if (!bVar2) {
*(int *)(param_5 + 0x1c0) = *(int *)(param_5 + 0x1c0) + 2;
}
LAB_004bc98d:
iVar3 = FUN_00404118(param_6,param_4,s_MinTimeOfFlight_00512399,(float *)(param_5 + 0x1c4)
);
if ((iVar3 == 0) && (_DAT_004bca9c == *(float *)(param_5 + 0x1c4))) {
FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_MinTimeOfFlight___005123a9,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_6,param_4,s_MinJamChance_005123c4,(float *)(param_5 + 0x1cc))
;
if ((iVar3 == 0) && (_DAT_004bca9c == *(float *)(param_5 + 0x1cc))) {
FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_MinJamChance___005123d1,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_6,param_4,s_MinVoltagePercentToFire_005123e9,
(float *)(param_5 + 0x1c8));
if ((iVar3 == 0) && (_DAT_004bca9c == *(float *)(param_5 + 0x1c8))) {
FUN_004dbb24(&DAT_00524e20,param_4,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_MinVoltagePercentToFire___00512401,(char *)0x0)
;
uVar4 = 0;
}
else {
uVar4 = 1;
}
}
}
}
}
}
}
return uVar4;
}
/* @004bcabc file=? name=FUN_004bcabc */
undefined4 __cdecl FUN_004bcabc(int *param_1,int param_2)
{
undefined4 uVar1;
if (param_2 == 2) {
FUN_0041bbd8((int)(param_1 + 0xd4),5);
return 1;
}
uVar1 = FUN_004add6c(param_1,param_2);
return uVar1;
}
/* @004bcbb0 file=? name=FUN_004bcbb0 */
undefined4 * __cdecl FUN_004bcbb0(undefined4 *param_1,undefined4 param_2)
{
FUN_004179d4(param_1,param_2);
*param_1 = &PTR_FUN_00512424;
return param_1;
}
/* @004bcbcf file=? name=FUN_004bcbcf */
void __cdecl FUN_004bcbcf(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_00512424;
FUN_004179f8(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004bcbfc file=? name=FUN_004bcbfc */
void __cdecl FUN_004bcbfc(int *param_1,int *param_2)
{
int iVar1;
iVar1 = FUN_004dcd94();
param_1[0xf5] = iVar1;
FUN_004bbae0(param_1,param_2);
return;
}
/* @004bcc3c file=? name=FUN_004bcc3c */
void __cdecl FUN_004bcc3c(int *param_1,int param_2)
{
param_1[0xf5] = param_1[0x112];
FUN_004bbaf8(param_1,param_2);
return;
}
/* @004bcc60 file=? name=FUN_004bcc60 */
void __cdecl FUN_004bcc60(int param_1)
{
int iVar1;
undefined4 uVar2;
undefined4 uVar3;
undefined4 uVar4;
undefined4 uVar5;
undefined4 uVar6;
undefined4 uVar7;
undefined4 uVar8;
undefined4 uVar9;
undefined4 uVar10;
undefined4 uVar11;
undefined4 uVar12;
undefined4 uVar13;
undefined4 uVar14;
undefined4 uVar15;
int iVar16;
undefined4 local_168;
undefined4 local_164;
undefined4 local_160;
undefined4 local_15c [2];
undefined4 local_154;
undefined4 local_150;
undefined4 local_14c;
undefined4 local_148 [2];
undefined4 local_140;
undefined4 local_13c;
undefined4 local_138;
undefined4 local_134;
undefined4 local_130;
undefined4 local_12c;
undefined4 local_128;
undefined4 local_124;
undefined4 local_120;
undefined4 local_11c [6];
undefined4 local_104 [6];
undefined4 local_ec [2];
undefined4 local_e4;
undefined4 local_e0;
undefined4 local_dc;
undefined4 local_d8;
undefined4 local_d4;
undefined4 local_d0;
undefined4 local_cc;
undefined4 local_c8;
undefined4 local_c4;
undefined4 local_c0;
undefined4 local_bc;
undefined4 local_b8;
undefined4 local_b4;
undefined4 local_b0;
undefined4 local_ac [2];
float local_a4;
undefined4 local_a0;
undefined4 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;
float local_78 [12];
float local_48;
float local_44;
float local_40;
float local_30;
undefined4 local_2c;
undefined4 local_28;
undefined4 local_24 [2];
undefined4 local_1c;
undefined4 local_18;
undefined4 local_14 [2];
float local_c;
int local_8;
iVar1 = *(int *)(param_1 + 0xd0);
local_8 = FUN_00417ab4(param_1 + 0x43c);
iVar16 = FUN_004ad7d4(param_1);
if (iVar16 != 0) {
local_c = *(float *)(param_1 + 0x3d8);
*(float *)(param_1 + 0x1c8) = local_c + *(float *)(param_1 + 0x1c8);
}
local_30 = DAT_004e0f80;
local_2c = DAT_004e0f84;
local_28 = DAT_004e0f88;
FUN_00420e8c(local_14);
iVar16 = *(int *)(iVar1 + 0x388);
if (iVar16 != 0) {
FUN_00420ef4(local_14,(undefined4 *)(iVar16 + 0x184));
FUN_00408bf8(&local_30,(float *)(iVar1 + 0x37c),(float *)(iVar16 + 0xd0));
}
uVar2 = *(undefined4 *)(*(int *)(iVar1 + 400) + 0x264);
FUN_004b9cbc(param_1,&local_48);
local_48 = *(float *)(param_1 + 0x410) + local_48;
local_44 = *(float *)(param_1 + 0x414) + local_44;
local_40 = local_40 - *(float *)(param_1 + 0x418);
FUN_0040aadc(local_78);
FUN_004b9948(param_1,local_78);
FUN_0040a968(&local_94,local_78);
local_1c = *(undefined4 *)(param_1 + 0x3e4);
uVar3 = *(undefined4 *)(param_1 + 0x3a8);
uVar4 = *(undefined4 *)(param_1 + 0x3ac);
uVar5 = *(undefined4 *)(param_1 + 0x3b0);
uVar6 = *(undefined4 *)(param_1 + 0x3b4);
uVar7 = *(undefined4 *)(param_1 + 0x3b8);
uVar8 = *(undefined4 *)(param_1 + 0x3bc);
uVar9 = *(undefined4 *)(param_1 + 0x3c0);
uVar10 = *(undefined4 *)(param_1 + 0x3c4);
uVar11 = *(undefined4 *)(param_1 + 0x3c8);
uVar12 = *(undefined4 *)(param_1 + 0x3cc);
uVar13 = *(undefined4 *)(param_1 + 0x3d0);
uVar14 = *(undefined4 *)(param_1 + 0x3d4);
uVar15 = *(undefined4 *)(local_8 + 0x1e8);
local_18 = uVar2;
FUN_00420ebc(local_24,0xbd0);
uVar2 = *(undefined4 *)(param_1 + 0xd8);
local_168 = 0xd4;
local_164 = 3;
local_160 = 1;
FUN_00420ea4(local_15c,(undefined4 *)&DAT_00522524);
local_154 = 0;
local_150 = 0;
local_14c = 0xbba;
FUN_00420ea4(local_148,local_24);
local_13c = 0xc100;
local_138 = local_94;
local_134 = local_90;
local_130 = local_8c;
local_12c = local_88;
local_128 = local_84;
local_124 = local_80;
local_120 = local_7c;
local_140 = uVar15;
FUN_0040a7c0(local_11c,&local_48);
FUN_0040a7c0(local_104,(undefined4 *)&DAT_004e0fd4);
FUN_00420ea4(local_ec,(undefined4 *)(iVar1 + 0x184));
local_b0 = local_1c;
local_e4 = uVar2;
local_e0 = uVar3;
local_dc = uVar4;
local_d8 = uVar5;
local_d4 = uVar6;
local_d0 = uVar7;
local_cc = uVar8;
local_c8 = uVar9;
local_c4 = uVar10;
local_c0 = uVar11;
local_bc = uVar12;
local_b8 = uVar13;
local_b4 = uVar14;
FUN_00420ea4(local_ac,local_14);
local_a4 = local_30;
local_a0 = local_2c;
local_9c = local_28;
local_98 = local_18;
FUN_004bf8bc((int)&local_168);
return;
}
/* @004bcff0 file=? name=FUN_004bcff0 */
int * __cdecl
FUN_004bcff0(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5)
{
FUN_004bc3fc(param_1,param_2,param_3,param_4,param_5);
*param_1 = (int)&PTR_FUN_00512570;
param_1[0x112] = *(int *)(param_4 + 0x1d0);
FUN_00408440(param_1 + 0x104,(undefined4 *)(param_4 + 0x1d4));
param_1[0xf5] = param_1[0x112];
param_1[0xeb] = (int)((float)param_1[0xeb] / (float)param_1[0x112]);
return param_1;
}
/* @004bd060 file=? name=FUN_004bd060 */
void __cdecl FUN_004bd060(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_00512570;
FUN_004bc688(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004bd08c file=? name=FUN_004bd08c */
undefined4 __cdecl
FUN_004bd08c(int param_1,int param_2,char *param_3,char *param_4,char *param_5,int param_6,
int param_7,int param_8)
{
char *pcVar1;
bool bVar2;
int iVar3;
undefined4 uVar4;
undefined3 extraout_var;
char *pcVar5;
char *pcVar6;
char *local_8;
iVar3 = FUN_004bc7cc(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
if (iVar3 == 0) {
uVar4 = 0;
}
else {
param_5[0x24] = -0x20;
param_5[0x25] = '\x01';
param_5[0x26] = '\0';
param_5[0x27] = '\0';
param_5[0x20] = -0x30;
param_5[0x21] = '\v';
param_5[0x22] = '\0';
param_5[0x23] = '\0';
if (param_8 == 1) {
param_5[0x1d0] = -1;
param_5[0x1d1] = -1;
param_5[0x1d2] = -1;
param_5[0x1d3] = -1;
}
bVar2 = FUN_004040d8(param_6,param_4,s_MissileCount_00512509,(int *)(param_5 + 0x1d0));
if ((CONCAT31(extraout_var,bVar2) == 0) && (*(int *)(param_5 + 0x1d0) == -1)) {
FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_MissileCount__00512516,(char *)0x0);
uVar4 = 0;
}
else {
local_8 = s_Unspecified_0051252d;
iVar3 = FUN_00404088(param_6,param_4,s_MuzzleVelocity_00512539,&local_8);
if ((iVar3 == 0) &&
(iVar3 = FUN_004084fc((float *)&DAT_004e0f74,(float *)(param_5 + 0x1d4),0.0001), iVar3 != 0
)) {
FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_MuzzleVelocity__00512548,(char *)0x0);
return 0;
}
pcVar6 = s_Unspecified_00512561;
pcVar5 = local_8;
do {
bVar2 = *pcVar5 == *pcVar6;
if (!bVar2) break;
if (*pcVar5 == '\0') goto LAB_004bd1d2;
pcVar1 = pcVar5 + 1;
bVar2 = *pcVar1 == pcVar6[1];
if (!bVar2) break;
pcVar5 = pcVar5 + 2;
pcVar6 = pcVar6 + 2;
bVar2 = *pcVar1 == '\0';
} while (!bVar2);
if (!bVar2) {
FUN_00408944(local_8,(float *)(param_5 + 0x1d4));
}
LAB_004bd1d2:
uVar4 = 1;
}
}
return uVar4;
}
/* @004bd1e0 file=? name=FUN_004bd1e0 */
void __cdecl FUN_004bd1e0(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x512488);
return;
}
/* @004bd26c file=? name=FUN_004bd26c */
void __cdecl FUN_004bd26c(int *param_1,int param_2)
{
FUN_004aea9c(param_1);
if (param_2 != 0) {
param_1[0x61] = 0;
param_1[0x8a] = 0;
param_1[0x60] = param_1[0x88];
param_1[99] = 0;
}
FUN_0041bbd8((int)(param_1 + 0x65),1);
return;
}
/* @004bd2c0 file=? name=FUN_004bd2c0 */
void __cdecl FUN_004bd2c0(int *param_1,undefined4 param_2)
{
int iVar1;
iVar1 = param_1[0x10];
FUN_004aea84(param_1,param_2);
if ((param_1[0x10] == 1) && (iVar1 != 1)) {
param_1[0x60] = 0;
FUN_0041bbd8((int)(param_1 + 0x65),2);
}
return;
}
/* @004bd300 file=? name=FUN_004bd300 */
void __cdecl FUN_004bd300(int *param_1)
{
int local_34;
float local_30;
int local_2c;
int local_28;
int local_24;
int local_20;
int local_1c;
int local_18;
int local_14;
int local_10;
int local_c;
int local_8;
local_34 = param_1[0x7c];
local_2c = param_1[0x7e];
local_28 = param_1[0x7f];
local_24 = param_1[0x80];
local_20 = param_1[0x81];
local_1c = param_1[0x82];
local_18 = param_1[0x83];
local_14 = param_1[0x84];
local_10 = param_1[0x85];
local_c = param_1[0x86];
local_8 = param_1[0x87];
local_30 = (float)param_1[0x60] * (float)param_1[0x7d];
FUN_004ac274(param_1,&local_34);
param_1[0x60] = 0;
FUN_0041bbd8((int)(param_1 + 0x65),2);
return;
}
/* @004bd394 file=? name=FUN_004bd394 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004bd394(int *param_1,float param_2)
{
int *piVar1;
int iVar2;
int *piVar3;
FUN_004aeac4((int)param_1);
if (param_1[0x10] == 1) {
FUN_0041bbd8((int)(param_1 + 0x65),2);
}
if ((_DAT_004bd4e8 < param_2) && (param_1[0x6a] == 0)) {
if (param_2 < (float)param_1[0x61]) {
param_1[0x61] = (int)((float)param_1[0x61] - param_2);
}
else {
param_1[0x61] = 0;
FUN_0041bbd8((int)(param_1 + 0x65),1);
}
}
if (((param_1[0x50] == 2) && (param_1[0x6a] != 2)) && (param_1[99] == 0)) {
param_1[99] = 1;
piVar1 = (int *)FUN_00414b60();
piVar3 = param_1 + 100;
*piVar3 = *piVar1;
iVar2 = FUN_004dcd94();
*piVar3 = *piVar3 + iVar2;
}
if (param_1[99] != 0) {
if (param_1[0x6a] == 2) {
param_1[99] = 0;
}
else {
piVar3 = (int *)FUN_00414b60();
if (param_1[100] < *piVar3) {
param_1[99] = 0;
FUN_0041bbd8((int)(param_1 + 0xb),1);
if (param_1[0x41] != 0) {
(**(code **)(*param_1 + 0x34))(param_1);
}
FUN_004bd300(param_1);
}
}
}
if (param_1[0x60] < 1) {
FUN_0041bbd8((int)(param_1 + 0x65),2);
}
return;
}
/* @004bd4f4 file=? name=FUN_004bd4f4 */
undefined4 __cdecl FUN_004bd4f4(int param_1)
{
int iVar1;
undefined4 uVar2;
if (*(int *)(param_1 + 0x40) == 1) {
uVar2 = 0;
}
else {
iVar1 = *(int *)(param_1 + 0x1a8);
if (iVar1 == 0) {
uVar2 = 0;
}
else if (iVar1 == 1) {
FUN_0041bbd8(param_1 + 0x194,0);
*(undefined4 *)(param_1 + 0x184) = *(undefined4 *)(param_1 + 0x224);
*(int *)(param_1 + 0x180) = *(int *)(param_1 + 0x180) + -1;
if (*(int *)(param_1 + 0x180) < 1) {
FUN_0041bbd8(param_1 + 0x194,2);
}
if (*(int *)(param_1 + 0x180) < 0) {
uVar2 = 0;
}
else {
uVar2 = *(undefined4 *)(param_1 + 0x180);
}
*(undefined4 *)(param_1 + 0x180) = uVar2;
uVar2 = 1;
}
else if (iVar1 == 2) {
uVar2 = 0;
}
else if (iVar1 == 3) {
uVar2 = 0;
}
else {
uVar2 = 0;
}
}
return uVar2;
}
/* @004bd588 file=? name=FUN_004bd588 */
void __cdecl FUN_004bd588(int param_1)
{
if (*(int *)(param_1 + 0x1a8) != 2) {
*(undefined4 *)(param_1 + 0x180) = 0;
FUN_0041bbd8(param_1 + 0x194,5);
FUN_0041bbd8(param_1 + 0x194,2);
}
return;
}
/* @004bd5c4 file=? name=FUN_004bd5c4 */
int * __cdecl FUN_004bd5c4(int *param_1,int param_2,undefined4 param_3,char *param_4)
{
FUN_004aeb40(param_1,param_2,param_3,param_4,&DAT_005125bc);
*param_1 = (int)&PTR_FUN_0051286c;
FUN_0041b9ec(param_1 + 0x65,6);
FUN_0041db7c((int)(param_1 + 0x7c));
param_1[0x8a] = 0;
param_1[0x60] = *(int *)(param_4 + 0xfc);
param_1[0x89] = *(int *)(param_4 + 0x100);
param_1[0x62] = *(int *)(param_4 + 0xf0);
param_1[0x7a] = *(int *)(param_4 + 0xf4);
param_1[0x7b] = *(int *)(param_4 + 0xf8);
param_1[0x61] = 0;
if (((*(uint *)(param_2 + 0x28) & 0xc) == 0) && ((*(uint *)(param_2 + 0x28) & 0x100) != 0)) {
param_1[7] = (int)PTR_FUN_00512654;
param_1[8] = DAT_00512658;
param_1[9] = DAT_0051265c;
}
FUN_0041bbd8((int)(param_1 + 0x65),1);
param_1[0x88] = param_1[0x60];
param_1[99] = 0;
return param_1;
}
/* @004bd6b0 file=? name=FUN_004bd6b0 */
void __cdecl FUN_004bd6b0(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_0051286c;
FUN_0041baa4(param_1 + 0x65,2);
FUN_004aebe8(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004bd6f0 file=? name=FUN_004bd6f0 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl
FUN_004bd6f0(int param_1,int param_2,char *param_3,char *param_4,char *param_5,int param_6,
int param_7,int param_8)
{
char *pcVar1;
bool bVar2;
int iVar3;
undefined4 uVar4;
undefined3 extraout_var;
char *pcVar5;
char *pcVar6;
char *pcVar7;
undefined4 *puVar8;
char *local_14;
undefined4 *local_10;
char *local_c;
char *local_8;
iVar3 = FUN_004aec54(param_2,param_3,param_4,param_5,param_6,param_7,param_8);
if (iVar3 == 0) {
uVar4 = 0;
}
else {
param_5[0x24] = '\x04';
param_5[0x25] = '\x01';
param_5[0x26] = '\0';
param_5[0x27] = '\0';
param_5[0x20] = -0x35;
param_5[0x21] = '\v';
param_5[0x22] = '\0';
param_5[0x23] = '\0';
if (param_8 == 1) {
param_5[0xfc] = -1;
param_5[0xfd] = -1;
param_5[0xfe] = -1;
param_5[0xff] = -1;
param_5[0x100] = '\0';
param_5[0x101] = '\0';
param_5[0x102] = -0x80;
param_5[0x103] = -0x41;
param_5[0xf0] = -1;
param_5[0xf1] = -1;
param_5[0xf2] = -1;
param_5[0xf3] = -1;
param_5[0xf4] = -1;
param_5[0xf5] = -1;
param_5[0xf6] = -1;
param_5[0xf7] = -1;
param_5[0xf8] = -1;
param_5[0xf9] = -1;
param_5[0xfa] = -1;
param_5[0xfb] = -1;
}
bVar2 = FUN_004040d8(param_6,param_4,s_AmmoCount_005126ea,(int *)(param_5 + 0xfc));
if ((CONCAT31(extraout_var,bVar2) == 0) && (*(int *)(param_5 + 0xfc) == -1)) {
FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_AmmoCount__005126f4,(char *)0x0);
uVar4 = 0;
}
else {
iVar3 = FUN_00404118(param_6,param_4,s_FeedRate_00512708,(float *)(param_5 + 0x100));
if ((iVar3 == 0) && (_DAT_004bdb74 == *(float *)(param_5 + 0x100))) {
FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_FeedRate__00512711,(char *)0x0);
uVar4 = 0;
}
else {
local_8 = s_Unspecified_00512724;
iVar3 = FUN_00404088(param_6,param_4,s_AmmoClassID_00512730,&local_8);
pcVar6 = local_8;
if ((iVar3 == 0) && (*(int *)(param_5 + 0xf0) == -1)) {
FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_AmmoClassID__0051273c,(char *)0x0);
uVar4 = 0;
}
else {
pcVar5 = s_Unspecified_00512752;
pcVar7 = local_8;
do {
if (*pcVar5 != *pcVar7) goto LAB_004bd894;
bVar2 = true;
if (*pcVar5 == '\0') break;
pcVar1 = pcVar5 + 1;
if (*pcVar1 != pcVar7[1]) goto LAB_004bd894;
pcVar5 = pcVar5 + 2;
pcVar7 = pcVar7 + 2;
bVar2 = *pcVar1 == '\0';
} while (!bVar2);
if (!bVar2) {
LAB_004bd894:
pcVar5 = s_ProjectileClassID_0051275e;
pcVar7 = local_8;
do {
if (*pcVar5 != *pcVar7) goto LAB_004bd8c9;
bVar2 = true;
if (*pcVar5 == '\0') break;
pcVar1 = pcVar5 + 1;
if (*pcVar1 != pcVar7[1]) goto LAB_004bd8c9;
pcVar5 = pcVar5 + 2;
pcVar7 = pcVar7 + 2;
bVar2 = *pcVar1 == '\0';
} while (!bVar2);
if (bVar2) {
param_5[0xf0] = -0x2f;
param_5[0xf1] = '\v';
param_5[0xf2] = '\0';
param_5[0xf3] = '\0';
}
else {
LAB_004bd8c9:
pcVar5 = s_MissileClassID_00512770;
pcVar7 = local_8;
do {
if (*pcVar5 != *pcVar7) goto LAB_004bd8fb;
bVar2 = true;
if (*pcVar5 == '\0') break;
pcVar1 = pcVar5 + 1;
if (*pcVar1 != pcVar7[1]) goto LAB_004bd8fb;
pcVar5 = pcVar5 + 2;
pcVar7 = pcVar7 + 2;
bVar2 = *pcVar1 == '\0';
} while (!bVar2);
if (bVar2) {
param_5[0xf0] = -0x46;
param_5[0xf1] = '\v';
param_5[0xf2] = '\0';
param_5[0xf3] = '\0';
}
else {
LAB_004bd8fb:
if (*(int *)(param_5 + 0xf0) == -1) {
FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_invalid_AmmoClassID_0051277f,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,pcVar6,(char *)0x0);
FUN_004d9c38((int *)&DAT_00524e68);
return 0;
}
}
}
}
local_c = s_Unspecified_00512794;
iVar3 = FUN_00404088(param_6,param_4,s_AmmoModelFile_005127a0,&local_c);
if ((iVar3 == 0) && (*(int *)(param_5 + 0xf4) == -1)) {
FUN_004dbb24((int *)&DAT_00524e68,param_4,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_missing_AmmoModelFile__005127ae,(char *)0x0);
uVar4 = 0;
}
else {
local_10 = (undefined4 *)0x0;
pcVar7 = s_Unspecified_005127c6;
pcVar6 = local_c;
do {
bVar2 = *pcVar6 == *pcVar7;
if (!bVar2) break;
if (*pcVar6 == '\0') goto LAB_004bd9e5;
pcVar5 = pcVar6 + 1;
bVar2 = *pcVar5 == pcVar7[1];
if (!bVar2) break;
pcVar6 = pcVar6 + 2;
pcVar7 = pcVar7 + 2;
bVar2 = *pcVar5 == '\0';
} while (!bVar2);
if (!bVar2) {
local_10 = (undefined4 *)FUN_00406ff8(param_1,local_c,1,-1);
}
LAB_004bd9e5:
if ((local_10 == (undefined4 *)0x0) && (*(int *)(param_5 + 0xf4) == -1)) {
FUN_004dbb24((int *)&DAT_00524e68,local_c,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_must_be_declared_before_005127d2,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,param_3,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_in_the__bld_file_005127ec,(char *)0x0);
FUN_004d9c38((int *)&DAT_00524e68);
uVar4 = 0;
}
else {
if (local_10 != (undefined4 *)0x0) {
*(undefined4 *)(param_5 + 0xf4) = *local_10;
}
local_14 = s_Unspecified_005127ff;
iVar3 = FUN_00404088(param_6,param_4,s_ExplosionModelFile_0051280b,&local_14);
if ((iVar3 == 0) && (*(int *)(param_5 + 0xf8) == -1)) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_missing_ExplosionModelFile__0051281e,(char *)0x0);
uVar4 = 0;
}
else {
puVar8 = (undefined4 *)0x0;
pcVar7 = s_Unspecified_0051283c;
pcVar6 = local_14;
do {
bVar2 = *pcVar6 == *pcVar7;
if (!bVar2) break;
if (*pcVar6 == '\0') goto LAB_004bdafa;
pcVar5 = pcVar6 + 1;
bVar2 = *pcVar5 == pcVar7[1];
if (!bVar2) break;
pcVar6 = pcVar6 + 2;
pcVar7 = pcVar7 + 2;
bVar2 = *pcVar5 == '\0';
} while (!bVar2);
if (!bVar2) {
puVar8 = (undefined4 *)FUN_00406ff8(param_1,local_14,1,-1);
}
LAB_004bdafa:
pcVar6 = local_14;
if ((puVar8 == (undefined4 *)0x0) && (*(int *)(param_5 + 0xf8) == -1)) {
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_cannot_find_00512848,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,pcVar6,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_in_resource_file__00512856,(char *)0x0);
uVar4 = 0;
}
else {
if (puVar8 != (undefined4 *)0x0) {
*(undefined4 *)(param_5 + 0xf8) = *puVar8;
}
uVar4 = 1;
}
}
}
}
}
}
}
}
return uVar4;
}
/* @004bdb94 file=? name=FUN_004bdb94 */
undefined4 __cdecl FUN_004bdb94(int *param_1,int param_2)
{
int *piVar1;
int *piVar2;
int iVar3;
undefined4 uVar4;
if (param_2 != 1) {
uVar4 = FUN_004ac1d4(param_1,param_2);
return uVar4;
}
if (param_1[99] == 0) {
param_1[99] = 1;
piVar2 = (int *)FUN_00414b60();
piVar1 = param_1 + 100;
*piVar1 = *piVar2;
iVar3 = FUN_004dcd94();
*piVar1 = *piVar1 + iVar3;
return 1;
}
return 0;
}
/* @004bdca4 file=? name=FUN_004bdca4 */
void __cdecl FUN_004bdca4(int param_1)
{
*(undefined4 *)(param_1 + 0x414) = 0;
return;
}
/* @004bdcb4 file=? name=FUN_004bdcb4 */
int * __cdecl
FUN_004bdcb4(int *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5)
{
FUN_004bb120(param_1,param_2,param_3,param_4,param_5);
*param_1 = (int)&PTR_FUN_00512934;
param_1[0x105] = 0;
return param_1;
}
/* @004bdce8 file=? name=FUN_004bdce8 */
void __cdecl FUN_004bdce8(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_00512934;
FUN_004bb3c8(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004bdd14 file=? name=FUN_004bdd14 */
undefined4 __cdecl
FUN_004bdd14(int param_1,int param_2,char *param_3,char *param_4,char *param_5,int param_6,
int param_7,int param_8)
{
int iVar1;
iVar1 = FUN_004bb478(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
if (iVar1 == 0) {
return 0;
}
param_5[0x24] = -0x20;
param_5[0x25] = '\x01';
param_5[0x26] = '\0';
param_5[0x27] = '\0';
param_5[0x20] = -0x32;
param_5[0x21] = '\v';
param_5[0x22] = '\0';
param_5[0x23] = '\0';
return 1;
}
/* @004bdd60 file=? name=FUN_004bdd60 */
void __cdecl FUN_004bdd60(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x5128b8);
return;
}
/* @004bddec file=? name=FUN_004bddec */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004bddec(int param_1,float param_2)
{
float *pfVar1;
int iVar2;
int *piVar3;
float local_b8;
float local_b4;
float local_b0;
undefined4 local_ac;
undefined4 local_a8;
undefined4 local_a4;
undefined4 local_a0 [2];
undefined4 local_98;
undefined4 local_94;
undefined4 local_90;
undefined4 local_8c [2];
undefined4 local_84;
undefined4 local_80;
float local_7c;
undefined4 local_78;
undefined4 local_74;
undefined4 local_70;
undefined4 local_6c;
undefined4 local_68;
undefined4 local_64;
undefined4 local_60 [2];
undefined4 local_58 [2];
float local_50;
undefined4 local_4c;
undefined4 local_48;
undefined4 local_44;
undefined4 local_40;
undefined4 local_3c;
undefined4 local_38;
float local_34 [3];
float local_28 [6];
float local_10;
undefined4 local_c;
int *local_8;
pfVar1 = (float *)(param_1 + 0x100);
FUN_00408440(local_28,pfVar1);
FUN_00421e2c(param_1,1.0);
FUN_00421bac(param_1,param_2);
FUN_00408644(local_34,pfVar1,local_28);
FUN_0040d100((int)local_28,local_34);
FUN_0040ab44((float *)(param_1 + 0xd0),pfVar1);
iVar2 = FUN_0042291c(param_1,local_28,*(int *)(param_1 + 0x300));
if (iVar2 == 0) {
FUN_00421b6c(param_1);
(**(code **)(param_1 + 0x254))(param_1);
FUN_00408644(&local_b8,(float *)(param_1 + 0x260),pfVar1);
if (_DAT_004be050 < local_b0 * local_b0 + local_b4 * local_b4 + local_b8 * local_b8) {
*(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1;
}
}
else {
FUN_0042061c(param_1);
piVar3 = *(int **)(iVar2 + 0x1c);
local_50 = *pfVar1;
local_4c = *(undefined4 *)(param_1 + 0x104);
local_48 = *(undefined4 *)(param_1 + 0x108);
local_44 = *(undefined4 *)(param_1 + 0x10c);
local_40 = *(undefined4 *)(param_1 + 0x110);
local_3c = *(undefined4 *)(param_1 + 0x114);
local_38 = *(undefined4 *)(param_1 + 0x118);
FUN_0040cdf4(local_28,local_10,&local_50);
iVar2 = *(int *)(param_1 + 0x300);
local_8 = piVar3 + 0x61;
local_c = *(undefined4 *)(param_1 + 0x33c);
local_ac = 0x5c;
local_a8 = 3;
local_a4 = 1;
FUN_00420ea4(local_a0,(undefined4 *)&DAT_00522524);
local_98 = 0;
local_94 = 0;
local_90 = 0x31;
FUN_00420ea4(local_8c,(undefined4 *)&DAT_00522524);
local_84 = local_c;
local_80 = 0x100;
local_7c = local_50;
local_78 = local_4c;
local_74 = local_48;
local_70 = local_44;
local_6c = local_40;
local_68 = local_3c;
local_64 = local_38;
FUN_00420ea4(local_60,local_8);
FUN_00420ea4(local_58,(undefined4 *)(iVar2 + 0x184));
FUN_004302ec((int)&local_ac);
FUN_004be078(param_1,piVar3);
}
piVar3 = (int *)FUN_00414b60();
if (_DAT_004be054 < (float)(*piVar3 - *(int *)(param_1 + 0x19c)) / DAT_0052140c) {
FUN_0042061c(param_1);
}
return;
}
/* @004be058 file=? name=FUN_004be058 */
bool __cdecl FUN_004be058(int param_1,int param_2)
{
return param_2 == *(int *)(param_1 + 0x300);
}
/* @004be078 file=? name=FUN_004be078 */
void FUN_004be078(int param_1,int *param_2)
{
int iVar1;
int iVar2;
undefined4 uStack_74;
undefined4 uStack_70;
undefined4 uStack_6c;
undefined4 auStack_68 [2];
undefined4 uStack_60;
undefined4 uStack_5c;
undefined4 auStack_58 [2];
undefined4 uStack_50;
undefined4 uStack_4c;
undefined4 uStack_48;
undefined4 uStack_44;
undefined4 uStack_40;
undefined4 uStack_3c;
undefined4 uStack_38;
undefined4 uStack_34;
undefined4 uStack_30;
undefined4 uStack_2c;
undefined4 uStack_28;
undefined4 uStack_24;
undefined4 uStack_20;
undefined4 uStack_1c;
int iStack_18;
uint uStack_14;
float fStack_10;
undefined4 uStack_c;
undefined4 uStack_8;
FUN_00408440((undefined4 *)(param_1 + 0x32c),(undefined4 *)(param_1 + 0x100));
fStack_10 = DAT_004e0f74;
uStack_c = DAT_004e0f78;
uStack_8 = DAT_004e0f7c;
FUN_004086ac(&fStack_10,(float *)(param_1 + 500),*(float *)(param_1 + 0x20c));
FUN_00408440((undefined4 *)(param_1 + 0x314),&fStack_10);
iVar1 = *(int *)(param_1 + 0x300);
iVar2 = *(int *)(param_1 + 0x308);
uStack_74 = 100;
uStack_70 = 0x12;
uStack_6c = 1;
FUN_00420ea4(auStack_68,(undefined4 *)&DAT_00522524);
uStack_60 = 0;
uStack_5c = 0;
FUN_00420ea4(auStack_58,(undefined4 *)(iVar1 + 0x184));
uStack_50 = 0xffffffff;
uStack_4c = 1;
uStack_48 = *(undefined4 *)(param_1 + 0x30c);
uStack_44 = *(undefined4 *)(param_1 + 0x310);
uStack_40 = *(undefined4 *)(param_1 + 0x314);
uStack_3c = *(undefined4 *)(param_1 + 0x318);
uStack_38 = *(undefined4 *)(param_1 + 0x31c);
uStack_34 = *(undefined4 *)(param_1 + 800);
uStack_30 = *(undefined4 *)(param_1 + 0x324);
uStack_2c = *(undefined4 *)(param_1 + 0x328);
uStack_28 = *(undefined4 *)(param_1 + 0x32c);
uStack_24 = *(undefined4 *)(param_1 + 0x330);
uStack_20 = *(undefined4 *)(param_1 + 0x334);
uStack_1c = *(undefined4 *)(param_1 + 0x338);
uStack_14 = (uint)(iVar2 < 0);
iStack_18 = iVar2;
(**(code **)(*param_2 + 0xc))(param_2,&uStack_74);
return;
}
/* @004be07e file=? name=FUN_004be07e */
void FUN_004be07e(void)
{
int iVar1;
int iVar2;
undefined4 uVar3;
int unaff_EBP;
iVar1 = *(int *)(unaff_EBP + 8);
FUN_00408440((undefined4 *)(iVar1 + 0x32c),(undefined4 *)(iVar1 + 0x100));
*(undefined4 *)(unaff_EBP + -0xc) = DAT_004e0f74;
*(undefined4 *)(unaff_EBP + -8) = DAT_004e0f78;
*(undefined4 *)(unaff_EBP + -4) = DAT_004e0f7c;
FUN_004086ac((float *)(unaff_EBP + -0xc),(float *)(iVar1 + 500),*(float *)(iVar1 + 0x20c));
FUN_00408440((undefined4 *)(iVar1 + 0x314),(undefined4 *)(unaff_EBP + -0xc));
iVar2 = *(int *)(iVar1 + 0x300);
uVar3 = *(undefined4 *)(iVar1 + 0x308);
*(undefined4 *)(unaff_EBP + -0x70) = 100;
*(undefined4 *)(unaff_EBP + -0x6c) = 0x12;
*(undefined4 *)(unaff_EBP + -0x68) = 1;
FUN_00420ea4((undefined4 *)(unaff_EBP + -100),(undefined4 *)&DAT_00522524);
*(undefined4 *)(unaff_EBP + -0x5c) = 0;
*(undefined4 *)(unaff_EBP + -0x58) = 0;
FUN_00420ea4((undefined4 *)(unaff_EBP + -0x54),(undefined4 *)(iVar2 + 0x184));
*(undefined4 *)(unaff_EBP + -0x4c) = 0xffffffff;
*(undefined4 *)(unaff_EBP + -0x48) = 1;
*(undefined4 *)(unaff_EBP + -0x44) = *(undefined4 *)(iVar1 + 0x30c);
*(undefined4 *)(unaff_EBP + -0x40) = *(undefined4 *)(iVar1 + 0x310);
*(undefined4 *)(unaff_EBP + -0x3c) = *(undefined4 *)(iVar1 + 0x314);
*(undefined4 *)(unaff_EBP + -0x38) = *(undefined4 *)(iVar1 + 0x318);
*(undefined4 *)(unaff_EBP + -0x34) = *(undefined4 *)(iVar1 + 0x31c);
*(undefined4 *)(unaff_EBP + -0x30) = *(undefined4 *)(iVar1 + 800);
*(undefined4 *)(unaff_EBP + -0x2c) = *(undefined4 *)(iVar1 + 0x324);
*(undefined4 *)(unaff_EBP + -0x28) = *(undefined4 *)(iVar1 + 0x328);
*(undefined4 *)(unaff_EBP + -0x24) = *(undefined4 *)(iVar1 + 0x32c);
*(undefined4 *)(unaff_EBP + -0x20) = *(undefined4 *)(iVar1 + 0x330);
*(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(iVar1 + 0x334);
*(undefined4 *)(unaff_EBP + -0x18) = *(undefined4 *)(iVar1 + 0x338);
*(undefined4 *)(unaff_EBP + -0x14) = uVar3;
*(uint *)(unaff_EBP + -0x10) = (uint)(*(int *)(unaff_EBP + -0x14) < 0);
(**(code **)(**(int **)(unaff_EBP + 0xc) + 0xc))(*(int **)(unaff_EBP + 0xc),unaff_EBP + -0x70);
return;
}
/* @004be1bc file=? name=FUN_004be1bc */
int * __cdecl FUN_004be1bc(int *param_1,int param_2,undefined4 param_3)
{
int iVar1;
FUN_004234f0(param_1,param_2,param_3);
*param_1 = (int)&PTR_FUN_00512a5c;
FUN_0041db7c((int)(param_1 + 0xc3));
param_1[10] = param_1[10] | 0x10;
FUN_0041bbd8((int)(param_1 + 0xb),2);
iVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc))
(*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 0x7c);
param_1[0xc0] = iVar1;
param_1[0xc1] = *(int *)(*(int *)(param_1[0xc0] + 0x128) + *(int *)(param_2 + 0x84) * 4);
param_1[0xc2] = *(int *)(param_2 + 0x84);
param_1[0xc3] = *(int *)(param_2 + 0x88);
param_1[0xc4] = *(int *)(param_2 + 0x8c);
param_1[0xce] = *(int *)(param_2 + 0xb4);
FUN_00408440(param_1 + 0xc5,(undefined4 *)(param_2 + 0x90));
FUN_00408440(param_1 + 200,(undefined4 *)(param_2 + 0x9c));
FUN_00408440(param_1 + 0xcb,(undefined4 *)(param_2 + 0xa8));
param_1[0xcf] = *(int *)(param_2 + 0xb8);
iVar1 = FUN_00433ed4(*(int *)(DAT_004efc94 + 0x30) + 0x14);
param_1[0x94] = *(int *)(iVar1 + 0x34) + 0x2c;
param_1[0x95] = (int)PTR_FUN_005129dc;
param_1[0x96] = DAT_005129e0;
param_1[0x97] = DAT_005129e4;
if ((param_1[10] & 0xcU) == 4) {
param_1[7] = (int)PTR_FUN_005129e8;
param_1[8] = DAT_005129ec;
param_1[9] = DAT_005129f0;
}
else {
param_1[7] = (int)PTR_FUN_005129f4;
param_1[8] = DAT_005129f8;
param_1[9] = DAT_005129fc;
}
(**(code **)(*param_1 + 0x38))(param_1);
return param_1;
}
/* @004be358 file=? name=FUN_004be358 */
void __cdecl FUN_004be358(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_00512a5c;
FUN_00423c18(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004be384 file=? name=FUN_004be384 */
int * __cdecl FUN_004be384(int param_1)
{
int *piVar1;
piVar1 = (int *)FUN_00402298(0x340);
if (piVar1 == (int *)0x0) {
piVar1 = (int *)0x0;
}
else {
piVar1 = FUN_004be1bc(piVar1,param_1,&DAT_005129b0);
}
return piVar1;
}
/* @004be3b4 file=? name=FUN_004be3b4 */
void __cdecl FUN_004be3b4(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x512980);
return;
}
/* @004be474 file=? name=FUN_004be474 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004be474(int param_1,float param_2)
{
int iVar1;
float10 fVar2;
float local_bc;
float local_b8;
float local_b4;
float local_b0;
float local_ac;
float local_a8;
float local_a4;
float local_a0;
float local_9c;
float local_98;
float local_94;
float local_90;
float local_8c;
float local_88;
float local_84;
float local_80 [4];
float local_70;
float local_6c;
float local_68;
float local_64 [3];
float local_58;
undefined4 local_54;
undefined4 local_50;
float local_4c;
undefined4 local_48;
undefined4 local_44;
float local_40;
undefined4 local_3c;
undefined4 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;
int local_8;
iVar1 = *(int *)(param_1 + 0xd0);
local_8 = **(int **)(iVar1 + 0x128);
FUN_0040ab44((float *)(iVar1 + 0xd0),(undefined4 *)(iVar1 + 0x100));
local_40 = DAT_004e0f80;
local_3c = DAT_004e0f84;
local_38 = DAT_004e0f88;
FUN_00408440(&local_40,(undefined4 *)(local_8 + 0xe4));
local_4c = DAT_004e0f74;
local_48 = DAT_004e0f78;
local_44 = DAT_004e0f7c;
FUN_00408644(&local_4c,&local_40,(float *)(iVar1 + 0x100));
local_58 = DAT_004e0f74;
local_54 = DAT_004e0f78;
local_50 = DAT_004e0f7c;
FUN_0040879c(&local_58,&local_4c,(float *)(iVar1 + 0xd0));
FUN_004087f4(local_64,&local_58);
local_80[3] = DAT_004e0fa4;
local_70 = DAT_004e0fa8;
local_6c = DAT_004e0fac;
local_68 = DAT_004e0fb0;
local_80[0] = 0.0;
local_80[1] = 0.0;
local_80[2] = -1.0;
FUN_0040a22c(local_80 + 3,local_64,local_80);
local_c = local_68;
local_10 = local_6c;
local_14 = local_70;
local_18 = local_80[3];
local_8c = local_80[3];
local_88 = local_70;
local_84 = local_6c;
fVar2 = FUN_004dd138((double)(local_6c * local_6c +
local_70 * local_70 + local_80[3] * local_80[3]));
local_2c = (float)fVar2;
local_28 = local_c;
local_20 = local_c;
local_24 = local_2c;
local_1c = local_2c;
fVar2 = FUN_004dc8ec((double)local_2c,SUB84((double)local_c,0),
(uint)((ulonglong)(double)local_c >> 0x20));
local_30 = (float)fVar2;
local_9c = DAT_004e0fa4;
local_98 = DAT_004e0fa8;
local_94 = DAT_004e0fac;
local_90 = DAT_004e0fb0;
if (local_30 <= *(float *)(param_1 + 0xe8) * param_2) {
FUN_00409968(&local_9c,local_80 + 3);
}
else {
local_34 = (*(float *)(param_1 + 0xe8) * param_2) / local_30;
FUN_00409e28(&local_9c,local_80 + 3,local_34);
}
local_ac = DAT_004e0fa4;
local_a8 = DAT_004e0fa8;
local_a4 = DAT_004e0fac;
local_a0 = DAT_004e0fb0;
FUN_00408744(&local_ac,&local_9c,(float *)(iVar1 + 0xd0));
FUN_0040a138(&local_ac);
local_bc = DAT_004e0fa4;
local_b8 = DAT_004e0fa8;
local_b4 = DAT_004e0fac;
local_b0 = DAT_004e0fb0;
FUN_00409d9c(&local_bc,&local_ac,(float *)(iVar1 + 0x10c));
FUN_0040a138(&local_bc);
FUN_00409968((float *)(iVar1 + 0x10c),&local_bc);
if (*(int *)(param_1 + 0x40) == 1) {
if (*(float *)(param_1 + 0xe4) <= _DAT_004be7c0) {
FUN_0041bbd8(param_1 + 0x2c,0);
*(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1;
}
else {
*(float *)(param_1 + 0xe4) = *(float *)(param_1 + 0xe4) - param_2;
FUN_004085ec((float *)(iVar1 + 0x1dc),(float *)(iVar1 + 0x1dc),(float *)(param_1 + 0xf4));
}
}
return;
}
/* @004be7c4 file=? name=FUN_004be7c4 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 * __cdecl FUN_004be7c4(undefined4 *param_1,int param_2,undefined4 param_3,char *param_4)
{
FUN_0041c52c(param_1,param_2,param_3,param_4,&DAT_00512a9c);
*param_1 = &PTR_FUN_00512bbc;
param_1[0x39] = *(undefined4 *)(param_4 + 0x30);
param_1[0x3b] = *(undefined4 *)(param_4 + 0x38);
param_1[0x3c] = *(undefined4 *)(param_4 + 0x3c);
if ((*(uint *)(param_2 + 0x28) & 0xc) != 4) {
param_1[7] = PTR_FUN_00512b14;
param_1[8] = DAT_00512b18;
param_1[9] = DAT_00512b1c;
}
param_1[7] = PTR_FUN_00512b20;
param_1[8] = DAT_00512b24;
param_1[9] = DAT_00512b28;
param_1[0x3a] = *(float *)(param_4 + 0x34) * _DAT_004be8b8;
FUN_0041bbd8((int)(param_1 + 0xb),1);
FUN_00408440(param_1 + 0x3d,&DAT_004e0f74);
param_1[0x3f] = (float)param_1[0x3f] - (float)param_1[0x3b];
FUN_00408440(param_1 + 0x40,&DAT_004e0f74);
return param_1;
}
/* @004be8bc file=? name=FUN_004be8bc */
void __cdecl FUN_004be8bc(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_00512bbc;
FUN_0041c648(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004be8e8 file=? name=FUN_004be8e8 */
void __cdecl FUN_004be8e8(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x512aac);
return;
}
/* @004be9a0 file=? name=FUN_004be9a0 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004be9a0(int param_1)
{
float *pfVar1;
int iVar2;
float10 fVar3;
float local_2c;
float local_28;
float local_24;
float local_20;
float local_1c;
float local_18;
float local_14;
undefined4 local_10;
float local_c;
float local_8;
if (*(int *)(param_1 + 0xfc) == 0) {
iVar2 = *(int *)(param_1 + 0xd0);
FUN_00408440((undefined4 *)(param_1 + 0xe4),&DAT_004e0f80);
local_14 = DAT_004e0f80;
local_10 = DAT_004e0f84;
local_c = DAT_004e0f88 - _DAT_004beae0;
FUN_00408b98((float *)(param_1 + 0xe4),&local_14,(float *)(iVar2 + 0xd0));
}
else {
FUN_00408440((float *)(param_1 + 0xe4),&DAT_004e0f80);
FUN_00408b98((float *)(param_1 + 0xe4),(float *)(param_1 + 0x100),
(float *)(*(int *)(param_1 + 0xfc) + 0xd0));
}
iVar2 = *(int *)(param_1 + 0xd0);
FUN_004beae4(param_1);
pfVar1 = (float *)(iVar2 + 0x100);
FUN_00408644(&local_20,(float *)(param_1 + 0xe4),pfVar1);
fVar3 = FUN_004dd138((double)(local_18 * local_18 + local_1c * local_1c + local_20 * local_20));
local_8 = (float)fVar3;
*(float *)(param_1 + 0x10c) = local_8;
FUN_00408644(&local_2c,pfVar1,(float *)(param_1 + 0xf0));
fVar3 = FUN_004dd138((double)(local_24 * local_24 + local_28 * local_28 + local_2c * local_2c));
*(float *)(param_1 + 0x110) = (float)fVar3;
return;
}
/* @004beae4 file=? name=FUN_004beae4 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004beae4(int param_1)
{
int iVar1;
int iVar2;
float10 fVar3;
float local_1c;
float local_18;
float local_14;
float local_10;
float local_c;
float local_8;
if (*(int *)(param_1 + 0xfc) != 0) {
iVar2 = *(int *)(param_1 + 0xd0);
iVar1 = *(int *)(*(int *)(iVar2 + 0x128) + 4);
FUN_00408644(&local_1c,(float *)(param_1 + 0xe4),(float *)(iVar2 + 0x100));
fVar3 = FUN_004dd138((double)(local_14 * local_14 + local_18 * local_18 + local_1c * local_1c));
local_8 = (float)fVar3;
local_c = local_8 / *(float *)(iVar2 + 0x348);
if ((_DAT_004bec18 < local_8) && (_DAT_004bec1c < *(float *)(iVar1 + 0xf0))) {
local_10 = local_8 - _DAT_004bec18;
if ((_DAT_004bec20 <= local_18) && (_DAT_004bec24 < local_10)) {
local_10 = _DAT_004bec24;
}
*(float *)(param_1 + 0xe8) =
(float)(_DAT_004bec28 * (float10)local_10 + (float10)*(float *)(param_1 + 0xe8));
}
iVar2 = FUN_0041a1a4(**(int **)(*(int *)(param_1 + 0xfc) + 0xc),0x4e4518);
if (iVar2 != 0) {
FUN_004086ac(&local_1c,(float *)(*(int *)(param_1 + 0xfc) + 500),local_c);
FUN_004085ec((float *)(param_1 + 0xe4),(float *)(param_1 + 0xe4),&local_1c);
}
}
return;
}
/* @004bec34 file=? name=FUN_004bec34 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 * __cdecl
FUN_004bec34(undefined4 *param_1,int param_2,undefined4 param_3,char *param_4,undefined4 param_5,
undefined4 param_6,undefined4 param_7,undefined4 param_8)
{
float10 fVar1;
float local_24;
float local_20;
float local_1c;
float local_18;
float local_14;
float local_10;
int local_c;
undefined4 *local_8;
FUN_0041c52c(param_1,param_2,param_3,param_4,&DAT_00512bec);
*param_1 = &PTR_FUN_00512ce8;
local_8 = (undefined4 *)(param_2 + 0x100);
param_1[0x3c] = *local_8;
param_1[0x3d] = *(undefined4 *)(param_2 + 0x104);
param_1[0x3e] = *(undefined4 *)(param_2 + 0x108);
param_1[0x3f] = param_5;
param_1[0x40] = param_6;
param_1[0x41] = param_7;
param_1[0x42] = param_8;
if ((*(uint *)(param_2 + 0x28) & 0xc) != 4) {
param_1[7] = PTR_FUN_00512c64;
param_1[8] = DAT_00512c68;
param_1[9] = DAT_00512c6c;
}
FUN_0041bbd8((int)(param_1 + 0xb),1);
if (param_1[0x3f] == 0) {
local_c = *(int *)(param_2 + 0x300);
FUN_00408440(param_1 + 0x39,&DAT_004e0f80);
param_1[0x3b] = (float)param_1[0x3b] - _DAT_004bee40;
FUN_00408b98((float *)(param_1 + 0x39),(float *)(param_1 + 0x40),(float *)(local_c + 0xd0));
}
else {
FUN_00408440(param_1 + 0x39,&DAT_004e0f80);
FUN_00408b98((float *)(param_1 + 0x39),(float *)(param_1 + 0x40),(float *)(param_1[0x3f] + 0xd0)
);
}
local_18 = DAT_004e0f74;
local_14 = DAT_004e0f78;
local_10 = DAT_004e0f7c;
FUN_00408644(&local_18,(float *)(param_1 + 0x39),(float *)(param_2 + 0x100));
fVar1 = FUN_004dd138((double)(local_10 * local_10 + local_14 * local_14 + local_18 * local_18));
param_1[0x43] = (float)fVar1;
param_1[0x45] = param_1[0x43];
local_24 = DAT_004e0f74;
local_20 = DAT_004e0f78;
local_1c = DAT_004e0f7c;
FUN_00408644(&local_24,(float *)(param_2 + 0x100),(float *)(param_1 + 0x3c));
fVar1 = FUN_004dd138((double)(local_1c * local_1c + local_20 * local_20 + local_24 * local_24));
param_1[0x44] = (float)fVar1;
return param_1;
}
/* @004bee44 file=? name=FUN_004bee44 */
void __cdecl FUN_004bee44(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_00512ce8;
FUN_0041c648(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004bee70 file=? name=FUN_004bee70 */
void __cdecl FUN_004bee70(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x512bfc);
return;
}
/* @004bef28 file=? name=FUN_004bef28 */
void __cdecl FUN_004bef28(int *param_1,undefined4 *param_2)
{
FUN_0042249c(param_1,param_2);
param_1[0xd7] = param_2[0x1d];
return;
}
/* @004bef4c file=? name=FUN_004bef4c */
void __cdecl FUN_004bef4c(int param_1,int *param_2,int param_3)
{
FUN_004225a4(param_1,param_2,param_3);
*param_2 = 0x78;
param_2[0x1d] = *(int *)(param_1 + 0x35c);
return;
}
/* @004bef78 file=? name=FUN_004bef78 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004bef78(int param_1,float param_2)
{
int iVar1;
int iVar2;
uint uVar3;
uint uVar4;
int *piVar5;
undefined4 in_stack_fffffef0;
undefined4 in_stack_fffffef4;
undefined4 *puVar6;
float fVar7;
float local_e8;
float local_e4;
float local_e0;
undefined4 local_dc;
undefined4 local_d8;
undefined4 local_d4;
undefined4 local_d0 [2];
undefined4 local_c8;
undefined4 local_c4;
undefined4 local_c0;
undefined4 local_bc [2];
undefined4 local_b4;
undefined4 local_b0;
float local_ac;
undefined4 local_a8;
undefined4 local_a4;
undefined4 local_a0;
undefined4 local_9c;
undefined4 local_98;
undefined4 local_94;
undefined4 local_90 [2];
undefined4 local_88 [2];
float local_80;
undefined4 local_7c;
undefined4 local_78;
undefined4 local_74;
undefined4 local_70;
undefined4 local_6c;
undefined4 local_68;
float local_64 [3];
float local_58;
float local_54;
float local_50;
float local_4c;
undefined4 local_48;
undefined4 local_44;
float local_40;
undefined4 local_3c;
undefined4 local_38;
float local_34 [6];
float local_1c;
undefined4 *local_18;
undefined4 local_14;
int *local_10;
float local_c;
float local_8;
*(float *)(param_1 + 0x35c) = param_2 + *(float *)(param_1 + 0x35c);
if (_DAT_004bf594 < (float)(*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x14)) / DAT_0052140c) {
*(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1;
}
if (*(float *)(param_1 + 0x35c) <= *(float *)(param_1 + 0x340)) {
*(float *)(param_1 + 0x344) = *(float *)(param_1 + 0x35c) / *(float *)(param_1 + 0x340);
}
else {
*(undefined4 *)(param_1 + 0x344) = 0x3f800000;
}
piVar5 = (int *)0x0;
FUN_0040d150(local_34,(undefined4 *)(param_1 + 0x100));
iVar2 = *(int *)(param_1 + 0x250);
local_40 = *(float *)(iVar2 + 0x14);
local_3c = *(undefined4 *)(iVar2 + 0x18);
local_38 = *(undefined4 *)(iVar2 + 0x1c);
local_8 = *(float *)(iVar2 + 4);
FUN_00408644(&local_58,(float *)(param_1 + 0x1c4),&local_40);
if (local_58 <= _DAT_004bf598) {
local_4c = *(float *)(param_1 + 0x228);
}
else {
local_4c = *(float *)(param_1 + 0x21c);
}
if (local_54 <= _DAT_004bf598) {
local_48 = *(undefined4 *)(param_1 + 0x22c);
}
else {
local_48 = *(undefined4 *)(param_1 + 0x220);
}
if (local_50 <= _DAT_004bf598) {
local_44 = *(undefined4 *)(param_1 + 0x230);
}
else {
local_44 = *(undefined4 *)(param_1 + 0x224);
}
local_c = local_8;
FUN_004086ac(&local_4c,&local_4c,local_8);
if (_DAT_004bf59c <= local_58) {
uVar3 = (uint)(_DAT_004bf5a0 < local_58);
}
else {
uVar3 = 0xffffffff;
}
local_58 = (float)(int)uVar3 * local_58 * local_58;
if (_DAT_004bf59c <= local_54) {
uVar3 = (uint)(_DAT_004bf5a0 < local_54);
}
else {
uVar3 = 0xffffffff;
}
local_54 = (float)(int)uVar3 * local_54 * local_54;
if (_DAT_004bf59c <= local_50) {
uVar3 = (uint)(_DAT_004bf5a0 < local_50);
}
else {
uVar3 = 0xffffffff;
}
local_50 = (float)(int)uVar3 * local_50 * local_50;
FUN_004086d0(&local_4c,&local_4c,&local_58);
FUN_00408644((float *)(param_1 + 0x1dc),(float *)(param_1 + 0x1dc),&local_4c);
FUN_004086d0(&local_4c,(float *)(param_1 + 0x234),(float *)(param_1 + 0x1d0));
FUN_00408644((float *)(param_1 + 0x1e8),(float *)(param_1 + 0x1e8),&local_4c);
iVar2 = **(int **)(param_1 + 0x128);
if (*(int *)((*(int **)(param_1 + 0x128))[1] + 0x40) == 1) {
*(undefined4 *)(param_1 + 0x1dc) = 0;
*(undefined4 *)(param_1 + 0x1e0) = 0;
*(undefined4 *)(param_1 + 0x1c4) = 0;
*(undefined4 *)(param_1 + 0x1c8) = 0;
FUN_00421b2c(param_1);
}
else {
FUN_00421b2c(param_1);
*(float *)(param_1 + 0x204) = *(float *)(param_1 + 0x204) - **(float **)(param_1 + 0x250);
}
FUN_00421bac(param_1,param_2);
if (((*(int *)(iVar2 + 0xfc) != 0) &&
(iVar1 = FUN_0041a1a4(**(int **)(*(int *)(iVar2 + 0xfc) + 0xc),0x50bdb4), iVar1 != 0)) &&
(iVar1 = FUN_0049fb54(*(int *)(iVar2 + 0xfc)), iVar1 != 0)) {
*(undefined4 *)(iVar2 + 0xfc) = 0;
}
if (*(float *)(iVar2 + 0x10c) < _DAT_004bf5a4) {
piVar5 = *(int **)(iVar2 + 0xfc);
}
FUN_00408644(local_64,(float *)(param_1 + 0x100),local_34);
FUN_0040d100((int)local_34,local_64);
FUN_0040ab44((float *)(param_1 + 0xd0),(undefined4 *)(param_1 + 0x100));
iVar2 = FUN_0042291c(param_1,local_34,*(int *)(param_1 + 0x300));
if (iVar2 != 0) {
piVar5 = *(int **)(iVar2 + 0x1c);
}
if (piVar5 == (int *)0x0) {
FUN_00421b6c(param_1);
(**(code **)(param_1 + 0x254))();
FUN_00408644(&local_e8,(float *)(param_1 + 0x260),(float *)(param_1 + 0x100));
if (_DAT_004bf5a8 < local_e0 * local_e0 + local_e4 * local_e4 + local_e8 * local_e8) {
*(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1;
}
}
else {
FUN_0042061c(param_1);
local_80 = *(float *)(param_1 + 0x100);
local_7c = *(undefined4 *)(param_1 + 0x104);
local_78 = *(undefined4 *)(param_1 + 0x108);
local_74 = *(undefined4 *)(param_1 + 0x10c);
local_70 = *(undefined4 *)(param_1 + 0x110);
local_6c = *(undefined4 *)(param_1 + 0x114);
local_68 = *(undefined4 *)(param_1 + 0x118);
FUN_00409968(&local_74,&DAT_004e0fa4);
FUN_0040cdf4(local_34,local_1c,&local_80);
iVar2 = *(int *)(param_1 + 0x300);
local_10 = piVar5 + 0x61;
local_14 = *(undefined4 *)(param_1 + 0x33c);
local_dc = 0x5c;
local_d8 = 3;
local_d4 = 1;
FUN_00420ea4(local_d0,(undefined4 *)&DAT_00522524);
local_c8 = 0;
local_c4 = 0;
local_c0 = 0x31;
FUN_00420ea4(local_bc,(undefined4 *)&DAT_00522524);
local_b4 = local_14;
local_b0 = 0x100;
local_ac = local_80;
local_a8 = local_7c;
local_a4 = local_78;
local_a0 = local_74;
local_9c = local_70;
local_98 = local_6c;
local_94 = local_68;
FUN_00420ea4(local_90,local_10);
FUN_00420ea4(local_88,(undefined4 *)(iVar2 + 0x184));
local_18 = FUN_004302ec((int)&local_dc);
uVar3 = *(uint *)(param_1 + 0x338);
iVar2 = FUN_0040807c(&DAT_00521f5c,uVar3);
uVar4 = uVar3;
if ((int)uVar3 < 0) {
uVar4 = uVar3 + 3;
}
uVar4 = iVar2 + ((int)uVar4 >> 2);
if ((int)uVar3 < (int)uVar4) {
uVar4 = uVar3;
}
*(uint *)(param_1 + 0x338) = uVar4;
FUN_004be078(param_1,piVar5);
if (*(int *)(param_1 + 0x360) != 0) {
*(uint *)(param_1 + 0x338) = uVar3;
puVar6 = (undefined4 *)(param_1 + 0x30c);
fVar7 = *(float *)(param_1 + 0x364);
FUN_00420ea4((undefined4 *)&stack0xfffffef0,(undefined4 *)(*(int *)(param_1 + 0x300) + 0x184))
;
FUN_0042fad0((int)local_18,in_stack_fffffef0,in_stack_fffffef4,puVar6,fVar7);
}
}
if ((*(float *)(param_1 + 0x340) + _DAT_004bf5ac <
(float)(*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x19c)) / DAT_0052140c) ||
(*(float *)(param_1 + 0x104) < _DAT_004bf5b0)) {
FUN_0042061c(param_1);
*(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1;
}
return;
}
/* @004bf5b4 file=? name=FUN_004bf5b4 */
int * __cdecl FUN_004bf5b4(int *param_1,int param_2,undefined4 param_3)
{
int iVar1;
int iVar2;
int iVar3;
undefined4 *puVar4;
char *pcVar5;
char *pcVar6;
float10 fVar7;
char local_88 [2];
char acStack_86 [30];
undefined4 local_68;
undefined4 local_64;
undefined4 local_60;
undefined4 local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 local_4c;
char local_48 [4];
char acStack_44 [2];
char cStack_42;
undefined4 local_28;
undefined4 local_24;
undefined4 local_20;
undefined4 local_1c;
undefined4 local_18;
int *local_14;
undefined4 *local_10;
int local_c;
int *local_8;
FUN_004be1bc(param_1,param_2,param_3);
*param_1 = (int)&PTR_FUN_00512f2c;
param_1[0xd1] = 0;
local_8 = (int *)(param_2 + 0xc4);
param_1[0xd4] = *local_8;
param_1[0xd5] = *(int *)(param_2 + 200);
param_1[0xd6] = *(int *)(param_2 + 0xcc);
param_1[0xd7] = 0;
param_1[0xd8] = *(int *)(param_2 + 0xd0);
param_1[10] = param_1[10] | 0x10;
local_c = param_2 + 0xbc;
iVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc))
(*(int *)(DAT_004efc94 + 0x2c) + 0x54);
param_1[0xd3] = iVar1;
param_1[0x95] = (int)PTR_FUN_00512d94;
param_1[0x96] = DAT_00512d98;
param_1[0x97] = DAT_00512d9c;
if ((param_1[10] & 0xcU) == 4) {
param_1[7] = (int)PTR_FUN_00512da0;
param_1[8] = DAT_00512da4;
param_1[9] = DAT_00512da8;
}
else {
param_1[7] = (int)PTR_FUN_00512dac;
param_1[8] = DAT_00512db0;
param_1[9] = DAT_00512db4;
}
iVar2 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1[0x6f],0xf);
iVar1 = *(int *)(iVar2 + 4);
*(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
if (iVar1 == 0) {
FUN_00406cd0(iVar2);
}
iVar1 = *(int *)(iVar2 + 0x3c);
param_1[0x49] = 2;
iVar3 = FUN_004022b0(param_1[0x49] << 2);
param_1[0x4a] = iVar3;
param_1[0xd0] = *(int *)(iVar1 + 0x44);
param_1[0xd9] = *(int *)(iVar1 + 0x50);
local_48[0] = s_Seeker_00512e1e[0];
local_48[1] = s_Seeker_00512e1e[1];
local_48[2] = s_Seeker_00512e1e[2];
local_48[3] = s_Seeker_00512e1e[3];
acStack_44[0] = s_Seeker_00512e1e[4];
acStack_44[1] = s_Seeker_00512e1e[5];
cStack_42 = s_Seeker_00512e1e[6];
local_28 = 0xf;
local_24 = 0x30;
local_20 = 0xffffffff;
local_1c = 0;
local_10 = (undefined4 *)FUN_00402298(0x118);
if (local_10 == (undefined4 *)0x0) {
puVar4 = (undefined4 *)0x0;
}
else {
local_14 = param_1 + 0xd4;
puVar4 = FUN_004bec34(local_10,(int)param_1,0,local_48,param_1[0xd3],*local_14,param_1[0xd5],
param_1[0xd6]);
}
*(undefined4 **)param_1[0x4a] = puVar4;
pcVar5 = s_MissleThruster_00512e25;
pcVar6 = local_88;
for (iVar3 = 3; iVar3 != 0; iVar3 = iVar3 + -1) {
*(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;
pcVar5 = pcVar5 + 4;
pcVar6 = pcVar6 + 4;
}
*(undefined2 *)pcVar6 = *(undefined2 *)pcVar5;
pcVar6[2] = pcVar5[2];
local_68 = 0xf;
local_64 = 0x40;
local_58 = *(undefined4 *)(iVar1 + 0x44);
local_54 = *(undefined4 *)(iVar1 + 0x40);
local_50 = *(undefined4 *)(iVar1 + 0x48);
local_4c = *(undefined4 *)(iVar1 + 0x4c);
local_60 = 0xffffffff;
local_5c = 0;
local_18 = local_54;
fVar7 = FUN_004dd138((double)(*(float *)(iVar1 + 0x48) / (float)param_1[0x8c]));
param_1[0xd2] = (int)(float)fVar7;
puVar4 = (undefined4 *)FUN_00402298(0x10c);
if (puVar4 == (undefined4 *)0x0) {
puVar4 = (undefined4 *)0x0;
}
else {
puVar4 = FUN_004be7c4(puVar4,(int)param_1,1,local_88);
}
*(undefined4 **)(param_1[0x4a] + 4) = puVar4;
if (param_1[0xd3] != 0) {
iVar1 = FUN_0041a1a4(**(int **)(param_1[0xd3] + 0xc),0x50bdb4);
if (iVar1 != 0) {
(**(code **)(*(int *)(param_1[0xd3] + 0x418) + 4))(param_1[0xd3] + 0x418,param_1);
}
}
*(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1;
return param_1;
}
/* @004bf890 file=? name=FUN_004bf890 */
void __cdecl FUN_004bf890(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_00512f2c;
FUN_004be358(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004bf8bc file=? name=FUN_004bf8bc */
int * __cdecl FUN_004bf8bc(int param_1)
{
int *piVar1;
piVar1 = (int *)FUN_00402298(0x368);
if (piVar1 == (int *)0x0) {
piVar1 = (int *)0x0;
}
else {
piVar1 = FUN_004bf5b4(piVar1,param_1,&DAT_00512d48);
}
return piVar1;
}
/* @004bf8ec file=? name=FUN_004bf8ec */
undefined4 __cdecl
FUN_004bf8ec(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(0x54);
}
iVar2 = FUN_004238bc(param_1,param_2,param_3,param_4,pfVar1);
if (iVar2 != -1) {
iVar2 = FUN_00404118(param_3,s_gamedata_00512e34,s_BurnTime_00512e3d,pfVar1 + 0x11);
if (iVar2 == 0) {
FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_Missing_BurnTime_00512e46,(char *)0x0);
FUN_004d9c38((int *)&DAT_00524e68);
}
else {
iVar2 = FUN_00404118(param_3,s_gamedata_00512e57,s_MaxThrusterRotationRate_00512e60,
pfVar1 + 0x10);
if (iVar2 == 0) {
FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_MaxThrusterRotationRate_Missing_00512e78,(char *)0x0);
FUN_004d9c38((int *)&DAT_00524e68);
}
else {
iVar2 = FUN_00404118(param_3,s_gamedata_00512e98,s_ThrusterAcceleration_00512ea1,
pfVar1 + 0x12);
if (iVar2 == 0) {
FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_ThrusterAcceleration_Missing_00512eb6,(char *)0x0);
FUN_004d9c38((int *)&DAT_00524e68);
}
else {
iVar2 = FUN_00404118(param_3,s_gamedata_00512ed3,s_ThrusterClimb_00512edc,pfVar1 + 0x13);
if (iVar2 == 0) {
FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_ThrusterClimb_missing_00512eea,(char *)0x0);
FUN_004d9c38((int *)&DAT_00524e68);
}
else {
iVar2 = FUN_00404118(param_3,s_gamedata_00512f00,s_SplashRadius_00512f09,pfVar1 + 0x14);
if (iVar2 != 0) {
if (param_5 == (float *)0x0) {
puVar3 = (undefined4 *)FUN_00406db4(param_1,param_2,0xf,1,0,pfVar1,0x54,-1);
FUN_004022d0((int *)pfVar1);
return *puVar3;
}
return 1;
}
FUN_004dbb24((int *)&DAT_00524e68,param_2,(char *)0x0);
FUN_004dbb24((int *)&DAT_00524e68,s_Splash_Radius_missing_00512f16,(char *)0x0);
FUN_004d9c38((int *)&DAT_00524e68);
}
}
}
}
}
if (param_5 == (float *)0x0) {
FUN_004022d0((int *)pfVar1);
}
return 0xffffffff;
}
/* @004bfb28 file=? name=FUN_004bfb28 */
void __cdecl FUN_004bfb28(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x512d18);
return;
}
/* @004bfbe8 file=? name=FUN_004bfbe8 */
void __cdecl FUN_004bfbe8(int param_1)
{
FUN_0042d9c0(param_1);
if ((*(int *)(DAT_004efc94 + 0x88) == 4) && ((*(byte *)(param_1 + 0x29) & 0x40) == 0)) {
*(undefined4 *)(param_1 + 0x1c8) = 0x447a0000;
}
return;
}
/* @004bfc20 file=? name=FUN_004bfc20 */
void __cdecl FUN_004bfc20(int param_1)
{
int iVar1;
FUN_0042d9e0(param_1);
iVar1 = FUN_004dcd94();
*(int *)(param_1 + 0x288) = *(int *)(param_1 + 0x288) - iVar1;
if (*(int *)(DAT_004efc94 + 0x88) == 8) {
iVar1 = FUN_0041a1a4(**(int **)(*(int *)(param_1 + 0x1fc) + 0xc),0x50bdb4);
if (iVar1 != 0) {
FUN_0049fb74(*(int *)(param_1 + 0x1fc),(undefined4 *)&DAT_00524b38,1);
*(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1;
}
}
return;
}
/* @004bfcac file=? name=FUN_004bfcac */
void __cdecl
FUN_004bfcac(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 *piVar1;
char cVar2;
int iVar3;
int iVar4;
undefined4 *puVar5;
undefined4 uVar6;
uint uVar7;
uint uVar8;
char *pcVar9;
char *pcVar10;
undefined4 local_d4;
undefined4 local_d0;
undefined4 local_cc;
undefined4 local_c8 [2];
undefined4 local_c0;
undefined4 local_bc;
undefined4 local_b8;
undefined4 local_b4 [2];
undefined4 local_ac;
undefined4 local_a8;
undefined4 local_a4;
undefined4 local_a0;
undefined4 local_9c;
undefined4 local_98;
undefined4 local_94;
undefined4 local_90;
undefined4 local_8c;
undefined4 local_88 [6];
undefined4 local_70 [6];
char local_58 [20];
char local_44 [20];
char local_30 [20];
undefined4 local_1c [2];
undefined4 local_14;
char *local_10;
char *local_c;
int *local_8;
iVar3 = *(int *)(param_1 + 0x1f8);
FUN_0042da68(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
if (*(int *)(param_1 + 0x1fc) == 0) {
iVar4 = DAT_004efc94[0xb];
puVar5 = (undefined4 *)
FUN_00406ff8(DAT_004efc94[0x1a],*(char **)(*(int *)(param_1 + 0x1f8) + 0x2c),1,-1);
local_8 = *(int **)(iVar3 + 0xf8);
local_8[3] = local_8[3] + 1;
local_c = (char *)local_8[2];
local_10 = *(char **)(iVar3 + 0x20);
pcVar9 = *(char **)(iVar3 + 0x24);
local_14 = *puVar5;
uVar6 = FUN_0042904c(iVar4);
puVar5 = (undefined4 *)FUN_00420ebc(local_1c,uVar6);
local_d4 = 0xb8;
local_d0 = 3;
local_cc = 1;
FUN_00420ea4(local_c8,puVar5);
local_c0 = 0;
local_bc = 0;
local_b8 = 0xbb9;
FUN_00420ea4(local_b4,(undefined4 *)&DAT_00522524);
local_ac = local_14;
local_a8 = 0x10100;
local_a4 = param_2;
local_a0 = param_3;
local_9c = param_4;
local_98 = param_5;
local_94 = param_6;
local_90 = param_7;
local_8c = param_8;
FUN_0040a7c0(local_88,(undefined4 *)&DAT_004e0fd4);
FUN_0040a7c0(local_70,(undefined4 *)&DAT_004e0fd4);
uVar7 = 0xffffffff;
do {
pcVar10 = pcVar9;
if (uVar7 == 0) break;
uVar7 = uVar7 - 1;
pcVar10 = pcVar9 + 1;
cVar2 = *pcVar9;
pcVar9 = pcVar10;
} while (cVar2 != '\0');
uVar7 = ~uVar7;
pcVar9 = pcVar10 + -uVar7;
pcVar10 = local_58;
for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {
*(undefined4 *)pcVar10 = *(undefined4 *)pcVar9;
pcVar9 = pcVar9 + 4;
pcVar10 = pcVar10 + 4;
}
for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) {
*pcVar10 = *pcVar9;
pcVar9 = pcVar9 + 1;
pcVar10 = pcVar10 + 1;
}
uVar7 = 0xffffffff;
pcVar9 = local_10;
do {
pcVar10 = pcVar9;
if (uVar7 == 0) break;
uVar7 = uVar7 - 1;
pcVar10 = pcVar9 + 1;
cVar2 = *pcVar9;
pcVar9 = pcVar10;
} while (cVar2 != '\0');
uVar7 = ~uVar7;
pcVar9 = pcVar10 + -uVar7;
pcVar10 = local_44;
for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {
*(undefined4 *)pcVar10 = *(undefined4 *)pcVar9;
pcVar9 = pcVar9 + 4;
pcVar10 = pcVar10 + 4;
}
for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) {
*pcVar10 = *pcVar9;
pcVar9 = pcVar9 + 1;
pcVar10 = pcVar10 + 1;
}
uVar7 = 0xffffffff;
pcVar9 = local_c;
do {
pcVar10 = pcVar9;
if (uVar7 == 0) break;
uVar7 = uVar7 - 1;
pcVar10 = pcVar9 + 1;
cVar2 = *pcVar9;
pcVar9 = pcVar10;
} while (cVar2 != '\0');
uVar7 = ~uVar7;
pcVar9 = pcVar10 + -uVar7;
pcVar10 = local_30;
for (uVar8 = uVar7 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {
*(undefined4 *)pcVar10 = *(undefined4 *)pcVar9;
pcVar9 = pcVar9 + 4;
pcVar10 = pcVar10 + 4;
}
for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) {
*pcVar10 = *pcVar9;
pcVar9 = pcVar9 + 1;
pcVar10 = pcVar10 + 1;
}
uVar6 = (**(code **)(*DAT_004efc94 + 0x30))(DAT_004efc94,&local_d4);
*(undefined4 *)(param_1 + 0x1fc) = uVar6;
piVar1 = local_8 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(local_8,3);
}
}
return;
}
/* @004bfee0 file=? name=FUN_004bfee0 */
void __cdecl FUN_004bfee0(int param_1)
{
uint local_30 [5];
undefined4 local_1c;
undefined4 local_18;
undefined4 local_14 [2];
undefined4 local_c [2];
FUN_00420ea4(local_c,(undefined4 *)(param_1 + 0x184));
local_30[0] = 0x24;
local_30[1] = 0x14;
local_30[2] = 1;
FUN_00420ea4(local_30 + 3,(undefined4 *)&DAT_00522524);
local_1c = 0;
local_18 = 0;
FUN_00420e8c(local_14);
FUN_00420ef4(local_14,local_c);
(**(code **)(**(int **)(param_1 + 0x1fc) + 0xc))(*(int **)(param_1 + 0x1fc),local_30);
FUN_0041f640(*(int *)(param_1 + 0x1fc),local_30);
return;
}
/* @004bff74 file=? name=FUN_004bff74 */
void __cdecl FUN_004bff74(int param_1)
{
undefined4 uVar1;
if ((*(int *)(param_1 + 0x270) == 0) && (*(int *)(param_1 + 0x274) != 0)) {
uVar1 = 1;
}
else {
uVar1 = 0;
}
*(undefined4 *)(param_1 + 0x270) = uVar1;
return;
}
/* @004bffa0 file=? name=FUN_004bffa0 */
void __cdecl FUN_004bffa0(int param_1,uint *param_2)
{
if ((param_2[1] == 0x16) && (param_2[8] == 0)) {
FUN_004c0200(param_1,(int)param_2);
return;
}
FUN_0041f59c(param_1,param_2);
return;
}
/* @004bffd0 file=? name=FUN_004bffd0 */
void __cdecl FUN_004bffd0(int *param_1,uint *param_2)
{
if (param_1[0x7f] == 0) {
FUN_0040a938((undefined4 *)&DAT_00524b38,param_2 + 7);
(**(code **)(*param_1 + 0x40))
(param_1,param_2[7],param_2[8],param_2[9],param_2[10],param_2[0xb],param_2[0xc],
param_2[0xd]);
FUN_004bfee0((int)param_1);
if (*(int *)(param_1[0x7f] + 4) == 0x45) {
param_1[7] = (int)PTR_LAB_00513064;
param_1[8] = DAT_00513068;
param_1[9] = DAT_0051306c;
param_1[0x73] = -1;
}
else if (*(int *)(param_1[0x7f] + 4) == 0xbb9) {
param_1[7] = (int)PTR_FUN_00513058;
param_1[8] = DAT_0051305c;
param_1[9] = DAT_00513060;
}
param_1[0x80] = 0;
param_1[10] = param_1[10] & 0xfffffffd;
}
else {
if (param_2[0xe] != param_1[0x80]) {
return;
}
if (param_1[0x10] == 4) {
return;
}
if (param_1[0x10] != 1) {
FUN_004c012c((int)param_1,param_2);
return;
}
}
FUN_0041bbd8((int)(param_1 + 0xb),2);
if (*(int *)(param_1[0x7f] + 4) == 0xbb9) {
if (param_1[0x99] == 0) {
FUN_0049fb74(param_1[0x7f],param_2 + 7,1);
}
else {
FUN_0049fb74(param_1[0x7f],(undefined4 *)&DAT_00524b38,1);
}
}
return;
}
/* @004c012c file=? name=FUN_004c012c */
void __cdecl FUN_004c012c(int param_1,uint *param_2)
{
int iVar1;
int *piVar2;
int iVar3;
*(int *)(param_1 + 0x200) = *(int *)(param_1 + 0x200) + 1;
param_2[0xe] = *(uint *)(param_1 + 0x200);
*(int *)(*(int *)(param_1 + 0x208) + 0x28) = *(int *)(*(int *)(param_1 + 0x208) + 0x28) + -1;
*(ushort *)(param_1 + 0x18) = *(ushort *)(param_1 + 0x18) | 1;
FUN_0041bbd8(param_1 + 0x2c,1);
if (*(int *)(param_1 + 0x264) == 0) {
FUN_00408440((undefined4 *)(param_1 + 0x1d0),param_2 + 7);
}
else {
FUN_00408440((undefined4 *)(param_1 + 0x1d0),(undefined4 *)&DAT_00524b38);
}
piVar2 = (int *)FUN_00414b60();
iVar1 = *piVar2;
iVar3 = FUN_004dcd94();
FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,param_1,param_2,iVar1 + iVar3);
*(undefined4 *)(param_1 + 0x290) = 0;
*(undefined4 *)(param_1 + 600) = 0;
return;
}
/* @004c0200 file=bt/btplayer.cpp name=FUN_004c0200 */
void __cdecl FUN_004c0200(int param_1,int param_2)
{
int iVar1;
int iVar2;
float10 fVar3;
float local_10;
if (*(int *)(param_2 + 0x20) != 0) {
FUN_0040385c(s_BTPlayer__ScoreInflictedMessageH_00513110,s_d__tesla_bt_bt_btplayer_cpp_0051316a,
0x18b);
}
iVar2 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc))
(*(int *)(DAT_004efc94 + 0x2c) + 0x54,param_2 + 0x34);
iVar1 = *(int *)(param_1 + 0x1fc);
fVar3 = FUN_004c052c(param_1,(float *)(param_2 + 0x24),iVar2,0.0);
local_10 = (float)fVar3;
if (iVar2 == iVar1) {
local_10 = -local_10;
}
*(float *)(param_1 + 0x278) =
(*(float *)(iVar2 + 0x4bc) / *(float *)(iVar1 + 0x4bc)) * local_10 +
*(float *)(param_1 + 0x278);
return;
}
/* @004c02a8 file=bt/btplayer.cpp name=FUN_004c02a8 */
void __cdecl FUN_004c02a8(int param_1,int param_2)
{
if ((*(uint *)(param_1 + 0x28) & 0xc) == 4) {
FUN_0040385c(s_BTPlayer__ScoreUpdateMessageHand_00513186,s_d__tesla_bt_bt_btplayer_cpp_005131cf,
0x1d5);
}
FUN_0042da20(param_1,param_2);
return;
}
/* @004c02e4 file=bt/btplayer.cpp name=FUN_004c02e4 */
void __cdecl FUN_004c02e4(int param_1,int param_2)
{
int *piVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
float10 fVar5;
undefined4 uVar6;
undefined4 local_4c [10];
int local_24;
undefined4 local_20;
int local_1c;
undefined4 local_18;
undefined4 *local_14;
float local_10;
int local_c;
int local_8;
if ((*(uint *)(param_1 + 0x28) & 0xc) == 4) {
FUN_0040385c(s_BTPlayer__ScoreMessageHandler_sh_005131eb,s_d__tesla_bt_bt_btplayer_cpp_0051322e,
0x1e9);
}
if (*(int *)(param_1 + 0x40) != 4) {
local_8 = param_2 + 0x34;
iVar3 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 0x2c) + 0x54) + 0xc))
(*(int *)(DAT_004efc94 + 0x2c) + 0x54,local_8);
local_c = *(int *)(param_1 + 0x1fc);
iVar2 = *(int *)(param_2 + 0x20);
if (iVar2 == 0) {
FUN_0040385c(s_BTPlayer__ScoreMessageHandler_sh_0051324a,
s_d__tesla_bt_bt_btplayer_cpp_0051329a,0x296);
}
else if (iVar2 == 1) {
if (iVar3 != local_c) {
fVar5 = FUN_00429b94(*(int *)(param_1 + 0x208),(float *)(param_2 + 0x24));
local_10 = (*(float *)(local_c + 0x4bc) / *(float *)(iVar3 + 0x4bc)) * (float)fVar5;
}
local_1c = FUN_00429078(*(int *)(DAT_004efc94 + 0x2c));
if ((local_1c != 0) && (*(int *)(param_1 + 600) == 0)) {
local_20 = *(undefined4 *)(param_2 + 0x30);
local_24 = FUN_004078fc(*(float *)(param_2 + 0x24));
uVar6 = local_20;
uVar4 = FUN_004dcd94();
FUN_004c1944(local_4c,*(undefined4 *)(param_1 + 0x18c),
*(undefined4 *)(*(int *)(iVar3 + 400) + 0x18c),local_24,
*(undefined4 *)(param_2 + 0x2c),*(undefined4 *)(param_2 + 0x28),uVar4,uVar6);
(**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18))
(*(int **)(DAT_004efc94 + 0x20),local_4c,5,*(undefined4 *)(local_1c + 0xc));
}
}
else if (iVar2 == 2) {
fVar5 = FUN_004c052c(param_1,(float *)(param_2 + 0x24),iVar3,*(float *)(param_2 + 0x1c));
local_10 = (*(float *)(iVar3 + 0x4bc) / *(float *)(local_c + 0x4bc)) * (float)fVar5;
if (iVar3 == local_c) {
local_10 = -local_10;
}
else {
*(int *)(param_1 + 0x27c) = *(int *)(param_1 + 0x27c) + 1;
piVar1 = (int *)(*(int *)(iVar3 + 400) + 0x27c);
*piVar1 = *piVar1 + 1;
}
local_14 = FUN_00402f74(0x512f6c);
if (local_14 != (undefined4 *)0x0) {
local_18 = *(undefined4 *)(iVar3 + 400);
FUN_0042d990(local_14,local_18,0,0x40c00000);
*local_14 = &PTR_FUN_00513344;
local_14[6] = 0;
}
FUN_0042e580(param_1,local_14);
if (iVar3 == *(int *)(param_1 + 0x284)) {
FUN_004b04d8(**(int **)(*(int *)(param_1 + 0x1fc) + 0x128),iVar3);
}
}
*(float *)(param_2 + 0x1c) = local_10;
FUN_0042da20(param_1,param_2);
}
return;
}
/* @004c052c file=? name=FUN_004c052c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
float10 __cdecl FUN_004c052c(int param_1,float *param_2,int param_3,float param_4)
{
char *pcVar1;
char *pcVar2;
char *pcVar3;
bool bVar4;
float local_8;
if (*(int *)(param_1 + 0x250) == 0) {
pcVar2 = (char *)(*(int *)(param_3 + 400) + 0x20c);
pcVar3 = (char *)(param_1 + 0x20c);
do {
if (*pcVar2 != *pcVar3) goto LAB_004c0599;
bVar4 = true;
if (*pcVar2 == '\0') break;
pcVar1 = pcVar2 + 1;
if (*pcVar1 != pcVar3[1]) goto LAB_004c0599;
pcVar2 = pcVar2 + 2;
pcVar3 = pcVar3 + 2;
bVar4 = *pcVar1 == '\0';
} while (!bVar4);
if (bVar4) {
local_8 = -*(float *)(*(int *)(param_1 + 0x208) + 0x14);
goto LAB_004c05b1;
}
}
LAB_004c0599:
local_8 = *(float *)(param_3 + 0x354) * *(float *)(*(int *)(param_1 + 0x208) + 0x18) +
_DAT_004c05c0;
LAB_004c05b1:
return (float10)((*param_2 + param_4) * *(float *)(*(int *)(param_1 + 0x208) + 0xc)) *
(float10)local_8;
}
/* @004c05c4 file=? name=FUN_004c05c4 */
void __cdecl FUN_004c05c4(int param_1,uint *param_2)
{
int iVar1;
int iVar2;
undefined4 *puVar3;
int *piVar4;
undefined4 local_6c;
undefined4 local_68;
undefined4 local_64;
undefined4 local_60 [2];
undefined4 local_58;
undefined4 local_54;
float local_50;
uint local_4c [5];
undefined4 local_38;
undefined4 local_34;
undefined4 local_30 [5];
float local_1c;
int local_18;
int local_14;
int local_10;
int local_c;
int local_8;
if (*(int *)(param_1 + 0x40) != 4) {
if (param_2[7] == 0xffffffff) {
if (*(int *)(param_1 + 0x290) == 0) {
local_8 = *(int *)(DAT_004efc94 + 0x2c);
iVar2 = (**(code **)(*(int *)(local_8 + 0x54) + 0xc))(local_8 + 0x54,param_2 + 0xb);
puVar3 = FUN_00402f74(0x512f6c);
if (puVar3 != (undefined4 *)0x0) {
local_c = iVar2;
FUN_0042d990(puVar3,iVar2,1,0x40c00000);
*puVar3 = &PTR_FUN_00513344;
puVar3[6] = 0;
}
FUN_0042e580(param_1,puVar3);
if (param_1 != iVar2) {
*(int *)(iVar2 + 0x280) = *(int *)(iVar2 + 0x280) + 1;
}
*(int *)(param_1 + 0x280) = *(int *)(param_1 + 0x280) + 1;
local_10 = FUN_00429078(local_8);
iVar1 = *(int *)(param_1 + 0x1fc);
if ((*(int *)(param_1 + 600) == 0) && (local_10 != 0)) {
FUN_004c18cc(local_30,*(undefined4 *)(param_1 + 0x18c),param_2[0xb]);
(**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18))
(*(int **)(DAT_004efc94 + 0x20),local_30,5,*(undefined4 *)(local_10 + 0xc));
}
*(undefined4 *)(param_1 + 0x284) = *(undefined4 *)(iVar2 + 0x1fc);
FUN_0049fe0c(iVar1,0);
if (*(int *)(*(int *)(param_1 + 0x208) + 0x28) < 1) {
local_4c[0] = 0x1c;
local_4c[1] = 0x18;
local_4c[2] = 1;
FUN_00420ea4(local_4c + 3,(undefined4 *)&DAT_00522524);
local_38 = 0;
local_34 = 0;
piVar4 = (int *)FUN_00414b60();
local_18 = *piVar4;
iVar2 = FUN_004dcd94();
local_18 = local_18 + iVar2;
FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,iVar1,local_4c,local_18);
}
else {
piVar4 = (int *)FUN_00414b60();
local_14 = *piVar4;
iVar2 = FUN_004dcd94();
local_14 = local_14 + iVar2;
param_2[7] = *(uint *)(param_1 + 0x200);
FUN_0041acbc(*(int *)(DAT_004efc94 + 0x60),3,param_1,param_2,local_14);
}
if (*(int *)(param_1 + 0x264) != 0) {
local_1c = -*(float *)(*(int *)(param_1 + 0x208) + 0x20);
local_6c = 0x20;
local_68 = 0x16;
local_64 = 1;
FUN_00420ea4(local_60,(undefined4 *)&DAT_00522524);
local_58 = 0;
local_54 = 0;
local_50 = local_1c;
FUN_0042da20(param_1,(int)&local_6c);
}
}
}
else {
FUN_0042db80(param_1,param_2);
}
}
return;
}
/* @004c083c file=? name=FUN_004c083c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004c083c(int *param_1)
{
undefined4 local_28;
undefined4 local_24;
undefined4 local_20;
undefined4 local_1c [2];
undefined4 local_14;
undefined4 local_10;
int local_c;
int local_8;
FUN_0042e168((int)param_1);
if (((_DAT_004c08fc <= (float)(param_1[4] - param_1[0xa3]) / DAT_0052140c) ||
(*(int *)(DAT_004efc94 + 0x88) == 6)) &&
(param_1[0xa3] = param_1[4], (float)param_1[0x9e] != _DAT_004c0900)) {
local_8 = param_1[0x9e];
local_28 = 0x20;
local_24 = 0x1a;
local_20 = 1;
FUN_00420ea4(local_1c,(undefined4 *)&DAT_00522524);
local_14 = 0;
local_10 = 0;
local_c = local_8;
(**(code **)(*param_1 + 0xc))(param_1,&local_28);
param_1[0x9e] = 0;
}
return;
}
/* @004c0904 file=? name=FUN_004c0904 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004c0904(int *param_1,float param_2)
{
char *pcVar1;
undefined4 *puVar2;
char *pcVar3;
int iVar4;
undefined4 uVar5;
int iVar6;
int *piVar7;
bool bVar8;
undefined4 local_48 [5];
undefined4 local_34 [4];
undefined4 local_24 [5];
int local_10 [3];
if (param_1[0x93] == 0) {
puVar2 = FUN_004212b0(*(int *)(DAT_004efc94 + 0x24),s_Teams_005132b6);
if (puVar2 != (undefined4 *)0x0) {
FUN_00421414(local_10,(int)(puVar2 + 4));
LAB_004c0978:
do {
iVar4 = (**(code **)(local_10[0] + 0x28))(local_10);
if (iVar4 == 0) goto LAB_004c0989;
pcVar3 = (char *)(iVar4 + 0x1c4);
piVar7 = param_1 + 0x83;
do {
if (*pcVar3 != (char)*piVar7) goto LAB_004c0978;
bVar8 = true;
if (*pcVar3 == '\0') break;
pcVar1 = pcVar3 + 1;
if (*pcVar1 != *(char *)((int)piVar7 + 1)) goto LAB_004c0978;
pcVar3 = pcVar3 + 2;
piVar7 = (int *)((int)piVar7 + 2);
bVar8 = *pcVar1 == '\0';
} while (!bVar8);
} while (!bVar8);
param_1[0x93] = iVar4;
LAB_004c0989:
FUN_00421452(local_10,2);
}
}
if ((param_1[0x94] == 0) && (param_1[0x93] == 0)) {
FUN_004dbb24(&DAT_00524e20,s_Team_____005132bc,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,(char *)(param_1 + 0x83),(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___does_not_exist__005132c5,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
FUN_004dee24(0xffffffff);
}
FUN_004c083c(param_1);
FUN_0042e100(param_1,param_2);
if (((param_1[0x10] == 4) && ((float)param_1[0x7d] <= _DAT_004c0bbc)) && (param_1[0x95] == 0)) {
iVar4 = FUN_00429078(*(int *)(DAT_004efc94 + 0x2c));
FUN_004dbb24(&DAT_00524e20,s_Sending_EndMission____005132d7,(char *)0x0);
if (iVar4 != 0) {
if (*(int *)(DAT_004efc94 + 0x88) == 6) {
uVar5 = FUN_004dcd94();
FUN_0042998c(local_24,param_1[99],uVar5);
(**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18))
(*(int **)(DAT_004efc94 + 0x20),local_24,5,*(undefined4 *)(iVar4 + 0xc));
}
else {
FUN_004299b4(local_34,param_1[99]);
(**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18))
(*(int **)(DAT_004efc94 + 0x20),local_34,5,*(undefined4 *)(iVar4 + 0xc));
}
}
param_1[0x95] = 1;
}
if ((*(int *)(DAT_004efc94 + 0x88) == 5) || (*(int *)(DAT_004efc94 + 0x88) == 6)) {
if (_DAT_004c0bc0 <= (float)(param_1[4] - param_1[0xa2]) / DAT_0052140c) {
param_1[0xa2] = param_1[4];
iVar4 = FUN_00429078(*(int *)(DAT_004efc94 + 0x2c));
if (iVar4 != 0) {
iVar6 = FUN_004078fc((float)param_1[0x72]);
FUN_004c18f4(local_48,param_1[99],iVar6);
(**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18))
(*(int **)(DAT_004efc94 + 0x20),local_48,5,*(undefined4 *)(iVar4 + 0xc));
}
}
if (_DAT_004c0bc4 <= (float)(param_1[4] - param_1[5]) / DAT_0052140c) {
*(ushort *)(param_1 + 6) = *(ushort *)(param_1 + 6) | 1;
}
}
return;
}
/* @004c0bc8 file=? name=FUN_004c0bc8 */
undefined4 * __cdecl FUN_004c0bc8(undefined4 *param_1,int param_2,undefined4 param_3)
{
char *pcVar1;
char cVar2;
undefined4 *puVar3;
char *pcVar4;
int iVar5;
uint *puVar6;
undefined4 uVar7;
uint uVar8;
uint uVar9;
char *pcVar10;
bool bVar11;
int local_2c [5];
int local_18 [3];
uint *local_c;
char *local_8;
FUN_0042e328(param_1,param_2,param_3);
*param_1 = &PTR_FUN_00513300;
param_1[0x95] = 0;
param_1[0x96] = 0;
param_1[0x9e] = 0;
param_1[0xa4] = 0;
uVar8 = 0xffffffff;
pcVar4 = (char *)(param_2 + 0x50);
do {
pcVar10 = pcVar4;
if (uVar8 == 0) break;
uVar8 = uVar8 - 1;
pcVar10 = pcVar4 + 1;
cVar2 = *pcVar4;
pcVar4 = pcVar10;
} while (cVar2 != '\0');
uVar8 = ~uVar8;
pcVar4 = pcVar10 + -uVar8;
pcVar10 = (char *)(param_1 + 0x83);
for (uVar9 = uVar8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {
*(undefined4 *)pcVar10 = *(undefined4 *)pcVar4;
pcVar4 = pcVar4 + 4;
pcVar10 = pcVar10 + 4;
}
for (uVar8 = uVar8 & 3; uVar8 != 0; uVar8 = uVar8 - 1) {
*pcVar10 = *pcVar4;
pcVar4 = pcVar4 + 1;
pcVar10 = pcVar10 + 1;
}
puVar3 = FUN_004212b0(*(int *)(DAT_004efc94 + 0x24),s_Teams_005132ee);
if (puVar3 != (undefined4 *)0x0) {
FUN_00421414(local_18,(int)(puVar3 + 4));
LAB_004c0c95:
do {
iVar5 = (**(code **)(local_18[0] + 0x28))(local_18);
if (iVar5 == 0) goto LAB_004c0ca6;
pcVar4 = (char *)(iVar5 + 0x1c4);
pcVar10 = (char *)(param_1 + 0x83);
do {
if (*pcVar4 != *pcVar10) goto LAB_004c0c95;
bVar11 = true;
if (*pcVar4 == '\0') break;
pcVar1 = pcVar4 + 1;
if (*pcVar1 != pcVar10[1]) goto LAB_004c0c95;
pcVar4 = pcVar4 + 2;
pcVar10 = pcVar10 + 2;
bVar11 = *pcVar1 == '\0';
} while (!bVar11);
} while (!bVar11);
param_1[0x93] = iVar5;
LAB_004c0ca6:
FUN_00421452(local_18,2);
}
iVar5 = FUN_004d4b58(*(char **)(*(int *)(DAT_004efc94 + 200) + 0x38),s_freeforall_005132f4);
if (iVar5 == 0) {
param_1[0x94] = 1;
}
else {
param_1[0x94] = 1;
}
if (((param_1[10] & 0xc) == 4) && (param_1[0x7e] == 0)) {
param_1[0x7e] = *(undefined4 *)(DAT_004efc94 + 200);
}
local_8 = (char *)(param_2 + 0x90);
puVar6 = (uint *)FUN_00402298(0x10);
if (puVar6 == (uint *)0x0) {
local_c = (uint *)0x0;
}
else {
local_c = FUN_00402460(puVar6,local_8);
}
local_c[3] = local_c[3] + 1;
FUN_004323c7(local_2c,param_1[0x7e] + 0x50);
uVar7 = (**(code **)(local_2c[0] + 0x54))(local_2c,&local_c);
FUN_00432405(local_2c,2);
param_1[0x82] = uVar7;
puVar6 = local_c + 3;
*puVar6 = *puVar6 - 1;
if (*puVar6 == 0) {
FUN_004024d8((int *)local_c,3);
}
if ((param_1[10] & 0xc) == 4) {
param_1[7] = PTR_FUN_00513070;
param_1[8] = DAT_00513074;
param_1[9] = DAT_00513078;
}
else {
iVar5 = *(int *)(param_1[0x7e] + 0xe4);
param_1[0x9d] = iVar5;
if (iVar5 == 0) {
param_1[0x98] = 0;
param_1[0x97] = 0;
param_1[0x9c] = 0;
param_1[0x9b] = 0;
}
else if (iVar5 == 1) {
param_1[0x98] = 0;
param_1[0x97] = 1;
param_1[0x9c] = 1;
param_1[0x9b] = 1;
}
else if (iVar5 == 2) {
param_1[0x98] = 1;
param_1[0x97] = 1;
param_1[0x9c] = 1;
param_1[0x9b] = 1;
}
else if (iVar5 == 3) {
param_1[0x98] = 1;
param_1[0x97] = 1;
param_1[0x9c] = 1;
param_1[0x9b] = 0;
}
uVar7 = *(undefined4 *)(param_1[0x7e] + 0xf0);
param_1[0x99] = uVar7;
param_1[0x9a] = uVar7;
}
param_1[0x9f] = 0;
param_1[0xa0] = 0;
param_1[0xa1] = 0;
param_1[0xa2] = param_1[4];
param_1[0xa3] = param_1[4];
return param_1;
}
/* @004c0ecc file=? name=FUN_004c0ecc */
undefined4 * __cdecl FUN_004c0ecc(int param_1)
{
undefined4 *puVar1;
puVar1 = (undefined4 *)FUN_00402298(0x294);
if (puVar1 == (undefined4 *)0x0) {
puVar1 = (undefined4 *)0x0;
}
else {
puVar1 = FUN_004c0bc8(puVar1,param_1,&DAT_00512fc4);
}
return puVar1;
}
/* @004c0efc file=? name=FUN_004c0efc */
void __cdecl FUN_004c0efc(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_00513300;
FUN_0042e524(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004c0f28 file=? name=FUN_004c0f28 */
void __cdecl FUN_004c0f28(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x512f94);
return;
}
/* @004c1011 file=? name=FUN_004c1011 */
void __cdecl FUN_004c1011(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
FUN_0041790c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_00402f98(0x512f6c,param_1);
}
}
return;
}
/* @004c1044 file=? name=FUN_004c1044 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004c1044(int param_1)
{
int iVar1;
undefined4 uVar2;
undefined4 local_18 [5];
if (_DAT_004c10d8 <= (float)(*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0x208)) / DAT_0052140c)
{
*(int *)(param_1 + 0x208) = *(int *)(param_1 + 0x10);
iVar1 = FUN_00429078(*(int *)(DAT_004efc94 + 0x2c));
if (iVar1 != 0) {
uVar2 = FUN_004dcd94();
FUN_004c191c(local_18,*(undefined4 *)(param_1 + 0x18c),uVar2);
(**(code **)(**(int **)(DAT_004efc94 + 0x20) + 0x18))
(*(int **)(DAT_004efc94 + 0x20),local_18,5,*(undefined4 *)(iVar1 + 0xc));
}
}
return;
}
/* @004c10dc file=? name=FUN_004c10dc */
undefined4 * __cdecl FUN_004c10dc(undefined4 *param_1,int param_2,undefined4 param_3)
{
FUN_00429ea4(param_1,param_2,param_3);
*param_1 = &PTR_FUN_005133dc;
param_1[0x82] = param_1[4];
return param_1;
}
/* @004c110c file=? name=FUN_004c110c */
void __cdecl FUN_004c110c(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_005133dc;
FUN_00429f30(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004c1138 file=? name=FUN_004c1138 */
undefined4 * __cdecl FUN_004c1138(int param_1)
{
undefined4 *puVar1;
puVar1 = (undefined4 *)FUN_00402298(0x20c);
if (puVar1 == (undefined4 *)0x0) {
puVar1 = (undefined4 *)0x0;
}
else {
puVar1 = FUN_004c10dc(puVar1,param_1,&DAT_00513380);
}
return puVar1;
}
/* @004c1168 file=? name=FUN_004c1168 */
undefined4 __cdecl FUN_004c1168(undefined4 *param_1)
{
int iVar1;
iVar1 = FUN_00429f8c(param_1);
if (iVar1 == 0) {
return 0;
}
param_1[7] = 0xbd9;
return 1;
}
/* @004c1198 file=? name=FUN_004c1198 */
void __cdecl FUN_004c1198(int param_1)
{
FUN_0041a1a4(**(int **)(param_1 + 0xc),0x513350);
return;
}
/* @004c1230 file=? name=FUN_004c1230 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004c1230(int *param_1,float param_2)
{
int *piVar1;
int iVar2;
int iVar3;
int unaff_EDI;
undefined4 local_40;
undefined4 local_3c;
undefined4 local_38;
undefined4 local_34 [2];
undefined4 local_2c;
undefined4 local_28;
undefined4 local_24 [2];
undefined4 local_1c;
undefined4 local_18;
undefined4 local_14;
undefined4 local_10;
int local_c;
int local_8;
FUN_0042e100(param_1,param_2);
FUN_0042eb38((int)param_1,param_2);
local_8 = 0;
if (((float)param_1[0x86] <= _DAT_004c13d0) || (*(int *)(DAT_004efc94 + 0x88) != 5)) {
if (*(int *)(DAT_004efc94 + 0x88) == 6) {
local_8 = 1;
}
}
else {
unaff_EDI = FUN_00417ab4((int)(param_1 + 0x83));
iVar2 = FUN_0049fb54(unaff_EDI);
if (iVar2 == 0) {
param_1[0x86] = (int)((float)param_1[0x86] - param_2);
return;
}
}
local_c = 0;
do {
iVar2 = FUN_0042efe4(local_c);
if (((iVar2 != 0) && (unaff_EDI = *(int *)(iVar2 + 0x1fc), unaff_EDI != 0)) &&
(iVar3 = FUN_0049fb54(unaff_EDI), iVar3 == 0)) break;
local_c = local_c + 1;
} while (local_c < 4);
if ((iVar2 != 0) && (unaff_EDI != 0)) {
piVar1 = param_1 + 0x83;
iVar2 = FUN_00417ab4((int)piVar1);
if ((unaff_EDI != iVar2) || (local_8 != 0)) {
FUN_00417a5c((int)piVar1);
(**(code **)(param_1[0x83] + 4))(piVar1,unaff_EDI);
param_1[0x86] = 0x41f00000;
iVar2 = FUN_00417ab4((int)piVar1);
local_40 = 0x34;
local_3c = 0x15;
local_38 = 1;
FUN_00420ea4(local_34,(undefined4 *)&DAT_00522524);
local_2c = 0;
local_28 = 0;
FUN_00420ea4(local_24,(undefined4 *)(iVar2 + 0x184));
local_1c = 0x40a00000;
local_18 = 0;
local_14 = 0x40a00000;
local_10 = 0;
(**(code **)(*(int *)param_1[0x87] + 0xc))((int *)param_1[0x87],&local_40);
}
}
return;
}
/* @004c13d4 file=? name=FUN_004c13d4 */
void __cdecl FUN_004c13d4(int *param_1)
{
FUN_0042ed68(param_1);
param_1[7] = (int)PTR_FUN_00513458;
param_1[8] = DAT_0051345c;
param_1[9] = DAT_00513460;
return;
}
/* @004c1408 file=? name=FUN_004c1408 */
undefined4 * __cdecl FUN_004c1408(undefined4 *param_1,int param_2,undefined4 param_3)
{
FUN_0042eec8(param_1,param_2,param_3);
*param_1 = &PTR_FUN_005134c4;
if ((param_1[10] & 0xc) != 4) {
param_1[7] = PTR_FUN_00513464;
param_1[8] = DAT_00513468;
param_1[9] = DAT_0051346c;
}
return param_1;
}
/* @004c1454 file=? name=FUN_004c1454 */
undefined4 * __cdecl FUN_004c1454(int param_1)
{
undefined4 *puVar1;
puVar1 = (undefined4 *)FUN_00402298(0x238);
if (puVar1 == (undefined4 *)0x0) {
puVar1 = (undefined4 *)0x0;
}
else {
puVar1 = FUN_004c1408(puVar1,param_1,&DAT_00513444);
}
return puVar1;
}
/* @004c1484 file=? name=FUN_004c1484 */
void __cdecl FUN_004c1484(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_005134c4;
FUN_0042efa4(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}