// Recovered decompilation of functions attributed to bt_l4/btl4rdr.cpp // (from BTL4OPT.EXE via embedded assert paths). Pseudocode — reconstruct against the header. /* ---- @ 004c2178 ---- */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void __cdecl FUN_004c2178(int param_1) { float fVar1; float fVar2; int iVar3; if (*(float *)(param_1 + 0x2d4) <= _DAT_004c2284) { FUN_0040385c(s_MapDisplay__CalculateBounds_dete_00514038, s_d__tesla_bt_bt_l4_BTL4RDR_CPP_00514071,0x224); *(undefined4 *)(param_1 + 0x2d4) = 0x3f800000; } *(float *)(param_1 + 0x2e8) = (float)(*(int *)(param_1 + 0x364) * 2) / *(float *)(param_1 + 0x2d4) ; *(float *)(param_1 + 0x2ec) = _DAT_004c2288 / *(float *)(param_1 + 0x2e8); *(undefined4 *)(param_1 + 0x2e4) = *(undefined4 *)(param_1 + 0x2ec); fVar1 = (float)*(int *)(param_1 + 0x364) / *(float *)(param_1 + 0x2e8); fVar2 = (float)*(int *)(param_1 + 0x368) / *(float *)(param_1 + 0x2e8); iVar3 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); FUN_00408440((undefined4 *)(param_1 + 0x310),(undefined4 *)(iVar3 + 0x100)); *(float *)(param_1 + 0x2f8) = *(float *)(param_1 + 0x310) - fVar1; *(float *)(param_1 + 0x304) = *(float *)(param_1 + 0x310) + fVar1; *(undefined4 *)(param_1 + 0x2fc) = 0xc7000000; *(undefined4 *)(param_1 + 0x308) = 0x47000000; *(float *)(param_1 + 0x300) = *(float *)(param_1 + 0x318) - fVar2; *(float *)(param_1 + 0x30c) = *(float *)(param_1 + 0x318) + fVar2; return; } /* ---- @ 004c28c4 ---- */ void __cdecl FUN_004c28c4(int param_1,float *param_2) { int iVar1; float *pfVar2; int iVar3; undefined4 uVar4; int local_1c [3]; int local_10; int local_c; int local_8; local_8 = FUN_00417ab4(*(int *)(param_1 + 0x1c) + 0x40); local_c = 0; if (local_8 != 0) { local_c = *(int *)(*(int *)(local_8 + 400) + 0x284); } FUN_0042ac1c(local_1c,param_1 + 0x3a0); local_10 = (**(code **)(local_1c[0] + 0x14))(local_1c); if (local_10 < 1) { FUN_0042ac79(local_1c,2); } else { if (0x10 < local_10) { local_10 = 0x10; } iVar3 = 0; pfVar2 = (float *)(param_1 + 0x90); if (0 < local_10) { do { iVar1 = (**(code **)(local_1c[0] + 0x28))(local_1c); if (iVar1 == 0) { FUN_0040385c(s_MapDisplay__DrawNames___GetSize__0051408f, s_d__tesla_bt_bt_l4_BTL4RDR_CPP_005140b7,0x408); } FUN_004c19fc(pfVar2,iVar1,param_2,local_8,local_c); iVar3 = iVar3 + 1; pfVar2 = pfVar2 + 9; } while (iVar3 < local_10); } if (*(int *)(param_1 + 0x374) == 0) { uVar4 = 0; } else { uVar4 = *(undefined4 *)(param_1 + 0x360); } iVar1 = 0; iVar3 = param_1 + 0x90; if (0 < local_10) { do { FUN_004c1ab0(iVar3,(int *)(param_1 + 0x48),uVar4); iVar1 = iVar1 + 1; iVar3 = iVar3 + 0x24; } while (iVar1 < local_10); } FUN_0042ac79(local_1c,2); } return; }