mirror of
https://github.com/jessicanataliagta/PSPRecomp
synced 2026-10-02 02:01:55 -04:00
62f5774b9a
otimizações round 11 (corrigido slowdonws)
5167 lines
206 KiB
C++
5167 lines
206 KiB
C++
// AUTO-GENERATED by profiles/vcs/tools/build_tier2_superblocks.py.
|
|
// Tier-2 SUPERBLOCK V4 150FPS cluster: world
|
|
#include "vcs_tier2_superblocks.hpp"
|
|
#include "psprecomp/runtime.hpp"
|
|
#include "generated_units.hpp"
|
|
#include "vcs_fast_paths.hpp"
|
|
#include "vcs_tier2_direct_memory.hpp"
|
|
|
|
#include <cstdint>
|
|
|
|
namespace vcs {
|
|
using namespace psprecomp;
|
|
|
|
void tier2_superblock_world(psprecomp::Runtime &rt,
|
|
psprecomp::AllegrexContext &ctx,
|
|
psprecomp::GuestMemory::AotFastView &aot_mem,
|
|
std::uint32_t entry_pc) {
|
|
tier2_detail::SampleScope tier2_scope(Tier2ClusterId::World);
|
|
auto &tier2_stats = tier2_scope.stats();
|
|
Tier2DirectMemoryView tier2_mem(rt.memory().direct_fastmem_base_address());
|
|
constexpr std::uint32_t kTier2ReturnCapacity = 32u;
|
|
std::uint32_t tier2_pending_transfers = 0u;
|
|
std::uint32_t tier2_return_depth = 0u;
|
|
std::uint32_t tier2_return_pc[kTier2ReturnCapacity];
|
|
std::uint32_t tier2_return_unit[kTier2ReturnCapacity];
|
|
std::uint32_t tier2_return_pending_base[kTier2ReturnCapacity];
|
|
std::uint32_t tier2_resume_pc = 0u;
|
|
std::uint32_t tier2_resume_unit = 0u;
|
|
std::uint32_t jump_target = 0u;
|
|
std::uint32_t local_pc = 0u;
|
|
std::uint32_t local_transfers = 0u;
|
|
std::uint32_t entry_id = 0u;
|
|
std::uint32_t tier2_gpr_4 = ctx.gpr[4];
|
|
std::uint32_t tier2_gpr_5 = ctx.gpr[5];
|
|
std::uint32_t tier2_gpr_16 = ctx.gpr[16];
|
|
std::uint32_t tier2_gpr_29 = ctx.gpr[29];
|
|
std::uint32_t tier2_gpr_6 = ctx.gpr[6];
|
|
std::uint32_t tier2_gpr_31 = ctx.gpr[31];
|
|
bool tier2_gpr_shadow_valid = true;
|
|
#define TIER2_GPR_SYNC_OUT() do { if (tier2_gpr_shadow_valid) { ctx.gpr[4] = tier2_gpr_4; ctx.gpr[5] = tier2_gpr_5; ctx.gpr[16] = tier2_gpr_16; ctx.gpr[29] = tier2_gpr_29; ctx.gpr[6] = tier2_gpr_6; ctx.gpr[31] = tier2_gpr_31; } } while (false)
|
|
#define TIER2_GPR_SYNC_IN() do { if (tier2_gpr_shadow_valid) { tier2_gpr_4 = ctx.gpr[4]; tier2_gpr_5 = ctx.gpr[5]; tier2_gpr_16 = ctx.gpr[16]; tier2_gpr_29 = ctx.gpr[29]; tier2_gpr_6 = ctx.gpr[6]; tier2_gpr_31 = ctx.gpr[31]; } } while (false)
|
|
#define TIER2_GPR_BEFORE_COLD() do { TIER2_GPR_SYNC_OUT(); tier2_gpr_shadow_valid = false; } while (false)
|
|
|
|
auto tier2_complete_shadow = [&](std::uint32_t count) -> bool {
|
|
TIER2_GPR_SYNC_OUT();
|
|
const bool same = rt.tier2_complete_fused_transfers(ctx, count);
|
|
if (!same) tier2_gpr_shadow_valid = false;
|
|
return same;
|
|
};
|
|
|
|
#define TIER2_SB_RETURN() do { TIER2_GPR_SYNC_OUT(); tier2_scope.finish(); /* Unwind every logical invoke_chained_direct frame in true LIFO order. Tail frames created inside a fused JAL unwind before that JAL; outer JAL frames are also released after context invalidation. */ while (tier2_return_depth != 0u) { std::uint32_t tier2_base_ = tier2_return_pending_base[tier2_return_depth - 1u]; if (tier2_base_ > tier2_pending_transfers) { ++tier2_stats.fallbacks; tier2_base_ = tier2_pending_transfers; } const std::uint32_t tier2_tail_count_ = tier2_pending_transfers - tier2_base_; tier2_pending_transfers = tier2_base_; if (tier2_tail_count_ != 0u) (void)tier2_complete_shadow(tier2_tail_count_); --tier2_return_depth; (void)tier2_complete_shadow(1u); } if (tier2_pending_transfers != 0u) { (void)tier2_complete_shadow(tier2_pending_transfers); tier2_pending_transfers = 0u; } return; } while (false)
|
|
|
|
goto TIER2_ENTRY_DISPATCH;
|
|
|
|
TIER2_FUSED_RETURN_DISPATCH:
|
|
switch (tier2_resume_pc) {
|
|
case 0x08A79AB4u: goto SB_L_08A79AB4;
|
|
case 0x08A79AD4u: goto SB_L_08A79AD4;
|
|
case 0x08A79ADCu: goto SB_L_08A79ADC;
|
|
case 0x08A79AE4u: goto SB_L_08A79AE4;
|
|
case 0x08A79AF0u: goto SB_L_08A79AF0;
|
|
case 0x08A79B00u: goto SB_L_08A79B00;
|
|
case 0x08A79B08u: goto SB_L_08A79B08;
|
|
case 0x08A79B10u: goto SB_L_08A79B10;
|
|
case 0x08A79B14u: goto SB_L_08A79B14;
|
|
case 0x08A79DF8u: goto SB_L_08A79DF8;
|
|
case 0x08A79E30u: goto SB_L_08A79E30;
|
|
case 0x08A79E34u: goto SB_L_08A79E34;
|
|
case 0x08A79E50u: goto SB_L_08A79E50;
|
|
case 0x08A79E64u: goto SB_L_08A79E64;
|
|
case 0x08A79E78u: goto SB_L_08A79E78;
|
|
case 0x08A79E7Cu: goto SB_L_08A79E7C;
|
|
case 0x08A79E98u: goto SB_L_08A79E98;
|
|
case 0x08A79EACu: goto SB_L_08A79EAC;
|
|
case 0x08A79EC0u: goto SB_L_08A79EC0;
|
|
case 0x08A79EC4u: goto SB_L_08A79EC4;
|
|
case 0x08A79EE0u: goto SB_L_08A79EE0;
|
|
case 0x08A79EF4u: goto SB_L_08A79EF4;
|
|
case 0x08A79F00u: goto SB_L_08A79F00;
|
|
case 0x08A79F04u: goto SB_L_08A79F04;
|
|
case 0x08A79F1Cu: goto SB_L_08A79F1C;
|
|
case 0x08A79F28u: goto SB_L_08A79F28;
|
|
case 0x08A79F5Cu: goto SB_L_08A79F5C;
|
|
case 0x08A79F80u: goto SB_L_08A79F80;
|
|
case 0x08A79F88u: goto SB_L_08A79F88;
|
|
case 0x08A79F90u: goto SB_L_08A79F90;
|
|
case 0x08A79FB0u: goto SB_L_08A79FB0;
|
|
case 0x08A79FB4u: goto SB_L_08A79FB4;
|
|
case 0x08A79FC8u: goto SB_L_08A79FC8;
|
|
case 0x08A79FD4u: goto SB_L_08A79FD4;
|
|
case 0x08A79FF0u: goto SB_L_08A79FF0;
|
|
case 0x08A79FF8u: goto SB_L_08A79FF8;
|
|
case 0x08A7A00Cu: goto SB_L_08A7A00C;
|
|
case 0x08A7A014u: goto SB_L_08A7A014;
|
|
case 0x08A7A01Cu: goto SB_L_08A7A01C;
|
|
case 0x08A7A024u: goto SB_L_08A7A024;
|
|
case 0x08A7A038u: goto SB_L_08A7A038;
|
|
case 0x08A7A040u: goto SB_L_08A7A040;
|
|
case 0x08A7A044u: goto SB_L_08A7A044;
|
|
case 0x08A7A054u: goto SB_L_08A7A054;
|
|
case 0x08A7A060u: goto SB_L_08A7A060;
|
|
case 0x08A7A068u: goto SB_L_08A7A068;
|
|
case 0x08A7A06Cu: goto SB_L_08A7A06C;
|
|
case 0x08A7A074u: goto SB_L_08A7A074;
|
|
case 0x08A7A664u: goto SB_L_08A7A664;
|
|
case 0x08A7A690u: goto SB_L_08A7A690;
|
|
case 0x08A7A6ACu: goto SB_L_08A7A6AC;
|
|
case 0x08A7A6B8u: goto SB_L_08A7A6B8;
|
|
case 0x08A7A6C0u: goto SB_L_08A7A6C0;
|
|
case 0x08A7A6D0u: goto SB_L_08A7A6D0;
|
|
case 0x08A7A6ECu: goto SB_L_08A7A6EC;
|
|
case 0x08A7A704u: goto SB_L_08A7A704;
|
|
case 0x08A7A708u: goto SB_L_08A7A708;
|
|
case 0x08A7A70Cu: goto SB_L_08A7A70C;
|
|
case 0x08A7A714u: goto SB_L_08A7A714;
|
|
case 0x08A7A730u: goto SB_L_08A7A730;
|
|
case 0x08A7A738u: goto SB_L_08A7A738;
|
|
case 0x08A7A75Cu: goto SB_L_08A7A75C;
|
|
case 0x08A7A774u: goto SB_L_08A7A774;
|
|
case 0x08A7A778u: goto SB_L_08A7A778;
|
|
case 0x08A7A784u: goto SB_L_08A7A784;
|
|
case 0x08A7A79Cu: goto SB_L_08A7A79C;
|
|
case 0x08A7A7B8u: goto SB_L_08A7A7B8;
|
|
case 0x08A7A7C0u: goto SB_L_08A7A7C0;
|
|
case 0x08A7A7C8u: goto SB_L_08A7A7C8;
|
|
case 0x08A7A7E0u: goto SB_L_08A7A7E0;
|
|
case 0x08A7A7F0u: goto SB_L_08A7A7F0;
|
|
case 0x08A7A7F8u: goto SB_L_08A7A7F8;
|
|
case 0x08A7A800u: goto SB_L_08A7A800;
|
|
case 0x08A7A808u: goto SB_L_08A7A808;
|
|
case 0x08A7A810u: goto SB_L_08A7A810;
|
|
case 0x08A7A818u: goto SB_L_08A7A818;
|
|
case 0x08A7A834u: goto SB_L_08A7A834;
|
|
case 0x08A7A844u: goto SB_L_08A7A844;
|
|
case 0x08A7A854u: goto SB_L_08A7A854;
|
|
case 0x08A7A86Cu: goto SB_L_08A7A86C;
|
|
case 0x08A7A880u: goto SB_L_08A7A880;
|
|
case 0x08A7A88Cu: goto SB_L_08A7A88C;
|
|
case 0x08A7A894u: goto SB_L_08A7A894;
|
|
case 0x08A7A89Cu: goto SB_L_08A7A89C;
|
|
case 0x08A7A8ACu: goto SB_L_08A7A8AC;
|
|
case 0x08A7A8B8u: goto SB_L_08A7A8B8;
|
|
case 0x08A7A8D0u: goto SB_L_08A7A8D0;
|
|
case 0x08A7A8E4u: goto SB_L_08A7A8E4;
|
|
case 0x08A7A8FCu: goto SB_L_08A7A8FC;
|
|
case 0x08A7A904u: goto SB_L_08A7A904;
|
|
case 0x08A7A90Cu: goto SB_L_08A7A90C;
|
|
case 0x08A7A928u: goto SB_L_08A7A928;
|
|
case 0x08A7A94Cu: goto SB_L_08A7A94C;
|
|
case 0x08A7AA6Cu: goto SB_L_08A7AA6C;
|
|
case 0x08A7AA74u: goto SB_L_08A7AA74;
|
|
case 0x08A7AA7Cu: goto SB_L_08A7AA7C;
|
|
case 0x08A7AA90u: goto SB_L_08A7AA90;
|
|
case 0x08A7AAB0u: goto SB_L_08A7AAB0;
|
|
case 0x08A7AAD0u: goto SB_L_08A7AAD0;
|
|
case 0x08A7AADCu: goto SB_L_08A7AADC;
|
|
case 0x08A7AAE4u: goto SB_L_08A7AAE4;
|
|
case 0x08A7AAECu: goto SB_L_08A7AAEC;
|
|
case 0x08A7AAF0u: goto SB_L_08A7AAF0;
|
|
case 0x08A7AB0Cu: goto SB_L_08A7AB0C;
|
|
case 0x08A7AB24u: goto SB_L_08A7AB24;
|
|
case 0x08A7AB28u: goto SB_L_08A7AB28;
|
|
case 0x08A7AB30u: goto SB_L_08A7AB30;
|
|
case 0x08A7AB38u: goto SB_L_08A7AB38;
|
|
case 0x08A7AB54u: goto SB_L_08A7AB54;
|
|
case 0x08A7AB6Cu: goto SB_L_08A7AB6C;
|
|
case 0x08A7AB80u: goto SB_L_08A7AB80;
|
|
case 0x08A7AB9Cu: goto SB_L_08A7AB9C;
|
|
case 0x08A7ABA4u: goto SB_L_08A7ABA4;
|
|
case 0x08A7ABC0u: goto SB_L_08A7ABC0;
|
|
case 0x08A7ABD0u: goto SB_L_08A7ABD0;
|
|
case 0x08A7ABE0u: goto SB_L_08A7ABE0;
|
|
case 0x08A7ABE4u: goto SB_L_08A7ABE4;
|
|
case 0x08A7AC10u: goto SB_L_08A7AC10;
|
|
case 0x08A7AC40u: goto SB_L_08A7AC40;
|
|
case 0x08A7AC48u: goto SB_L_08A7AC48;
|
|
case 0x08A7AC50u: goto SB_L_08A7AC50;
|
|
case 0x08A7AC58u: goto SB_L_08A7AC58;
|
|
case 0x08A7AC60u: goto SB_L_08A7AC60;
|
|
case 0x08A7AC68u: goto SB_L_08A7AC68;
|
|
case 0x08A7AC74u: goto SB_L_08A7AC74;
|
|
case 0x08A7AC7Cu: goto SB_L_08A7AC7C;
|
|
case 0x08A7AC98u: goto SB_L_08A7AC98;
|
|
case 0x08A7ACACu: goto SB_L_08A7ACAC;
|
|
case 0x08A7ACB0u: goto SB_L_08A7ACB0;
|
|
case 0x08A7ACB8u: goto SB_L_08A7ACB8;
|
|
case 0x08A7ACECu: goto SB_L_08A7ACEC;
|
|
case 0x08A7ACF4u: goto SB_L_08A7ACF4;
|
|
case 0x08A7AD00u: goto SB_L_08A7AD00;
|
|
case 0x08A7AD14u: goto SB_L_08A7AD14;
|
|
case 0x08A7AD1Cu: goto SB_L_08A7AD1C;
|
|
case 0x08A7AD24u: goto SB_L_08A7AD24;
|
|
case 0x08A7AD34u: goto SB_L_08A7AD34;
|
|
case 0x08A7AD3Cu: goto SB_L_08A7AD3C;
|
|
case 0x08A7AD40u: goto SB_L_08A7AD40;
|
|
case 0x08A7AD48u: goto SB_L_08A7AD48;
|
|
case 0x08A7AD54u: goto SB_L_08A7AD54;
|
|
case 0x08A7AF74u: goto SB_L_08A7AF74;
|
|
case 0x08A7AFB8u: goto SB_L_08A7AFB8;
|
|
case 0x08A7AFC0u: goto SB_L_08A7AFC0;
|
|
case 0x08A7AFC8u: goto SB_L_08A7AFC8;
|
|
case 0x08A7AFD0u: goto SB_L_08A7AFD0;
|
|
case 0x08A7B5A0u: goto SB_L_08A7B5A0;
|
|
case 0x08A7B5A8u: goto SB_L_08A7B5A8;
|
|
case 0x08A7B5B0u: goto SB_L_08A7B5B0;
|
|
case 0x08A7B5C4u: goto SB_L_08A7B5C4;
|
|
case 0x08A7B5CCu: goto SB_L_08A7B5CC;
|
|
case 0x08A7B604u: goto SB_L_08A7B604;
|
|
case 0x08A7B610u: goto SB_L_08A7B610;
|
|
case 0x08A7B61Cu: goto SB_L_08A7B61C;
|
|
case 0x08A7B630u: goto SB_L_08A7B630;
|
|
case 0x08A7B64Cu: goto SB_L_08A7B64C;
|
|
case 0x08A7B654u: goto SB_L_08A7B654;
|
|
case 0x08A7B65Cu: goto SB_L_08A7B65C;
|
|
case 0x08A7B660u: goto SB_L_08A7B660;
|
|
case 0x08A7B910u: goto SB_L_08A7B910;
|
|
case 0x08A7CEC8u: goto SB_L_08A7CEC8;
|
|
case 0x08A7CEFCu: goto SB_L_08A7CEFC;
|
|
case 0x08A7CF0Cu: goto SB_L_08A7CF0C;
|
|
case 0x08A7CF1Cu: goto SB_L_08A7CF1C;
|
|
case 0x08A7CF28u: goto SB_L_08A7CF28;
|
|
case 0x08A7CF44u: goto SB_L_08A7CF44;
|
|
case 0x08A7CF4Cu: goto SB_L_08A7CF4C;
|
|
case 0x08A7CF54u: goto SB_L_08A7CF54;
|
|
case 0x08A7CF5Cu: goto SB_L_08A7CF5C;
|
|
case 0x08A7CF64u: goto SB_L_08A7CF64;
|
|
case 0x08A7CF74u: goto SB_L_08A7CF74;
|
|
case 0x08A7CF90u: goto SB_L_08A7CF90;
|
|
case 0x08A7CFACu: goto SB_L_08A7CFAC;
|
|
case 0x08A7CFC8u: goto SB_L_08A7CFC8;
|
|
case 0x08A7CFDCu: goto SB_L_08A7CFDC;
|
|
case 0x08A7CFF0u: goto SB_L_08A7CFF0;
|
|
case 0x08A7D000u: goto SB_L_08A7D000;
|
|
case 0x08A7D008u: goto SB_L_08A7D008;
|
|
case 0x08A7D014u: goto SB_L_08A7D014;
|
|
case 0x08A7D01Cu: goto SB_L_08A7D01C;
|
|
case 0x08A7D020u: goto SB_L_08A7D020;
|
|
case 0x08A7D02Cu: goto SB_L_08A7D02C;
|
|
case 0x08A7D038u: goto SB_L_08A7D038;
|
|
case 0x08A7D054u: goto SB_L_08A7D054;
|
|
case 0x08A7D05Cu: goto SB_L_08A7D05C;
|
|
case 0x08A7D064u: goto SB_L_08A7D064;
|
|
case 0x08A7D070u: goto SB_L_08A7D070;
|
|
case 0x08A7D078u: goto SB_L_08A7D078;
|
|
case 0x08A7D080u: goto SB_L_08A7D080;
|
|
case 0x08A7D088u: goto SB_L_08A7D088;
|
|
case 0x08A7D090u: goto SB_L_08A7D090;
|
|
case 0x08A7D094u: goto SB_L_08A7D094;
|
|
case 0x08A7D0A0u: goto SB_L_08A7D0A0;
|
|
case 0x08A7D0A8u: goto SB_L_08A7D0A8;
|
|
case 0x08A7D0B8u: goto SB_L_08A7D0B8;
|
|
case 0x08A7D0D0u: goto SB_L_08A7D0D0;
|
|
case 0x08A7D0D8u: goto SB_L_08A7D0D8;
|
|
case 0x08A7D0E4u: goto SB_L_08A7D0E4;
|
|
case 0x08A7D0F4u: goto SB_L_08A7D0F4;
|
|
case 0x08A7D104u: goto SB_L_08A7D104;
|
|
case 0x08A7D11Cu: goto SB_L_08A7D11C;
|
|
case 0x08A7D124u: goto SB_L_08A7D124;
|
|
case 0x08A7D12Cu: goto SB_L_08A7D12C;
|
|
case 0x08A7D144u: goto SB_L_08A7D144;
|
|
case 0x08A7D14Cu: goto SB_L_08A7D14C;
|
|
case 0x08A7D158u: goto SB_L_08A7D158;
|
|
case 0x08A7D168u: goto SB_L_08A7D168;
|
|
case 0x08A7D178u: goto SB_L_08A7D178;
|
|
case 0x08A7D190u: goto SB_L_08A7D190;
|
|
case 0x08A7D198u: goto SB_L_08A7D198;
|
|
case 0x08A7D1A4u: goto SB_L_08A7D1A4;
|
|
case 0x08A7D1B4u: goto SB_L_08A7D1B4;
|
|
case 0x08A7D1C4u: goto SB_L_08A7D1C4;
|
|
case 0x08A7D1D0u: goto SB_L_08A7D1D0;
|
|
case 0x08A7D1ECu: goto SB_L_08A7D1EC;
|
|
case 0x08A7D1F4u: goto SB_L_08A7D1F4;
|
|
case 0x08A7D210u: goto SB_L_08A7D210;
|
|
case 0x08A7D214u: goto SB_L_08A7D214;
|
|
case 0x08A7D228u: goto SB_L_08A7D228;
|
|
case 0x08A7D238u: goto SB_L_08A7D238;
|
|
case 0x08A7D23Cu: goto SB_L_08A7D23C;
|
|
case 0x08A7D244u: goto SB_L_08A7D244;
|
|
case 0x08A7D258u: goto SB_L_08A7D258;
|
|
case 0x08A7D270u: goto SB_L_08A7D270;
|
|
case 0x08A7D274u: goto SB_L_08A7D274;
|
|
case 0x08A7D280u: goto SB_L_08A7D280;
|
|
case 0x08A7D2BCu: goto SB_L_08A7D2BC;
|
|
case 0x08A7D2C4u: goto SB_L_08A7D2C4;
|
|
case 0x08A7D2C8u: goto SB_L_08A7D2C8;
|
|
case 0x08A7D2D0u: goto SB_L_08A7D2D0;
|
|
case 0x08A7D2DCu: goto SB_L_08A7D2DC;
|
|
case 0x08A7D314u: goto SB_L_08A7D314;
|
|
case 0x08A7D31Cu: goto SB_L_08A7D31C;
|
|
case 0x08A7D32Cu: goto SB_L_08A7D32C;
|
|
case 0x08A7D334u: goto SB_L_08A7D334;
|
|
case 0x08A7D344u: goto SB_L_08A7D344;
|
|
case 0x08A7D350u: goto SB_L_08A7D350;
|
|
case 0x08A7D360u: goto SB_L_08A7D360;
|
|
case 0x08A7D370u: goto SB_L_08A7D370;
|
|
case 0x08A7D380u: goto SB_L_08A7D380;
|
|
case 0x08A7D390u: goto SB_L_08A7D390;
|
|
case 0x08A7D398u: goto SB_L_08A7D398;
|
|
case 0x08A7D3B4u: goto SB_L_08A7D3B4;
|
|
case 0x08A7D3C4u: goto SB_L_08A7D3C4;
|
|
case 0x08A7D3CCu: goto SB_L_08A7D3CC;
|
|
case 0x08A7D3D4u: goto SB_L_08A7D3D4;
|
|
case 0x08A7D3E8u: goto SB_L_08A7D3E8;
|
|
case 0x08A7D3F0u: goto SB_L_08A7D3F0;
|
|
case 0x08A7D400u: goto SB_L_08A7D400;
|
|
case 0x08A7D410u: goto SB_L_08A7D410;
|
|
case 0x08A7D420u: goto SB_L_08A7D420;
|
|
case 0x08A7D430u: goto SB_L_08A7D430;
|
|
case 0x08A7D440u: goto SB_L_08A7D440;
|
|
case 0x08A7D45Cu: goto SB_L_08A7D45C;
|
|
case 0x08A7D464u: goto SB_L_08A7D464;
|
|
case 0x08A7D46Cu: goto SB_L_08A7D46C;
|
|
case 0x08A7D474u: goto SB_L_08A7D474;
|
|
case 0x08A7D4ACu: goto SB_L_08A7D4AC;
|
|
case 0x08A7D4DCu: goto SB_L_08A7D4DC;
|
|
case 0x08A7D4E4u: goto SB_L_08A7D4E4;
|
|
case 0x08A7D4F4u: goto SB_L_08A7D4F4;
|
|
case 0x08A7D4FCu: goto SB_L_08A7D4FC;
|
|
case 0x08A7D50Cu: goto SB_L_08A7D50C;
|
|
case 0x08A7D518u: goto SB_L_08A7D518;
|
|
case 0x08A7D528u: goto SB_L_08A7D528;
|
|
case 0x08A7D538u: goto SB_L_08A7D538;
|
|
case 0x08A7D548u: goto SB_L_08A7D548;
|
|
case 0x08A7D558u: goto SB_L_08A7D558;
|
|
case 0x08A7D560u: goto SB_L_08A7D560;
|
|
case 0x08A7D580u: goto SB_L_08A7D580;
|
|
case 0x08A7D588u: goto SB_L_08A7D588;
|
|
case 0x08A7D590u: goto SB_L_08A7D590;
|
|
case 0x08A7D5A4u: goto SB_L_08A7D5A4;
|
|
case 0x08A7D5B0u: goto SB_L_08A7D5B0;
|
|
case 0x08A7D5C0u: goto SB_L_08A7D5C0;
|
|
case 0x08A7D5D0u: goto SB_L_08A7D5D0;
|
|
case 0x08A7D5E0u: goto SB_L_08A7D5E0;
|
|
case 0x08A7D5F0u: goto SB_L_08A7D5F0;
|
|
case 0x08A7D60Cu: goto SB_L_08A7D60C;
|
|
case 0x08A7D618u: goto SB_L_08A7D618;
|
|
case 0x08A7D62Cu: goto SB_L_08A7D62C;
|
|
case 0x08A7D634u: goto SB_L_08A7D634;
|
|
case 0x08A7D63Cu: goto SB_L_08A7D63C;
|
|
case 0x08A7D644u: goto SB_L_08A7D644;
|
|
case 0x08A7D64Cu: goto SB_L_08A7D64C;
|
|
case 0x08A7D65Cu: goto SB_L_08A7D65C;
|
|
case 0x08A7D664u: goto SB_L_08A7D664;
|
|
case 0x08A7D66Cu: goto SB_L_08A7D66C;
|
|
case 0x08A7D674u: goto SB_L_08A7D674;
|
|
case 0x08A7D6ACu: goto SB_L_08A7D6AC;
|
|
case 0x08A7D6C4u: goto SB_L_08A7D6C4;
|
|
case 0x08A7D6D4u: goto SB_L_08A7D6D4;
|
|
case 0x08A7D6E0u: goto SB_L_08A7D6E0;
|
|
case 0x08A7D6F4u: goto SB_L_08A7D6F4;
|
|
case 0x08A7D6FCu: goto SB_L_08A7D6FC;
|
|
case 0x08A7D704u: goto SB_L_08A7D704;
|
|
case 0x08A7D70Cu: goto SB_L_08A7D70C;
|
|
case 0x08A7D714u: goto SB_L_08A7D714;
|
|
case 0x08A7D724u: goto SB_L_08A7D724;
|
|
case 0x08A7D72Cu: goto SB_L_08A7D72C;
|
|
case 0x08A7D734u: goto SB_L_08A7D734;
|
|
case 0x08A7D73Cu: goto SB_L_08A7D73C;
|
|
case 0x08A7D774u: goto SB_L_08A7D774;
|
|
case 0x08A7D78Cu: goto SB_L_08A7D78C;
|
|
case 0x08A7D7A4u: goto SB_L_08A7D7A4;
|
|
case 0x08A7D7D0u: goto SB_L_08A7D7D0;
|
|
case 0x08A7D7D8u: goto SB_L_08A7D7D8;
|
|
case 0x08A7D7E8u: goto SB_L_08A7D7E8;
|
|
case 0x08A7D7F0u: goto SB_L_08A7D7F0;
|
|
case 0x08A7D7F4u: goto SB_L_08A7D7F4;
|
|
case 0x08A7D810u: goto SB_L_08A7D810;
|
|
case 0x08A7D824u: goto SB_L_08A7D824;
|
|
case 0x08A7D830u: goto SB_L_08A7D830;
|
|
case 0x08A7D840u: goto SB_L_08A7D840;
|
|
case 0x08A7D84Cu: goto SB_L_08A7D84C;
|
|
case 0x08A7D858u: goto SB_L_08A7D858;
|
|
case 0x08A7D864u: goto SB_L_08A7D864;
|
|
case 0x08A7D870u: goto SB_L_08A7D870;
|
|
case 0x08A7D880u: goto SB_L_08A7D880;
|
|
case 0x08A7D88Cu: goto SB_L_08A7D88C;
|
|
case 0x08A7D898u: goto SB_L_08A7D898;
|
|
case 0x08A7D8B0u: goto SB_L_08A7D8B0;
|
|
case 0x08A7D8C4u: goto SB_L_08A7D8C4;
|
|
case 0x08A7D8D0u: goto SB_L_08A7D8D0;
|
|
case 0x08A7D8E0u: goto SB_L_08A7D8E0;
|
|
case 0x08A7D8F0u: goto SB_L_08A7D8F0;
|
|
case 0x08A7D8F4u: goto SB_L_08A7D8F4;
|
|
case 0x08A7D900u: goto SB_L_08A7D900;
|
|
case 0x08A7D914u: goto SB_L_08A7D914;
|
|
case 0x08A7D91Cu: goto SB_L_08A7D91C;
|
|
case 0x08A7D924u: goto SB_L_08A7D924;
|
|
case 0x08A7D92Cu: goto SB_L_08A7D92C;
|
|
case 0x08A7D934u: goto SB_L_08A7D934;
|
|
case 0x08A7D944u: goto SB_L_08A7D944;
|
|
case 0x08A7D954u: goto SB_L_08A7D954;
|
|
case 0x08A7D95Cu: goto SB_L_08A7D95C;
|
|
case 0x08A7D968u: goto SB_L_08A7D968;
|
|
case 0x08A7D97Cu: goto SB_L_08A7D97C;
|
|
case 0x08A7D98Cu: goto SB_L_08A7D98C;
|
|
case 0x08A7D994u: goto SB_L_08A7D994;
|
|
case 0x08A7D9A0u: goto SB_L_08A7D9A0;
|
|
case 0x08A7D9ACu: goto SB_L_08A7D9AC;
|
|
case 0x08A7D9C4u: goto SB_L_08A7D9C4;
|
|
case 0x08A7D9CCu: goto SB_L_08A7D9CC;
|
|
case 0x08A7D9DCu: goto SB_L_08A7D9DC;
|
|
case 0x08A7D9E8u: goto SB_L_08A7D9E8;
|
|
case 0x08A7D9F8u: goto SB_L_08A7D9F8;
|
|
case 0x08A7DA04u: goto SB_L_08A7DA04;
|
|
case 0x08A7DA0Cu: goto SB_L_08A7DA0C;
|
|
case 0x08A7DA28u: goto SB_L_08A7DA28;
|
|
case 0x08A7DA30u: goto SB_L_08A7DA30;
|
|
case 0x08A7DA38u: goto SB_L_08A7DA38;
|
|
case 0x08A7DA4Cu: goto SB_L_08A7DA4C;
|
|
case 0x08A7DA58u: goto SB_L_08A7DA58;
|
|
case 0x08A7DA68u: goto SB_L_08A7DA68;
|
|
case 0x08A7DA78u: goto SB_L_08A7DA78;
|
|
case 0x08A7DA80u: goto SB_L_08A7DA80;
|
|
case 0x08A7DA8Cu: goto SB_L_08A7DA8C;
|
|
case 0x08A7DAA4u: goto SB_L_08A7DAA4;
|
|
case 0x08A7DAB8u: goto SB_L_08A7DAB8;
|
|
case 0x08A7DAC4u: goto SB_L_08A7DAC4;
|
|
case 0x08A7DAD4u: goto SB_L_08A7DAD4;
|
|
case 0x08A7DAE4u: goto SB_L_08A7DAE4;
|
|
case 0x08A7DAE8u: goto SB_L_08A7DAE8;
|
|
case 0x08A7DAF4u: goto SB_L_08A7DAF4;
|
|
case 0x08A7DB08u: goto SB_L_08A7DB08;
|
|
case 0x08A7DB10u: goto SB_L_08A7DB10;
|
|
case 0x08A7DB18u: goto SB_L_08A7DB18;
|
|
case 0x08A7DB20u: goto SB_L_08A7DB20;
|
|
case 0x08A7DB28u: goto SB_L_08A7DB28;
|
|
case 0x08A7DB30u: goto SB_L_08A7DB30;
|
|
case 0x08A7DB38u: goto SB_L_08A7DB38;
|
|
case 0x08A7DB44u: goto SB_L_08A7DB44;
|
|
case 0x08A7DB54u: goto SB_L_08A7DB54;
|
|
case 0x08A7DB5Cu: goto SB_L_08A7DB5C;
|
|
case 0x08A7DB64u: goto SB_L_08A7DB64;
|
|
case 0x08A7DB6Cu: goto SB_L_08A7DB6C;
|
|
case 0x08A7DB88u: goto SB_L_08A7DB88;
|
|
case 0x08A7DB90u: goto SB_L_08A7DB90;
|
|
case 0x08A7DB98u: goto SB_L_08A7DB98;
|
|
case 0x08A7DB9Cu: goto SB_L_08A7DB9C;
|
|
case 0x08A7EC68u: goto SB_L_08A7EC68;
|
|
case 0x08A7ECB4u: goto SB_L_08A7ECB4;
|
|
case 0x08A7ECBCu: goto SB_L_08A7ECBC;
|
|
case 0x08A7ECD0u: goto SB_L_08A7ECD0;
|
|
case 0x08A7ED14u: goto SB_L_08A7ED14;
|
|
case 0x08A7ED28u: goto SB_L_08A7ED28;
|
|
case 0x08A7ED3Cu: goto SB_L_08A7ED3C;
|
|
case 0x08A7F028u: goto SB_L_08A7F028;
|
|
case 0x08A7F030u: goto SB_L_08A7F030;
|
|
case 0x08A7F048u: goto SB_L_08A7F048;
|
|
case 0x08A7F080u: goto SB_L_08A7F080;
|
|
case 0x08A7F0CCu: goto SB_L_08A7F0CC;
|
|
case 0x08A7F0D4u: goto SB_L_08A7F0D4;
|
|
case 0x08A7F0E8u: goto SB_L_08A7F0E8;
|
|
case 0x08A7F12Cu: goto SB_L_08A7F12C;
|
|
case 0x08A7F140u: goto SB_L_08A7F140;
|
|
case 0x08A7F154u: goto SB_L_08A7F154;
|
|
case 0x08A7F480u: goto SB_L_08A7F480;
|
|
case 0x08A7F488u: goto SB_L_08A7F488;
|
|
case 0x08A7F4A0u: goto SB_L_08A7F4A0;
|
|
case 0x08A7FAA4u: goto SB_L_08A7FAA4;
|
|
default: break;
|
|
}
|
|
switch (tier2_resume_unit) {
|
|
|
|
default: break;
|
|
}
|
|
ctx.pc = tier2_resume_pc;
|
|
TIER2_SB_RETURN();
|
|
|
|
TIER2_LOCAL_DISPATCH_U0157:
|
|
if (tier2_return_depth != 0u && local_pc == tier2_return_pc[tier2_return_depth - 1u]) {
|
|
tier2_resume_pc = local_pc;
|
|
tier2_resume_unit = tier2_return_unit[tier2_return_depth - 1u];
|
|
// Match invoke_chained_direct(): when the callee has returned, ctx.pc
|
|
// already contains the caller continuation before any starvation
|
|
// boundary/accounting can run. A scheduler switch here must never see
|
|
// the stale callee PC.
|
|
ctx.pc = local_pc;
|
|
const std::uint32_t tier2_pending_base =
|
|
tier2_return_pending_base[tier2_return_depth - 1u];
|
|
bool tier2_same_context = true;
|
|
if (tier2_pending_transfers < tier2_pending_base) {
|
|
++tier2_stats.fallbacks;
|
|
ctx.pc = local_pc;
|
|
TIER2_SB_RETURN();
|
|
}
|
|
const std::uint32_t tier2_nested_tail =
|
|
tier2_pending_transfers - tier2_pending_base;
|
|
if (tier2_nested_tail != 0u) {
|
|
tier2_pending_transfers = tier2_pending_base;
|
|
if (!tier2_complete_shadow(tier2_nested_tail))
|
|
tier2_same_context = false;
|
|
}
|
|
--tier2_return_depth;
|
|
if (!tier2_complete_shadow(1u))
|
|
tier2_same_context = false;
|
|
if (!tier2_same_context) TIER2_SB_RETURN();
|
|
goto TIER2_FUSED_RETURN_DISPATCH;
|
|
}
|
|
switch (local_pc) {
|
|
case 0x08A79AB4u: goto SB_L_08A79AB4;
|
|
case 0x08A79AD4u: goto SB_L_08A79AD4;
|
|
case 0x08A79ADCu: goto SB_L_08A79ADC;
|
|
case 0x08A79AE4u: goto SB_L_08A79AE4;
|
|
case 0x08A79AF0u: goto SB_L_08A79AF0;
|
|
case 0x08A79B00u: goto SB_L_08A79B00;
|
|
case 0x08A79B08u: goto SB_L_08A79B08;
|
|
case 0x08A79B10u: goto SB_L_08A79B10;
|
|
case 0x08A79B14u: goto SB_L_08A79B14;
|
|
case 0x08A79DF8u: goto SB_L_08A79DF8;
|
|
case 0x08A79E30u: goto SB_L_08A79E30;
|
|
case 0x08A79E34u: goto SB_L_08A79E34;
|
|
case 0x08A79E50u: goto SB_L_08A79E50;
|
|
case 0x08A79E64u: goto SB_L_08A79E64;
|
|
case 0x08A79E78u: goto SB_L_08A79E78;
|
|
case 0x08A79E7Cu: goto SB_L_08A79E7C;
|
|
case 0x08A79E98u: goto SB_L_08A79E98;
|
|
case 0x08A79EACu: goto SB_L_08A79EAC;
|
|
case 0x08A79EC0u: goto SB_L_08A79EC0;
|
|
case 0x08A79EC4u: goto SB_L_08A79EC4;
|
|
case 0x08A79EE0u: goto SB_L_08A79EE0;
|
|
case 0x08A79EF4u: goto SB_L_08A79EF4;
|
|
case 0x08A79F00u: goto SB_L_08A79F00;
|
|
case 0x08A79F04u: goto SB_L_08A79F04;
|
|
case 0x08A79F1Cu: goto SB_L_08A79F1C;
|
|
case 0x08A79F28u: goto SB_L_08A79F28;
|
|
case 0x08A79F5Cu: goto SB_L_08A79F5C;
|
|
case 0x08A79F80u: goto SB_L_08A79F80;
|
|
case 0x08A79F88u: goto SB_L_08A79F88;
|
|
case 0x08A79F90u: goto SB_L_08A79F90;
|
|
case 0x08A79FB0u: goto SB_L_08A79FB0;
|
|
case 0x08A79FB4u: goto SB_L_08A79FB4;
|
|
case 0x08A79FC8u: goto SB_L_08A79FC8;
|
|
case 0x08A79FD4u: goto SB_L_08A79FD4;
|
|
case 0x08A79FF0u: goto SB_L_08A79FF0;
|
|
case 0x08A79FF8u: goto SB_L_08A79FF8;
|
|
case 0x08A7A00Cu: goto SB_L_08A7A00C;
|
|
case 0x08A7A014u: goto SB_L_08A7A014;
|
|
case 0x08A7A01Cu: goto SB_L_08A7A01C;
|
|
case 0x08A7A024u: goto SB_L_08A7A024;
|
|
case 0x08A7A038u: goto SB_L_08A7A038;
|
|
case 0x08A7A040u: goto SB_L_08A7A040;
|
|
case 0x08A7A044u: goto SB_L_08A7A044;
|
|
case 0x08A7A054u: goto SB_L_08A7A054;
|
|
case 0x08A7A060u: goto SB_L_08A7A060;
|
|
case 0x08A7A068u: goto SB_L_08A7A068;
|
|
case 0x08A7A06Cu: goto SB_L_08A7A06C;
|
|
case 0x08A7A074u: goto SB_L_08A7A074;
|
|
case 0x08A7A664u: goto SB_L_08A7A664;
|
|
case 0x08A7A690u: goto SB_L_08A7A690;
|
|
case 0x08A7A6ACu: goto SB_L_08A7A6AC;
|
|
case 0x08A7A6B8u: goto SB_L_08A7A6B8;
|
|
case 0x08A7A6C0u: goto SB_L_08A7A6C0;
|
|
case 0x08A7A6D0u: goto SB_L_08A7A6D0;
|
|
case 0x08A7A6ECu: goto SB_L_08A7A6EC;
|
|
case 0x08A7A704u: goto SB_L_08A7A704;
|
|
case 0x08A7A708u: goto SB_L_08A7A708;
|
|
case 0x08A7A70Cu: goto SB_L_08A7A70C;
|
|
case 0x08A7A714u: goto SB_L_08A7A714;
|
|
case 0x08A7A730u: goto SB_L_08A7A730;
|
|
case 0x08A7A738u: goto SB_L_08A7A738;
|
|
case 0x08A7A75Cu: goto SB_L_08A7A75C;
|
|
case 0x08A7A774u: goto SB_L_08A7A774;
|
|
case 0x08A7A778u: goto SB_L_08A7A778;
|
|
case 0x08A7A784u: goto SB_L_08A7A784;
|
|
case 0x08A7A79Cu: goto SB_L_08A7A79C;
|
|
case 0x08A7A7B8u: goto SB_L_08A7A7B8;
|
|
case 0x08A7A7C0u: goto SB_L_08A7A7C0;
|
|
case 0x08A7A7C8u: goto SB_L_08A7A7C8;
|
|
case 0x08A7A7E0u: goto SB_L_08A7A7E0;
|
|
case 0x08A7A7F0u: goto SB_L_08A7A7F0;
|
|
case 0x08A7A7F8u: goto SB_L_08A7A7F8;
|
|
case 0x08A7A800u: goto SB_L_08A7A800;
|
|
case 0x08A7A808u: goto SB_L_08A7A808;
|
|
case 0x08A7A810u: goto SB_L_08A7A810;
|
|
case 0x08A7A818u: goto SB_L_08A7A818;
|
|
case 0x08A7A834u: goto SB_L_08A7A834;
|
|
case 0x08A7A844u: goto SB_L_08A7A844;
|
|
case 0x08A7A854u: goto SB_L_08A7A854;
|
|
case 0x08A7A86Cu: goto SB_L_08A7A86C;
|
|
case 0x08A7A880u: goto SB_L_08A7A880;
|
|
case 0x08A7A88Cu: goto SB_L_08A7A88C;
|
|
case 0x08A7A894u: goto SB_L_08A7A894;
|
|
case 0x08A7A89Cu: goto SB_L_08A7A89C;
|
|
case 0x08A7A8ACu: goto SB_L_08A7A8AC;
|
|
case 0x08A7A8B8u: goto SB_L_08A7A8B8;
|
|
case 0x08A7A8D0u: goto SB_L_08A7A8D0;
|
|
case 0x08A7A8E4u: goto SB_L_08A7A8E4;
|
|
case 0x08A7A8FCu: goto SB_L_08A7A8FC;
|
|
case 0x08A7A904u: goto SB_L_08A7A904;
|
|
case 0x08A7A90Cu: goto SB_L_08A7A90C;
|
|
case 0x08A7A928u: goto SB_L_08A7A928;
|
|
case 0x08A7A94Cu: goto SB_L_08A7A94C;
|
|
case 0x08A7AA6Cu: goto SB_L_08A7AA6C;
|
|
case 0x08A7AA74u: goto SB_L_08A7AA74;
|
|
case 0x08A7AA7Cu: goto SB_L_08A7AA7C;
|
|
case 0x08A7AA90u: goto SB_L_08A7AA90;
|
|
case 0x08A7AAB0u: goto SB_L_08A7AAB0;
|
|
case 0x08A7AAD0u: goto SB_L_08A7AAD0;
|
|
case 0x08A7AADCu: goto SB_L_08A7AADC;
|
|
case 0x08A7AAE4u: goto SB_L_08A7AAE4;
|
|
case 0x08A7AAECu: goto SB_L_08A7AAEC;
|
|
case 0x08A7AAF0u: goto SB_L_08A7AAF0;
|
|
case 0x08A7AB0Cu: goto SB_L_08A7AB0C;
|
|
case 0x08A7AB24u: goto SB_L_08A7AB24;
|
|
case 0x08A7AB28u: goto SB_L_08A7AB28;
|
|
case 0x08A7AB30u: goto SB_L_08A7AB30;
|
|
case 0x08A7AB38u: goto SB_L_08A7AB38;
|
|
case 0x08A7AB54u: goto SB_L_08A7AB54;
|
|
case 0x08A7AB6Cu: goto SB_L_08A7AB6C;
|
|
case 0x08A7AB80u: goto SB_L_08A7AB80;
|
|
case 0x08A7AB9Cu: goto SB_L_08A7AB9C;
|
|
case 0x08A7ABA4u: goto SB_L_08A7ABA4;
|
|
case 0x08A7ABC0u: goto SB_L_08A7ABC0;
|
|
case 0x08A7ABD0u: goto SB_L_08A7ABD0;
|
|
case 0x08A7ABE0u: goto SB_L_08A7ABE0;
|
|
case 0x08A7ABE4u: goto SB_L_08A7ABE4;
|
|
case 0x08A7AC10u: goto SB_L_08A7AC10;
|
|
case 0x08A7AC40u: goto SB_L_08A7AC40;
|
|
case 0x08A7AC48u: goto SB_L_08A7AC48;
|
|
case 0x08A7AC50u: goto SB_L_08A7AC50;
|
|
case 0x08A7AC58u: goto SB_L_08A7AC58;
|
|
case 0x08A7AC60u: goto SB_L_08A7AC60;
|
|
case 0x08A7AC68u: goto SB_L_08A7AC68;
|
|
case 0x08A7AC74u: goto SB_L_08A7AC74;
|
|
case 0x08A7AC7Cu: goto SB_L_08A7AC7C;
|
|
case 0x08A7AC98u: goto SB_L_08A7AC98;
|
|
case 0x08A7ACACu: goto SB_L_08A7ACAC;
|
|
case 0x08A7ACB0u: goto SB_L_08A7ACB0;
|
|
case 0x08A7ACB8u: goto SB_L_08A7ACB8;
|
|
case 0x08A7ACECu: goto SB_L_08A7ACEC;
|
|
case 0x08A7ACF4u: goto SB_L_08A7ACF4;
|
|
case 0x08A7AD00u: goto SB_L_08A7AD00;
|
|
case 0x08A7AD14u: goto SB_L_08A7AD14;
|
|
case 0x08A7AD1Cu: goto SB_L_08A7AD1C;
|
|
case 0x08A7AD24u: goto SB_L_08A7AD24;
|
|
case 0x08A7AD34u: goto SB_L_08A7AD34;
|
|
case 0x08A7AD3Cu: goto SB_L_08A7AD3C;
|
|
case 0x08A7AD40u: goto SB_L_08A7AD40;
|
|
case 0x08A7AD48u: goto SB_L_08A7AD48;
|
|
case 0x08A7AD54u: goto SB_L_08A7AD54;
|
|
case 0x08A7AF74u: goto SB_L_08A7AF74;
|
|
case 0x08A7AFB8u: goto SB_L_08A7AFB8;
|
|
case 0x08A7AFC0u: goto SB_L_08A7AFC0;
|
|
case 0x08A7AFC8u: goto SB_L_08A7AFC8;
|
|
case 0x08A7AFD0u: goto SB_L_08A7AFD0;
|
|
case 0x08A7B5A0u: goto SB_L_08A7B5A0;
|
|
case 0x08A7B5A8u: goto SB_L_08A7B5A8;
|
|
case 0x08A7B5B0u: goto SB_L_08A7B5B0;
|
|
case 0x08A7B5C4u: goto SB_L_08A7B5C4;
|
|
case 0x08A7B5CCu: goto SB_L_08A7B5CC;
|
|
case 0x08A7B604u: goto SB_L_08A7B604;
|
|
case 0x08A7B610u: goto SB_L_08A7B610;
|
|
case 0x08A7B61Cu: goto SB_L_08A7B61C;
|
|
case 0x08A7B630u: goto SB_L_08A7B630;
|
|
case 0x08A7B64Cu: goto SB_L_08A7B64C;
|
|
case 0x08A7B654u: goto SB_L_08A7B654;
|
|
case 0x08A7B65Cu: goto SB_L_08A7B65C;
|
|
case 0x08A7B660u: goto SB_L_08A7B660;
|
|
case 0x08A7B910u: goto SB_L_08A7B910;
|
|
default:
|
|
ctx.pc = local_pc;
|
|
TIER2_SB_RETURN();
|
|
}
|
|
|
|
TIER2_LOCAL_DISPATCH_U0158:
|
|
if (tier2_return_depth != 0u && local_pc == tier2_return_pc[tier2_return_depth - 1u]) {
|
|
tier2_resume_pc = local_pc;
|
|
tier2_resume_unit = tier2_return_unit[tier2_return_depth - 1u];
|
|
// Match invoke_chained_direct(): when the callee has returned, ctx.pc
|
|
// already contains the caller continuation before any starvation
|
|
// boundary/accounting can run. A scheduler switch here must never see
|
|
// the stale callee PC.
|
|
ctx.pc = local_pc;
|
|
const std::uint32_t tier2_pending_base =
|
|
tier2_return_pending_base[tier2_return_depth - 1u];
|
|
bool tier2_same_context = true;
|
|
if (tier2_pending_transfers < tier2_pending_base) {
|
|
++tier2_stats.fallbacks;
|
|
ctx.pc = local_pc;
|
|
TIER2_SB_RETURN();
|
|
}
|
|
const std::uint32_t tier2_nested_tail =
|
|
tier2_pending_transfers - tier2_pending_base;
|
|
if (tier2_nested_tail != 0u) {
|
|
tier2_pending_transfers = tier2_pending_base;
|
|
if (!tier2_complete_shadow(tier2_nested_tail))
|
|
tier2_same_context = false;
|
|
}
|
|
--tier2_return_depth;
|
|
if (!tier2_complete_shadow(1u))
|
|
tier2_same_context = false;
|
|
if (!tier2_same_context) TIER2_SB_RETURN();
|
|
goto TIER2_FUSED_RETURN_DISPATCH;
|
|
}
|
|
switch (local_pc) {
|
|
case 0x08A7CEC8u: goto SB_L_08A7CEC8;
|
|
case 0x08A7CEFCu: goto SB_L_08A7CEFC;
|
|
case 0x08A7CF0Cu: goto SB_L_08A7CF0C;
|
|
case 0x08A7CF1Cu: goto SB_L_08A7CF1C;
|
|
case 0x08A7CF28u: goto SB_L_08A7CF28;
|
|
case 0x08A7CF44u: goto SB_L_08A7CF44;
|
|
case 0x08A7CF4Cu: goto SB_L_08A7CF4C;
|
|
case 0x08A7CF54u: goto SB_L_08A7CF54;
|
|
case 0x08A7CF5Cu: goto SB_L_08A7CF5C;
|
|
case 0x08A7CF64u: goto SB_L_08A7CF64;
|
|
case 0x08A7CF74u: goto SB_L_08A7CF74;
|
|
case 0x08A7CF90u: goto SB_L_08A7CF90;
|
|
case 0x08A7CFACu: goto SB_L_08A7CFAC;
|
|
case 0x08A7CFC8u: goto SB_L_08A7CFC8;
|
|
case 0x08A7CFDCu: goto SB_L_08A7CFDC;
|
|
case 0x08A7CFF0u: goto SB_L_08A7CFF0;
|
|
case 0x08A7D000u: goto SB_L_08A7D000;
|
|
case 0x08A7D008u: goto SB_L_08A7D008;
|
|
case 0x08A7D014u: goto SB_L_08A7D014;
|
|
case 0x08A7D01Cu: goto SB_L_08A7D01C;
|
|
case 0x08A7D020u: goto SB_L_08A7D020;
|
|
case 0x08A7D02Cu: goto SB_L_08A7D02C;
|
|
case 0x08A7D038u: goto SB_L_08A7D038;
|
|
case 0x08A7D054u: goto SB_L_08A7D054;
|
|
case 0x08A7D05Cu: goto SB_L_08A7D05C;
|
|
case 0x08A7D064u: goto SB_L_08A7D064;
|
|
case 0x08A7D070u: goto SB_L_08A7D070;
|
|
case 0x08A7D078u: goto SB_L_08A7D078;
|
|
case 0x08A7D080u: goto SB_L_08A7D080;
|
|
case 0x08A7D088u: goto SB_L_08A7D088;
|
|
case 0x08A7D090u: goto SB_L_08A7D090;
|
|
case 0x08A7D094u: goto SB_L_08A7D094;
|
|
case 0x08A7D0A0u: goto SB_L_08A7D0A0;
|
|
case 0x08A7D0A8u: goto SB_L_08A7D0A8;
|
|
case 0x08A7D0B8u: goto SB_L_08A7D0B8;
|
|
case 0x08A7D0D0u: goto SB_L_08A7D0D0;
|
|
case 0x08A7D0D8u: goto SB_L_08A7D0D8;
|
|
case 0x08A7D0E4u: goto SB_L_08A7D0E4;
|
|
case 0x08A7D0F4u: goto SB_L_08A7D0F4;
|
|
case 0x08A7D104u: goto SB_L_08A7D104;
|
|
case 0x08A7D11Cu: goto SB_L_08A7D11C;
|
|
case 0x08A7D124u: goto SB_L_08A7D124;
|
|
case 0x08A7D12Cu: goto SB_L_08A7D12C;
|
|
case 0x08A7D144u: goto SB_L_08A7D144;
|
|
case 0x08A7D14Cu: goto SB_L_08A7D14C;
|
|
case 0x08A7D158u: goto SB_L_08A7D158;
|
|
case 0x08A7D168u: goto SB_L_08A7D168;
|
|
case 0x08A7D178u: goto SB_L_08A7D178;
|
|
case 0x08A7D190u: goto SB_L_08A7D190;
|
|
case 0x08A7D198u: goto SB_L_08A7D198;
|
|
case 0x08A7D1A4u: goto SB_L_08A7D1A4;
|
|
case 0x08A7D1B4u: goto SB_L_08A7D1B4;
|
|
case 0x08A7D1C4u: goto SB_L_08A7D1C4;
|
|
case 0x08A7D1D0u: goto SB_L_08A7D1D0;
|
|
case 0x08A7D1ECu: goto SB_L_08A7D1EC;
|
|
case 0x08A7D1F4u: goto SB_L_08A7D1F4;
|
|
case 0x08A7D210u: goto SB_L_08A7D210;
|
|
case 0x08A7D214u: goto SB_L_08A7D214;
|
|
case 0x08A7D228u: goto SB_L_08A7D228;
|
|
case 0x08A7D238u: goto SB_L_08A7D238;
|
|
case 0x08A7D23Cu: goto SB_L_08A7D23C;
|
|
case 0x08A7D244u: goto SB_L_08A7D244;
|
|
case 0x08A7D258u: goto SB_L_08A7D258;
|
|
case 0x08A7D270u: goto SB_L_08A7D270;
|
|
case 0x08A7D274u: goto SB_L_08A7D274;
|
|
case 0x08A7D280u: goto SB_L_08A7D280;
|
|
case 0x08A7D2BCu: goto SB_L_08A7D2BC;
|
|
case 0x08A7D2C4u: goto SB_L_08A7D2C4;
|
|
case 0x08A7D2C8u: goto SB_L_08A7D2C8;
|
|
case 0x08A7D2D0u: goto SB_L_08A7D2D0;
|
|
case 0x08A7D2DCu: goto SB_L_08A7D2DC;
|
|
case 0x08A7D314u: goto SB_L_08A7D314;
|
|
case 0x08A7D31Cu: goto SB_L_08A7D31C;
|
|
case 0x08A7D32Cu: goto SB_L_08A7D32C;
|
|
case 0x08A7D334u: goto SB_L_08A7D334;
|
|
case 0x08A7D344u: goto SB_L_08A7D344;
|
|
case 0x08A7D350u: goto SB_L_08A7D350;
|
|
case 0x08A7D360u: goto SB_L_08A7D360;
|
|
case 0x08A7D370u: goto SB_L_08A7D370;
|
|
case 0x08A7D380u: goto SB_L_08A7D380;
|
|
case 0x08A7D390u: goto SB_L_08A7D390;
|
|
case 0x08A7D398u: goto SB_L_08A7D398;
|
|
case 0x08A7D3B4u: goto SB_L_08A7D3B4;
|
|
case 0x08A7D3C4u: goto SB_L_08A7D3C4;
|
|
case 0x08A7D3CCu: goto SB_L_08A7D3CC;
|
|
case 0x08A7D3D4u: goto SB_L_08A7D3D4;
|
|
case 0x08A7D3E8u: goto SB_L_08A7D3E8;
|
|
case 0x08A7D3F0u: goto SB_L_08A7D3F0;
|
|
case 0x08A7D400u: goto SB_L_08A7D400;
|
|
case 0x08A7D410u: goto SB_L_08A7D410;
|
|
case 0x08A7D420u: goto SB_L_08A7D420;
|
|
case 0x08A7D430u: goto SB_L_08A7D430;
|
|
case 0x08A7D440u: goto SB_L_08A7D440;
|
|
case 0x08A7D45Cu: goto SB_L_08A7D45C;
|
|
case 0x08A7D464u: goto SB_L_08A7D464;
|
|
case 0x08A7D46Cu: goto SB_L_08A7D46C;
|
|
case 0x08A7D474u: goto SB_L_08A7D474;
|
|
case 0x08A7D4ACu: goto SB_L_08A7D4AC;
|
|
case 0x08A7D4DCu: goto SB_L_08A7D4DC;
|
|
case 0x08A7D4E4u: goto SB_L_08A7D4E4;
|
|
case 0x08A7D4F4u: goto SB_L_08A7D4F4;
|
|
case 0x08A7D4FCu: goto SB_L_08A7D4FC;
|
|
case 0x08A7D50Cu: goto SB_L_08A7D50C;
|
|
case 0x08A7D518u: goto SB_L_08A7D518;
|
|
case 0x08A7D528u: goto SB_L_08A7D528;
|
|
case 0x08A7D538u: goto SB_L_08A7D538;
|
|
case 0x08A7D548u: goto SB_L_08A7D548;
|
|
case 0x08A7D558u: goto SB_L_08A7D558;
|
|
case 0x08A7D560u: goto SB_L_08A7D560;
|
|
case 0x08A7D580u: goto SB_L_08A7D580;
|
|
case 0x08A7D588u: goto SB_L_08A7D588;
|
|
case 0x08A7D590u: goto SB_L_08A7D590;
|
|
case 0x08A7D5A4u: goto SB_L_08A7D5A4;
|
|
case 0x08A7D5B0u: goto SB_L_08A7D5B0;
|
|
case 0x08A7D5C0u: goto SB_L_08A7D5C0;
|
|
case 0x08A7D5D0u: goto SB_L_08A7D5D0;
|
|
case 0x08A7D5E0u: goto SB_L_08A7D5E0;
|
|
case 0x08A7D5F0u: goto SB_L_08A7D5F0;
|
|
case 0x08A7D60Cu: goto SB_L_08A7D60C;
|
|
case 0x08A7D618u: goto SB_L_08A7D618;
|
|
case 0x08A7D62Cu: goto SB_L_08A7D62C;
|
|
case 0x08A7D634u: goto SB_L_08A7D634;
|
|
case 0x08A7D63Cu: goto SB_L_08A7D63C;
|
|
case 0x08A7D644u: goto SB_L_08A7D644;
|
|
case 0x08A7D64Cu: goto SB_L_08A7D64C;
|
|
case 0x08A7D65Cu: goto SB_L_08A7D65C;
|
|
case 0x08A7D664u: goto SB_L_08A7D664;
|
|
case 0x08A7D66Cu: goto SB_L_08A7D66C;
|
|
case 0x08A7D674u: goto SB_L_08A7D674;
|
|
case 0x08A7D6ACu: goto SB_L_08A7D6AC;
|
|
case 0x08A7D6C4u: goto SB_L_08A7D6C4;
|
|
case 0x08A7D6D4u: goto SB_L_08A7D6D4;
|
|
case 0x08A7D6E0u: goto SB_L_08A7D6E0;
|
|
case 0x08A7D6F4u: goto SB_L_08A7D6F4;
|
|
case 0x08A7D6FCu: goto SB_L_08A7D6FC;
|
|
case 0x08A7D704u: goto SB_L_08A7D704;
|
|
case 0x08A7D70Cu: goto SB_L_08A7D70C;
|
|
case 0x08A7D714u: goto SB_L_08A7D714;
|
|
case 0x08A7D724u: goto SB_L_08A7D724;
|
|
case 0x08A7D72Cu: goto SB_L_08A7D72C;
|
|
case 0x08A7D734u: goto SB_L_08A7D734;
|
|
case 0x08A7D73Cu: goto SB_L_08A7D73C;
|
|
case 0x08A7D774u: goto SB_L_08A7D774;
|
|
case 0x08A7D78Cu: goto SB_L_08A7D78C;
|
|
case 0x08A7D7A4u: goto SB_L_08A7D7A4;
|
|
case 0x08A7D7D0u: goto SB_L_08A7D7D0;
|
|
case 0x08A7D7D8u: goto SB_L_08A7D7D8;
|
|
case 0x08A7D7E8u: goto SB_L_08A7D7E8;
|
|
case 0x08A7D7F0u: goto SB_L_08A7D7F0;
|
|
case 0x08A7D7F4u: goto SB_L_08A7D7F4;
|
|
case 0x08A7D810u: goto SB_L_08A7D810;
|
|
case 0x08A7D824u: goto SB_L_08A7D824;
|
|
case 0x08A7D830u: goto SB_L_08A7D830;
|
|
case 0x08A7D840u: goto SB_L_08A7D840;
|
|
case 0x08A7D84Cu: goto SB_L_08A7D84C;
|
|
case 0x08A7D858u: goto SB_L_08A7D858;
|
|
case 0x08A7D864u: goto SB_L_08A7D864;
|
|
case 0x08A7D870u: goto SB_L_08A7D870;
|
|
case 0x08A7D880u: goto SB_L_08A7D880;
|
|
case 0x08A7D88Cu: goto SB_L_08A7D88C;
|
|
case 0x08A7D898u: goto SB_L_08A7D898;
|
|
case 0x08A7D8B0u: goto SB_L_08A7D8B0;
|
|
case 0x08A7D8C4u: goto SB_L_08A7D8C4;
|
|
case 0x08A7D8D0u: goto SB_L_08A7D8D0;
|
|
case 0x08A7D8E0u: goto SB_L_08A7D8E0;
|
|
case 0x08A7D8F0u: goto SB_L_08A7D8F0;
|
|
case 0x08A7D8F4u: goto SB_L_08A7D8F4;
|
|
case 0x08A7D900u: goto SB_L_08A7D900;
|
|
case 0x08A7D914u: goto SB_L_08A7D914;
|
|
case 0x08A7D91Cu: goto SB_L_08A7D91C;
|
|
case 0x08A7D924u: goto SB_L_08A7D924;
|
|
case 0x08A7D92Cu: goto SB_L_08A7D92C;
|
|
case 0x08A7D934u: goto SB_L_08A7D934;
|
|
case 0x08A7D944u: goto SB_L_08A7D944;
|
|
case 0x08A7D954u: goto SB_L_08A7D954;
|
|
case 0x08A7D95Cu: goto SB_L_08A7D95C;
|
|
case 0x08A7D968u: goto SB_L_08A7D968;
|
|
case 0x08A7D97Cu: goto SB_L_08A7D97C;
|
|
case 0x08A7D98Cu: goto SB_L_08A7D98C;
|
|
case 0x08A7D994u: goto SB_L_08A7D994;
|
|
case 0x08A7D9A0u: goto SB_L_08A7D9A0;
|
|
case 0x08A7D9ACu: goto SB_L_08A7D9AC;
|
|
case 0x08A7D9C4u: goto SB_L_08A7D9C4;
|
|
case 0x08A7D9CCu: goto SB_L_08A7D9CC;
|
|
case 0x08A7D9DCu: goto SB_L_08A7D9DC;
|
|
case 0x08A7D9E8u: goto SB_L_08A7D9E8;
|
|
case 0x08A7D9F8u: goto SB_L_08A7D9F8;
|
|
case 0x08A7DA04u: goto SB_L_08A7DA04;
|
|
case 0x08A7DA0Cu: goto SB_L_08A7DA0C;
|
|
case 0x08A7DA28u: goto SB_L_08A7DA28;
|
|
case 0x08A7DA30u: goto SB_L_08A7DA30;
|
|
case 0x08A7DA38u: goto SB_L_08A7DA38;
|
|
case 0x08A7DA4Cu: goto SB_L_08A7DA4C;
|
|
case 0x08A7DA58u: goto SB_L_08A7DA58;
|
|
case 0x08A7DA68u: goto SB_L_08A7DA68;
|
|
case 0x08A7DA78u: goto SB_L_08A7DA78;
|
|
case 0x08A7DA80u: goto SB_L_08A7DA80;
|
|
case 0x08A7DA8Cu: goto SB_L_08A7DA8C;
|
|
case 0x08A7DAA4u: goto SB_L_08A7DAA4;
|
|
case 0x08A7DAB8u: goto SB_L_08A7DAB8;
|
|
case 0x08A7DAC4u: goto SB_L_08A7DAC4;
|
|
case 0x08A7DAD4u: goto SB_L_08A7DAD4;
|
|
case 0x08A7DAE4u: goto SB_L_08A7DAE4;
|
|
case 0x08A7DAE8u: goto SB_L_08A7DAE8;
|
|
case 0x08A7DAF4u: goto SB_L_08A7DAF4;
|
|
case 0x08A7DB08u: goto SB_L_08A7DB08;
|
|
case 0x08A7DB10u: goto SB_L_08A7DB10;
|
|
case 0x08A7DB18u: goto SB_L_08A7DB18;
|
|
case 0x08A7DB20u: goto SB_L_08A7DB20;
|
|
case 0x08A7DB28u: goto SB_L_08A7DB28;
|
|
case 0x08A7DB30u: goto SB_L_08A7DB30;
|
|
case 0x08A7DB38u: goto SB_L_08A7DB38;
|
|
case 0x08A7DB44u: goto SB_L_08A7DB44;
|
|
case 0x08A7DB54u: goto SB_L_08A7DB54;
|
|
case 0x08A7DB5Cu: goto SB_L_08A7DB5C;
|
|
case 0x08A7DB64u: goto SB_L_08A7DB64;
|
|
case 0x08A7DB6Cu: goto SB_L_08A7DB6C;
|
|
case 0x08A7DB88u: goto SB_L_08A7DB88;
|
|
case 0x08A7DB90u: goto SB_L_08A7DB90;
|
|
case 0x08A7DB98u: goto SB_L_08A7DB98;
|
|
case 0x08A7DB9Cu: goto SB_L_08A7DB9C;
|
|
case 0x08A7EC68u: goto SB_L_08A7EC68;
|
|
case 0x08A7ECB4u: goto SB_L_08A7ECB4;
|
|
case 0x08A7ECBCu: goto SB_L_08A7ECBC;
|
|
case 0x08A7ECD0u: goto SB_L_08A7ECD0;
|
|
case 0x08A7ED14u: goto SB_L_08A7ED14;
|
|
case 0x08A7ED28u: goto SB_L_08A7ED28;
|
|
case 0x08A7ED3Cu: goto SB_L_08A7ED3C;
|
|
case 0x08A7F028u: goto SB_L_08A7F028;
|
|
case 0x08A7F030u: goto SB_L_08A7F030;
|
|
case 0x08A7F048u: goto SB_L_08A7F048;
|
|
case 0x08A7F080u: goto SB_L_08A7F080;
|
|
case 0x08A7F0CCu: goto SB_L_08A7F0CC;
|
|
case 0x08A7F0D4u: goto SB_L_08A7F0D4;
|
|
case 0x08A7F0E8u: goto SB_L_08A7F0E8;
|
|
case 0x08A7F12Cu: goto SB_L_08A7F12C;
|
|
case 0x08A7F140u: goto SB_L_08A7F140;
|
|
case 0x08A7F154u: goto SB_L_08A7F154;
|
|
case 0x08A7F480u: goto SB_L_08A7F480;
|
|
case 0x08A7F488u: goto SB_L_08A7F488;
|
|
case 0x08A7F4A0u: goto SB_L_08A7F4A0;
|
|
case 0x08A7FAA4u: goto SB_L_08A7FAA4;
|
|
default:
|
|
ctx.pc = local_pc;
|
|
TIER2_SB_RETURN();
|
|
}
|
|
|
|
|
|
TIER2_ENTRY_DISPATCH:
|
|
switch (entry_pc) {
|
|
case 0x08A79DF8u: goto SB_L_08A79DF8;
|
|
case 0x08A7A94Cu: goto SB_L_08A7A94C;
|
|
case 0x08A7A664u: goto SB_L_08A7A664;
|
|
case 0x08A7B5A8u: goto SB_L_08A7B5A8;
|
|
case 0x08A7EC68u: goto SB_L_08A7EC68;
|
|
case 0x08A7F080u: goto SB_L_08A7F080;
|
|
default:
|
|
ctx.pc = entry_pc;
|
|
++tier2_stats.fallbacks;
|
|
TIER2_SB_RETURN();
|
|
}
|
|
|
|
// TIER2_GPR_BODY_BEGIN
|
|
SB_L_08A79AB4:
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(472)));
|
|
tier2_gpr_6 = (32768u << 16u);
|
|
tier2_gpr_5 = (tier2_gpr_5 & tier2_gpr_6);
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(0), tier2_gpr_16);
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(4), tier2_gpr_31);
|
|
{ const bool branch_taken = tier2_gpr_5 != 0u;
|
|
tier2_gpr_16 = (tier2_gpr_4 | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A79B08;
|
|
}
|
|
goto SB_L_08A79AD4;
|
|
}
|
|
|
|
SB_L_08A79AD4:
|
|
tier2_gpr_31 = (0x08A79ADCu);
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0067_entry, 67u, 195u, 0x08910B38u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A79ADCu) goto SB_L_08A79ADC;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A79ADC:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A79B00;
|
|
}
|
|
goto SB_L_08A79AE4;
|
|
}
|
|
|
|
SB_L_08A79AE4:
|
|
tier2_gpr_16 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(1152)));
|
|
{ const bool branch_taken = tier2_gpr_16 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A79B00;
|
|
}
|
|
goto SB_L_08A79AF0;
|
|
}
|
|
|
|
SB_L_08A79AF0:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(tier2_mem.aot_load8(tier2_gpr_16 + static_cast<std::uint32_t>(619))))));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 32u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A79B10;
|
|
}
|
|
goto SB_L_08A79B00;
|
|
}
|
|
|
|
SB_L_08A79B00:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A79B14;
|
|
}
|
|
goto SB_L_08A79B08;
|
|
}
|
|
|
|
SB_L_08A79B08:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A79B14;
|
|
}
|
|
goto SB_L_08A79B10;
|
|
}
|
|
|
|
SB_L_08A79B10:
|
|
ctx.gpr[2] = (0u | 1u);
|
|
goto SB_L_08A79B14;
|
|
|
|
SB_L_08A79B14:
|
|
tier2_gpr_16 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_31 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
jump_target = tier2_gpr_31;
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(16));
|
|
local_pc = jump_target;
|
|
goto TIER2_LOCAL_DISPATCH_U0157;
|
|
|
|
SB_L_08A79DF8:
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[17] = (2238u << 16u);
|
|
ctx.gpr[17] = (ctx.gpr[17] + static_cast<std::uint32_t>(17440));
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(0), tier2_gpr_16);
|
|
tier2_gpr_16 = (ctx.gpr[17] + static_cast<std::uint32_t>(16));
|
|
{ const std::uint32_t tier2_words[3]{ctx.gpr[18], ctx.gpr[19], tier2_gpr_31};
|
|
tier2_mem.aot_store32_block(tier2_gpr_29 + static_cast<std::uint32_t>(8), tier2_words); }
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(10064)));
|
|
ctx.gpr[19] = (0u | 0u);
|
|
tier2_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[19]) < static_cast<std::int32_t>(tier2_gpr_4) ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
ctx.gpr[18] = (2279u << 16u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A79E64;
|
|
}
|
|
goto SB_L_08A79E30;
|
|
}
|
|
|
|
SB_L_08A79E30:
|
|
ctx.gpr[18] = (ctx.gpr[18] + static_cast<std::uint32_t>(27328));
|
|
goto SB_L_08A79E34;
|
|
|
|
SB_L_08A79E34:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[18] + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(92)));
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(120));
|
|
tier2_gpr_6 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_5 + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_5 + static_cast<std::uint32_t>(4)));
|
|
jump_target = tier2_gpr_5;
|
|
tier2_gpr_31 = (0x08A79E50u);
|
|
tier2_gpr_4 = (tier2_gpr_4 + tier2_gpr_6);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A79E50u) goto SB_L_08A79E50;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A79E50:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(10064)));
|
|
ctx.gpr[19] = (ctx.gpr[19] + static_cast<std::uint32_t>(1));
|
|
tier2_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[19]) < static_cast<std::int32_t>(tier2_gpr_4) ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
ctx.gpr[18] = (ctx.gpr[18] + static_cast<std::uint32_t>(4));
|
|
if (branch_taken) {
|
|
goto SB_L_08A79E34;
|
|
}
|
|
goto SB_L_08A79E64;
|
|
}
|
|
|
|
SB_L_08A79E64:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(10072)));
|
|
ctx.gpr[19] = (0u | 0u);
|
|
tier2_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[19]) < static_cast<std::int32_t>(tier2_gpr_4) ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
ctx.gpr[18] = (2280u << 16u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A79EAC;
|
|
}
|
|
goto SB_L_08A79E78;
|
|
}
|
|
|
|
SB_L_08A79E78:
|
|
ctx.gpr[18] = (ctx.gpr[18] + static_cast<std::uint32_t>(-29568));
|
|
goto SB_L_08A79E7C;
|
|
|
|
SB_L_08A79E7C:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[18] + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(92)));
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(120));
|
|
tier2_gpr_6 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_5 + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_5 + static_cast<std::uint32_t>(4)));
|
|
jump_target = tier2_gpr_5;
|
|
tier2_gpr_31 = (0x08A79E98u);
|
|
tier2_gpr_4 = (tier2_gpr_4 + tier2_gpr_6);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A79E98u) goto SB_L_08A79E98;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A79E98:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(10072)));
|
|
ctx.gpr[19] = (ctx.gpr[19] + static_cast<std::uint32_t>(1));
|
|
tier2_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[19]) < static_cast<std::int32_t>(tier2_gpr_4) ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
ctx.gpr[18] = (ctx.gpr[18] + static_cast<std::uint32_t>(4));
|
|
if (branch_taken) {
|
|
goto SB_L_08A79E7C;
|
|
}
|
|
goto SB_L_08A79EAC;
|
|
}
|
|
|
|
SB_L_08A79EAC:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(10068)));
|
|
ctx.gpr[19] = (0u | 0u);
|
|
tier2_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[19]) < static_cast<std::int32_t>(tier2_gpr_4) ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
ctx.gpr[18] = (2280u << 16u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A79EF4;
|
|
}
|
|
goto SB_L_08A79EC0;
|
|
}
|
|
|
|
SB_L_08A79EC0:
|
|
ctx.gpr[18] = (ctx.gpr[18] + static_cast<std::uint32_t>(-30208));
|
|
goto SB_L_08A79EC4;
|
|
|
|
SB_L_08A79EC4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[18] + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(92)));
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(120));
|
|
tier2_gpr_6 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_5 + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_5 + static_cast<std::uint32_t>(4)));
|
|
jump_target = tier2_gpr_5;
|
|
tier2_gpr_31 = (0x08A79EE0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 + tier2_gpr_6);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A79EE0u) goto SB_L_08A79EE0;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A79EE0:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(10068)));
|
|
ctx.gpr[19] = (ctx.gpr[19] + static_cast<std::uint32_t>(1));
|
|
tier2_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[19]) < static_cast<std::int32_t>(tier2_gpr_4) ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
ctx.gpr[18] = (ctx.gpr[18] + static_cast<std::uint32_t>(4));
|
|
if (branch_taken) {
|
|
goto SB_L_08A79EC4;
|
|
}
|
|
goto SB_L_08A79EF4;
|
|
}
|
|
|
|
SB_L_08A79EF4:
|
|
ctx.gpr[17] = (tier2_mem.aot_load32(ctx.gpr[17] + static_cast<std::uint32_t>(12)));
|
|
{ const bool branch_taken = ctx.gpr[17] == tier2_gpr_16;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A79F28;
|
|
}
|
|
goto SB_L_08A79F00;
|
|
}
|
|
|
|
SB_L_08A79F00:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[17] + static_cast<std::uint32_t>(0)));
|
|
goto SB_L_08A79F04;
|
|
|
|
SB_L_08A79F04:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(92)));
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(120));
|
|
tier2_gpr_6 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_5 + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_5 + static_cast<std::uint32_t>(4)));
|
|
jump_target = tier2_gpr_5;
|
|
tier2_gpr_31 = (0x08A79F1Cu);
|
|
tier2_gpr_4 = (tier2_gpr_4 + tier2_gpr_6);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A79F1Cu) goto SB_L_08A79F1C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A79F1C:
|
|
ctx.gpr[17] = (tier2_mem.aot_load32(ctx.gpr[17] + static_cast<std::uint32_t>(12)));
|
|
if (ctx.gpr[17] != tier2_gpr_16) {
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[17] + static_cast<std::uint32_t>(0)));
|
|
goto SB_L_08A79F04;
|
|
}
|
|
goto SB_L_08A79F28;
|
|
|
|
SB_L_08A79F28:
|
|
tier2_gpr_31 = (0x08A79F30u);
|
|
// nop
|
|
goto SB_L_08A79F5C;
|
|
|
|
SB_L_08A79F5C:
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
{ const std::uint32_t tier2_words[6]{std::bit_cast<std::uint32_t>(ctx.fpr[20]), tier2_gpr_16, ctx.gpr[17], ctx.gpr[18], ctx.gpr[19], tier2_gpr_31};
|
|
tier2_mem.aot_store32_block(tier2_gpr_29 + static_cast<std::uint32_t>(0), tier2_words); }
|
|
tier2_gpr_31 = (0x08A79F80u);
|
|
ctx.gpr[19] = (0u | 1u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0087_entry, 87u, 47u, 0x08960424u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A79F80u) goto SB_L_08A79F80;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A79F80:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A79FB4;
|
|
}
|
|
goto SB_L_08A79F88;
|
|
}
|
|
|
|
SB_L_08A79F88:
|
|
tier2_gpr_31 = (0x08A79F90u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0087_entry, 87u, 47u, 0x08960424u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A79F90u) goto SB_L_08A79F90;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A79F90:
|
|
tier2_gpr_4 = (ctx.gpr[2] + static_cast<std::uint32_t>(48));
|
|
ctx.fpr[12] = std::bit_cast<float>(tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(8)));
|
|
tier2_gpr_4 = (49736u << 16u);
|
|
ctx.fpr[13] = std::bit_cast<float>(tier2_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[12] <= ctx.fpr[13])) ? 0x00800000u : 0u);
|
|
// nop
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A79FB4;
|
|
}
|
|
goto SB_L_08A79FB0;
|
|
}
|
|
|
|
SB_L_08A79FB0:
|
|
ctx.gpr[19] = (0u | 0u);
|
|
goto SB_L_08A79FB4;
|
|
|
|
SB_L_08A79FB4:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-5496)));
|
|
ctx.gpr[18] = (0u | 0u);
|
|
tier2_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[18]) < static_cast<std::int32_t>(tier2_gpr_5) ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
tier2_gpr_4 = (49736u << 16u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A054;
|
|
}
|
|
goto SB_L_08A79FC8;
|
|
}
|
|
|
|
SB_L_08A79FC8:
|
|
ctx.gpr[17] = (0u | 0u);
|
|
ctx.fpr[20] = std::bit_cast<float>(tier2_gpr_4);
|
|
tier2_gpr_16 = (8u << 16u);
|
|
goto SB_L_08A79FD4;
|
|
|
|
SB_L_08A79FD4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-5500)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + ctx.gpr[17]);
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_6 = (tier2_gpr_6 & tier2_gpr_16);
|
|
{ const bool branch_taken = tier2_gpr_6 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A044;
|
|
}
|
|
goto SB_L_08A79FF0;
|
|
}
|
|
|
|
SB_L_08A79FF0:
|
|
{ const bool branch_taken = ctx.gpr[19] == 0u;
|
|
tier2_gpr_6 = (tier2_gpr_4 + static_cast<std::uint32_t>(48));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A01C;
|
|
}
|
|
goto SB_L_08A79FF8;
|
|
}
|
|
|
|
SB_L_08A79FF8:
|
|
ctx.fpr[12] = std::bit_cast<float>(tier2_mem.aot_load32(tier2_gpr_6 + static_cast<std::uint32_t>(8)));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[12] < ctx.fpr[20])) ? 0x00800000u : 0u);
|
|
// nop
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A01C;
|
|
}
|
|
goto SB_L_08A7A00C;
|
|
}
|
|
|
|
SB_L_08A7A00C:
|
|
tier2_gpr_31 = (0x08A7A014u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0142_entry, 142u, 167u, 0x08A3CC80u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A014u) goto SB_L_08A7A014;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A014:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-5496)));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A044;
|
|
}
|
|
goto SB_L_08A7A01C;
|
|
}
|
|
|
|
SB_L_08A7A01C:
|
|
{ const bool branch_taken = ctx.gpr[19] != 0u;
|
|
tier2_gpr_6 = (tier2_gpr_4 + static_cast<std::uint32_t>(48));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A044;
|
|
}
|
|
goto SB_L_08A7A024;
|
|
}
|
|
|
|
SB_L_08A7A024:
|
|
ctx.fpr[12] = std::bit_cast<float>(tier2_mem.aot_load32(tier2_gpr_6 + static_cast<std::uint32_t>(8)));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[12] <= ctx.fpr[20])) ? 0x00800000u : 0u);
|
|
// nop
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A044;
|
|
}
|
|
goto SB_L_08A7A038;
|
|
}
|
|
|
|
SB_L_08A7A038:
|
|
tier2_gpr_31 = (0x08A7A040u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0142_entry, 142u, 167u, 0x08A3CC80u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A040u) goto SB_L_08A7A040;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A040:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-5496)));
|
|
goto SB_L_08A7A044;
|
|
|
|
SB_L_08A7A044:
|
|
ctx.gpr[18] = (ctx.gpr[18] + static_cast<std::uint32_t>(1));
|
|
tier2_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[18]) < static_cast<std::int32_t>(tier2_gpr_5) ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
ctx.gpr[17] = (ctx.gpr[17] + static_cast<std::uint32_t>(4));
|
|
if (branch_taken) {
|
|
goto SB_L_08A79FD4;
|
|
}
|
|
goto SB_L_08A7A054;
|
|
}
|
|
|
|
SB_L_08A7A054:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5864)));
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A06C;
|
|
}
|
|
goto SB_L_08A7A060;
|
|
}
|
|
|
|
SB_L_08A7A060:
|
|
tier2_gpr_31 = (0x08A7A068u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 413u, 0x08B65B0Cu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A068u) goto SB_L_08A7A068;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A068:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5864)));
|
|
goto SB_L_08A7A06C;
|
|
|
|
SB_L_08A7A06C:
|
|
tier2_gpr_31 = (0x08A7A074u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0084_entry, 84u, 221u, 0x08954F80u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A074u) goto SB_L_08A7A074;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A074:
|
|
{ std::uint32_t tier2_words[6]{};
|
|
if (tier2_mem.aot_try_load32_block(tier2_gpr_29 + static_cast<std::uint32_t>(0), tier2_words)) {
|
|
ctx.fpr[20] = std::bit_cast<float>(tier2_words[0]);
|
|
tier2_gpr_16 = tier2_words[1];
|
|
ctx.gpr[17] = tier2_words[2];
|
|
ctx.gpr[18] = tier2_words[3];
|
|
ctx.gpr[19] = tier2_words[4];
|
|
tier2_gpr_31 = tier2_words[5];
|
|
} else {
|
|
ctx.fpr[20] = std::bit_cast<float>(tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_16 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
ctx.gpr[17] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(8)));
|
|
ctx.gpr[18] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(12)));
|
|
ctx.gpr[19] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(16)));
|
|
tier2_gpr_31 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(20)));
|
|
} }
|
|
jump_target = tier2_gpr_31;
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(32));
|
|
local_pc = jump_target;
|
|
goto TIER2_LOCAL_DISPATCH_U0157;
|
|
|
|
SB_L_08A7A664:
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
tier2_gpr_5 = (tier2_gpr_5 & 255u);
|
|
{ const std::uint32_t tier2_words[7]{tier2_gpr_16, ctx.gpr[17], ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], tier2_gpr_31};
|
|
tier2_mem.aot_store32_block(tier2_gpr_29 + static_cast<std::uint32_t>(0), tier2_words); }
|
|
{ const bool branch_taken = tier2_gpr_5 == 0u;
|
|
tier2_gpr_16 = (tier2_gpr_4 | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A714;
|
|
}
|
|
goto SB_L_08A7A690;
|
|
}
|
|
|
|
SB_L_08A7A690:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 14u);
|
|
tier2_gpr_4 = (tier2_gpr_4 ^ 10u);
|
|
tier2_gpr_4 = (tier2_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
ctx.gpr[17] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A6D0;
|
|
}
|
|
goto SB_L_08A7A6AC;
|
|
}
|
|
|
|
SB_L_08A7A6AC:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5844)));
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
ctx.gpr[18] = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A6C0;
|
|
}
|
|
goto SB_L_08A7A6B8;
|
|
}
|
|
|
|
SB_L_08A7A6B8:
|
|
tier2_gpr_31 = (0x08A7A6C0u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 339u, 0x08B6572Cu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A6C0u) goto SB_L_08A7A6C0;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A6C0:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5844)));
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(276)));
|
|
if (ctx.gpr[18] != tier2_gpr_4) {
|
|
ctx.gpr[17] = (0u | 1u);
|
|
goto SB_L_08A7A708;
|
|
}
|
|
goto SB_L_08A7A6D0;
|
|
|
|
SB_L_08A7A6D0:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 14u);
|
|
tier2_gpr_4 = (tier2_gpr_4 ^ 8u);
|
|
tier2_gpr_4 = (tier2_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
tier2_gpr_4 = (ctx.gpr[17] & 255u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A70C;
|
|
}
|
|
goto SB_L_08A7A6EC;
|
|
}
|
|
|
|
SB_L_08A7A6EC:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(tier2_mem.aot_load8(tier2_gpr_16 + static_cast<std::uint32_t>(483))))));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 16u);
|
|
tier2_gpr_4 = (0u < tier2_gpr_4 ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
tier2_gpr_4 = (ctx.gpr[17] & 255u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A70C;
|
|
}
|
|
goto SB_L_08A7A704;
|
|
}
|
|
|
|
SB_L_08A7A704:
|
|
ctx.gpr[17] = (0u | 1u);
|
|
goto SB_L_08A7A708;
|
|
|
|
SB_L_08A7A708:
|
|
tier2_gpr_4 = (ctx.gpr[17] & 255u);
|
|
goto SB_L_08A7A70C;
|
|
|
|
SB_L_08A7A70C:
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A738;
|
|
}
|
|
goto SB_L_08A7A714;
|
|
}
|
|
|
|
SB_L_08A7A714:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 14u);
|
|
tier2_gpr_4 = (tier2_gpr_4 ^ 6u);
|
|
tier2_gpr_4 = (tier2_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
if (tier2_gpr_4 != 0u) {
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(2228)));
|
|
goto SB_L_08A7A778;
|
|
}
|
|
goto SB_L_08A7A730;
|
|
|
|
SB_L_08A7A730:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A75C;
|
|
}
|
|
goto SB_L_08A7A738;
|
|
}
|
|
|
|
SB_L_08A7A738:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(10076)));
|
|
tier2_gpr_5 = (2280u << 16u);
|
|
tier2_gpr_6 = (tier2_gpr_4 << 2u);
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(1));
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(-21568));
|
|
tier2_mem.aot_store32(ctx.gpr[28] + static_cast<std::uint32_t>(10076), tier2_gpr_4);
|
|
tier2_gpr_4 = (tier2_gpr_6 + tier2_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_16);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A928;
|
|
}
|
|
goto SB_L_08A7A75C;
|
|
}
|
|
|
|
SB_L_08A7A75C:
|
|
tier2_gpr_5 = (2u << 16u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
tier2_gpr_4 = (0u < tier2_gpr_4 ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A784;
|
|
}
|
|
goto SB_L_08A7A774;
|
|
}
|
|
|
|
SB_L_08A7A774:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(2228)));
|
|
goto SB_L_08A7A778;
|
|
|
|
SB_L_08A7A778:
|
|
tier2_gpr_5 = (0u | 55u);
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A7C0;
|
|
}
|
|
goto SB_L_08A7A784;
|
|
}
|
|
|
|
SB_L_08A7A784:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(92)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(144));
|
|
tier2_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_4 + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
jump_target = tier2_gpr_6;
|
|
tier2_gpr_31 = (0x08A7A79Cu);
|
|
tier2_gpr_4 = (tier2_gpr_16 + tier2_gpr_5);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A79Cu) goto SB_L_08A7A79C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A79C:
|
|
ctx.gpr[19] = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
ctx.gpr[19] = (ctx.gpr[19] & 14u);
|
|
tier2_gpr_4 = (ctx.gpr[19] ^ 14u);
|
|
tier2_gpr_4 = (tier2_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
ctx.gpr[18] = (ctx.gpr[2] | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A7C8;
|
|
}
|
|
goto SB_L_08A7A7B8;
|
|
}
|
|
|
|
SB_L_08A7A7B8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A7F8;
|
|
}
|
|
goto SB_L_08A7A7C0;
|
|
}
|
|
|
|
SB_L_08A7A7C0:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A928;
|
|
}
|
|
goto SB_L_08A7A7C8;
|
|
}
|
|
|
|
SB_L_08A7A7C8:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(352)));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(108)));
|
|
ctx.gpr[17] = (tier2_gpr_5 + static_cast<std::uint32_t>(16));
|
|
tier2_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(ctx.gpr[17] + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_31 = (0x08A7A7E0u);
|
|
ctx.gpr[19] = (tier2_gpr_4 + tier2_gpr_5);
|
|
if (tier2_return_depth < kTier2ReturnCapacity) {
|
|
if (!rt.tier2_enter_fused_transfer<158u, 0x08A7FAA4u>(ctx)) {
|
|
ctx.pc = 0x08A7FAA4u;
|
|
TIER2_SB_RETURN();
|
|
}
|
|
tier2_return_pc[tier2_return_depth] = 0x08A7A7E0u;
|
|
tier2_return_unit[tier2_return_depth] = 157u;
|
|
tier2_return_pending_base[tier2_return_depth] = tier2_pending_transfers;
|
|
++tier2_return_depth;
|
|
++tier2_stats.fused_calls;
|
|
goto SB_L_08A7FAA4;
|
|
}
|
|
++tier2_stats.fallbacks;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0158_entry, 158u, 666u, 0x08A7FAA4u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A7E0u) goto SB_L_08A7A7E0;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A7E0:
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(ctx.gpr[17] + static_cast<std::uint32_t>(4)));
|
|
tier2_gpr_4 = (ctx.gpr[19] | 0u);
|
|
jump_target = tier2_gpr_6;
|
|
tier2_gpr_31 = (0x08A7A7F0u);
|
|
tier2_gpr_5 = (ctx.gpr[2] | 0u);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A7F0u) goto SB_L_08A7A7F0;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A7F0:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[19] = (ctx.gpr[2] | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A800;
|
|
}
|
|
goto SB_L_08A7A7F8;
|
|
}
|
|
|
|
SB_L_08A7A7F8:
|
|
ctx.gpr[19] = (ctx.gpr[19] ^ 4u);
|
|
ctx.gpr[19] = (ctx.gpr[19] < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
goto SB_L_08A7A800;
|
|
|
|
SB_L_08A7A800:
|
|
{ const bool branch_taken = ctx.gpr[19] == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A818;
|
|
}
|
|
goto SB_L_08A7A808;
|
|
}
|
|
|
|
SB_L_08A7A808:
|
|
tier2_gpr_31 = (0x08A7A810u);
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(80)));
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0080_entry, 80u, 192u, 0x08945314u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A810u) goto SB_L_08A7A810;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A810:
|
|
tier2_gpr_31 = (0x08A7A818u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0080_entry, 80u, 125u, 0x08944F2Cu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A818u) goto SB_L_08A7A818;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A818:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 14u);
|
|
tier2_gpr_4 = (tier2_gpr_4 ^ 4u);
|
|
tier2_gpr_4 = (tier2_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A8E4;
|
|
}
|
|
goto SB_L_08A7A834;
|
|
}
|
|
|
|
SB_L_08A7A834:
|
|
ctx.gpr[20] = (tier2_gpr_16 | 0u);
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[20] + static_cast<std::uint32_t>(900)));
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
tier2_gpr_5 = (tier2_gpr_4 + static_cast<std::uint32_t>(2228));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A86C;
|
|
}
|
|
goto SB_L_08A7A844;
|
|
}
|
|
|
|
SB_L_08A7A844:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_6 = (0u | 55u);
|
|
{ const bool branch_taken = tier2_gpr_5 != tier2_gpr_6;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A86C;
|
|
}
|
|
goto SB_L_08A7A854;
|
|
}
|
|
|
|
SB_L_08A7A854:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(92)));
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(128));
|
|
tier2_gpr_6 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_5 + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_5 + static_cast<std::uint32_t>(4)));
|
|
jump_target = tier2_gpr_5;
|
|
tier2_gpr_31 = (0x08A7A86Cu);
|
|
tier2_gpr_4 = (tier2_gpr_4 + tier2_gpr_6);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A86Cu) goto SB_L_08A7A86C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A86C:
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[20] + static_cast<std::uint32_t>(565)));
|
|
ctx.gpr[21] = (0u | 0u);
|
|
tier2_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[21]) < static_cast<std::int32_t>(tier2_gpr_4) ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
ctx.gpr[17] = (0u | 55u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A8E4;
|
|
}
|
|
goto SB_L_08A7A880;
|
|
}
|
|
|
|
SB_L_08A7A880:
|
|
tier2_gpr_4 = (ctx.gpr[20] | 0u);
|
|
tier2_gpr_31 = (0x08A7A88Cu);
|
|
tier2_gpr_5 = (ctx.gpr[21] | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0190_entry, 190u, 663u, 0x08AFEF7Cu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A88Cu) goto SB_L_08A7A88C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A88C:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
tier2_gpr_4 = (ctx.gpr[20] | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A8D0;
|
|
}
|
|
goto SB_L_08A7A894;
|
|
}
|
|
|
|
SB_L_08A7A894:
|
|
tier2_gpr_31 = (0x08A7A89Cu);
|
|
tier2_gpr_5 = (ctx.gpr[21] | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0190_entry, 190u, 663u, 0x08AFEF7Cu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A89Cu) goto SB_L_08A7A89C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A89C:
|
|
tier2_gpr_4 = (ctx.gpr[2] + static_cast<std::uint32_t>(2228));
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = tier2_gpr_4 != ctx.gpr[17];
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A8D0;
|
|
}
|
|
goto SB_L_08A7A8AC;
|
|
}
|
|
|
|
SB_L_08A7A8AC:
|
|
tier2_gpr_4 = (ctx.gpr[20] | 0u);
|
|
tier2_gpr_31 = (0x08A7A8B8u);
|
|
tier2_gpr_5 = (ctx.gpr[21] | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0190_entry, 190u, 663u, 0x08AFEF7Cu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A8B8u) goto SB_L_08A7A8B8;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A8B8:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[2] + static_cast<std::uint32_t>(92)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(128));
|
|
tier2_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_4 + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
jump_target = tier2_gpr_6;
|
|
tier2_gpr_31 = (0x08A7A8D0u);
|
|
tier2_gpr_4 = (ctx.gpr[2] + tier2_gpr_5);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A8D0u) goto SB_L_08A7A8D0;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A8D0:
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[20] + static_cast<std::uint32_t>(565)));
|
|
ctx.gpr[21] = (ctx.gpr[21] + static_cast<std::uint32_t>(1));
|
|
tier2_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[21]) < static_cast<std::int32_t>(tier2_gpr_4) ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A880;
|
|
}
|
|
goto SB_L_08A7A8E4;
|
|
}
|
|
|
|
SB_L_08A7A8E4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(92)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(128));
|
|
tier2_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_4 + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
jump_target = tier2_gpr_6;
|
|
tier2_gpr_31 = (0x08A7A8FCu);
|
|
tier2_gpr_4 = (tier2_gpr_16 + tier2_gpr_5);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A8FCu) goto SB_L_08A7A8FC;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A8FC:
|
|
{ const bool branch_taken = ctx.gpr[19] == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7A90C;
|
|
}
|
|
goto SB_L_08A7A904;
|
|
}
|
|
|
|
SB_L_08A7A904:
|
|
tier2_gpr_31 = (0x08A7A90Cu);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0080_entry, 80u, 132u, 0x08944F98u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A90Cu) goto SB_L_08A7A90C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A90C:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(92)));
|
|
tier2_gpr_5 = (ctx.gpr[18] | 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(152));
|
|
tier2_gpr_6 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_4 + static_cast<std::uint32_t>(0))))));
|
|
ctx.gpr[7] = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
jump_target = ctx.gpr[7];
|
|
tier2_gpr_31 = (0x08A7A928u);
|
|
tier2_gpr_4 = (tier2_gpr_16 + tier2_gpr_6);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7A928u) goto SB_L_08A7A928;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7A928:
|
|
{ std::uint32_t tier2_words[7]{};
|
|
if (tier2_mem.aot_try_load32_block(tier2_gpr_29 + static_cast<std::uint32_t>(0), tier2_words)) {
|
|
tier2_gpr_16 = tier2_words[0];
|
|
ctx.gpr[17] = tier2_words[1];
|
|
ctx.gpr[18] = tier2_words[2];
|
|
ctx.gpr[19] = tier2_words[3];
|
|
ctx.gpr[20] = tier2_words[4];
|
|
ctx.gpr[21] = tier2_words[5];
|
|
tier2_gpr_31 = tier2_words[6];
|
|
} else {
|
|
tier2_gpr_16 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[17] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
ctx.gpr[18] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(8)));
|
|
ctx.gpr[19] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(12)));
|
|
ctx.gpr[20] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(16)));
|
|
ctx.gpr[21] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(20)));
|
|
tier2_gpr_31 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(24)));
|
|
} }
|
|
jump_target = tier2_gpr_31;
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(32));
|
|
local_pc = jump_target;
|
|
goto TIER2_LOCAL_DISPATCH_U0157;
|
|
|
|
SB_L_08A7A94C:
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(-80));
|
|
tier2_gpr_4 = (2236u << 16u);
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(56), ctx.gpr[20]);
|
|
ctx.gpr[20] = (tier2_gpr_4 + static_cast<std::uint32_t>(29552));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[20] + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_6 = (8448u << 16u);
|
|
tier2_gpr_6 = (tier2_gpr_6 + static_cast<std::uint32_t>(1));
|
|
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_6);
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[20] + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(4));
|
|
tier2_gpr_6 = (59136u << 16u);
|
|
tier2_mem.aot_store32(ctx.gpr[20] + static_cast<std::uint32_t>(0), tier2_gpr_5);
|
|
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_6);
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[20] + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_6 = (8704u << 16u);
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(4));
|
|
tier2_mem.aot_store32(ctx.gpr[20] + static_cast<std::uint32_t>(0), tier2_gpr_5);
|
|
tier2_gpr_6 = (tier2_gpr_6 + static_cast<std::uint32_t>(1));
|
|
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_6);
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[20] + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_6 = (8960u << 16u);
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(4));
|
|
tier2_mem.aot_store32(ctx.gpr[20] + static_cast<std::uint32_t>(0), tier2_gpr_5);
|
|
tier2_gpr_6 = (tier2_gpr_6 + static_cast<std::uint32_t>(1));
|
|
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_6);
|
|
tier2_gpr_5 = tier2_mem.aot_advance32(ctx.gpr[20] + static_cast<std::uint32_t>(0));
|
|
{ const std::uint32_t tier2_words[4]{tier2_gpr_16, ctx.gpr[17], ctx.gpr[18], ctx.gpr[19]};
|
|
tier2_mem.aot_store32_block(tier2_gpr_29 + static_cast<std::uint32_t>(40), tier2_words); }
|
|
{ const std::uint32_t tier2_words[5]{ctx.gpr[21], ctx.gpr[22], ctx.gpr[23], ctx.gpr[30], tier2_gpr_31};
|
|
tier2_mem.aot_store32_block(tier2_gpr_29 + static_cast<std::uint32_t>(60), tier2_words); }
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[20] + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_6 = (51200u << 16u);
|
|
tier2_gpr_6 = (tier2_gpr_6 + static_cast<std::uint32_t>(2));
|
|
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_6);
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[20] + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_6 = (57088u << 16u);
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(4));
|
|
tier2_mem.aot_store32(ctx.gpr[20] + static_cast<std::uint32_t>(0), tier2_gpr_5);
|
|
tier2_gpr_6 = (tier2_gpr_6 + static_cast<std::uint32_t>(50));
|
|
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_6);
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[20] + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_6 = (57344u << 16u);
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(4));
|
|
tier2_mem.aot_store32(ctx.gpr[20] + static_cast<std::uint32_t>(0), tier2_gpr_5);
|
|
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_6);
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[20] + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_6 = (57600u << 16u);
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(4));
|
|
tier2_mem.aot_store32(ctx.gpr[20] + static_cast<std::uint32_t>(0), tier2_gpr_5);
|
|
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_6);
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[20] + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_6 = (5888u << 16u);
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(4));
|
|
tier2_mem.aot_store32(ctx.gpr[20] + static_cast<std::uint32_t>(0), tier2_gpr_5);
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(29552)));
|
|
tier2_gpr_6 = (tier2_gpr_6 + static_cast<std::uint32_t>(1));
|
|
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_6);
|
|
tier2_gpr_5 = (0u | 1u);
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(29552)));
|
|
tier2_mem.aot_store8(ctx.gpr[28] + static_cast<std::uint32_t>(-24632), static_cast<std::uint8_t>(tier2_gpr_5));
|
|
tier2_gpr_5 = (tier2_gpr_6 + static_cast<std::uint32_t>(4));
|
|
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(29552), tier2_gpr_5);
|
|
tier2_gpr_4 = (0u | 11u);
|
|
tier2_gpr_31 = (0x08A7AA6Cu);
|
|
tier2_gpr_5 = (0u | 1u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0023_entry, 23u, 203u, 0x08861668u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7AA6Cu) goto SB_L_08A7AA6C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7AA6C:
|
|
tier2_gpr_31 = (0x08A7AA74u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0080_entry, 80u, 129u, 0x08944F6Cu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7AA74u) goto SB_L_08A7AA74;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7AA74:
|
|
tier2_gpr_31 = (0x08A7AA7Cu);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0080_entry, 80u, 127u, 0x08944F4Cu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7AA7Cu) goto SB_L_08A7AA7C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7AA7C:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(10072)));
|
|
ctx.gpr[20] = (0u | 0u);
|
|
tier2_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[20]) < static_cast<std::int32_t>(tier2_gpr_4) ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
tier2_gpr_4 = (ctx.gpr[28] + static_cast<std::uint32_t>(10048));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7AD14;
|
|
}
|
|
goto SB_L_08A7AA90;
|
|
}
|
|
|
|
SB_L_08A7AA90:
|
|
ctx.gpr[22] = (2280u << 16u);
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
ctx.gpr[30] = (0u | 55u);
|
|
ctx.gpr[23] = (0u | 3u);
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(36), tier2_gpr_4);
|
|
ctx.gpr[22] = (ctx.gpr[22] + static_cast<std::uint32_t>(-29568));
|
|
ctx.gpr[18] = (ctx.gpr[18] + static_cast<std::uint32_t>(32304));
|
|
ctx.gpr[21] = (2u << 16u);
|
|
goto SB_L_08A7AAB0;
|
|
|
|
SB_L_08A7AAB0:
|
|
tier2_gpr_16 = (tier2_mem.aot_load32(ctx.gpr[22] + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[19] = (0u | 0u);
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & ctx.gpr[21]);
|
|
tier2_gpr_4 = (0u < tier2_gpr_4 ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
ctx.gpr[17] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7AAF0;
|
|
}
|
|
goto SB_L_08A7AAD0;
|
|
}
|
|
|
|
SB_L_08A7AAD0:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(2228)));
|
|
{ const bool branch_taken = tier2_gpr_4 != ctx.gpr[30];
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7AAF0;
|
|
}
|
|
goto SB_L_08A7AADC;
|
|
}
|
|
|
|
SB_L_08A7AADC:
|
|
tier2_gpr_31 = (0x08A7AAE4u);
|
|
tier2_gpr_4 = (ctx.gpr[18] | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0134_entry, 134u, 56u, 0x08A1C658u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7AAE4u) goto SB_L_08A7AAE4;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7AAE4:
|
|
{ const bool branch_taken = ctx.gpr[2] != ctx.gpr[23];
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7AAF0;
|
|
}
|
|
goto SB_L_08A7AAEC;
|
|
}
|
|
|
|
SB_L_08A7AAEC:
|
|
ctx.gpr[17] = (0u | 1u);
|
|
goto SB_L_08A7AAF0;
|
|
|
|
SB_L_08A7AAF0:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 14u);
|
|
tier2_gpr_4 = (tier2_gpr_4 ^ 6u);
|
|
tier2_gpr_4 = (tier2_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
if (tier2_gpr_4 != 0u) {
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(2228)));
|
|
goto SB_L_08A7AB28;
|
|
}
|
|
goto SB_L_08A7AB0C;
|
|
|
|
SB_L_08A7AB0C:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & ctx.gpr[21]);
|
|
tier2_gpr_4 = (0u < tier2_gpr_4 ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7ABA4;
|
|
}
|
|
goto SB_L_08A7AB24;
|
|
}
|
|
|
|
SB_L_08A7AB24:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(2228)));
|
|
goto SB_L_08A7AB28;
|
|
|
|
SB_L_08A7AB28:
|
|
{ const bool branch_taken = tier2_gpr_4 == ctx.gpr[30];
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7ABA4;
|
|
}
|
|
goto SB_L_08A7AB30;
|
|
}
|
|
|
|
SB_L_08A7AB30:
|
|
{ const bool branch_taken = ctx.gpr[17] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7ABA4;
|
|
}
|
|
goto SB_L_08A7AB38;
|
|
}
|
|
|
|
SB_L_08A7AB38:
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(76)));
|
|
tier2_gpr_5 = (tier2_gpr_5 & ctx.gpr[21]);
|
|
tier2_gpr_5 = (0u < tier2_gpr_5 ? 1u : 0u);
|
|
tier2_gpr_5 = (tier2_gpr_5 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_5 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7AB80;
|
|
}
|
|
goto SB_L_08A7AB54;
|
|
}
|
|
|
|
SB_L_08A7AB54:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(236)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 256u);
|
|
tier2_gpr_4 = (0u < tier2_gpr_4 ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7AB9C;
|
|
}
|
|
goto SB_L_08A7AB6C;
|
|
}
|
|
|
|
SB_L_08A7AB6C:
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
tier2_gpr_31 = (0x08A7AB78u);
|
|
tier2_gpr_5 = (0u | 0u);
|
|
goto SB_L_08A7A664;
|
|
|
|
SB_L_08A7AB80:
|
|
tier2_gpr_31 = (0x08A7AB88u);
|
|
// nop
|
|
goto SB_L_08A79AB4;
|
|
|
|
SB_L_08A7AB9C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7AD00;
|
|
}
|
|
goto SB_L_08A7ABA4;
|
|
}
|
|
|
|
SB_L_08A7ABA4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 14u);
|
|
tier2_gpr_4 = (tier2_gpr_4 ^ 4u);
|
|
tier2_gpr_4 = (tier2_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7ACB0;
|
|
}
|
|
goto SB_L_08A7ABC0;
|
|
}
|
|
|
|
SB_L_08A7ABC0:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(852)));
|
|
tier2_gpr_4 = (0u | 1u);
|
|
if (tier2_gpr_5 == tier2_gpr_4) {
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[18] + static_cast<std::uint32_t>(80)));
|
|
goto SB_L_08A7ABE4;
|
|
}
|
|
goto SB_L_08A7ABD0;
|
|
|
|
SB_L_08A7ABD0:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(852)));
|
|
tier2_gpr_6 = (0u | 2u);
|
|
{ const bool branch_taken = tier2_gpr_5 != tier2_gpr_6;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7AC7C;
|
|
}
|
|
goto SB_L_08A7ABE0;
|
|
}
|
|
|
|
SB_L_08A7ABE0:
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[18] + static_cast<std::uint32_t>(80)));
|
|
goto SB_L_08A7ABE4;
|
|
|
|
SB_L_08A7ABE4:
|
|
tier2_gpr_4 = (tier2_gpr_4 << 5u);
|
|
tier2_gpr_5 = (0u - tier2_gpr_4);
|
|
tier2_gpr_4 = (tier2_gpr_4 << 2u);
|
|
tier2_gpr_5 = (tier2_gpr_5 + tier2_gpr_4);
|
|
tier2_gpr_4 = (tier2_gpr_4 << 2u);
|
|
tier2_gpr_4 = (tier2_gpr_5 + tier2_gpr_4);
|
|
tier2_gpr_4 = (tier2_gpr_4 + ctx.gpr[18]);
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_4 + static_cast<std::uint32_t>(112))))));
|
|
tier2_gpr_5 = (0u | 14u);
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7ACB0;
|
|
}
|
|
goto SB_L_08A7AC10;
|
|
}
|
|
|
|
SB_L_08A7AC10:
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[18] + static_cast<std::uint32_t>(80)));
|
|
tier2_gpr_4 = (tier2_gpr_4 << 5u);
|
|
tier2_gpr_5 = (0u - tier2_gpr_4);
|
|
tier2_gpr_4 = (tier2_gpr_4 << 2u);
|
|
tier2_gpr_5 = (tier2_gpr_5 + tier2_gpr_4);
|
|
tier2_gpr_4 = (tier2_gpr_4 << 2u);
|
|
tier2_gpr_4 = (tier2_gpr_5 + tier2_gpr_4);
|
|
tier2_gpr_4 = (tier2_gpr_4 + ctx.gpr[18]);
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_4 + static_cast<std::uint32_t>(112))))));
|
|
tier2_gpr_5 = (0u | 16u);
|
|
{ const bool branch_taken = tier2_gpr_4 != tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7AC60;
|
|
}
|
|
goto SB_L_08A7AC40;
|
|
}
|
|
|
|
SB_L_08A7AC40:
|
|
tier2_gpr_31 = (0x08A7AC48u);
|
|
tier2_gpr_4 = (ctx.gpr[18] | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0134_entry, 134u, 56u, 0x08A1C658u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7AC48u) goto SB_L_08A7AC48;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7AC48:
|
|
{ const bool branch_taken = ctx.gpr[2] == ctx.gpr[23];
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7AC60;
|
|
}
|
|
goto SB_L_08A7AC50;
|
|
}
|
|
|
|
SB_L_08A7AC50:
|
|
tier2_gpr_31 = (0x08A7AC58u);
|
|
tier2_gpr_4 = (ctx.gpr[18] | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0134_entry, 134u, 56u, 0x08A1C658u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7AC58u) goto SB_L_08A7AC58;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7AC58:
|
|
{ const bool branch_taken = ctx.gpr[2] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7ACB0;
|
|
}
|
|
goto SB_L_08A7AC60;
|
|
}
|
|
|
|
SB_L_08A7AC60:
|
|
tier2_gpr_31 = (0x08A7AC68u);
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(80)));
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0080_entry, 80u, 191u, 0x0894530Cu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7AC68u) goto SB_L_08A7AC68;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7AC68:
|
|
tier2_gpr_4 = (0u | 255u);
|
|
{ const bool branch_taken = ctx.gpr[2] != tier2_gpr_4;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7ACB0;
|
|
}
|
|
goto SB_L_08A7AC74;
|
|
}
|
|
|
|
SB_L_08A7AC74:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[19] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7ACB0;
|
|
}
|
|
goto SB_L_08A7AC7C;
|
|
}
|
|
|
|
SB_L_08A7AC7C:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_5 = (tier2_gpr_5 & 14u);
|
|
tier2_gpr_5 = (tier2_gpr_5 ^ 4u);
|
|
tier2_gpr_5 = (tier2_gpr_5 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
tier2_gpr_5 = (tier2_gpr_5 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_5 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7ACB0;
|
|
}
|
|
goto SB_L_08A7AC98;
|
|
}
|
|
|
|
SB_L_08A7AC98:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(236)));
|
|
tier2_gpr_6 = (1024u << 16u);
|
|
tier2_gpr_5 = (tier2_gpr_5 & tier2_gpr_6);
|
|
{ const bool branch_taken = tier2_gpr_5 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7ACB0;
|
|
}
|
|
goto SB_L_08A7ACAC;
|
|
}
|
|
|
|
SB_L_08A7ACAC:
|
|
ctx.gpr[19] = (tier2_gpr_4 | 0u);
|
|
goto SB_L_08A7ACB0;
|
|
|
|
SB_L_08A7ACB0:
|
|
{ const bool branch_taken = ctx.gpr[19] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7AD00;
|
|
}
|
|
goto SB_L_08A7ACB8;
|
|
}
|
|
|
|
SB_L_08A7ACB8:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(36)));
|
|
{ const std::uint32_t vfpu_address = tier2_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t tier2_vfpu_words[4]{}; tier2_mem.aot_load32_block(vfpu_address, tier2_vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(tier2_vfpu_words[0]),
|
|
std::bit_cast<float>(tier2_vfpu_words[1]),
|
|
std::bit_cast<float>(tier2_vfpu_words[2]),
|
|
std::bit_cast<float>(tier2_vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
tier2_gpr_4 = (tier2_gpr_16 + static_cast<std::uint32_t>(48));
|
|
{ const std::uint32_t vfpu_address = tier2_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t tier2_vfpu_words[4]{}; tier2_mem.aot_load32_block(vfpu_address, tier2_vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(tier2_vfpu_words[0]),
|
|
std::bit_cast<float>(tier2_vfpu_words[1]),
|
|
std::bit_cast<float>(tier2_vfpu_words[2]),
|
|
std::bit_cast<float>(tier2_vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
{ float vfpu_s[4]{}, vfpu_t[4]{}, vfpu_d[4]{};
|
|
ctx.read_vfpu_vector_with_source_prefix_ct<0u, 3u, 0u>(vfpu_s);
|
|
ctx.read_vfpu_vector_with_source_prefix_ct<1u, 3u, 1u>(vfpu_t);
|
|
for (std::uint32_t i = 0; i < 3u; ++i) vfpu_d[i] = vfpu_s[i] - vfpu_t[i];
|
|
ctx.write_vfpu_vector_with_destination_prefix_ct<0u, 3u>(vfpu_d); }
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = tier2_gpr_29 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t tier2_vfpu_words[4]{std::bit_cast<std::uint32_t>(vfpu_value[0]), std::bit_cast<std::uint32_t>(vfpu_value[1]), std::bit_cast<std::uint32_t>(vfpu_value[2]), std::bit_cast<std::uint32_t>(vfpu_value[3])};
|
|
tier2_mem.aot_store32_block(vfpu_address, tier2_vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = tier2_gpr_29 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t tier2_vfpu_words[4]{}; tier2_mem.aot_load32_block(vfpu_address, tier2_vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(tier2_vfpu_words[0]),
|
|
std::bit_cast<float>(tier2_vfpu_words[1]),
|
|
std::bit_cast<float>(tier2_vfpu_words[2]),
|
|
std::bit_cast<float>(tier2_vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vdot_ct<28u, 0u, 0u, 3u>();
|
|
{ float vfpu_s[4]{}, vfpu_d[4]{};
|
|
ctx.read_vfpu_vector_with_source_prefix_ct<28u, 1u, 0u>(vfpu_s);
|
|
for (std::uint32_t i = 0; i < 1u; ++i) vfpu_d[i] = std::fabs(std::sqrt(vfpu_s[i]));
|
|
ctx.write_vfpu_vector_with_destination_prefix_ct<28u, 1u>(vfpu_d); }
|
|
tier2_gpr_4 = (ctx.vfpu_scalar_bits_ct<28u>());
|
|
ctx.fpr[12] = std::bit_cast<float>(tier2_gpr_4);
|
|
tier2_gpr_31 = (0x08A7ACECu);
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0080_entry, 80u, 165u, 0x089451D8u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7ACECu) goto SB_L_08A7ACEC;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7ACEC:
|
|
{ const bool branch_taken = ctx.gpr[2] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7AD00;
|
|
}
|
|
goto SB_L_08A7ACF4;
|
|
}
|
|
|
|
SB_L_08A7ACF4:
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
tier2_gpr_31 = (0x08A7AD00u);
|
|
tier2_gpr_5 = (0u | 0u);
|
|
goto SB_L_08A7A664;
|
|
|
|
SB_L_08A7AD00:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(10072)));
|
|
ctx.gpr[20] = (ctx.gpr[20] + static_cast<std::uint32_t>(1));
|
|
tier2_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[20]) < static_cast<std::int32_t>(tier2_gpr_4) ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
ctx.gpr[22] = (ctx.gpr[22] + static_cast<std::uint32_t>(4));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7AAB0;
|
|
}
|
|
goto SB_L_08A7AD14;
|
|
}
|
|
|
|
SB_L_08A7AD14:
|
|
tier2_gpr_31 = (0x08A7AD1Cu);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0080_entry, 80u, 142u, 0x08945050u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7AD1Cu) goto SB_L_08A7AD1C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7AD1C:
|
|
tier2_gpr_31 = (0x08A7AD24u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0126_entry, 126u, 361u, 0x089FD7E4u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7AD24u) goto SB_L_08A7AD24;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7AD24:
|
|
tier2_mem.aot_store32(ctx.gpr[28] + static_cast<std::uint32_t>(-17680), 0u);
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5856)));
|
|
if (tier2_gpr_4 != 0u) {
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5856)));
|
|
goto SB_L_08A7AD40;
|
|
}
|
|
goto SB_L_08A7AD34;
|
|
|
|
SB_L_08A7AD34:
|
|
tier2_gpr_31 = (0x08A7AD3Cu);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 399u, 0x08B65A54u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7AD3Cu) goto SB_L_08A7AD3C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7AD3C:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5856)));
|
|
goto SB_L_08A7AD40;
|
|
|
|
SB_L_08A7AD40:
|
|
tier2_gpr_31 = (0x08A7AD48u);
|
|
tier2_gpr_16 = (2236u << 16u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0000_entry, 0u, 199u, 0x08805630u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7AD48u) goto SB_L_08A7AD48;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7AD48:
|
|
tier2_gpr_4 = (0u | 11u);
|
|
tier2_gpr_31 = (0x08A7AD54u);
|
|
tier2_gpr_5 = (0u | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0023_entry, 23u, 203u, 0x08861668u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7AD54u) goto SB_L_08A7AD54;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7AD54:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(29552)));
|
|
tier2_gpr_5 = (5888u << 16u);
|
|
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
|
|
tier2_gpr_4 = (0u | 0u);
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(29552)));
|
|
tier2_mem.aot_store8(ctx.gpr[28] + static_cast<std::uint32_t>(-24632), static_cast<std::uint8_t>(tier2_gpr_4));
|
|
tier2_gpr_4 = (tier2_gpr_5 + static_cast<std::uint32_t>(4));
|
|
tier2_mem.aot_store32(tier2_gpr_16 + static_cast<std::uint32_t>(29552), tier2_gpr_4);
|
|
{ std::uint32_t tier2_words[10]{};
|
|
if (tier2_mem.aot_try_load32_block(tier2_gpr_29 + static_cast<std::uint32_t>(40), tier2_words)) {
|
|
tier2_gpr_16 = tier2_words[0];
|
|
ctx.gpr[17] = tier2_words[1];
|
|
ctx.gpr[18] = tier2_words[2];
|
|
ctx.gpr[19] = tier2_words[3];
|
|
ctx.gpr[20] = tier2_words[4];
|
|
ctx.gpr[21] = tier2_words[5];
|
|
ctx.gpr[22] = tier2_words[6];
|
|
ctx.gpr[23] = tier2_words[7];
|
|
ctx.gpr[30] = tier2_words[8];
|
|
tier2_gpr_31 = tier2_words[9];
|
|
} else {
|
|
tier2_gpr_16 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(40)));
|
|
ctx.gpr[17] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(44)));
|
|
ctx.gpr[18] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(48)));
|
|
ctx.gpr[19] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(52)));
|
|
ctx.gpr[20] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(56)));
|
|
ctx.gpr[21] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(60)));
|
|
ctx.gpr[22] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(64)));
|
|
ctx.gpr[23] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(68)));
|
|
ctx.gpr[30] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_31 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(76)));
|
|
} }
|
|
jump_target = tier2_gpr_31;
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(80));
|
|
local_pc = jump_target;
|
|
goto TIER2_LOCAL_DISPATCH_U0157;
|
|
|
|
SB_L_08A7AF74:
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
tier2_gpr_6 = (2236u << 16u);
|
|
ctx.gpr[7] = (tier2_mem.aot_load32(tier2_gpr_6 + static_cast<std::uint32_t>(29552)));
|
|
ctx.gpr[8] = (51456u << 16u);
|
|
ctx.gpr[8] = (ctx.gpr[8] + static_cast<std::uint32_t>(256));
|
|
tier2_mem.aot_store32(ctx.gpr[7] + static_cast<std::uint32_t>(0), ctx.gpr[8]);
|
|
ctx.gpr[7] = (tier2_mem.aot_load32(tier2_gpr_6 + static_cast<std::uint32_t>(29552)));
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(0), tier2_gpr_16);
|
|
tier2_gpr_16 = (tier2_gpr_5 & 255u);
|
|
tier2_gpr_5 = (ctx.gpr[7] + static_cast<std::uint32_t>(4));
|
|
tier2_mem.aot_store32(tier2_gpr_6 + static_cast<std::uint32_t>(29552), tier2_gpr_5);
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_5 = (32u << 16u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(4), tier2_gpr_31);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7AFD0;
|
|
}
|
|
goto SB_L_08A7AFB8;
|
|
}
|
|
|
|
SB_L_08A7AFB8:
|
|
tier2_gpr_31 = (0x08A7AFC0u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0200_entry, 200u, 432u, 0x08B26030u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7AFC0u) goto SB_L_08A7AFC0;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7AFC0:
|
|
{ const bool branch_taken = tier2_gpr_16 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7AFD0;
|
|
}
|
|
goto SB_L_08A7AFC8;
|
|
}
|
|
|
|
SB_L_08A7AFC8:
|
|
tier2_gpr_31 = (0x08A7AFD0u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0044_entry, 44u, 663u, 0x088B7A4Cu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7AFD0u) goto SB_L_08A7AFD0;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7AFD0:
|
|
tier2_mem.aot_store8(ctx.gpr[28] + static_cast<std::uint32_t>(-17675), static_cast<std::uint8_t>(0u));
|
|
tier2_gpr_16 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_31 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
jump_target = tier2_gpr_31;
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(16));
|
|
local_pc = jump_target;
|
|
goto TIER2_LOCAL_DISPATCH_U0157;
|
|
|
|
SB_L_08A7B5A0:
|
|
jump_target = tier2_gpr_31;
|
|
ctx.gpr[2] = (0u | 0u);
|
|
local_pc = jump_target;
|
|
goto TIER2_LOCAL_DISPATCH_U0157;
|
|
|
|
SB_L_08A7B5A8:
|
|
jump_target = tier2_gpr_31;
|
|
// nop
|
|
local_pc = jump_target;
|
|
goto TIER2_LOCAL_DISPATCH_U0157;
|
|
|
|
SB_L_08A7B5B0:
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(16), tier2_gpr_16);
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(20), tier2_gpr_31);
|
|
tier2_gpr_31 = (0x08A7B5C4u);
|
|
tier2_gpr_16 = (tier2_gpr_4 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0044_entry, 44u, 666u, 0x088B7AE4u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7B5C4u) goto SB_L_08A7B5C4;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7B5C4:
|
|
tier2_gpr_31 = (0x08A7B5CCu);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0044_entry, 44u, 670u, 0x088B7B84u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7B5CCu) goto SB_L_08A7B5CC;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7B5CC:
|
|
tier2_mem.aot_store8(ctx.gpr[28] + static_cast<std::uint32_t>(-17675), static_cast<std::uint8_t>(0u));
|
|
tier2_gpr_4 = (2236u << 16u);
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(29552)));
|
|
tier2_gpr_6 = (51457u << 16u);
|
|
tier2_gpr_6 = (tier2_gpr_6 + static_cast<std::uint32_t>(256));
|
|
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_6);
|
|
tier2_gpr_5 = tier2_mem.aot_advance32(tier2_gpr_4 + static_cast<std::uint32_t>(29552));
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_6 = (32u << 16u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_6);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
tier2_gpr_4 = (15820u << 16u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7B61C;
|
|
}
|
|
goto SB_L_08A7B604;
|
|
}
|
|
|
|
SB_L_08A7B604:
|
|
tier2_gpr_4 = (tier2_gpr_4 | 52429u);
|
|
tier2_gpr_31 = (0x08A7B610u);
|
|
ctx.fpr[12] = std::bit_cast<float>(tier2_gpr_4);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0044_entry, 44u, 644u, 0x088B76E8u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7B610u) goto SB_L_08A7B610;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7B610:
|
|
tier2_gpr_4 = (0u | 1u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_mem.aot_store8(ctx.gpr[28] + static_cast<std::uint32_t>(-17675), static_cast<std::uint8_t>(tier2_gpr_4));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7B65C;
|
|
}
|
|
goto SB_L_08A7B61C;
|
|
}
|
|
|
|
SB_L_08A7B61C:
|
|
tier2_gpr_4 = (tier2_gpr_16 + static_cast<std::uint32_t>(48));
|
|
{ const std::uint32_t vfpu_address = tier2_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t tier2_vfpu_words[4]{}; tier2_mem.aot_load32_block(vfpu_address, tier2_vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(tier2_vfpu_words[0]),
|
|
std::bit_cast<float>(tier2_vfpu_words[1]),
|
|
std::bit_cast<float>(tier2_vfpu_words[2]),
|
|
std::bit_cast<float>(tier2_vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = tier2_gpr_29 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t tier2_vfpu_words[4]{std::bit_cast<std::uint32_t>(vfpu_value[0]), std::bit_cast<std::uint32_t>(vfpu_value[1]), std::bit_cast<std::uint32_t>(vfpu_value[2]), std::bit_cast<std::uint32_t>(vfpu_value[3])};
|
|
tier2_mem.aot_store32_block(vfpu_address, tier2_vfpu_words); }
|
|
tier2_gpr_31 = (0x08A7B630u);
|
|
tier2_gpr_4 = (tier2_gpr_29 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0200_entry, 200u, 414u, 0x08B25E10u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7B630u) goto SB_L_08A7B630;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7B630:
|
|
ctx.fpr[12] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[0]));
|
|
tier2_gpr_4 = (16256u << 16u);
|
|
ctx.fpr[13] = std::bit_cast<float>(tier2_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((!(std::isnan(ctx.fpr[12]) || std::isnan(ctx.fpr[13])) && ctx.fpr[12] == ctx.fpr[13])) ? 0x00800000u : 0u);
|
|
// nop
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7B65C;
|
|
}
|
|
goto SB_L_08A7B64C;
|
|
}
|
|
|
|
SB_L_08A7B64C:
|
|
tier2_gpr_31 = (0x08A7B654u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0044_entry, 44u, 661u, 0x088B78CCu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7B654u) goto SB_L_08A7B654;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7B654:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7B660;
|
|
}
|
|
goto SB_L_08A7B65C;
|
|
}
|
|
|
|
SB_L_08A7B65C:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
goto SB_L_08A7B660;
|
|
|
|
SB_L_08A7B660:
|
|
tier2_gpr_16 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(16)));
|
|
tier2_gpr_31 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(20)));
|
|
jump_target = tier2_gpr_31;
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(32));
|
|
local_pc = jump_target;
|
|
goto TIER2_LOCAL_DISPATCH_U0157;
|
|
|
|
SB_L_08A7B910:
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(0), tier2_gpr_31);
|
|
tier2_gpr_31 = (0x08A7B920u);
|
|
tier2_gpr_5 = (tier2_gpr_5 & 255u);
|
|
goto SB_L_08A7AF74;
|
|
|
|
SB_L_08A7CEC8:
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(-144));
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(120), tier2_gpr_16);
|
|
tier2_gpr_16 = (tier2_gpr_4 | 0u);
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7656)));
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(116), std::bit_cast<std::uint32_t>(ctx.fpr[20]));
|
|
tier2_gpr_5 = (static_cast<std::int32_t>(tier2_gpr_4) < static_cast<std::int32_t>(tier2_gpr_5) ? 1u : 0u);
|
|
{ const std::uint32_t tier2_words[4]{ctx.gpr[17], ctx.gpr[18], ctx.gpr[19], tier2_gpr_31};
|
|
tier2_mem.aot_store32_block(tier2_gpr_29 + static_cast<std::uint32_t>(124), tier2_words); }
|
|
{ const bool branch_taken = tier2_gpr_5 == 0u;
|
|
ctx.gpr[17] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7CF0C;
|
|
}
|
|
goto SB_L_08A7CEFC;
|
|
}
|
|
|
|
SB_L_08A7CEFC:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(24)));
|
|
tier2_gpr_4 = (tier2_gpr_4 << 2u);
|
|
tier2_gpr_4 = (tier2_gpr_5 + tier2_gpr_4);
|
|
ctx.gpr[17] = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
goto SB_L_08A7CF0C;
|
|
|
|
SB_L_08A7CF0C:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (0u | 7466u);
|
|
{ const bool branch_taken = tier2_gpr_4 != tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7CF28;
|
|
}
|
|
goto SB_L_08A7CF1C;
|
|
}
|
|
|
|
SB_L_08A7CF1C:
|
|
tier2_gpr_4 = (17302u << 16u);
|
|
ctx.fpr[12] = std::bit_cast<float>(tier2_gpr_4);
|
|
tier2_mem.aot_store32(ctx.gpr[17] + static_cast<std::uint32_t>(44), std::bit_cast<std::uint32_t>(ctx.fpr[12]));
|
|
goto SB_L_08A7CF28;
|
|
|
|
SB_L_08A7CF28:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 14u);
|
|
tier2_gpr_4 = (tier2_gpr_4 ^ 10u);
|
|
tier2_gpr_4 = (tier2_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7CF64;
|
|
}
|
|
goto SB_L_08A7CF44;
|
|
}
|
|
|
|
SB_L_08A7CF44:
|
|
tier2_gpr_31 = (0x08A7CF4Cu);
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0179_entry, 179u, 51u, 0x08AD0598u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7CF4Cu) goto SB_L_08A7CF4C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7CF4C:
|
|
{ const bool branch_taken = ctx.gpr[2] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7CF5C;
|
|
}
|
|
goto SB_L_08A7CF54;
|
|
}
|
|
|
|
SB_L_08A7CF54:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 2u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7CF5C;
|
|
}
|
|
|
|
SB_L_08A7CF5C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7CF64;
|
|
}
|
|
|
|
SB_L_08A7CF64:
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[17] + static_cast<std::uint32_t>(16)));
|
|
tier2_gpr_5 = (0u | 1u);
|
|
{ const bool branch_taken = tier2_gpr_4 != tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D0A8;
|
|
}
|
|
goto SB_L_08A7CF74;
|
|
}
|
|
|
|
SB_L_08A7CF74:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 14u);
|
|
tier2_gpr_4 = (tier2_gpr_4 ^ 12u);
|
|
tier2_gpr_4 = (tier2_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7CFAC;
|
|
}
|
|
goto SB_L_08A7CF90;
|
|
}
|
|
|
|
SB_L_08A7CF90:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 14u);
|
|
tier2_gpr_4 = (tier2_gpr_4 ^ 8u);
|
|
tier2_gpr_4 = (tier2_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D0A8;
|
|
}
|
|
goto SB_L_08A7CFAC;
|
|
}
|
|
|
|
SB_L_08A7CFAC:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 14u);
|
|
tier2_gpr_4 = (tier2_gpr_4 ^ 8u);
|
|
tier2_gpr_4 = (tier2_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
ctx.gpr[18] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D008;
|
|
}
|
|
goto SB_L_08A7CFC8;
|
|
}
|
|
|
|
SB_L_08A7CFC8:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_5 = (512u << 16u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D008;
|
|
}
|
|
goto SB_L_08A7CFDC;
|
|
}
|
|
|
|
SB_L_08A7CFDC:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7656)));
|
|
tier2_gpr_5 = (static_cast<std::int32_t>(tier2_gpr_4) < static_cast<std::int32_t>(tier2_gpr_5) ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_5 == 0u;
|
|
ctx.gpr[18] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D000;
|
|
}
|
|
goto SB_L_08A7CFF0;
|
|
}
|
|
|
|
SB_L_08A7CFF0:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(24)));
|
|
tier2_gpr_4 = (tier2_gpr_4 << 2u);
|
|
tier2_gpr_4 = (tier2_gpr_5 + tier2_gpr_4);
|
|
ctx.gpr[18] = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
goto SB_L_08A7D000;
|
|
|
|
SB_L_08A7D000:
|
|
ctx.gpr[18] = (tier2_mem.aot_load16(ctx.gpr[18] + static_cast<std::uint32_t>(58)));
|
|
ctx.gpr[18] = (ctx.gpr[18] & 3u);
|
|
goto SB_L_08A7D008;
|
|
|
|
SB_L_08A7D008:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5864)));
|
|
if (tier2_gpr_4 != 0u) {
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5864)));
|
|
goto SB_L_08A7D020;
|
|
}
|
|
goto SB_L_08A7D014;
|
|
|
|
SB_L_08A7D014:
|
|
tier2_gpr_31 = (0x08A7D01Cu);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 413u, 0x08B65B0Cu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D01Cu) goto SB_L_08A7D01C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D01C:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5864)));
|
|
goto SB_L_08A7D020;
|
|
|
|
SB_L_08A7D020:
|
|
tier2_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_31 = (0x08A7D02Cu);
|
|
tier2_gpr_6 = (ctx.gpr[18] | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0084_entry, 84u, 174u, 0x08954B84u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D02Cu) goto SB_L_08A7D02C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D02C:
|
|
ctx.gpr[18] = (ctx.gpr[2] | 0u);
|
|
{ const bool branch_taken = ctx.gpr[18] == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D0A8;
|
|
}
|
|
goto SB_L_08A7D038;
|
|
}
|
|
|
|
SB_L_08A7D038:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_5 = (8u << 16u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
tier2_gpr_4 = (0u < tier2_gpr_4 ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D080;
|
|
}
|
|
goto SB_L_08A7D054;
|
|
}
|
|
|
|
SB_L_08A7D054:
|
|
tier2_gpr_31 = (0x08A7D05Cu);
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0179_entry, 179u, 50u, 0x08AD0530u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D05Cu) goto SB_L_08A7D05C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D05C:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D078;
|
|
}
|
|
goto SB_L_08A7D064;
|
|
}
|
|
|
|
SB_L_08A7D064:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5864)));
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D088;
|
|
}
|
|
goto SB_L_08A7D070;
|
|
}
|
|
|
|
SB_L_08A7D070:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5864)));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D094;
|
|
}
|
|
goto SB_L_08A7D078;
|
|
}
|
|
|
|
SB_L_08A7D078:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 2u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D080;
|
|
}
|
|
|
|
SB_L_08A7D080:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D088;
|
|
}
|
|
|
|
SB_L_08A7D088:
|
|
tier2_gpr_31 = (0x08A7D090u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 413u, 0x08B65B0Cu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D090u) goto SB_L_08A7D090;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D090:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5864)));
|
|
goto SB_L_08A7D094;
|
|
|
|
SB_L_08A7D094:
|
|
tier2_gpr_5 = (ctx.gpr[18] | 0u);
|
|
tier2_gpr_31 = (0x08A7D0A0u);
|
|
tier2_gpr_6 = (tier2_gpr_16 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0084_entry, 84u, 191u, 0x08954C44u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D0A0u) goto SB_L_08A7D0A0;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D0A0:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D0A8;
|
|
}
|
|
|
|
SB_L_08A7D0A8:
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[17] + static_cast<std::uint32_t>(16)));
|
|
tier2_gpr_5 = (0u | 3u);
|
|
{ const bool branch_taken = tier2_gpr_4 != tier2_gpr_5;
|
|
ctx.gpr[18] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D1A4;
|
|
}
|
|
goto SB_L_08A7D0B8;
|
|
}
|
|
|
|
SB_L_08A7D0B8:
|
|
ctx.gpr[19] = (tier2_mem.aot_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[17] + static_cast<std::uint32_t>(64)));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[17] + static_cast<std::uint32_t>(68)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
tier2_gpr_31 = (0x08A7D0D0u);
|
|
tier2_gpr_5 = (tier2_gpr_5 & 255u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0079_entry, 79u, 248u, 0x08941B38u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D0D0u) goto SB_L_08A7D0D0;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D0D0:
|
|
{ const bool branch_taken = ctx.gpr[2] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D14C;
|
|
}
|
|
goto SB_L_08A7D0D8;
|
|
}
|
|
|
|
SB_L_08A7D0D8:
|
|
tier2_gpr_4 = (0u + static_cast<std::uint32_t>(-1));
|
|
{ const bool branch_taken = ctx.gpr[19] == tier2_gpr_4;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D12C;
|
|
}
|
|
goto SB_L_08A7D0E4;
|
|
}
|
|
|
|
SB_L_08A7D0E4:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7656)));
|
|
tier2_gpr_5 = (static_cast<std::int32_t>(ctx.gpr[19]) < static_cast<std::int32_t>(tier2_gpr_5) ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_5 == 0u;
|
|
tier2_gpr_4 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D104;
|
|
}
|
|
goto SB_L_08A7D0F4;
|
|
}
|
|
|
|
SB_L_08A7D0F4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(24)));
|
|
tier2_gpr_5 = (ctx.gpr[19] << 2u);
|
|
tier2_gpr_4 = (tier2_gpr_4 + tier2_gpr_5);
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
goto SB_L_08A7D104;
|
|
|
|
SB_L_08A7D104:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(36)));
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(48));
|
|
tier2_gpr_6 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_5 + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_5 + static_cast<std::uint32_t>(4)));
|
|
jump_target = tier2_gpr_5;
|
|
tier2_gpr_31 = (0x08A7D11Cu);
|
|
tier2_gpr_4 = (tier2_gpr_4 + tier2_gpr_6);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D11Cu) goto SB_L_08A7D11C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D11C:
|
|
{ const bool branch_taken = ctx.gpr[2] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D12C;
|
|
}
|
|
goto SB_L_08A7D124;
|
|
}
|
|
|
|
SB_L_08A7D124:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[18] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D78C;
|
|
}
|
|
goto SB_L_08A7D12C;
|
|
}
|
|
|
|
SB_L_08A7D12C:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(92)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(72));
|
|
tier2_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_4 + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
jump_target = tier2_gpr_6;
|
|
tier2_gpr_31 = (0x08A7D144u);
|
|
tier2_gpr_4 = (tier2_gpr_16 + tier2_gpr_5);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D144u) goto SB_L_08A7D144;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D144:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D14C;
|
|
}
|
|
|
|
SB_L_08A7D14C:
|
|
tier2_gpr_4 = (0u + static_cast<std::uint32_t>(-1));
|
|
{ const bool branch_taken = ctx.gpr[19] == tier2_gpr_4;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D78C;
|
|
}
|
|
goto SB_L_08A7D158;
|
|
}
|
|
|
|
SB_L_08A7D158:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7656)));
|
|
tier2_gpr_5 = (static_cast<std::int32_t>(ctx.gpr[19]) < static_cast<std::int32_t>(tier2_gpr_5) ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_5 == 0u;
|
|
tier2_gpr_4 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D178;
|
|
}
|
|
goto SB_L_08A7D168;
|
|
}
|
|
|
|
SB_L_08A7D168:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(24)));
|
|
tier2_gpr_5 = (ctx.gpr[19] << 2u);
|
|
tier2_gpr_4 = (tier2_gpr_4 + tier2_gpr_5);
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
goto SB_L_08A7D178;
|
|
|
|
SB_L_08A7D178:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(36)));
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(48));
|
|
tier2_gpr_6 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_5 + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_5 + static_cast<std::uint32_t>(4)));
|
|
jump_target = tier2_gpr_5;
|
|
tier2_gpr_31 = (0x08A7D190u);
|
|
tier2_gpr_4 = (tier2_gpr_4 + tier2_gpr_6);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D190u) goto SB_L_08A7D190;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D190:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D78C;
|
|
}
|
|
goto SB_L_08A7D198;
|
|
}
|
|
|
|
SB_L_08A7D198:
|
|
tier2_gpr_4 = (0u | 255u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_mem.aot_store8(ctx.gpr[17] + static_cast<std::uint32_t>(57), static_cast<std::uint8_t>(tier2_gpr_4));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D78C;
|
|
}
|
|
goto SB_L_08A7D1A4;
|
|
}
|
|
|
|
SB_L_08A7D1A4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[17] + static_cast<std::uint32_t>(16)));
|
|
tier2_gpr_5 = (0u | 1u);
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D6C4;
|
|
}
|
|
goto SB_L_08A7D1B4;
|
|
}
|
|
|
|
SB_L_08A7D1B4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[17] + static_cast<std::uint32_t>(16)));
|
|
tier2_gpr_5 = (0u | 4u);
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D6C4;
|
|
}
|
|
goto SB_L_08A7D1C4;
|
|
}
|
|
|
|
SB_L_08A7D1C4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[28] + static_cast<std::uint32_t>(-7080)));
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D464;
|
|
}
|
|
goto SB_L_08A7D1D0;
|
|
}
|
|
|
|
SB_L_08A7D1D0:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 14u);
|
|
tier2_gpr_4 = (tier2_gpr_4 ^ 14u);
|
|
tier2_gpr_4 = (tier2_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D464;
|
|
}
|
|
goto SB_L_08A7D1EC;
|
|
}
|
|
|
|
SB_L_08A7D1EC:
|
|
tier2_gpr_31 = (0x08A7D1F4u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0087_entry, 87u, 28u, 0x089602C8u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D1F4u) goto SB_L_08A7D1F4;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D1F4:
|
|
tier2_gpr_4 = (2237u << 16u);
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(-28736));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(104)));
|
|
tier2_gpr_6 = (tier2_gpr_5 + static_cast<std::uint32_t>(4));
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_6 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = tier2_gpr_6 == 0u;
|
|
tier2_gpr_4 = (ctx.gpr[2] | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D244;
|
|
}
|
|
goto SB_L_08A7D210;
|
|
}
|
|
|
|
SB_L_08A7D210:
|
|
tier2_mem.aot_store8(tier2_gpr_29 + static_cast<std::uint32_t>(92), static_cast<std::uint8_t>(0u));
|
|
goto SB_L_08A7D214;
|
|
|
|
SB_L_08A7D214:
|
|
ctx.gpr[7] = (tier2_mem.aot_load32(tier2_gpr_6 + static_cast<std::uint32_t>(16)));
|
|
ctx.gpr[7] = (ctx.gpr[7] < tier2_gpr_4 ? 1u : 0u);
|
|
ctx.gpr[7] = (ctx.gpr[7] & 255u);
|
|
if (ctx.gpr[7] != 0u) {
|
|
tier2_gpr_6 = (tier2_gpr_6 + static_cast<std::uint32_t>(12));
|
|
goto SB_L_08A7D238;
|
|
}
|
|
goto SB_L_08A7D228;
|
|
|
|
SB_L_08A7D228:
|
|
tier2_gpr_5 = (tier2_gpr_6 | 0u);
|
|
tier2_gpr_6 = (tier2_gpr_5 + static_cast<std::uint32_t>(8));
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_6 + static_cast<std::uint32_t>(0)));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D23C;
|
|
}
|
|
goto SB_L_08A7D238;
|
|
}
|
|
|
|
SB_L_08A7D238:
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_6 + static_cast<std::uint32_t>(0)));
|
|
goto SB_L_08A7D23C;
|
|
|
|
SB_L_08A7D23C:
|
|
if (tier2_gpr_6 != 0u) {
|
|
tier2_mem.aot_store8(tier2_gpr_29 + static_cast<std::uint32_t>(92), static_cast<std::uint8_t>(0u));
|
|
goto SB_L_08A7D214;
|
|
}
|
|
goto SB_L_08A7D244;
|
|
|
|
SB_L_08A7D244:
|
|
tier2_gpr_6 = (2237u << 16u);
|
|
tier2_gpr_6 = (tier2_gpr_6 + static_cast<std::uint32_t>(-28736));
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_6 + static_cast<std::uint32_t>(104)));
|
|
if (tier2_gpr_5 == tier2_gpr_6) {
|
|
tier2_gpr_4 = (2237u << 16u);
|
|
goto SB_L_08A7D274;
|
|
}
|
|
goto SB_L_08A7D258;
|
|
|
|
SB_L_08A7D258:
|
|
tier2_mem.aot_store8(tier2_gpr_29 + static_cast<std::uint32_t>(93), static_cast<std::uint8_t>(0u));
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_5 + static_cast<std::uint32_t>(16)));
|
|
tier2_gpr_4 = (tier2_gpr_4 < tier2_gpr_6 ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
tier2_gpr_4 = (2237u << 16u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D280;
|
|
}
|
|
goto SB_L_08A7D270;
|
|
}
|
|
|
|
SB_L_08A7D270:
|
|
tier2_gpr_4 = (2237u << 16u);
|
|
goto SB_L_08A7D274;
|
|
|
|
SB_L_08A7D274:
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(-28736));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(104)));
|
|
tier2_gpr_4 = (2237u << 16u);
|
|
goto SB_L_08A7D280;
|
|
|
|
SB_L_08A7D280:
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(88), tier2_gpr_5);
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(-28736));
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(104)));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(88)));
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(104), tier2_gpr_4);
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(84), tier2_gpr_5);
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(104)));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(84)));
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(80), tier2_gpr_4);
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(80)));
|
|
tier2_gpr_4 = (tier2_gpr_5 ^ tier2_gpr_4);
|
|
tier2_gpr_4 = (tier2_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
if (tier2_gpr_4 == 0u) {
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(84)));
|
|
goto SB_L_08A7D2C4;
|
|
}
|
|
goto SB_L_08A7D2BC;
|
|
|
|
SB_L_08A7D2BC:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_gpr_4 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D2C8;
|
|
}
|
|
goto SB_L_08A7D2C4;
|
|
}
|
|
|
|
SB_L_08A7D2C4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(20)));
|
|
goto SB_L_08A7D2C8;
|
|
|
|
SB_L_08A7D2C8:
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D45C;
|
|
}
|
|
goto SB_L_08A7D2D0;
|
|
}
|
|
|
|
SB_L_08A7D2D0:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(352)));
|
|
{ const bool branch_taken = tier2_gpr_4 != tier2_gpr_5;
|
|
tier2_gpr_4 = (2236u << 16u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D45C;
|
|
}
|
|
goto SB_L_08A7D2DC;
|
|
}
|
|
|
|
SB_L_08A7D2DC:
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(32304));
|
|
tier2_gpr_5 = (tier2_mem.aot_load8(tier2_gpr_4 + static_cast<std::uint32_t>(80)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(112));
|
|
tier2_gpr_5 = (tier2_gpr_5 << 5u);
|
|
tier2_gpr_6 = (0u - tier2_gpr_5);
|
|
tier2_gpr_5 = (tier2_gpr_5 << 2u);
|
|
tier2_gpr_6 = (tier2_gpr_6 + tier2_gpr_5);
|
|
tier2_gpr_5 = (tier2_gpr_5 << 2u);
|
|
ctx.gpr[17] = (tier2_gpr_6 + tier2_gpr_5);
|
|
ctx.gpr[17] = (ctx.gpr[17] + tier2_gpr_4);
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(ctx.gpr[17] + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_5 = (0u | 16u);
|
|
{ const bool branch_taken = tier2_gpr_4 != tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D45C;
|
|
}
|
|
goto SB_L_08A7D314;
|
|
}
|
|
|
|
SB_L_08A7D314:
|
|
tier2_gpr_31 = (0x08A7D31Cu);
|
|
ctx.gpr[17] = (tier2_mem.aot_load32(ctx.gpr[17] + static_cast<std::uint32_t>(116)));
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0087_entry, 87u, 28u, 0x089602C8u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D31Cu) goto SB_L_08A7D31C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D31C:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[2] + static_cast<std::uint32_t>(852)));
|
|
tier2_gpr_5 = (0u | 6u);
|
|
{ const bool branch_taken = tier2_gpr_4 != tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D344;
|
|
}
|
|
goto SB_L_08A7D32C;
|
|
}
|
|
|
|
SB_L_08A7D32C:
|
|
tier2_gpr_31 = (0x08A7D334u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0087_entry, 87u, 28u, 0x089602C8u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D334u) goto SB_L_08A7D334;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D334:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(tier2_mem.aot_load8(ctx.gpr[2] + static_cast<std::uint32_t>(1280))))));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 16u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D45C;
|
|
}
|
|
goto SB_L_08A7D344;
|
|
}
|
|
|
|
SB_L_08A7D344:
|
|
tier2_gpr_4 = (0u | 3u);
|
|
{ const bool branch_taken = ctx.gpr[17] == tier2_gpr_4;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D3D4;
|
|
}
|
|
goto SB_L_08A7D350;
|
|
}
|
|
|
|
SB_L_08A7D350:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (0u | 246u);
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D3D4;
|
|
}
|
|
goto SB_L_08A7D360;
|
|
}
|
|
|
|
SB_L_08A7D360:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (0u | 237u);
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D3D4;
|
|
}
|
|
goto SB_L_08A7D370;
|
|
}
|
|
|
|
SB_L_08A7D370:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (0u + static_cast<std::uint32_t>(-966));
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
tier2_gpr_4 = (2236u << 16u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D3D4;
|
|
}
|
|
goto SB_L_08A7D380;
|
|
}
|
|
|
|
SB_L_08A7D380:
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(32304));
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(tier2_gpr_4 + static_cast<std::uint32_t>(1956)));
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D3D4;
|
|
}
|
|
goto SB_L_08A7D390;
|
|
}
|
|
|
|
SB_L_08A7D390:
|
|
{ const bool branch_taken = ctx.gpr[17] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D3C4;
|
|
}
|
|
goto SB_L_08A7D398;
|
|
}
|
|
|
|
SB_L_08A7D398:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
tier2_gpr_5 = (1u << 16u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
tier2_gpr_4 = (0u < tier2_gpr_4 ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D3C4;
|
|
}
|
|
goto SB_L_08A7D3B4;
|
|
}
|
|
|
|
SB_L_08A7D3B4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(380)));
|
|
tier2_gpr_5 = (0u | 4u);
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D3D4;
|
|
}
|
|
goto SB_L_08A7D3C4;
|
|
}
|
|
|
|
SB_L_08A7D3C4:
|
|
{ const bool branch_taken = ctx.gpr[17] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D440;
|
|
}
|
|
goto SB_L_08A7D3CC;
|
|
}
|
|
|
|
SB_L_08A7D3CC:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D3E8;
|
|
}
|
|
goto SB_L_08A7D3D4;
|
|
}
|
|
|
|
SB_L_08A7D3D4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
ctx.gpr[2] = (0u | 2u);
|
|
tier2_gpr_4 = (tier2_gpr_4 | 32u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_mem.aot_store32(tier2_gpr_16 + static_cast<std::uint32_t>(76), tier2_gpr_4);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D3E8;
|
|
}
|
|
|
|
SB_L_08A7D3E8:
|
|
tier2_gpr_31 = (0x08A7D3F0u);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0087_entry, 87u, 28u, 0x089602C8u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D3F0u) goto SB_L_08A7D3F0;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D3F0:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[2] + static_cast<std::uint32_t>(852)));
|
|
tier2_gpr_5 = (0u | 1u);
|
|
{ const bool branch_taken = tier2_gpr_4 != tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D440;
|
|
}
|
|
goto SB_L_08A7D400;
|
|
}
|
|
|
|
SB_L_08A7D400:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (0u | 214u);
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D440;
|
|
}
|
|
goto SB_L_08A7D410;
|
|
}
|
|
|
|
SB_L_08A7D410:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (0u | 250u);
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D440;
|
|
}
|
|
goto SB_L_08A7D420;
|
|
}
|
|
|
|
SB_L_08A7D420:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (0u | 219u);
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D440;
|
|
}
|
|
goto SB_L_08A7D430;
|
|
}
|
|
|
|
SB_L_08A7D430:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (0u | 278u);
|
|
{ const bool branch_taken = tier2_gpr_4 != tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D45C;
|
|
}
|
|
goto SB_L_08A7D440;
|
|
}
|
|
|
|
SB_L_08A7D440:
|
|
tier2_mem.aot_store32(ctx.gpr[28] + static_cast<std::uint32_t>(10080), tier2_gpr_16);
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
tier2_gpr_5 = (0u + static_cast<std::uint32_t>(-33));
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
tier2_mem.aot_store32(tier2_gpr_16 + static_cast<std::uint32_t>(76), tier2_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 2u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D45C;
|
|
}
|
|
|
|
SB_L_08A7D45C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D60C;
|
|
}
|
|
goto SB_L_08A7D464;
|
|
}
|
|
|
|
SB_L_08A7D464:
|
|
tier2_gpr_31 = (0x08A7D46Cu);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0087_entry, 87u, 28u, 0x089602C8u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D46Cu) goto SB_L_08A7D46C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D46C:
|
|
{ const bool branch_taken = ctx.gpr[2] != tier2_gpr_16;
|
|
tier2_gpr_4 = (2236u << 16u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D60C;
|
|
}
|
|
goto SB_L_08A7D474;
|
|
}
|
|
|
|
SB_L_08A7D474:
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(32304));
|
|
tier2_gpr_5 = (tier2_mem.aot_load8(tier2_gpr_4 + static_cast<std::uint32_t>(80)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(112));
|
|
tier2_gpr_5 = (tier2_gpr_5 << 5u);
|
|
tier2_gpr_6 = (0u - tier2_gpr_5);
|
|
tier2_gpr_5 = (tier2_gpr_5 << 2u);
|
|
tier2_gpr_6 = (tier2_gpr_6 + tier2_gpr_5);
|
|
tier2_gpr_5 = (tier2_gpr_5 << 2u);
|
|
ctx.gpr[17] = (tier2_gpr_6 + tier2_gpr_5);
|
|
ctx.gpr[17] = (ctx.gpr[17] + tier2_gpr_4);
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(ctx.gpr[17] + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_5 = (0u | 16u);
|
|
{ const bool branch_taken = tier2_gpr_4 != tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D60C;
|
|
}
|
|
goto SB_L_08A7D4AC;
|
|
}
|
|
|
|
SB_L_08A7D4AC:
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[28] + static_cast<std::uint32_t>(7800)));
|
|
tier2_gpr_5 = (tier2_gpr_4 + tier2_gpr_4);
|
|
tier2_gpr_6 = (tier2_gpr_4 << 8u);
|
|
tier2_gpr_4 = (tier2_gpr_4 + tier2_gpr_5);
|
|
tier2_gpr_4 = (tier2_gpr_4 << 5u);
|
|
tier2_gpr_5 = (2238u << 16u);
|
|
tier2_gpr_4 = (tier2_gpr_6 + tier2_gpr_4);
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(-6992));
|
|
tier2_gpr_4 = (tier2_gpr_4 + tier2_gpr_5);
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D60C;
|
|
}
|
|
goto SB_L_08A7D4DC;
|
|
}
|
|
|
|
SB_L_08A7D4DC:
|
|
tier2_gpr_31 = (0x08A7D4E4u);
|
|
ctx.gpr[17] = (tier2_mem.aot_load32(ctx.gpr[17] + static_cast<std::uint32_t>(116)));
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0087_entry, 87u, 28u, 0x089602C8u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D4E4u) goto SB_L_08A7D4E4;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D4E4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[2] + static_cast<std::uint32_t>(852)));
|
|
tier2_gpr_5 = (0u | 6u);
|
|
{ const bool branch_taken = tier2_gpr_4 != tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D50C;
|
|
}
|
|
goto SB_L_08A7D4F4;
|
|
}
|
|
|
|
SB_L_08A7D4F4:
|
|
tier2_gpr_31 = (0x08A7D4FCu);
|
|
// nop
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0087_entry, 87u, 28u, 0x089602C8u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D4FCu) goto SB_L_08A7D4FC;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D4FC:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(tier2_mem.aot_load8(ctx.gpr[2] + static_cast<std::uint32_t>(1280))))));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 16u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D60C;
|
|
}
|
|
goto SB_L_08A7D50C;
|
|
}
|
|
|
|
SB_L_08A7D50C:
|
|
tier2_gpr_4 = (0u | 3u);
|
|
{ const bool branch_taken = ctx.gpr[17] == tier2_gpr_4;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D590;
|
|
}
|
|
goto SB_L_08A7D518;
|
|
}
|
|
|
|
SB_L_08A7D518:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (0u | 246u);
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D590;
|
|
}
|
|
goto SB_L_08A7D528;
|
|
}
|
|
|
|
SB_L_08A7D528:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (0u | 237u);
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D590;
|
|
}
|
|
goto SB_L_08A7D538;
|
|
}
|
|
|
|
SB_L_08A7D538:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (0u + static_cast<std::uint32_t>(-966));
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
tier2_gpr_4 = (2236u << 16u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D590;
|
|
}
|
|
goto SB_L_08A7D548;
|
|
}
|
|
|
|
SB_L_08A7D548:
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(32304));
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(tier2_gpr_4 + static_cast<std::uint32_t>(1956)));
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D590;
|
|
}
|
|
goto SB_L_08A7D558;
|
|
}
|
|
|
|
SB_L_08A7D558:
|
|
{ const bool branch_taken = ctx.gpr[17] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D580;
|
|
}
|
|
goto SB_L_08A7D560;
|
|
}
|
|
|
|
SB_L_08A7D560:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(352)));
|
|
tier2_gpr_5 = (16384u << 16u);
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(208)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
tier2_gpr_4 = (0u < tier2_gpr_4 ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D590;
|
|
}
|
|
goto SB_L_08A7D580;
|
|
}
|
|
|
|
SB_L_08A7D580:
|
|
{ const bool branch_taken = ctx.gpr[17] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D5F0;
|
|
}
|
|
goto SB_L_08A7D588;
|
|
}
|
|
|
|
SB_L_08A7D588:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(852)));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D5A4;
|
|
}
|
|
goto SB_L_08A7D590;
|
|
}
|
|
|
|
SB_L_08A7D590:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
ctx.gpr[2] = (0u | 2u);
|
|
tier2_gpr_4 = (tier2_gpr_4 | 32u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_mem.aot_store32(tier2_gpr_16 + static_cast<std::uint32_t>(76), tier2_gpr_4);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D5A4;
|
|
}
|
|
|
|
SB_L_08A7D5A4:
|
|
tier2_gpr_5 = (0u | 1u);
|
|
{ const bool branch_taken = tier2_gpr_4 != tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D5F0;
|
|
}
|
|
goto SB_L_08A7D5B0;
|
|
}
|
|
|
|
SB_L_08A7D5B0:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (0u | 214u);
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D5F0;
|
|
}
|
|
goto SB_L_08A7D5C0;
|
|
}
|
|
|
|
SB_L_08A7D5C0:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (0u | 250u);
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D5F0;
|
|
}
|
|
goto SB_L_08A7D5D0;
|
|
}
|
|
|
|
SB_L_08A7D5D0:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (0u | 219u);
|
|
{ const bool branch_taken = tier2_gpr_4 == tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D5F0;
|
|
}
|
|
goto SB_L_08A7D5E0;
|
|
}
|
|
|
|
SB_L_08A7D5E0:
|
|
tier2_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
tier2_gpr_5 = (0u | 278u);
|
|
{ const bool branch_taken = tier2_gpr_4 != tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D60C;
|
|
}
|
|
goto SB_L_08A7D5F0;
|
|
}
|
|
|
|
SB_L_08A7D5F0:
|
|
tier2_mem.aot_store32(ctx.gpr[28] + static_cast<std::uint32_t>(10080), tier2_gpr_16);
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
tier2_gpr_5 = (0u + static_cast<std::uint32_t>(-33));
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
tier2_mem.aot_store32(tier2_gpr_16 + static_cast<std::uint32_t>(76), tier2_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 2u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D60C;
|
|
}
|
|
|
|
SB_L_08A7D60C:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(80)));
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D66C;
|
|
}
|
|
goto SB_L_08A7D618;
|
|
}
|
|
|
|
SB_L_08A7D618:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_5 = (8u << 16u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D66C;
|
|
}
|
|
goto SB_L_08A7D62C;
|
|
}
|
|
|
|
SB_L_08A7D62C:
|
|
tier2_gpr_31 = (0x08A7D634u);
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0179_entry, 179u, 50u, 0x08AD0530u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D634u) goto SB_L_08A7D634;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D634:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D664;
|
|
}
|
|
goto SB_L_08A7D63C;
|
|
}
|
|
|
|
SB_L_08A7D63C:
|
|
tier2_gpr_31 = (0x08A7D644u);
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0195_entry, 195u, 375u, 0x08B11994u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D644u) goto SB_L_08A7D644;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D644:
|
|
{ const bool branch_taken = ctx.gpr[2] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D664;
|
|
}
|
|
goto SB_L_08A7D64C;
|
|
}
|
|
|
|
SB_L_08A7D64C:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 16u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D674;
|
|
}
|
|
goto SB_L_08A7D65C;
|
|
}
|
|
|
|
SB_L_08A7D65C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D664;
|
|
}
|
|
|
|
SB_L_08A7D664:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 2u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D66C;
|
|
}
|
|
|
|
SB_L_08A7D66C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D674;
|
|
}
|
|
|
|
SB_L_08A7D674:
|
|
tier2_gpr_4 = (tier2_gpr_16 + static_cast<std::uint32_t>(48));
|
|
{ const std::uint32_t vfpu_address = tier2_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t tier2_vfpu_words[4]{}; tier2_mem.aot_load32_block(vfpu_address, tier2_vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(tier2_vfpu_words[0]),
|
|
std::bit_cast<float>(tier2_vfpu_words[1]),
|
|
std::bit_cast<float>(tier2_vfpu_words[2]),
|
|
std::bit_cast<float>(tier2_vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
tier2_gpr_4 = (ctx.gpr[28] + static_cast<std::uint32_t>(10048));
|
|
{ const std::uint32_t vfpu_address = tier2_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t tier2_vfpu_words[4]{}; tier2_mem.aot_load32_block(vfpu_address, tier2_vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(tier2_vfpu_words[0]),
|
|
std::bit_cast<float>(tier2_vfpu_words[1]),
|
|
std::bit_cast<float>(tier2_vfpu_words[2]),
|
|
std::bit_cast<float>(tier2_vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
{ float vfpu_s[4]{}, vfpu_t[4]{}, vfpu_d[4]{};
|
|
ctx.read_vfpu_vector_with_source_prefix_ct<0u, 3u, 0u>(vfpu_s);
|
|
ctx.read_vfpu_vector_with_source_prefix_ct<1u, 3u, 1u>(vfpu_t);
|
|
for (std::uint32_t i = 0; i < 3u; ++i) vfpu_d[i] = vfpu_s[i] - vfpu_t[i];
|
|
ctx.write_vfpu_vector_with_destination_prefix_ct<0u, 3u>(vfpu_d); }
|
|
tier2_gpr_4 = (tier2_gpr_29 + static_cast<std::uint32_t>(16));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = tier2_gpr_4 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t tier2_vfpu_words[4]{std::bit_cast<std::uint32_t>(vfpu_value[0]), std::bit_cast<std::uint32_t>(vfpu_value[1]), std::bit_cast<std::uint32_t>(vfpu_value[2]), std::bit_cast<std::uint32_t>(vfpu_value[3])};
|
|
tier2_mem.aot_store32_block(vfpu_address, tier2_vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = tier2_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t tier2_vfpu_words[4]{}; tier2_mem.aot_load32_block(vfpu_address, tier2_vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(tier2_vfpu_words[0]),
|
|
std::bit_cast<float>(tier2_vfpu_words[1]),
|
|
std::bit_cast<float>(tier2_vfpu_words[2]),
|
|
std::bit_cast<float>(tier2_vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vdot_ct<28u, 0u, 0u, 3u>();
|
|
{ float vfpu_s[4]{}, vfpu_d[4]{};
|
|
ctx.read_vfpu_vector_with_source_prefix_ct<28u, 1u, 0u>(vfpu_s);
|
|
for (std::uint32_t i = 0; i < 1u; ++i) vfpu_d[i] = std::fabs(std::sqrt(vfpu_s[i]));
|
|
ctx.write_vfpu_vector_with_destination_prefix_ct<28u, 1u>(vfpu_d); }
|
|
tier2_gpr_4 = (ctx.vfpu_scalar_bits_ct<28u>());
|
|
ctx.fpr[12] = std::bit_cast<float>(tier2_gpr_4);
|
|
tier2_gpr_31 = (0x08A7D6ACu);
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0080_entry, 80u, 165u, 0x089451D8u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D6ACu) goto SB_L_08A7D6AC;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D6AC:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
tier2_gpr_5 = (0u + static_cast<std::uint32_t>(-129));
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
tier2_mem.aot_store32(tier2_gpr_16 + static_cast<std::uint32_t>(76), tier2_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D6C4;
|
|
}
|
|
|
|
SB_L_08A7D6C4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 4096u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D78C;
|
|
}
|
|
goto SB_L_08A7D6D4;
|
|
}
|
|
|
|
SB_L_08A7D6D4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(80)));
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D734;
|
|
}
|
|
goto SB_L_08A7D6E0;
|
|
}
|
|
|
|
SB_L_08A7D6E0:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_5 = (8u << 16u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D734;
|
|
}
|
|
goto SB_L_08A7D6F4;
|
|
}
|
|
|
|
SB_L_08A7D6F4:
|
|
tier2_gpr_31 = (0x08A7D6FCu);
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0179_entry, 179u, 50u, 0x08AD0530u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D6FCu) goto SB_L_08A7D6FC;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D6FC:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D72C;
|
|
}
|
|
goto SB_L_08A7D704;
|
|
}
|
|
|
|
SB_L_08A7D704:
|
|
tier2_gpr_31 = (0x08A7D70Cu);
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0195_entry, 195u, 375u, 0x08B11994u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D70Cu) goto SB_L_08A7D70C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D70C:
|
|
{ const bool branch_taken = ctx.gpr[2] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D72C;
|
|
}
|
|
goto SB_L_08A7D714;
|
|
}
|
|
|
|
SB_L_08A7D714:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 16u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D73C;
|
|
}
|
|
goto SB_L_08A7D724;
|
|
}
|
|
|
|
SB_L_08A7D724:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D72C;
|
|
}
|
|
|
|
SB_L_08A7D72C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 2u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D734;
|
|
}
|
|
|
|
SB_L_08A7D734:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D73C;
|
|
}
|
|
|
|
SB_L_08A7D73C:
|
|
tier2_gpr_4 = (tier2_gpr_16 + static_cast<std::uint32_t>(48));
|
|
{ const std::uint32_t vfpu_address = tier2_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t tier2_vfpu_words[4]{}; tier2_mem.aot_load32_block(vfpu_address, tier2_vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(tier2_vfpu_words[0]),
|
|
std::bit_cast<float>(tier2_vfpu_words[1]),
|
|
std::bit_cast<float>(tier2_vfpu_words[2]),
|
|
std::bit_cast<float>(tier2_vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
tier2_gpr_4 = (ctx.gpr[28] + static_cast<std::uint32_t>(10048));
|
|
{ const std::uint32_t vfpu_address = tier2_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t tier2_vfpu_words[4]{}; tier2_mem.aot_load32_block(vfpu_address, tier2_vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(tier2_vfpu_words[0]),
|
|
std::bit_cast<float>(tier2_vfpu_words[1]),
|
|
std::bit_cast<float>(tier2_vfpu_words[2]),
|
|
std::bit_cast<float>(tier2_vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
{ float vfpu_s[4]{}, vfpu_t[4]{}, vfpu_d[4]{};
|
|
ctx.read_vfpu_vector_with_source_prefix_ct<0u, 3u, 0u>(vfpu_s);
|
|
ctx.read_vfpu_vector_with_source_prefix_ct<1u, 3u, 1u>(vfpu_t);
|
|
for (std::uint32_t i = 0; i < 3u; ++i) vfpu_d[i] = vfpu_s[i] - vfpu_t[i];
|
|
ctx.write_vfpu_vector_with_destination_prefix_ct<0u, 3u>(vfpu_d); }
|
|
tier2_gpr_4 = (tier2_gpr_29 + static_cast<std::uint32_t>(32));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = tier2_gpr_4 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t tier2_vfpu_words[4]{std::bit_cast<std::uint32_t>(vfpu_value[0]), std::bit_cast<std::uint32_t>(vfpu_value[1]), std::bit_cast<std::uint32_t>(vfpu_value[2]), std::bit_cast<std::uint32_t>(vfpu_value[3])};
|
|
tier2_mem.aot_store32_block(vfpu_address, tier2_vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = tier2_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t tier2_vfpu_words[4]{}; tier2_mem.aot_load32_block(vfpu_address, tier2_vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(tier2_vfpu_words[0]),
|
|
std::bit_cast<float>(tier2_vfpu_words[1]),
|
|
std::bit_cast<float>(tier2_vfpu_words[2]),
|
|
std::bit_cast<float>(tier2_vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vdot_ct<28u, 0u, 0u, 3u>();
|
|
{ float vfpu_s[4]{}, vfpu_d[4]{};
|
|
ctx.read_vfpu_vector_with_source_prefix_ct<28u, 1u, 0u>(vfpu_s);
|
|
for (std::uint32_t i = 0; i < 1u; ++i) vfpu_d[i] = std::fabs(std::sqrt(vfpu_s[i]));
|
|
ctx.write_vfpu_vector_with_destination_prefix_ct<28u, 1u>(vfpu_d); }
|
|
tier2_gpr_4 = (ctx.vfpu_scalar_bits_ct<28u>());
|
|
ctx.fpr[12] = std::bit_cast<float>(tier2_gpr_4);
|
|
tier2_gpr_31 = (0x08A7D774u);
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0080_entry, 80u, 165u, 0x089451D8u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D774u) goto SB_L_08A7D774;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D774:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
tier2_gpr_5 = (0u + static_cast<std::uint32_t>(-129));
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
tier2_mem.aot_store32(tier2_gpr_16 + static_cast<std::uint32_t>(76), tier2_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D78C;
|
|
}
|
|
|
|
SB_L_08A7D78C:
|
|
tier2_gpr_4 = (tier2_gpr_16 + static_cast<std::uint32_t>(48));
|
|
{ const std::uint32_t vfpu_address = tier2_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t tier2_vfpu_words[4]{}; tier2_mem.aot_load32_block(vfpu_address, tier2_vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(tier2_vfpu_words[0]),
|
|
std::bit_cast<float>(tier2_vfpu_words[1]),
|
|
std::bit_cast<float>(tier2_vfpu_words[2]),
|
|
std::bit_cast<float>(tier2_vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = tier2_gpr_29 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t tier2_vfpu_words[4]{std::bit_cast<std::uint32_t>(vfpu_value[0]), std::bit_cast<std::uint32_t>(vfpu_value[1]), std::bit_cast<std::uint32_t>(vfpu_value[2]), std::bit_cast<std::uint32_t>(vfpu_value[3])};
|
|
tier2_mem.aot_store32_block(vfpu_address, tier2_vfpu_words); }
|
|
tier2_gpr_5 = (ctx.gpr[28] + static_cast<std::uint32_t>(10048));
|
|
tier2_gpr_31 = (0x08A7D7A4u);
|
|
tier2_gpr_4 = (tier2_gpr_29 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0163_entry, 163u, 464u, 0x08A931D0u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D7A4u) goto SB_L_08A7D7A4;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D7A4:
|
|
{ const std::uint32_t vfpu_address = tier2_gpr_29 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t tier2_vfpu_words[4]{}; tier2_mem.aot_load32_block(vfpu_address, tier2_vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(tier2_vfpu_words[0]),
|
|
std::bit_cast<float>(tier2_vfpu_words[1]),
|
|
std::bit_cast<float>(tier2_vfpu_words[2]),
|
|
std::bit_cast<float>(tier2_vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vdot_ct<28u, 0u, 0u, 3u>();
|
|
{ float vfpu_s[4]{}, vfpu_d[4]{};
|
|
ctx.read_vfpu_vector_with_source_prefix_ct<28u, 1u, 0u>(vfpu_s);
|
|
for (std::uint32_t i = 0; i < 1u; ++i) vfpu_d[i] = std::fabs(std::sqrt(vfpu_s[i]));
|
|
ctx.write_vfpu_vector_with_destination_prefix_ct<28u, 1u>(vfpu_d); }
|
|
tier2_gpr_4 = (ctx.vfpu_scalar_bits_ct<28u>());
|
|
ctx.fpr[20] = std::bit_cast<float>(tier2_gpr_4);
|
|
tier2_gpr_4 = (17317u << 16u);
|
|
ctx.fpr[12] = std::bit_cast<float>(tier2_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[20] <= ctx.fpr[12])) ? 0x00800000u : 0u);
|
|
// nop
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D7F4;
|
|
}
|
|
goto SB_L_08A7D7D0;
|
|
}
|
|
|
|
SB_L_08A7D7D0:
|
|
tier2_gpr_31 = (0x08A7D7D8u);
|
|
tier2_gpr_4 = (ctx.gpr[17] | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0170_entry, 170u, 396u, 0x08AAE0ECu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D7D8u) goto SB_L_08A7D7D8;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D7D8:
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[20] < ctx.fpr[0])) ? 0x00800000u : 0u);
|
|
// nop
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D7F4;
|
|
}
|
|
goto SB_L_08A7D7E8;
|
|
}
|
|
|
|
SB_L_08A7D7E8:
|
|
tier2_gpr_31 = (0x08A7D7F0u);
|
|
tier2_gpr_4 = (ctx.gpr[17] | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0170_entry, 170u, 396u, 0x08AAE0ECu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D7F0u) goto SB_L_08A7D7F0;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D7F0:
|
|
ctx.fpr[20] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[0]));
|
|
goto SB_L_08A7D7F4;
|
|
|
|
SB_L_08A7D7F4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 14u);
|
|
tier2_gpr_4 = (tier2_gpr_4 ^ 8u);
|
|
tier2_gpr_4 = (tier2_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D84C;
|
|
}
|
|
goto SB_L_08A7D810;
|
|
}
|
|
|
|
SB_L_08A7D810:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_5 = (512u << 16u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D84C;
|
|
}
|
|
goto SB_L_08A7D824;
|
|
}
|
|
|
|
SB_L_08A7D824:
|
|
tier2_gpr_4 = (0u | 1u);
|
|
if (tier2_gpr_4 == 0u) {
|
|
tier2_gpr_4 = (tier2_mem.aot_load16(ctx.gpr[17] + static_cast<std::uint32_t>(58)));
|
|
goto SB_L_08A7D840;
|
|
}
|
|
goto SB_L_08A7D830;
|
|
|
|
SB_L_08A7D830:
|
|
tier2_gpr_4 = (tier2_mem.aot_load16(ctx.gpr[17] + static_cast<std::uint32_t>(58)));
|
|
tier2_gpr_4 = (tier2_gpr_4 | 8u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_mem.aot_store16(ctx.gpr[17] + static_cast<std::uint32_t>(58), static_cast<std::uint16_t>(tier2_gpr_4));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D84C;
|
|
}
|
|
goto SB_L_08A7D840;
|
|
}
|
|
|
|
SB_L_08A7D840:
|
|
tier2_gpr_5 = (0u + static_cast<std::uint32_t>(-9));
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
tier2_mem.aot_store16(ctx.gpr[17] + static_cast<std::uint32_t>(58), static_cast<std::uint16_t>(tier2_gpr_4));
|
|
goto SB_L_08A7D84C;
|
|
|
|
SB_L_08A7D84C:
|
|
tier2_gpr_4 = (ctx.gpr[17] | 0u);
|
|
tier2_gpr_31 = (0x08A7D858u);
|
|
ctx.fpr[12] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[20]));
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0170_entry, 170u, 384u, 0x08AAE058u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D858u) goto SB_L_08A7D858;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D858:
|
|
ctx.gpr[19] = (ctx.gpr[2] | 0u);
|
|
{ const bool branch_taken = ctx.gpr[19] == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D9CC;
|
|
}
|
|
goto SB_L_08A7D864;
|
|
}
|
|
|
|
SB_L_08A7D864:
|
|
tier2_gpr_4 = (0u | 0u);
|
|
if (tier2_gpr_4 == 0u) {
|
|
tier2_gpr_4 = (tier2_mem.aot_load16(ctx.gpr[17] + static_cast<std::uint32_t>(58)));
|
|
goto SB_L_08A7D880;
|
|
}
|
|
goto SB_L_08A7D870;
|
|
|
|
SB_L_08A7D870:
|
|
tier2_gpr_4 = (tier2_mem.aot_load16(ctx.gpr[17] + static_cast<std::uint32_t>(58)));
|
|
tier2_gpr_4 = (tier2_gpr_4 | 8u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_mem.aot_store16(ctx.gpr[17] + static_cast<std::uint32_t>(58), static_cast<std::uint16_t>(tier2_gpr_4));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D88C;
|
|
}
|
|
goto SB_L_08A7D880;
|
|
}
|
|
|
|
SB_L_08A7D880:
|
|
tier2_gpr_5 = (0u + static_cast<std::uint32_t>(-9));
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
tier2_mem.aot_store16(ctx.gpr[17] + static_cast<std::uint32_t>(58), static_cast<std::uint16_t>(tier2_gpr_4));
|
|
goto SB_L_08A7D88C;
|
|
|
|
SB_L_08A7D88C:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(80)));
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D8B0;
|
|
}
|
|
goto SB_L_08A7D898;
|
|
}
|
|
|
|
SB_L_08A7D898:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(92)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(64));
|
|
tier2_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_4 + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
jump_target = tier2_gpr_6;
|
|
tier2_gpr_31 = (0x08A7D8B0u);
|
|
tier2_gpr_4 = (tier2_gpr_16 + tier2_gpr_5);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D8B0u) goto SB_L_08A7D8B0;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D8B0:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(80)));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[19] + static_cast<std::uint32_t>(20)));
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(20)));
|
|
{ const bool branch_taken = tier2_gpr_5 == tier2_gpr_6;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D8D0;
|
|
}
|
|
goto SB_L_08A7D8C4;
|
|
}
|
|
|
|
SB_L_08A7D8C4:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[19] + static_cast<std::uint32_t>(20)));
|
|
tier2_gpr_31 = (0x08A7D8D0u);
|
|
tier2_gpr_6 = (0u | 4u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0085_entry, 85u, 455u, 0x0895B470u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D8D0u) goto SB_L_08A7D8D0;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D8D0:
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[17] + static_cast<std::uint32_t>(57)));
|
|
tier2_gpr_4 = (static_cast<std::int32_t>(tier2_gpr_4) < 239 ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
tier2_gpr_4 = (0u | 255u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D8F0;
|
|
}
|
|
goto SB_L_08A7D8E0;
|
|
}
|
|
|
|
SB_L_08A7D8E0:
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[17] + static_cast<std::uint32_t>(57)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(16));
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_mem.aot_store8(ctx.gpr[17] + static_cast<std::uint32_t>(57), static_cast<std::uint8_t>(tier2_gpr_4));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D8F4;
|
|
}
|
|
goto SB_L_08A7D8F0;
|
|
}
|
|
|
|
SB_L_08A7D8F0:
|
|
tier2_mem.aot_store8(ctx.gpr[17] + static_cast<std::uint32_t>(57), static_cast<std::uint8_t>(tier2_gpr_4));
|
|
goto SB_L_08A7D8F4;
|
|
|
|
SB_L_08A7D8F4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(80)));
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D98C;
|
|
}
|
|
goto SB_L_08A7D900;
|
|
}
|
|
|
|
SB_L_08A7D900:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_5 = (8u << 16u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D98C;
|
|
}
|
|
goto SB_L_08A7D914;
|
|
}
|
|
|
|
SB_L_08A7D914:
|
|
tier2_gpr_31 = (0x08A7D91Cu);
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0179_entry, 179u, 50u, 0x08AD0530u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D91Cu) goto SB_L_08A7D91C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D91C:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D97C;
|
|
}
|
|
goto SB_L_08A7D924;
|
|
}
|
|
|
|
SB_L_08A7D924:
|
|
tier2_gpr_31 = (0x08A7D92Cu);
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0195_entry, 195u, 375u, 0x08B11994u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D92Cu) goto SB_L_08A7D92C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D92C:
|
|
{ const bool branch_taken = ctx.gpr[2] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D97C;
|
|
}
|
|
goto SB_L_08A7D934;
|
|
}
|
|
|
|
SB_L_08A7D934:
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[17] + static_cast<std::uint32_t>(57)));
|
|
tier2_gpr_5 = (0u | 255u);
|
|
{ const bool branch_taken = tier2_gpr_4 != tier2_gpr_5;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D95C;
|
|
}
|
|
goto SB_L_08A7D944;
|
|
}
|
|
|
|
SB_L_08A7D944:
|
|
tier2_gpr_4 = (tier2_mem.aot_load16(ctx.gpr[17] + static_cast<std::uint32_t>(58)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 64u);
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D9A0;
|
|
}
|
|
goto SB_L_08A7D954;
|
|
}
|
|
|
|
SB_L_08A7D954:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D994;
|
|
}
|
|
goto SB_L_08A7D95C;
|
|
}
|
|
|
|
SB_L_08A7D95C:
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
tier2_gpr_31 = (0x08A7D968u);
|
|
ctx.fpr[12] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[20]));
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0080_entry, 80u, 165u, 0x089451D8u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D968u) goto SB_L_08A7D968;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D968:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
ctx.gpr[2] = (0u | 0u);
|
|
tier2_gpr_4 = (tier2_gpr_4 | 128u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_mem.aot_store32(tier2_gpr_16 + static_cast<std::uint32_t>(76), tier2_gpr_4);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D97C;
|
|
}
|
|
|
|
SB_L_08A7D97C:
|
|
tier2_gpr_4 = (0u | 255u);
|
|
tier2_mem.aot_store8(ctx.gpr[17] + static_cast<std::uint32_t>(57), static_cast<std::uint8_t>(tier2_gpr_4));
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 2u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D98C;
|
|
}
|
|
|
|
SB_L_08A7D98C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D994;
|
|
}
|
|
|
|
SB_L_08A7D994:
|
|
tier2_gpr_4 = (tier2_gpr_4 & 16u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7D9C4;
|
|
}
|
|
goto SB_L_08A7D9A0;
|
|
}
|
|
|
|
SB_L_08A7D9A0:
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
tier2_gpr_31 = (0x08A7D9ACu);
|
|
ctx.fpr[12] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[20]));
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0080_entry, 80u, 165u, 0x089451D8u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7D9ACu) goto SB_L_08A7D9AC;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7D9AC:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
tier2_gpr_5 = (0u + static_cast<std::uint32_t>(-129));
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
tier2_mem.aot_store32(tier2_gpr_16 + static_cast<std::uint32_t>(76), tier2_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D9C4;
|
|
}
|
|
|
|
SB_L_08A7D9C4:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7D9CC;
|
|
}
|
|
|
|
SB_L_08A7D9CC:
|
|
tier2_gpr_4 = (tier2_mem.aot_load16(ctx.gpr[17] + static_cast<std::uint32_t>(58)));
|
|
tier2_gpr_4 = (tier2_gpr_4 & 32u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DA38;
|
|
}
|
|
goto SB_L_08A7D9DC;
|
|
}
|
|
|
|
SB_L_08A7D9DC:
|
|
tier2_gpr_4 = (0u | 0u);
|
|
if (tier2_gpr_4 == 0u) {
|
|
tier2_gpr_4 = (tier2_mem.aot_load16(ctx.gpr[17] + static_cast<std::uint32_t>(58)));
|
|
goto SB_L_08A7D9F8;
|
|
}
|
|
goto SB_L_08A7D9E8;
|
|
|
|
SB_L_08A7D9E8:
|
|
tier2_gpr_4 = (tier2_mem.aot_load16(ctx.gpr[17] + static_cast<std::uint32_t>(58)));
|
|
tier2_gpr_4 = (tier2_gpr_4 | 8u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_mem.aot_store16(ctx.gpr[17] + static_cast<std::uint32_t>(58), static_cast<std::uint16_t>(tier2_gpr_4));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DA04;
|
|
}
|
|
goto SB_L_08A7D9F8;
|
|
}
|
|
|
|
SB_L_08A7D9F8:
|
|
tier2_gpr_5 = (0u + static_cast<std::uint32_t>(-9));
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
tier2_mem.aot_store16(ctx.gpr[17] + static_cast<std::uint32_t>(58), static_cast<std::uint16_t>(tier2_gpr_4));
|
|
goto SB_L_08A7DA04;
|
|
|
|
SB_L_08A7DA04:
|
|
tier2_gpr_31 = (0x08A7DA0Cu);
|
|
tier2_gpr_4 = (ctx.gpr[17] | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0170_entry, 170u, 396u, 0x08AAE0ECu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7DA0Cu) goto SB_L_08A7DA0C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7DA0C:
|
|
tier2_gpr_4 = (16880u << 16u);
|
|
ctx.fpr[12] = std::bit_cast<float>(tier2_gpr_4);
|
|
ctx.fpr[12] = ctx.fpr[20] - ctx.fpr[12];
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[0] <= ctx.fpr[12])) ? 0x00800000u : 0u);
|
|
// nop
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB98;
|
|
}
|
|
goto SB_L_08A7DA28;
|
|
}
|
|
|
|
SB_L_08A7DA28:
|
|
{ const bool branch_taken = ctx.gpr[18] == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB98;
|
|
}
|
|
goto SB_L_08A7DA30;
|
|
}
|
|
|
|
SB_L_08A7DA30:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 3u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7DA38;
|
|
}
|
|
|
|
SB_L_08A7DA38:
|
|
tier2_gpr_4 = (16800u << 16u);
|
|
ctx.fpr[12] = std::bit_cast<float>(tier2_gpr_4);
|
|
tier2_gpr_4 = (ctx.gpr[17] | 0u);
|
|
tier2_gpr_31 = (0x08A7DA4Cu);
|
|
ctx.fpr[12] = ctx.fpr[20] - ctx.fpr[12];
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0170_entry, 170u, 401u, 0x08AAE140u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7DA4Cu) goto SB_L_08A7DA4C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7DA4C:
|
|
tier2_gpr_4 = (0u | 0u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
ctx.gpr[19] = (ctx.gpr[2] | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DA68;
|
|
}
|
|
goto SB_L_08A7DA58;
|
|
}
|
|
|
|
SB_L_08A7DA58:
|
|
tier2_gpr_4 = (tier2_mem.aot_load16(ctx.gpr[17] + static_cast<std::uint32_t>(58)));
|
|
tier2_gpr_4 = (tier2_gpr_4 | 8u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_mem.aot_store16(ctx.gpr[17] + static_cast<std::uint32_t>(58), static_cast<std::uint16_t>(tier2_gpr_4));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DA78;
|
|
}
|
|
goto SB_L_08A7DA68;
|
|
}
|
|
|
|
SB_L_08A7DA68:
|
|
tier2_gpr_4 = (tier2_mem.aot_load16(ctx.gpr[17] + static_cast<std::uint32_t>(58)));
|
|
tier2_gpr_5 = (0u + static_cast<std::uint32_t>(-9));
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
tier2_mem.aot_store16(ctx.gpr[17] + static_cast<std::uint32_t>(58), static_cast<std::uint16_t>(tier2_gpr_4));
|
|
goto SB_L_08A7DA78;
|
|
|
|
SB_L_08A7DA78:
|
|
{ const bool branch_taken = ctx.gpr[19] == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB64;
|
|
}
|
|
goto SB_L_08A7DA80;
|
|
}
|
|
|
|
SB_L_08A7DA80:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(80)));
|
|
{ const bool branch_taken = tier2_gpr_4 != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DAA4;
|
|
}
|
|
goto SB_L_08A7DA8C;
|
|
}
|
|
|
|
SB_L_08A7DA8C:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(92)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(64));
|
|
tier2_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(tier2_mem.aot_load16(tier2_gpr_4 + static_cast<std::uint32_t>(0))))));
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
jump_target = tier2_gpr_6;
|
|
tier2_gpr_31 = (0x08A7DAA4u);
|
|
tier2_gpr_4 = (tier2_gpr_16 + tier2_gpr_5);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7DAA4u) goto SB_L_08A7DAA4;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7DAA4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(80)));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[19] + static_cast<std::uint32_t>(20)));
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(20)));
|
|
{ const bool branch_taken = tier2_gpr_5 == tier2_gpr_6;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DAC4;
|
|
}
|
|
goto SB_L_08A7DAB8;
|
|
}
|
|
|
|
SB_L_08A7DAB8:
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[19] + static_cast<std::uint32_t>(20)));
|
|
tier2_gpr_31 = (0x08A7DAC4u);
|
|
tier2_gpr_6 = (0u | 4u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0085_entry, 85u, 455u, 0x0895B470u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7DAC4u) goto SB_L_08A7DAC4;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7DAC4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[17] + static_cast<std::uint32_t>(57)));
|
|
tier2_gpr_4 = (static_cast<std::int32_t>(tier2_gpr_4) < 239 ? 1u : 0u);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
tier2_gpr_4 = (0u | 255u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DAE4;
|
|
}
|
|
goto SB_L_08A7DAD4;
|
|
}
|
|
|
|
SB_L_08A7DAD4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[17] + static_cast<std::uint32_t>(57)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(16));
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_mem.aot_store8(ctx.gpr[17] + static_cast<std::uint32_t>(57), static_cast<std::uint8_t>(tier2_gpr_4));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DAE8;
|
|
}
|
|
goto SB_L_08A7DAE4;
|
|
}
|
|
|
|
SB_L_08A7DAE4:
|
|
tier2_mem.aot_store8(ctx.gpr[17] + static_cast<std::uint32_t>(57), static_cast<std::uint8_t>(tier2_gpr_4));
|
|
goto SB_L_08A7DAE8;
|
|
|
|
SB_L_08A7DAE8:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(80)));
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB20;
|
|
}
|
|
goto SB_L_08A7DAF4;
|
|
}
|
|
|
|
SB_L_08A7DAF4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
tier2_gpr_5 = (8u << 16u);
|
|
tier2_gpr_4 = (tier2_gpr_4 & tier2_gpr_5);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB20;
|
|
}
|
|
goto SB_L_08A7DB08;
|
|
}
|
|
|
|
SB_L_08A7DB08:
|
|
tier2_gpr_31 = (0x08A7DB10u);
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0179_entry, 179u, 50u, 0x08AD0530u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7DB10u) goto SB_L_08A7DB10;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7DB10:
|
|
{ const bool branch_taken = ctx.gpr[2] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB28;
|
|
}
|
|
goto SB_L_08A7DB18;
|
|
}
|
|
|
|
SB_L_08A7DB18:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB54;
|
|
}
|
|
goto SB_L_08A7DB20;
|
|
}
|
|
|
|
SB_L_08A7DB20:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7DB28;
|
|
}
|
|
|
|
SB_L_08A7DB28:
|
|
tier2_gpr_31 = (0x08A7DB30u);
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0195_entry, 195u, 375u, 0x08B11994u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7DB30u) goto SB_L_08A7DB30;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7DB30:
|
|
{ const bool branch_taken = ctx.gpr[2] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB54;
|
|
}
|
|
goto SB_L_08A7DB38;
|
|
}
|
|
|
|
SB_L_08A7DB38:
|
|
tier2_gpr_4 = (tier2_gpr_16 | 0u);
|
|
tier2_gpr_31 = (0x08A7DB44u);
|
|
ctx.fpr[12] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[20]));
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0080_entry, 80u, 165u, 0x089451D8u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7DB44u) goto SB_L_08A7DB44;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7DB44:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_16 + static_cast<std::uint32_t>(76)));
|
|
tier2_gpr_4 = (tier2_gpr_4 | 128u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
tier2_mem.aot_store32(tier2_gpr_16 + static_cast<std::uint32_t>(76), tier2_gpr_4);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB5C;
|
|
}
|
|
goto SB_L_08A7DB54;
|
|
}
|
|
|
|
SB_L_08A7DB54:
|
|
tier2_gpr_4 = (0u | 255u);
|
|
tier2_mem.aot_store8(ctx.gpr[17] + static_cast<std::uint32_t>(57), static_cast<std::uint8_t>(tier2_gpr_4));
|
|
goto SB_L_08A7DB5C;
|
|
|
|
SB_L_08A7DB5C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 2u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7DB64;
|
|
}
|
|
|
|
SB_L_08A7DB64:
|
|
tier2_gpr_31 = (0x08A7DB6Cu);
|
|
tier2_gpr_4 = (ctx.gpr[17] | 0u);
|
|
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0170_entry, 170u, 396u, 0x08AAE0ECu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x08A7DB6Cu) goto SB_L_08A7DB6C;
|
|
TIER2_SB_RETURN();
|
|
|
|
SB_L_08A7DB6C:
|
|
tier2_gpr_4 = (16968u << 16u);
|
|
ctx.fpr[12] = std::bit_cast<float>(tier2_gpr_4);
|
|
ctx.fpr[12] = ctx.fpr[20] - ctx.fpr[12];
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[0] <= ctx.fpr[12])) ? 0x00800000u : 0u);
|
|
// nop
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB98;
|
|
}
|
|
goto SB_L_08A7DB88;
|
|
}
|
|
|
|
SB_L_08A7DB88:
|
|
{ const bool branch_taken = ctx.gpr[18] == 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB98;
|
|
}
|
|
goto SB_L_08A7DB90;
|
|
}
|
|
|
|
SB_L_08A7DB90:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 3u);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7DB9C;
|
|
}
|
|
goto SB_L_08A7DB98;
|
|
}
|
|
|
|
SB_L_08A7DB98:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
goto SB_L_08A7DB9C;
|
|
|
|
SB_L_08A7DB9C:
|
|
{ std::uint32_t tier2_words[6]{};
|
|
if (tier2_mem.aot_try_load32_block(tier2_gpr_29 + static_cast<std::uint32_t>(116), tier2_words)) {
|
|
ctx.fpr[20] = std::bit_cast<float>(tier2_words[0]);
|
|
tier2_gpr_16 = tier2_words[1];
|
|
ctx.gpr[17] = tier2_words[2];
|
|
ctx.gpr[18] = tier2_words[3];
|
|
ctx.gpr[19] = tier2_words[4];
|
|
tier2_gpr_31 = tier2_words[5];
|
|
} else {
|
|
ctx.fpr[20] = std::bit_cast<float>(tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(116)));
|
|
tier2_gpr_16 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(120)));
|
|
ctx.gpr[17] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(124)));
|
|
ctx.gpr[18] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(128)));
|
|
ctx.gpr[19] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(132)));
|
|
tier2_gpr_31 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(136)));
|
|
} }
|
|
jump_target = tier2_gpr_31;
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(144));
|
|
local_pc = jump_target;
|
|
goto TIER2_LOCAL_DISPATCH_U0158;
|
|
|
|
SB_L_08A7EC68:
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(-80));
|
|
tier2_gpr_5 = (0u | 12u);
|
|
tier2_gpr_6 = (tier2_mem.aot_load8(ctx.gpr[28] + static_cast<std::uint32_t>(-7080)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(8));
|
|
{ const std::uint32_t tier2_words[13]{tier2_gpr_5, std::bit_cast<std::uint32_t>(ctx.fpr[20]), std::bit_cast<std::uint32_t>(ctx.fpr[22]), tier2_gpr_16, ctx.gpr[17], ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[22], ctx.gpr[23], ctx.gpr[30], tier2_gpr_31};
|
|
tier2_mem.aot_store32_block(tier2_gpr_29 + static_cast<std::uint32_t>(16), tier2_words); }
|
|
{ const bool branch_taken = tier2_gpr_6 == 0u;
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(12), tier2_gpr_4);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7ECBC;
|
|
}
|
|
goto SB_L_08A7ECB4;
|
|
}
|
|
|
|
SB_L_08A7ECB4:
|
|
tier2_gpr_4 = (0u | 3u);
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(16), tier2_gpr_4);
|
|
goto SB_L_08A7ECBC;
|
|
|
|
SB_L_08A7ECBC:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(16)));
|
|
tier2_gpr_5 = (tier2_gpr_4 + static_cast<std::uint32_t>(-1));
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(8), tier2_gpr_5);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(16), tier2_gpr_5);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7F048;
|
|
}
|
|
goto SB_L_08A7ECD0;
|
|
}
|
|
|
|
SB_L_08A7ECD0:
|
|
tier2_gpr_4 = (ctx.gpr[28] + static_cast<std::uint32_t>(-5492));
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(4), tier2_gpr_4);
|
|
tier2_gpr_4 = (49648u << 16u);
|
|
tier2_gpr_5 = (2280u << 16u);
|
|
ctx.fpr[20] = std::bit_cast<float>(tier2_gpr_4);
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(-29568));
|
|
ctx.gpr[30] = (2280u << 16u);
|
|
ctx.gpr[23] = (2279u << 16u);
|
|
tier2_gpr_4 = (16880u << 16u);
|
|
ctx.gpr[20] = (2280u << 16u);
|
|
ctx.fpr[22] = std::bit_cast<float>(tier2_gpr_4);
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(0), tier2_gpr_5);
|
|
ctx.gpr[22] = (0u | 1u);
|
|
ctx.gpr[21] = (0u | 3u);
|
|
ctx.gpr[30] = (ctx.gpr[30] + static_cast<std::uint32_t>(-21568));
|
|
ctx.gpr[23] = (ctx.gpr[23] + static_cast<std::uint32_t>(27328));
|
|
ctx.gpr[20] = (ctx.gpr[20] + static_cast<std::uint32_t>(-30208));
|
|
goto SB_L_08A7ED14;
|
|
|
|
SB_L_08A7ED14:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(12)));
|
|
ctx.gpr[19] = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(4));
|
|
{ const bool branch_taken = ctx.gpr[19] == 0u;
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(12), tier2_gpr_4);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7F030;
|
|
}
|
|
goto SB_L_08A7ED28;
|
|
}
|
|
|
|
SB_L_08A7ED28:
|
|
ctx.gpr[17] = (tier2_mem.aot_load32(ctx.gpr[19] + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_5 = (tier2_mem.aot_load16(ctx.gpr[17] + static_cast<std::uint32_t>(84)));
|
|
tier2_gpr_4 = (tier2_mem.aot_load16(ctx.gpr[28] + static_cast<std::uint32_t>(-25492)));
|
|
{ const bool branch_taken = tier2_gpr_5 == tier2_gpr_4;
|
|
ctx.gpr[19] = (tier2_mem.aot_load32(ctx.gpr[19] + static_cast<std::uint32_t>(8)));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7F028;
|
|
}
|
|
goto SB_L_08A7ED3C;
|
|
}
|
|
|
|
SB_L_08A7ED3C:
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(ctx.gpr[17] + static_cast<std::uint32_t>(76)));
|
|
tier2_gpr_5 = (0u + static_cast<std::uint32_t>(-1025));
|
|
tier2_mem.aot_store16(ctx.gpr[17] + static_cast<std::uint32_t>(84), static_cast<std::uint16_t>(tier2_gpr_4));
|
|
tier2_gpr_4 = (tier2_gpr_6 & tier2_gpr_5);
|
|
tier2_mem.aot_store32(ctx.gpr[17] + static_cast<std::uint32_t>(76), tier2_gpr_4);
|
|
tier2_gpr_31 = (0x08A7ED58u);
|
|
tier2_gpr_4 = (ctx.gpr[17] | 0u);
|
|
goto SB_L_08A7CEC8;
|
|
|
|
SB_L_08A7F028:
|
|
{ const bool branch_taken = ctx.gpr[19] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7ED28;
|
|
}
|
|
goto SB_L_08A7F030;
|
|
}
|
|
|
|
SB_L_08A7F030:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(16)));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(8)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(-1));
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(8), tier2_gpr_4);
|
|
{ const bool branch_taken = tier2_gpr_5 != 0u;
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(16), tier2_gpr_4);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7ED14;
|
|
}
|
|
goto SB_L_08A7F048;
|
|
}
|
|
|
|
SB_L_08A7F048:
|
|
{ std::uint32_t tier2_words[12]{};
|
|
if (tier2_mem.aot_try_load32_block(tier2_gpr_29 + static_cast<std::uint32_t>(20), tier2_words)) {
|
|
ctx.fpr[20] = std::bit_cast<float>(tier2_words[0]);
|
|
ctx.fpr[22] = std::bit_cast<float>(tier2_words[1]);
|
|
tier2_gpr_16 = tier2_words[2];
|
|
ctx.gpr[17] = tier2_words[3];
|
|
ctx.gpr[18] = tier2_words[4];
|
|
ctx.gpr[19] = tier2_words[5];
|
|
ctx.gpr[20] = tier2_words[6];
|
|
ctx.gpr[21] = tier2_words[7];
|
|
ctx.gpr[22] = tier2_words[8];
|
|
ctx.gpr[23] = tier2_words[9];
|
|
ctx.gpr[30] = tier2_words[10];
|
|
tier2_gpr_31 = tier2_words[11];
|
|
} else {
|
|
ctx.fpr[20] = std::bit_cast<float>(tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(20)));
|
|
ctx.fpr[22] = std::bit_cast<float>(tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(24)));
|
|
tier2_gpr_16 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(28)));
|
|
ctx.gpr[17] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(32)));
|
|
ctx.gpr[18] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(36)));
|
|
ctx.gpr[19] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(40)));
|
|
ctx.gpr[20] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(44)));
|
|
ctx.gpr[21] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(48)));
|
|
ctx.gpr[22] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(52)));
|
|
ctx.gpr[23] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(56)));
|
|
ctx.gpr[30] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(60)));
|
|
tier2_gpr_31 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(64)));
|
|
} }
|
|
jump_target = tier2_gpr_31;
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(80));
|
|
local_pc = jump_target;
|
|
goto TIER2_LOCAL_DISPATCH_U0158;
|
|
|
|
SB_L_08A7F080:
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(-80));
|
|
tier2_gpr_5 = (0u | 12u);
|
|
tier2_gpr_6 = (tier2_mem.aot_load8(ctx.gpr[28] + static_cast<std::uint32_t>(-7080)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(8));
|
|
{ const std::uint32_t tier2_words[13]{tier2_gpr_5, std::bit_cast<std::uint32_t>(ctx.fpr[20]), std::bit_cast<std::uint32_t>(ctx.fpr[22]), tier2_gpr_16, ctx.gpr[17], ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[22], ctx.gpr[23], ctx.gpr[30], tier2_gpr_31};
|
|
tier2_mem.aot_store32_block(tier2_gpr_29 + static_cast<std::uint32_t>(16), tier2_words); }
|
|
{ const bool branch_taken = tier2_gpr_6 == 0u;
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(12), tier2_gpr_4);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7F0D4;
|
|
}
|
|
goto SB_L_08A7F0CC;
|
|
}
|
|
|
|
SB_L_08A7F0CC:
|
|
tier2_gpr_4 = (0u | 4u);
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(16), tier2_gpr_4);
|
|
goto SB_L_08A7F0D4;
|
|
|
|
SB_L_08A7F0D4:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(16)));
|
|
tier2_gpr_5 = (tier2_gpr_4 + static_cast<std::uint32_t>(-1));
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(8), tier2_gpr_5);
|
|
{ const bool branch_taken = tier2_gpr_4 == 0u;
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(16), tier2_gpr_5);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7F4A0;
|
|
}
|
|
goto SB_L_08A7F0E8;
|
|
}
|
|
|
|
SB_L_08A7F0E8:
|
|
tier2_gpr_4 = (ctx.gpr[28] + static_cast<std::uint32_t>(-5492));
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(4), tier2_gpr_4);
|
|
tier2_gpr_4 = (49648u << 16u);
|
|
tier2_gpr_5 = (2280u << 16u);
|
|
ctx.fpr[20] = std::bit_cast<float>(tier2_gpr_4);
|
|
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(-29568));
|
|
ctx.gpr[30] = (2280u << 16u);
|
|
ctx.gpr[23] = (2279u << 16u);
|
|
tier2_gpr_4 = (16880u << 16u);
|
|
ctx.gpr[20] = (2280u << 16u);
|
|
ctx.fpr[22] = std::bit_cast<float>(tier2_gpr_4);
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(0), tier2_gpr_5);
|
|
ctx.gpr[22] = (0u | 1u);
|
|
ctx.gpr[21] = (0u | 3u);
|
|
ctx.gpr[30] = (ctx.gpr[30] + static_cast<std::uint32_t>(-21568));
|
|
ctx.gpr[23] = (ctx.gpr[23] + static_cast<std::uint32_t>(27328));
|
|
ctx.gpr[20] = (ctx.gpr[20] + static_cast<std::uint32_t>(-30208));
|
|
goto SB_L_08A7F12C;
|
|
|
|
SB_L_08A7F12C:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(12)));
|
|
ctx.gpr[19] = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(4));
|
|
{ const bool branch_taken = ctx.gpr[19] == 0u;
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(12), tier2_gpr_4);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7F488;
|
|
}
|
|
goto SB_L_08A7F140;
|
|
}
|
|
|
|
SB_L_08A7F140:
|
|
ctx.gpr[17] = (tier2_mem.aot_load32(ctx.gpr[19] + static_cast<std::uint32_t>(0)));
|
|
tier2_gpr_5 = (tier2_mem.aot_load16(ctx.gpr[17] + static_cast<std::uint32_t>(84)));
|
|
tier2_gpr_4 = (tier2_mem.aot_load16(ctx.gpr[28] + static_cast<std::uint32_t>(-25492)));
|
|
{ const bool branch_taken = tier2_gpr_5 == tier2_gpr_4;
|
|
ctx.gpr[19] = (tier2_mem.aot_load32(ctx.gpr[19] + static_cast<std::uint32_t>(8)));
|
|
if (branch_taken) {
|
|
goto SB_L_08A7F480;
|
|
}
|
|
goto SB_L_08A7F154;
|
|
}
|
|
|
|
SB_L_08A7F154:
|
|
tier2_gpr_6 = (tier2_mem.aot_load32(ctx.gpr[17] + static_cast<std::uint32_t>(76)));
|
|
tier2_gpr_5 = (0u + static_cast<std::uint32_t>(-1025));
|
|
tier2_mem.aot_store16(ctx.gpr[17] + static_cast<std::uint32_t>(84), static_cast<std::uint16_t>(tier2_gpr_4));
|
|
tier2_gpr_4 = (tier2_gpr_6 & tier2_gpr_5);
|
|
tier2_mem.aot_store32(ctx.gpr[17] + static_cast<std::uint32_t>(76), tier2_gpr_4);
|
|
tier2_gpr_31 = (0x08A7F170u);
|
|
tier2_gpr_4 = (ctx.gpr[17] | 0u);
|
|
goto SB_L_08A7CEC8;
|
|
|
|
SB_L_08A7F480:
|
|
{ const bool branch_taken = ctx.gpr[19] != 0u;
|
|
// nop
|
|
if (branch_taken) {
|
|
goto SB_L_08A7F140;
|
|
}
|
|
goto SB_L_08A7F488;
|
|
}
|
|
|
|
SB_L_08A7F488:
|
|
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(16)));
|
|
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(8)));
|
|
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(-1));
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(8), tier2_gpr_4);
|
|
{ const bool branch_taken = tier2_gpr_5 != 0u;
|
|
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(16), tier2_gpr_4);
|
|
if (branch_taken) {
|
|
goto SB_L_08A7F12C;
|
|
}
|
|
goto SB_L_08A7F4A0;
|
|
}
|
|
|
|
SB_L_08A7F4A0:
|
|
{ std::uint32_t tier2_words[12]{};
|
|
if (tier2_mem.aot_try_load32_block(tier2_gpr_29 + static_cast<std::uint32_t>(20), tier2_words)) {
|
|
ctx.fpr[20] = std::bit_cast<float>(tier2_words[0]);
|
|
ctx.fpr[22] = std::bit_cast<float>(tier2_words[1]);
|
|
tier2_gpr_16 = tier2_words[2];
|
|
ctx.gpr[17] = tier2_words[3];
|
|
ctx.gpr[18] = tier2_words[4];
|
|
ctx.gpr[19] = tier2_words[5];
|
|
ctx.gpr[20] = tier2_words[6];
|
|
ctx.gpr[21] = tier2_words[7];
|
|
ctx.gpr[22] = tier2_words[8];
|
|
ctx.gpr[23] = tier2_words[9];
|
|
ctx.gpr[30] = tier2_words[10];
|
|
tier2_gpr_31 = tier2_words[11];
|
|
} else {
|
|
ctx.fpr[20] = std::bit_cast<float>(tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(20)));
|
|
ctx.fpr[22] = std::bit_cast<float>(tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(24)));
|
|
tier2_gpr_16 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(28)));
|
|
ctx.gpr[17] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(32)));
|
|
ctx.gpr[18] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(36)));
|
|
ctx.gpr[19] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(40)));
|
|
ctx.gpr[20] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(44)));
|
|
ctx.gpr[21] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(48)));
|
|
ctx.gpr[22] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(52)));
|
|
ctx.gpr[23] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(56)));
|
|
ctx.gpr[30] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(60)));
|
|
tier2_gpr_31 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(64)));
|
|
} }
|
|
jump_target = tier2_gpr_31;
|
|
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(80));
|
|
local_pc = jump_target;
|
|
goto TIER2_LOCAL_DISPATCH_U0158;
|
|
|
|
SB_L_08A7FAA4:
|
|
ctx.gpr[2] = (2216u << 16u);
|
|
jump_target = tier2_gpr_31;
|
|
ctx.gpr[2] = (ctx.gpr[2] + static_cast<std::uint32_t>(-1372));
|
|
local_pc = jump_target;
|
|
goto TIER2_LOCAL_DISPATCH_U0158;
|
|
// TIER2_GPR_BODY_END
|
|
|
|
#undef TIER2_SB_RETURN
|
|
#undef TIER2_GPR_BEFORE_COLD
|
|
#undef TIER2_GPR_SYNC_IN
|
|
#undef TIER2_GPR_SYNC_OUT
|
|
}
|
|
|
|
} // namespace vcs
|