// Recovered decompilation of functions attributed to bt_l4/btl4app.cpp // (from BTL4OPT.EXE via embedded assert paths). Pseudocode — reconstruct against the header. /* ---- @ 004d36f4 ---- */ int * __cdecl FUN_004d36f4(int param_1,int param_2) { int iVar1; uint *puVar2; undefined4 *puVar3; int iVar4; int *piVar5; char *pcVar6; char *pcVar7; undefined4 uVar8; undefined *puVar9; char local_60 [2]; char acStack_5e [30]; undefined4 local_40; undefined4 local_3c; int *local_30; uint *local_2c; undefined4 *local_28; uint *local_24; undefined4 *local_20; int *local_1c; undefined4 *local_18; undefined4 *local_14; undefined4 *local_10; int *local_c; char *local_8; piVar5 = (int *)0x0; iVar1 = *(int *)(param_1 + 0x3c); local_8 = (char *)0x0; if (*(int *)(param_2 + 0x1c) == 0x45) { piVar5 = FUN_0042d16c(param_2); pcVar6 = s_ControlsMapper_0051ec39; pcVar7 = local_60; local_c = piVar5; for (iVar4 = 3; iVar4 != 0; iVar4 = iVar4 + -1) { *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; pcVar6 = pcVar6 + 4; pcVar7 = pcVar7 + 4; } *(undefined2 *)pcVar7 = *(undefined2 *)pcVar6; pcVar7[2] = pcVar6[2]; local_40 = 0xf; local_3c = 0x30; if (*(int *)(iVar1 + 0xc98) == 2) { local_10 = (undefined4 *)FUN_00402298(0x110); if (local_10 == (undefined4 *)0x0) { puVar3 = (undefined4 *)0x0; } else { puVar3 = FUN_0047ac5c(local_10,local_c,0,local_60,&DAT_004fd318); } local_8 = s_Thrustmaster_0051ec48; } else if (*(int *)(iVar1 + 0xc98) == 4) { local_14 = (undefined4 *)FUN_00402298(0x108); if (local_14 == (undefined4 *)0x0) { puVar3 = (undefined4 *)0x0; } else { puVar3 = FUN_0047ad3c(local_14,local_c,0,local_60,&DAT_004fd364); } local_8 = &DAT_0051ec55; } else { local_18 = (undefined4 *)FUN_00402298(0x108); if (local_18 == (undefined4 *)0x0) { puVar3 = (undefined4 *)0x0; } else { puVar3 = FUN_0047aa78(local_18,local_c,0,local_60,&DAT_004fd2b0); } } FUN_0042c630((int)local_c,puVar3); } else if (*(int *)(param_2 + 0x1c) == 0xbb9) { piVar5 = FUN_004a2d48(param_2); local_1c = piVar5; FUN_00476eac(iVar1,0.05); FUN_00476eec(iVar1,0.05); FUN_00476f10(iVar1,0.05); if (*(int *)(iVar1 + 0xc98) == 2) { local_20 = (undefined4 *)FUN_00402298(0x1bc); if (local_20 == (undefined4 *)0x0) { puVar3 = (undefined4 *)0x0; } else { puVar9 = &DAT_0051dc68; uVar8 = 0x7dc; local_24 = (uint *)FUN_00402298(0x10); if (local_24 == (uint *)0x0) { puVar2 = (uint *)0x0; } else { puVar2 = FUN_00402460(local_24,s_ControlsMapper_0051ec58); } puVar2[3] = puVar2[3] + 1; puVar3 = FUN_004d21d0(local_20,local_1c,0,(int *)puVar2,uVar8,puVar9); } local_8 = s_Thrustmaster_0051ec67; } else if (*(int *)(iVar1 + 0xc98) == 4) { local_28 = (undefined4 *)FUN_00402298(0x1bc); if (local_28 == (undefined4 *)0x0) { puVar3 = (undefined4 *)0x0; } else { puVar9 = &DAT_0051dcf0; uVar8 = 0x7dc; local_2c = (uint *)FUN_00402298(0x10); if (local_2c == (uint *)0x0) { puVar2 = (uint *)0x0; } else { puVar2 = FUN_00402460(local_2c,s_ControlsMapper_0051ec74); } puVar2[3] = puVar2[3] + 1; puVar3 = FUN_004d266c(local_28,local_1c,0,(int *)puVar2,uVar8,puVar9); } local_8 = &DAT_0051ec83; } else { FUN_004dbb24(&DAT_00524e20,s______Mech_has_no_controls_mappin_0051ec86,(char *)0x0); FUN_0040385c(s_BTL4Application__MakeViewpointEn_0051ecae, s_d__tesla_bt_bt_l4_BTL4APP_CPP_0051ecd3,400); puVar3 = (undefined4 *)0x0; } FUN_0049fe40((int)local_1c,puVar3); (**(code **)(*local_1c + 0x38))(local_1c); } if (((local_8 != (char *)0x0) && (local_30 = (int *)FUN_00407064(*(int *)(DAT_004efc94 + 0x68),piVar5[0x6f],6), local_30 != (int *)0x0)) && (local_30 = (int *)FUN_004070dc(*(int *)(param_1 + 0x68),*local_30,local_8), local_30 != (int *)0x0)) { iVar4 = local_30[1]; local_30[1] = local_30[1] + 1; if (iVar4 == 0) { FUN_00406cd0((int)local_30); } FUN_0047703c(iVar1,(int)piVar5,(int *)local_30[0xf]); local_30[1] = local_30[1] + -1; } if (*(int **)(param_1 + 0x4c) != (int *)0x0) { FUN_0046ff64(*(int **)(param_1 + 0x4c),&DAT_0051ecf1,piVar5); } return piVar5; }