/* @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(¶m_2,¶m_2,param_5); FUN_004085ec((float *)(param_1 + 0x230),¶m_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(¶m_2,¶m_2,param_5); FUN_004085ec((float *)(param_1 + 0x308),¶m_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(¶m_2,¶m_2,param_5); FUN_004085ec((float *)(param_1 + 0x308),¶m_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; }