Files
PSPRecomp/profiles/vcs/host/vcs_tier2_cluster_boundary.cpp
T
Jessica_Natalia 568c95072d fixed severe audio slowdown on the news report at begin of the game
fixed severe audio slowdown on the news report at begin of the game
2026-08-18 00:52:04 -03:00

1237 lines
59 KiB
C++

// AUTO-GENERATED by profiles/vcs/tools/build_tier2_superblocks.py.
// Tier-2 SUPERBLOCK V4 150FPS cluster: boundary
#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_boundary(psprecomp::Runtime &rt,
psprecomp::AllegrexContext &ctx,
psprecomp::GuestMemory::AotFastView &aot_mem,
std::uint32_t entry_pc) {
tier2_detail::SampleScope tier2_scope(Tier2ClusterId::Boundary);
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_6 = ctx.gpr[6];
std::uint32_t tier2_gpr_17 = ctx.gpr[17];
std::uint32_t tier2_gpr_7 = ctx.gpr[7];
std::uint32_t tier2_gpr_29 = ctx.gpr[29];
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[6] = tier2_gpr_6; ctx.gpr[17] = tier2_gpr_17; ctx.gpr[7] = tier2_gpr_7; ctx.gpr[29] = tier2_gpr_29; } } 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_6 = ctx.gpr[6]; tier2_gpr_17 = ctx.gpr[17]; tier2_gpr_7 = ctx.gpr[7]; tier2_gpr_29 = ctx.gpr[29]; } } 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 0x0895BF3Cu: goto SB_L_0895BF3C;
case 0x0895BF5Cu: goto SB_L_0895BF5C;
case 0x0895BF7Cu: goto SB_L_0895BF7C;
case 0x0895BF88u: goto SB_L_0895BF88;
case 0x0895BFBCu: goto SB_L_0895BFBC;
case 0x0895C000u: goto SB_L_0895C000;
case 0x0895C01Cu: goto SB_L_0895C01C;
case 0x0895C044u: goto SB_L_0895C044;
case 0x0895C04Cu: goto SB_L_0895C04C;
case 0x0895C058u: goto SB_L_0895C058;
case 0x0895C064u: goto SB_L_0895C064;
case 0x0895C074u: goto SB_L_0895C074;
case 0x0895C080u: goto SB_L_0895C080;
case 0x0895C08Cu: goto SB_L_0895C08C;
case 0x0895C098u: goto SB_L_0895C098;
case 0x0895C0A4u: goto SB_L_0895C0A4;
case 0x0895C0A8u: goto SB_L_0895C0A8;
case 0x0895C118u: goto SB_L_0895C118;
case 0x0895C1B4u: goto SB_L_0895C1B4;
case 0x0895C1D4u: goto SB_L_0895C1D4;
case 0x0895C1E0u: goto SB_L_0895C1E0;
case 0x0895C1FCu: goto SB_L_0895C1FC;
case 0x0895C208u: goto SB_L_0895C208;
case 0x0895C214u: goto SB_L_0895C214;
case 0x0895C220u: goto SB_L_0895C220;
case 0x0895C244u: goto SB_L_0895C244;
case 0x0895C28Cu: goto SB_L_0895C28C;
case 0x0895C2A8u: goto SB_L_0895C2A8;
case 0x0895C2C0u: goto SB_L_0895C2C0;
case 0x0895C2C8u: goto SB_L_0895C2C8;
case 0x0895C318u: goto SB_L_0895C318;
case 0x0895C324u: goto SB_L_0895C324;
case 0x0895C34Cu: goto SB_L_0895C34C;
case 0x0895C54Cu: goto SB_L_0895C54C;
case 0x0895C564u: goto SB_L_0895C564;
case 0x0895C570u: goto SB_L_0895C570;
case 0x0895C640u: goto SB_L_0895C640;
case 0x0895C658u: goto SB_L_0895C658;
case 0x0895C694u: goto SB_L_0895C694;
case 0x0895C6B8u: goto SB_L_0895C6B8;
case 0x0895C6C4u: goto SB_L_0895C6C4;
case 0x0895C6D0u: goto SB_L_0895C6D0;
case 0x0895C6DCu: goto SB_L_0895C6DC;
case 0x0895C6E4u: goto SB_L_0895C6E4;
case 0x0895C6F0u: goto SB_L_0895C6F0;
case 0x0895C6FCu: goto SB_L_0895C6FC;
case 0x0895C708u: goto SB_L_0895C708;
case 0x0895C710u: goto SB_L_0895C710;
case 0x0895C734u: goto SB_L_0895C734;
case 0x0895C748u: goto SB_L_0895C748;
case 0x0895C760u: goto SB_L_0895C760;
case 0x0895C764u: goto SB_L_0895C764;
case 0x0895C800u: goto SB_L_0895C800;
case 0x0895C848u: goto SB_L_0895C848;
case 0x0895C864u: goto SB_L_0895C864;
case 0x0895C868u: goto SB_L_0895C868;
case 0x0895C878u: goto SB_L_0895C878;
case 0x0895C884u: goto SB_L_0895C884;
case 0x0895C88Cu: goto SB_L_0895C88C;
case 0x0895C8C4u: goto SB_L_0895C8C4;
case 0x0895C918u: goto SB_L_0895C918;
case 0x0895C934u: goto SB_L_0895C934;
default: break;
}
switch (tier2_resume_unit) {
default: break;
}
ctx.pc = tier2_resume_pc;
TIER2_SB_RETURN();
TIER2_LOCAL_DISPATCH_U0085:
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 0x0895BF3Cu: goto SB_L_0895BF3C;
case 0x0895BF5Cu: goto SB_L_0895BF5C;
case 0x0895BF7Cu: goto SB_L_0895BF7C;
case 0x0895BF88u: goto SB_L_0895BF88;
case 0x0895BFBCu: goto SB_L_0895BFBC;
default:
ctx.pc = local_pc;
TIER2_SB_RETURN();
}
TIER2_LOCAL_DISPATCH_U0086:
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 0x0895C000u: goto SB_L_0895C000;
case 0x0895C01Cu: goto SB_L_0895C01C;
case 0x0895C044u: goto SB_L_0895C044;
case 0x0895C04Cu: goto SB_L_0895C04C;
case 0x0895C058u: goto SB_L_0895C058;
case 0x0895C064u: goto SB_L_0895C064;
case 0x0895C074u: goto SB_L_0895C074;
case 0x0895C080u: goto SB_L_0895C080;
case 0x0895C08Cu: goto SB_L_0895C08C;
case 0x0895C098u: goto SB_L_0895C098;
case 0x0895C0A4u: goto SB_L_0895C0A4;
case 0x0895C0A8u: goto SB_L_0895C0A8;
case 0x0895C118u: goto SB_L_0895C118;
case 0x0895C1B4u: goto SB_L_0895C1B4;
case 0x0895C1D4u: goto SB_L_0895C1D4;
case 0x0895C1E0u: goto SB_L_0895C1E0;
case 0x0895C1FCu: goto SB_L_0895C1FC;
case 0x0895C208u: goto SB_L_0895C208;
case 0x0895C214u: goto SB_L_0895C214;
case 0x0895C220u: goto SB_L_0895C220;
case 0x0895C244u: goto SB_L_0895C244;
case 0x0895C28Cu: goto SB_L_0895C28C;
case 0x0895C2A8u: goto SB_L_0895C2A8;
case 0x0895C2C0u: goto SB_L_0895C2C0;
case 0x0895C2C8u: goto SB_L_0895C2C8;
case 0x0895C318u: goto SB_L_0895C318;
case 0x0895C324u: goto SB_L_0895C324;
case 0x0895C34Cu: goto SB_L_0895C34C;
case 0x0895C54Cu: goto SB_L_0895C54C;
case 0x0895C564u: goto SB_L_0895C564;
case 0x0895C570u: goto SB_L_0895C570;
case 0x0895C640u: goto SB_L_0895C640;
case 0x0895C658u: goto SB_L_0895C658;
case 0x0895C694u: goto SB_L_0895C694;
case 0x0895C6B8u: goto SB_L_0895C6B8;
case 0x0895C6C4u: goto SB_L_0895C6C4;
case 0x0895C6D0u: goto SB_L_0895C6D0;
case 0x0895C6DCu: goto SB_L_0895C6DC;
case 0x0895C6E4u: goto SB_L_0895C6E4;
case 0x0895C6F0u: goto SB_L_0895C6F0;
case 0x0895C6FCu: goto SB_L_0895C6FC;
case 0x0895C708u: goto SB_L_0895C708;
case 0x0895C710u: goto SB_L_0895C710;
case 0x0895C734u: goto SB_L_0895C734;
case 0x0895C748u: goto SB_L_0895C748;
case 0x0895C760u: goto SB_L_0895C760;
case 0x0895C764u: goto SB_L_0895C764;
case 0x0895C800u: goto SB_L_0895C800;
case 0x0895C848u: goto SB_L_0895C848;
case 0x0895C864u: goto SB_L_0895C864;
case 0x0895C868u: goto SB_L_0895C868;
case 0x0895C878u: goto SB_L_0895C878;
case 0x0895C884u: goto SB_L_0895C884;
case 0x0895C88Cu: goto SB_L_0895C88C;
case 0x0895C8C4u: goto SB_L_0895C8C4;
case 0x0895C918u: goto SB_L_0895C918;
case 0x0895C934u: goto SB_L_0895C934;
default:
ctx.pc = local_pc;
TIER2_SB_RETURN();
}
TIER2_ENTRY_DISPATCH:
switch (entry_pc) {
case 0x0895BF3Cu: goto SB_L_0895BF3C;
case 0x0895BF7Cu: goto SB_L_0895BF7C;
case 0x0895C000u: goto SB_L_0895C000;
case 0x0895C01Cu: goto SB_L_0895C01C;
case 0x0895C2A8u: goto SB_L_0895C2A8;
default:
ctx.pc = entry_pc;
++tier2_stats.fallbacks;
TIER2_SB_RETURN();
}
// TIER2_GPR_BODY_BEGIN
SB_L_0895BF3C:
tier2_gpr_4 = (0u | 0u);
tier2_mem.aot_store8(tier2_gpr_29 + static_cast<std::uint32_t>(120), static_cast<std::uint8_t>(tier2_gpr_4));
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(100)));
tier2_gpr_5 = (0u | 0u);
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(8)));
tier2_gpr_4 = (tier2_gpr_5 < tier2_gpr_4 ? 1u : 0u);
{ const bool branch_taken = tier2_gpr_4 == 0u;
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(104), tier2_gpr_5);
if (branch_taken) {
if (!rt.tier2_enter_fused_transfer<86u, 0x0895C2C0u>(ctx)) {
ctx.pc = 0x0895C2C0u;
TIER2_SB_RETURN();
}
++tier2_pending_transfers;
++tier2_stats.fused_tail_edges;
goto SB_L_0895C2C0;
}
goto SB_L_0895BF5C;
}
SB_L_0895BF5C:
ctx.gpr[23] = (10752u << 16u);
ctx.gpr[20] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(100)));
ctx.gpr[21] = (256u << 16u);
ctx.gpr[21] = (ctx.gpr[21] + static_cast<std::uint32_t>(-1));
ctx.gpr[22] = (2560u << 16u);
ctx.gpr[20] = (ctx.gpr[20] + static_cast<std::uint32_t>(72));
tier2_gpr_4 = (tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(108), tier2_gpr_4);
goto SB_L_0895BF7C;
SB_L_0895BF7C:
ctx.gpr[18] = (ctx.gpr[20] | 0u);
{ const bool branch_taken = ctx.gpr[30] == 0u;
tier2_gpr_4 = (15u << 16u);
if (branch_taken) {
if (!rt.tier2_enter_fused_transfer<86u, 0x0895C01Cu>(ctx)) {
ctx.pc = 0x0895C01Cu;
TIER2_SB_RETURN();
}
++tier2_pending_transfers;
++tier2_stats.fused_tail_edges;
goto SB_L_0895C01C;
}
goto SB_L_0895BF88;
}
SB_L_0895BF88:
tier2_gpr_5 = (ctx.gpr[30] >> 8u);
tier2_gpr_4 = (tier2_gpr_5 & tier2_gpr_4);
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(108)));
tier2_gpr_6 = (4096u << 16u);
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(20), tier2_gpr_4);
tier2_gpr_4 = (tier2_gpr_4 | tier2_gpr_6);
{ std::uint32_t tier2_old_pointer = 0u;
tier2_gpr_4 = tier2_mem.aot_append32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_4, &tier2_old_pointer);
tier2_gpr_5 = tier2_old_pointer; }
tier2_gpr_4 = (0u | 0u);
ctx.gpr[2] = (0u | 0u);
goto SB_L_0895BFBC;
SB_L_0895BFBC:
tier2_gpr_5 = (ctx.gpr[20] + tier2_gpr_4);
tier2_gpr_5 = (tier2_mem.aot_load8(tier2_gpr_5 + static_cast<std::uint32_t>(40)));
tier2_gpr_6 = (ctx.gpr[2] | ctx.gpr[23]);
{ std::uint32_t tier2_old_pointer = 0u;
tier2_gpr_6 = tier2_mem.aot_append32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_6, &tier2_old_pointer);
tier2_gpr_7 = tier2_old_pointer; }
tier2_gpr_7 = (tier2_gpr_5 << 4u);
tier2_gpr_7 = (tier2_gpr_7 - tier2_gpr_5);
tier2_gpr_7 = (tier2_gpr_7 - tier2_gpr_5);
tier2_gpr_5 = (tier2_gpr_7 - tier2_gpr_5);
tier2_gpr_5 = (tier2_gpr_5 << 2u);
tier2_gpr_5 = (ctx.gpr[30] + tier2_gpr_5);
tier2_gpr_5 = (tier2_gpr_5 & ctx.gpr[21]);
tier2_gpr_5 = (tier2_gpr_5 | ctx.gpr[22]);
tier2_mem.aot_store32(tier2_gpr_6 + static_cast<std::uint32_t>(0), tier2_gpr_5);
ctx.pc = 0x0895C000u; TIER2_SB_RETURN();
SB_L_0895C000:
tier2_gpr_5 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(1));
tier2_gpr_5 = (tier2_gpr_4 < static_cast<std::uint32_t>(8) ? 1u : 0u);
{ const bool branch_taken = tier2_gpr_5 != 0u;
ctx.gpr[2] = (ctx.gpr[2] + static_cast<std::uint32_t>(12));
if (branch_taken) {
if (!rt.tier2_enter_fused_transfer<85u, 0x0895BFBCu>(ctx)) {
ctx.pc = 0x0895BFBCu;
TIER2_SB_RETURN();
}
++tier2_pending_transfers;
++tier2_stats.fused_tail_edges;
goto SB_L_0895BFBC;
}
goto SB_L_0895C01C;
}
SB_L_0895C01C:
tier2_gpr_4 = (tier2_mem.aot_load16(ctx.gpr[18] + static_cast<std::uint32_t>(6)));
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(92)));
ctx.gpr[19] = (0u | 0u);
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_5 + static_cast<std::uint32_t>(12)));
tier2_gpr_4 = (tier2_gpr_4 << 2u);
tier2_gpr_4 = (tier2_gpr_5 + tier2_gpr_4);
ctx.gpr[16] = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(0)));
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[16] + static_cast<std::uint32_t>(0)));
if (tier2_gpr_4 == 0u) {
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(132), ctx.gpr[21]);
goto SB_L_0895C04C;
}
goto SB_L_0895C044;
SB_L_0895C044:
ctx.gpr[19] = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(0)));
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(132), ctx.gpr[21]);
goto SB_L_0895C04C;
SB_L_0895C04C:
ctx.gpr[21] = (ctx.gpr[16] | 0u);
ctx.gpr[31] = (0x0895C058u);
tier2_gpr_4 = (ctx.gpr[21] | 0u);
TIER2_GPR_SYNC_OUT();
psprecomp::recomp_unit_0206_entry(rt, ctx, 498u, aot_mem);
TIER2_GPR_SYNC_IN();
if (!rt.account_inlined_generated_leaf(ctx)) {
tier2_gpr_shadow_valid = false;
TIER2_SB_RETURN();
}
if (ctx.pc == 0x0895C058u) goto SB_L_0895C058;
tier2_gpr_shadow_valid = false;
TIER2_SB_RETURN();
SB_L_0895C058:
ctx.gpr[16] = (tier2_mem.aot_load32(ctx.gpr[2] + static_cast<std::uint32_t>(0)));
ctx.gpr[31] = (0x0895C064u);
tier2_gpr_4 = (ctx.gpr[21] | 0u);
TIER2_GPR_SYNC_OUT();
psprecomp::recomp_unit_0206_entry(rt, ctx, 499u, aot_mem);
TIER2_GPR_SYNC_IN();
if (!rt.account_inlined_generated_leaf(ctx)) {
tier2_gpr_shadow_valid = false;
TIER2_SB_RETURN();
}
if (ctx.pc == 0x0895C064u) goto SB_L_0895C064;
tier2_gpr_shadow_valid = false;
TIER2_SB_RETURN();
SB_L_0895C064:
tier2_gpr_5 = (ctx.gpr[2] & 2u);
tier2_gpr_4 = (0u | 1u);
{ const bool branch_taken = tier2_gpr_5 == 0u;
ctx.gpr[21] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(132)));
if (branch_taken) {
goto SB_L_0895C0A4;
}
goto SB_L_0895C074;
}
SB_L_0895C074:
tier2_gpr_5 = (tier2_mem.aot_load8(ctx.gpr[28] + static_cast<std::uint32_t>(-17675)));
{ const bool branch_taken = tier2_gpr_5 != 0u;
tier2_gpr_5 = (21760u << 16u);
if (branch_taken) {
goto SB_L_0895C0A8;
}
goto SB_L_0895C080;
}
SB_L_0895C080:
tier2_gpr_5 = (tier2_mem.aot_load8(ctx.gpr[28] + static_cast<std::uint32_t>(-19663)));
{ const bool branch_taken = tier2_gpr_5 != 0u;
tier2_gpr_5 = (21760u << 16u);
if (branch_taken) {
goto SB_L_0895C0A8;
}
goto SB_L_0895C08C;
}
SB_L_0895C08C:
tier2_gpr_5 = (tier2_mem.aot_load8(ctx.gpr[28] + static_cast<std::uint32_t>(-17674)));
{ const bool branch_taken = tier2_gpr_5 == 0u;
tier2_mem.aot_store8(tier2_gpr_29 + static_cast<std::uint32_t>(120), static_cast<std::uint8_t>(tier2_gpr_4));
if (branch_taken) {
goto SB_L_0895C0A4;
}
goto SB_L_0895C098;
}
SB_L_0895C098:
tier2_gpr_7 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(100)));
{ const bool branch_taken = 0u == 0u;
tier2_gpr_7 = (tier2_mem.aot_load32(tier2_gpr_7 + static_cast<std::uint32_t>(8)));
if (branch_taken) {
goto SB_L_0895C2A8;
}
goto SB_L_0895C0A4;
}
SB_L_0895C0A4:
tier2_gpr_5 = (21760u << 16u);
goto SB_L_0895C0A8;
SB_L_0895C0A8:
tier2_gpr_6 = (ctx.gpr[16] & ctx.gpr[21]);
tier2_gpr_5 = (tier2_gpr_6 | tier2_gpr_5);
tier2_gpr_7 = (tier2_mem.aot_load32(tier2_gpr_17 + static_cast<std::uint32_t>(29552)));
tier2_mem.aot_store32(tier2_gpr_7 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_17 + static_cast<std::uint32_t>(29552)));
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(4));
tier2_gpr_7 = (22528u << 16u);
tier2_mem.aot_store32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_5);
ctx.gpr[8] = (ctx.gpr[16] >> 24u);
tier2_gpr_7 = (ctx.gpr[8] | tier2_gpr_7);
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_7);
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_17 + static_cast<std::uint32_t>(29552)));
tier2_gpr_7 = (22016u << 16u);
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(4));
tier2_mem.aot_store32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_5);
tier2_gpr_7 = (tier2_gpr_6 | tier2_gpr_7);
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_7);
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_17 + static_cast<std::uint32_t>(29552)));
tier2_gpr_7 = (22272u << 16u);
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(4));
tier2_mem.aot_store32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_5);
tier2_gpr_6 = (tier2_gpr_6 | tier2_gpr_7);
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_17 + static_cast<std::uint32_t>(29552));
{ const bool branch_taken = ctx.gpr[19] == 0u;
// nop
if (branch_taken) {
goto SB_L_0895C1D4;
}
goto SB_L_0895C118;
}
SB_L_0895C118:
ctx.fpr[12] = std::bit_cast<float>(tier2_mem.aot_load32(ctx.gpr[18] + static_cast<std::uint32_t>(8)));
tier2_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(tier2_mem.aot_load8(ctx.gpr[19] + static_cast<std::uint32_t>(10))))));
tier2_gpr_5 = (tier2_gpr_5 & 63u);
tier2_gpr_4 = (tier2_gpr_4 << (tier2_gpr_5 & 31u));
ctx.fpr[13] = std::bit_cast<float>(tier2_gpr_4);
ctx.fpr[13] = static_cast<float>(static_cast<std::int32_t>(std::bit_cast<std::uint32_t>(ctx.fpr[13])));
{ const float fs = ctx.fpr[12]; const float ft = ctx.fpr[13]; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[12] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[12] = fs * ft; }
ctx.fpr[14] = std::bit_cast<float>(tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(8412)));
{ const float fs = ctx.fpr[12]; const float ft = ctx.fpr[14]; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[12] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[12] = fs * ft; }
tier2_gpr_4 = (53248u << 16u);
tier2_gpr_5 = (std::bit_cast<std::uint32_t>(ctx.fpr[12]));
tier2_gpr_5 = (tier2_gpr_5 >> 8u);
tier2_gpr_4 = (tier2_gpr_5 | tier2_gpr_4);
{ std::uint32_t tier2_old_pointer = 0u;
tier2_gpr_4 = tier2_mem.aot_append32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_4, &tier2_old_pointer);
tier2_gpr_5 = tier2_old_pointer; }
ctx.fpr[13] = std::bit_cast<float>(tier2_mem.aot_load32(ctx.gpr[18] + static_cast<std::uint32_t>(12)));
ctx.fpr[12] = std::bit_cast<float>(tier2_mem.aot_load32(ctx.gpr[18] + static_cast<std::uint32_t>(16)));
tier2_gpr_5 = (std::bit_cast<std::uint32_t>(ctx.fpr[12]));
tier2_gpr_5 = (tier2_gpr_5 >> 8u);
tier2_gpr_6 = (18432u << 16u);
tier2_gpr_7 = (std::bit_cast<std::uint32_t>(ctx.fpr[13]));
tier2_gpr_7 = (tier2_gpr_7 >> 8u);
tier2_gpr_6 = (tier2_gpr_7 | tier2_gpr_6);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_6);
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_17 + static_cast<std::uint32_t>(29552)));
tier2_gpr_6 = (18688u << 16u);
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(4));
tier2_mem.aot_store32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_4);
tier2_gpr_5 = (tier2_gpr_5 | tier2_gpr_6);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_4 = (ctx.gpr[19] | 0u);
ctx.gpr[31] = (0x0895C1B4u);
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_0199_entry, 199u, 283u, 0x08B217D4u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x0895C1B4u) goto SB_L_0895C1B4;
TIER2_SB_RETURN();
SB_L_0895C1B4:
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(100)));
ctx.gpr[19] = (tier2_mem.aot_load16(ctx.gpr[18] + static_cast<std::uint32_t>(4)));
ctx.gpr[19] = (ctx.gpr[19] + static_cast<std::uint32_t>(2));
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(64)));
tier2_gpr_7 = (tier2_gpr_4 + tier2_gpr_5);
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[18] + static_cast<std::uint32_t>(0)));
{ const bool branch_taken = 0u == 0u;
tier2_gpr_7 = (tier2_gpr_7 + tier2_gpr_4);
if (branch_taken) {
goto SB_L_0895C1FC;
}
goto SB_L_0895C1D4;
}
SB_L_0895C1D4:
tier2_gpr_4 = (ctx.gpr[19] | 0u);
ctx.gpr[31] = (0x0895C1E0u);
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_0199_entry, 199u, 283u, 0x08B217D4u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x0895C1E0u) goto SB_L_0895C1E0;
TIER2_SB_RETURN();
SB_L_0895C1E0:
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(100)));
ctx.gpr[19] = (tier2_mem.aot_load16(ctx.gpr[18] + static_cast<std::uint32_t>(4)));
ctx.gpr[19] = (ctx.gpr[19] + static_cast<std::uint32_t>(2));
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(64)));
tier2_gpr_7 = (tier2_gpr_4 + tier2_gpr_5);
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[18] + static_cast<std::uint32_t>(0)));
tier2_gpr_7 = (tier2_gpr_7 + tier2_gpr_4);
goto SB_L_0895C1FC;
SB_L_0895C1FC:
tier2_gpr_4 = (tier2_mem.aot_load8(tier2_gpr_29 + static_cast<std::uint32_t>(128)));
if (tier2_gpr_4 == 0u) {
ctx.gpr[8] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(100)));
goto SB_L_0895C220;
}
goto SB_L_0895C208;
SB_L_0895C208:
tier2_gpr_4 = (tier2_gpr_7 | 0u);
ctx.gpr[31] = (0x0895C214u);
tier2_gpr_5 = (ctx.gpr[19] | 0u);
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0129_entry, 129u, 246u, 0x08A09B2Cu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x0895C214u) goto SB_L_0895C214;
TIER2_SB_RETURN();
SB_L_0895C214:
tier2_gpr_7 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(100)));
{ const bool branch_taken = 0u == 0u;
tier2_gpr_7 = (tier2_mem.aot_load32(tier2_gpr_7 + static_cast<std::uint32_t>(8)));
if (branch_taken) {
goto SB_L_0895C2A8;
}
goto SB_L_0895C220;
}
SB_L_0895C220:
tier2_gpr_4 = (4608u << 16u);
tier2_gpr_5 = (tier2_mem.aot_load32(ctx.gpr[8] + static_cast<std::uint32_t>(4)));
tier2_gpr_4 = (tier2_gpr_5 | tier2_gpr_4);
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_17 + static_cast<std::uint32_t>(29552)));
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_4);
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_17 + static_cast<std::uint32_t>(29552)));
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(4));
{ const bool branch_taken = tier2_gpr_7 == 0u;
tier2_mem.aot_store32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_4);
if (branch_taken) {
goto SB_L_0895C28C;
}
goto SB_L_0895C244;
}
SB_L_0895C244:
tier2_gpr_5 = (15u << 16u);
tier2_gpr_6 = (tier2_gpr_7 >> 8u);
tier2_gpr_5 = (tier2_gpr_6 & tier2_gpr_5);
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(108)));
ctx.gpr[9] = (4096u << 16u);
tier2_mem.aot_store32(tier2_gpr_6 + static_cast<std::uint32_t>(20), tier2_gpr_5);
tier2_gpr_5 = (tier2_gpr_5 | ctx.gpr[9]);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_17 + static_cast<std::uint32_t>(29552)));
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(4));
tier2_gpr_5 = (256u << 16u);
tier2_mem.aot_store32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_4);
tier2_gpr_6 = (tier2_gpr_7 & ctx.gpr[21]);
tier2_gpr_5 = (tier2_gpr_6 | tier2_gpr_5);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
goto SB_L_0895C28C;
SB_L_0895C28C:
tier2_gpr_5 = (1028u << 16u);
tier2_gpr_5 = (ctx.gpr[19] | tier2_gpr_5);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_7 = (tier2_mem.aot_load32(ctx.gpr[8] + static_cast<std::uint32_t>(8)));
goto SB_L_0895C2A8;
SB_L_0895C2A8:
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(104)));
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(1));
ctx.gpr[20] = (ctx.gpr[20] + static_cast<std::uint32_t>(48));
tier2_gpr_5 = (tier2_gpr_4 < tier2_gpr_7 ? 1u : 0u);
{ const bool branch_taken = tier2_gpr_5 != 0u;
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(104), tier2_gpr_4);
if (branch_taken) {
if (!rt.tier2_enter_fused_transfer<85u, 0x0895BF7Cu>(ctx)) {
ctx.pc = 0x0895BF7Cu;
TIER2_SB_RETURN();
}
++tier2_pending_transfers;
++tier2_stats.fused_tail_edges;
goto SB_L_0895BF7C;
}
goto SB_L_0895C2C0;
}
SB_L_0895C2C0:
ctx.gpr[31] = (0x0895C2C8u);
// nop
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0044_entry, 44u, 671u, 0x088B7BC0u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x0895C2C8u) goto SB_L_0895C2C8;
TIER2_SB_RETURN();
SB_L_0895C2C8:
tier2_gpr_4 = (18432u << 16u);
tier2_gpr_5 = (std::bit_cast<std::uint32_t>(ctx.fpr[20]));
tier2_gpr_5 = (tier2_gpr_5 >> 8u);
tier2_gpr_4 = (tier2_gpr_5 | tier2_gpr_4);
{ std::uint32_t tier2_old_pointer = 0u;
tier2_gpr_4 = tier2_mem.aot_append32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_4, &tier2_old_pointer);
tier2_gpr_5 = tier2_old_pointer; }
tier2_gpr_5 = (18688u << 16u);
tier2_gpr_6 = (std::bit_cast<std::uint32_t>(ctx.fpr[20]));
tier2_gpr_6 = (tier2_gpr_6 >> 8u);
tier2_gpr_5 = (tier2_gpr_6 | tier2_gpr_5);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_4 = (tier2_mem.aot_load8(tier2_gpr_29 + static_cast<std::uint32_t>(120)));
{ const bool branch_taken = tier2_gpr_4 == 0u;
// nop
if (branch_taken) {
goto SB_L_0895C934;
}
goto SB_L_0895C318;
}
SB_L_0895C318:
tier2_gpr_4 = (0u | 11u);
ctx.gpr[31] = (0x0895C324u);
tier2_gpr_5 = (0u | 0u);
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0023_entry, 23u, 179u, 0x088614B4u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x0895C324u) goto SB_L_0895C324;
TIER2_SB_RETURN();
SB_L_0895C324:
ctx.gpr[16] = (0u < ctx.gpr[2] ? 1u : 0u);
tier2_gpr_4 = (8704u << 16u);
{ std::uint32_t tier2_old_pointer = 0u;
tier2_gpr_4 = tier2_mem.aot_append32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_4, &tier2_old_pointer);
tier2_gpr_5 = tier2_old_pointer; }
tier2_gpr_4 = (0u | 11u);
ctx.gpr[31] = (0x0895C34Cu);
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 == 0x0895C34Cu) goto SB_L_0895C34C;
TIER2_SB_RETURN();
SB_L_0895C34C:
tier2_gpr_4 = (22016u << 16u);
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(-1));
{ std::uint32_t tier2_old_pointer = 0u;
tier2_gpr_4 = tier2_mem.aot_append32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_4, &tier2_old_pointer);
tier2_gpr_5 = tier2_old_pointer; }
tier2_gpr_5 = (22528u << 16u);
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(255));
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_5 = (22272u << 16u);
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(-1));
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_5 = (22528u << 16u);
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(-1));
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_5 = (24320u << 16u);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
ctx.fpr[12] = std::bit_cast<float>(tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-17664)));
tier2_gpr_5 = (std::bit_cast<std::uint32_t>(ctx.fpr[12]));
tier2_gpr_5 = (tier2_gpr_5 >> 8u);
tier2_gpr_6 = (25344u << 16u);
tier2_gpr_5 = (tier2_gpr_5 | tier2_gpr_6);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
ctx.fpr[13] = std::bit_cast<float>(tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-17660)));
tier2_gpr_5 = (std::bit_cast<std::uint32_t>(ctx.fpr[13]));
tier2_gpr_5 = (tier2_gpr_5 >> 8u);
tier2_gpr_6 = (25600u << 16u);
tier2_gpr_5 = (tier2_gpr_5 | tier2_gpr_6);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
ctx.fpr[12] = std::bit_cast<float>(tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-17656)));
tier2_gpr_5 = (std::bit_cast<std::uint32_t>(ctx.fpr[12]));
tier2_gpr_5 = (tier2_gpr_5 >> 8u);
tier2_gpr_6 = (25856u << 16u);
tier2_gpr_5 = (tier2_gpr_5 | tier2_gpr_6);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_5 = (37120u << 16u);
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(-1));
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_5 = (6144u << 16u);
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(1));
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_5 = (24576u << 16u);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
ctx.fpr[12] = std::bit_cast<float>(tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-17648)));
tier2_gpr_5 = (std::bit_cast<std::uint32_t>(ctx.fpr[12]));
tier2_gpr_5 = (tier2_gpr_5 >> 8u);
tier2_gpr_6 = (26112u << 16u);
tier2_gpr_5 = (tier2_gpr_5 | tier2_gpr_6);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
ctx.fpr[13] = std::bit_cast<float>(tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-17644)));
tier2_gpr_5 = (std::bit_cast<std::uint32_t>(ctx.fpr[13]));
tier2_gpr_5 = (tier2_gpr_5 >> 8u);
tier2_gpr_6 = (26368u << 16u);
tier2_gpr_5 = (tier2_gpr_5 | tier2_gpr_6);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
ctx.fpr[12] = std::bit_cast<float>(tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-17640)));
tier2_gpr_5 = (std::bit_cast<std::uint32_t>(ctx.fpr[12]));
tier2_gpr_5 = (tier2_gpr_5 >> 8u);
tier2_gpr_6 = (26624u << 16u);
tier2_gpr_5 = (tier2_gpr_5 | tier2_gpr_6);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_5 = (37888u << 16u);
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(-1));
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_5 = (6400u << 16u);
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(1));
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_5 = (49152u << 16u);
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(2));
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_5 = (49408u << 16u);
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(256));
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[28] + static_cast<std::uint32_t>(-17676)));
{ const bool branch_taken = tier2_gpr_4 == 0u;
tier2_mem.aot_store8(tier2_gpr_29 + static_cast<std::uint32_t>(129), static_cast<std::uint8_t>(ctx.gpr[16]));
if (branch_taken) {
goto SB_L_0895C564;
}
goto SB_L_0895C54C;
}
SB_L_0895C54C:
tier2_gpr_4 = (8960u << 16u);
{ std::uint32_t tier2_old_pointer = 0u;
tier2_gpr_4 = tier2_mem.aot_append32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_4, &tier2_old_pointer);
tier2_gpr_5 = tier2_old_pointer; }
goto SB_L_0895C564;
SB_L_0895C564:
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-17680)));
{ const bool branch_taken = tier2_gpr_4 == 0u;
// nop
if (branch_taken) {
goto SB_L_0895C640;
}
goto SB_L_0895C570;
}
SB_L_0895C570:
tier2_gpr_4 = (7680u << 16u);
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(1));
{ std::uint32_t tier2_old_pointer = 0u;
tier2_gpr_4 = tier2_mem.aot_append32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_4, &tier2_old_pointer);
tier2_gpr_5 = tier2_old_pointer; }
tier2_gpr_5 = (49664u << 16u);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_5 = (49920u << 16u);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_5 = (51968u << 16u);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_6 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-17680)));
tier2_gpr_7 = (tier2_gpr_6 >> 8u);
ctx.gpr[8] = (256u << 16u);
ctx.gpr[8] = (ctx.gpr[8] + static_cast<std::uint32_t>(-1));
tier2_gpr_6 = (tier2_gpr_6 & ctx.gpr[8]);
ctx.gpr[8] = (40960u << 16u);
tier2_gpr_6 = (tier2_gpr_6 | ctx.gpr[8]);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_6);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_6 = (255u << 16u);
tier2_gpr_6 = (tier2_gpr_7 & tier2_gpr_6);
tier2_gpr_7 = (43008u << 16u);
tier2_gpr_7 = (tier2_gpr_7 + static_cast<std::uint32_t>(64));
tier2_gpr_6 = (tier2_gpr_6 | tier2_gpr_7);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_6);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_6 = (47104u << 16u);
tier2_gpr_6 = (tier2_gpr_6 + static_cast<std::uint32_t>(1542));
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_6);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
goto SB_L_0895C640;
SB_L_0895C640:
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(100)));
ctx.gpr[21] = (0u | 0u);
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(8)));
tier2_gpr_4 = (ctx.gpr[21] < tier2_gpr_4 ? 1u : 0u);
{ const bool branch_taken = tier2_gpr_4 == 0u;
// nop
if (branch_taken) {
goto SB_L_0895C878;
}
goto SB_L_0895C658;
}
SB_L_0895C658:
ctx.gpr[19] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(100)));
ctx.gpr[19] = (ctx.gpr[19] + static_cast<std::uint32_t>(72));
tier2_gpr_4 = (16128u << 16u);
ctx.fpr[22] = std::bit_cast<float>(tier2_gpr_4);
ctx.fpr[24] = std::bit_cast<float>(0u);
tier2_gpr_4 = (17279u << 16u);
ctx.fpr[26] = std::bit_cast<float>(tier2_gpr_4);
ctx.gpr[22] = (1u << 16u);
ctx.gpr[22] = (ctx.gpr[22] + static_cast<std::uint32_t>(257));
ctx.gpr[20] = (256u << 16u);
ctx.gpr[20] = (ctx.gpr[20] + static_cast<std::uint32_t>(-1));
ctx.gpr[30] = (57344u << 16u);
ctx.gpr[23] = (57600u << 16u);
tier2_gpr_4 = (tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_mem.aot_store32(tier2_gpr_29 + static_cast<std::uint32_t>(108), tier2_gpr_4);
goto SB_L_0895C694;
SB_L_0895C694:
ctx.gpr[18] = (ctx.gpr[19] | 0u);
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(92)));
tier2_gpr_5 = (tier2_mem.aot_load16(ctx.gpr[18] + static_cast<std::uint32_t>(6)));
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(12)));
tier2_gpr_5 = (tier2_gpr_5 << 2u);
tier2_gpr_4 = (tier2_gpr_4 + tier2_gpr_5);
ctx.gpr[16] = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(0)));
ctx.gpr[31] = (0x0895C6B8u);
tier2_gpr_4 = (ctx.gpr[16] | 0u);
TIER2_GPR_SYNC_OUT();
psprecomp::recomp_unit_0206_entry(rt, ctx, 499u, aot_mem);
TIER2_GPR_SYNC_IN();
if (!rt.account_inlined_generated_leaf(ctx)) {
tier2_gpr_shadow_valid = false;
TIER2_SB_RETURN();
}
if (ctx.pc == 0x0895C6B8u) goto SB_L_0895C6B8;
tier2_gpr_shadow_valid = false;
TIER2_SB_RETURN();
SB_L_0895C6B8:
tier2_gpr_4 = (ctx.gpr[2] & 2u);
if (tier2_gpr_4 == 0u) {
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(100)));
goto SB_L_0895C864;
}
goto SB_L_0895C6C4;
SB_L_0895C6C4:
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[28] + static_cast<std::uint32_t>(-19663)));
if (tier2_gpr_4 != 0u) {
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(100)));
goto SB_L_0895C864;
}
goto SB_L_0895C6D0;
SB_L_0895C6D0:
tier2_gpr_4 = (tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-17680)));
{ const bool branch_taken = tier2_gpr_4 != 0u;
// nop
if (branch_taken) {
goto SB_L_0895C708;
}
goto SB_L_0895C6DC;
}
SB_L_0895C6DC:
ctx.gpr[31] = (0x0895C6E4u);
tier2_gpr_4 = (ctx.gpr[16] | 0u);
TIER2_GPR_SYNC_OUT();
psprecomp::recomp_unit_0206_entry(rt, ctx, 524u, aot_mem);
TIER2_GPR_SYNC_IN();
if (!rt.account_inlined_generated_leaf(ctx)) {
tier2_gpr_shadow_valid = false;
TIER2_SB_RETURN();
}
if (ctx.pc == 0x0895C6E4u) goto SB_L_0895C6E4;
tier2_gpr_shadow_valid = false;
TIER2_SB_RETURN();
SB_L_0895C6E4:
tier2_gpr_4 = (ctx.gpr[2] | 0u);
{ const bool branch_taken = tier2_gpr_4 != 0u;
// nop
if (branch_taken) {
goto SB_L_0895C6FC;
}
goto SB_L_0895C6F0;
}
SB_L_0895C6F0:
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(100)));
{ const bool branch_taken = 0u == 0u;
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(8)));
if (branch_taken) {
goto SB_L_0895C868;
}
goto SB_L_0895C6FC;
}
SB_L_0895C6FC:
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(0)));
ctx.gpr[31] = (0x0895C708u);
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_0199_entry, 199u, 283u, 0x08B217D4u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x0895C708u) goto SB_L_0895C708;
TIER2_SB_RETURN();
SB_L_0895C708:
ctx.gpr[31] = (0x0895C710u);
tier2_gpr_4 = (ctx.gpr[16] | 0u);
TIER2_GPR_SYNC_OUT();
psprecomp::recomp_unit_0206_entry(rt, ctx, 523u, aot_mem);
TIER2_GPR_SYNC_IN();
if (!rt.account_inlined_generated_leaf(ctx)) {
tier2_gpr_shadow_valid = false;
TIER2_SB_RETURN();
}
if (ctx.pc == 0x0895C710u) goto SB_L_0895C710;
tier2_gpr_shadow_valid = false;
TIER2_SB_RETURN();
SB_L_0895C710:
{ const float fs = ctx.fpr[0]; const float ft = ctx.fpr[22]; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[12] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[12] = fs * ft; }
ctx.fpr[13] = std::bit_cast<float>(tier2_mem.aot_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7632)));
{ const float fs = ctx.fpr[12]; const float ft = ctx.fpr[13]; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[12] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[12] = fs * ft; }
ctx.fpr[13] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[24]));
ctx.gpr[16] = (tier2_mem.aot_load32(tier2_gpr_17 + static_cast<std::uint32_t>(29552)));
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[12] < ctx.fpr[13])) ? 0x00800000u : 0u);
// nop
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
ctx.gpr[8] = (0u | 255u);
if (branch_taken) {
goto SB_L_0895C748;
}
goto SB_L_0895C734;
}
SB_L_0895C734:
ctx.fpr[13] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[12]));
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[13] <= ctx.fpr[20])) ? 0x00800000u : 0u);
// nop
if (!((ctx.fcr31 & 0x00800000u) != 0u)) {
ctx.fpr[13] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[20]));
goto SB_L_0895C748;
}
goto SB_L_0895C748;
SB_L_0895C748:
{ const float fs = ctx.fpr[13]; const float ft = ctx.fpr[26]; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[12] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[12] = fs * ft; }
ctx.fpr[12] = std::bit_cast<float>(ctx.fpu_float_to_word_ct<1u>(ctx.fpr[12]));
tier2_gpr_4 = (std::bit_cast<std::uint32_t>(ctx.fpr[12]));
tier2_gpr_5 = (tier2_mem.aot_load8(ctx.gpr[28] + static_cast<std::uint32_t>(-17674)));
{ const bool branch_taken = tier2_gpr_5 == 0u;
// nop
if (branch_taken) {
goto SB_L_0895C764;
}
goto SB_L_0895C760;
}
SB_L_0895C760:
tier2_gpr_4 = (ctx.gpr[8] | 0u);
goto SB_L_0895C764;
SB_L_0895C764:
{ const std::int64_t product = static_cast<std::int64_t>(static_cast<std::int32_t>(tier2_gpr_4)) * static_cast<std::int64_t>(static_cast<std::int32_t>(ctx.gpr[22])); ctx.lo = static_cast<std::uint32_t>(product); ctx.hi = static_cast<std::uint32_t>(static_cast<std::uint64_t>(product) >> 32u); }
tier2_gpr_5 = (ctx.lo);
tier2_gpr_4 = (ctx.gpr[8] - tier2_gpr_4);
// nop
{ const std::int64_t product = static_cast<std::int64_t>(static_cast<std::int32_t>(tier2_gpr_4)) * static_cast<std::int64_t>(static_cast<std::int32_t>(ctx.gpr[22])); ctx.lo = static_cast<std::uint32_t>(product); ctx.hi = static_cast<std::uint32_t>(static_cast<std::uint64_t>(product) >> 32u); }
tier2_gpr_4 = (ctx.lo);
tier2_gpr_6 = (57088u << 16u);
tier2_gpr_6 = (tier2_gpr_6 + static_cast<std::uint32_t>(170));
tier2_mem.aot_store32(ctx.gpr[16] + static_cast<std::uint32_t>(0), tier2_gpr_6);
tier2_gpr_6 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_5 = (tier2_gpr_5 & ctx.gpr[20]);
tier2_gpr_5 = (tier2_gpr_5 | ctx.gpr[30]);
tier2_mem.aot_store32(tier2_gpr_6 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_5 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_4 = (tier2_gpr_4 & ctx.gpr[20]);
tier2_gpr_4 = (tier2_gpr_4 | ctx.gpr[23]);
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_4);
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_17 + static_cast<std::uint32_t>(29552)));
tier2_gpr_5 = (tier2_gpr_4 + static_cast<std::uint32_t>(4));
tier2_mem.aot_store32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_5);
tier2_gpr_4 = (tier2_mem.aot_load16(ctx.gpr[18] + static_cast<std::uint32_t>(4)));
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(100)));
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(2));
tier2_gpr_7 = (tier2_mem.aot_load32(tier2_gpr_6 + static_cast<std::uint32_t>(64)));
tier2_gpr_7 = (tier2_gpr_6 + tier2_gpr_7);
ctx.gpr[18] = (tier2_mem.aot_load32(ctx.gpr[18] + static_cast<std::uint32_t>(0)));
ctx.gpr[18] = (tier2_gpr_7 + ctx.gpr[18]);
tier2_gpr_7 = (4608u << 16u);
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_6 + static_cast<std::uint32_t>(4)));
tier2_gpr_6 = (tier2_gpr_6 | tier2_gpr_7);
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_6);
ctx.gpr[16] = (tier2_mem.aot_load32(tier2_gpr_17 + static_cast<std::uint32_t>(29552)));
ctx.gpr[16] = (ctx.gpr[16] + static_cast<std::uint32_t>(4));
{ const bool branch_taken = ctx.gpr[18] == 0u;
tier2_mem.aot_store32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), ctx.gpr[16]);
if (branch_taken) {
goto SB_L_0895C848;
}
goto SB_L_0895C800;
}
SB_L_0895C800:
tier2_gpr_5 = (15u << 16u);
tier2_gpr_6 = (ctx.gpr[18] >> 8u);
tier2_gpr_5 = (tier2_gpr_6 & tier2_gpr_5);
tier2_gpr_6 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(108)));
tier2_gpr_7 = (4096u << 16u);
tier2_mem.aot_store32(tier2_gpr_6 + static_cast<std::uint32_t>(20), tier2_gpr_5);
tier2_gpr_5 = (tier2_gpr_5 | tier2_gpr_7);
tier2_mem.aot_store32(ctx.gpr[16] + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_5 = (tier2_mem.aot_load32(tier2_gpr_17 + static_cast<std::uint32_t>(29552)));
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(4));
tier2_gpr_6 = (256u << 16u);
tier2_mem.aot_store32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_5);
tier2_gpr_7 = (ctx.gpr[18] & ctx.gpr[20]);
tier2_gpr_6 = (tier2_gpr_7 | tier2_gpr_6);
tier2_mem.aot_store32(tier2_gpr_5 + static_cast<std::uint32_t>(0), tier2_gpr_6);
ctx.gpr[16] = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
goto SB_L_0895C848;
SB_L_0895C848:
tier2_gpr_5 = (1028u << 16u);
tier2_gpr_4 = (tier2_gpr_4 | tier2_gpr_5);
tier2_mem.aot_store32(ctx.gpr[16] + static_cast<std::uint32_t>(0), tier2_gpr_4);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(100)));
goto SB_L_0895C864;
SB_L_0895C864:
tier2_gpr_4 = (tier2_mem.aot_load32(tier2_gpr_4 + static_cast<std::uint32_t>(8)));
goto SB_L_0895C868;
SB_L_0895C868:
ctx.gpr[21] = (ctx.gpr[21] + static_cast<std::uint32_t>(1));
tier2_gpr_4 = (ctx.gpr[21] < tier2_gpr_4 ? 1u : 0u);
{ const bool branch_taken = tier2_gpr_4 != 0u;
ctx.gpr[19] = (ctx.gpr[19] + static_cast<std::uint32_t>(48));
if (branch_taken) {
goto SB_L_0895C694;
}
goto SB_L_0895C878;
}
SB_L_0895C878:
tier2_gpr_4 = (0u | 0u);
ctx.gpr[31] = (0x0895C884u);
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_0199_entry, 199u, 283u, 0x08B217D4u>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x0895C884u) goto SB_L_0895C884;
TIER2_SB_RETURN();
SB_L_0895C884:
ctx.gpr[31] = (0x0895C88Cu);
// nop
if (([&]() { TIER2_GPR_SYNC_OUT(); const bool tier2_same_ = (rt.invoke_chained_direct<&recomp_unit_0023_entry, 23u, 200u, 0x088615BCu>(ctx, &aot_mem)); if (tier2_same_) TIER2_GPR_SYNC_IN(); else tier2_gpr_shadow_valid = false; return tier2_same_; }()) && ctx.pc == 0x0895C88Cu) goto SB_L_0895C88C;
TIER2_SB_RETURN();
SB_L_0895C88C:
tier2_gpr_4 = (6144u << 16u);
{ std::uint32_t tier2_old_pointer = 0u;
tier2_gpr_4 = tier2_mem.aot_append32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_4, &tier2_old_pointer);
tier2_gpr_5 = tier2_old_pointer; }
tier2_gpr_5 = (6400u << 16u);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_5 = (tier2_mem.aot_load8(tier2_gpr_29 + static_cast<std::uint32_t>(129)));
ctx.gpr[31] = (0x0895C8C4u);
tier2_gpr_4 = (0u | 11u);
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 == 0x0895C8C4u) goto SB_L_0895C8C4;
TIER2_SB_RETURN();
SB_L_0895C8C4:
tier2_gpr_4 = (8704u << 16u);
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(1));
{ std::uint32_t tier2_old_pointer = 0u;
tier2_gpr_4 = tier2_mem.aot_append32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_4, &tier2_old_pointer);
tier2_gpr_5 = tier2_old_pointer; }
tier2_gpr_5 = (49152u << 16u);
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_5 = (49408u << 16u);
tier2_gpr_5 = (tier2_gpr_5 + static_cast<std::uint32_t>(256));
tier2_mem.aot_store32(tier2_gpr_4 + static_cast<std::uint32_t>(0), tier2_gpr_5);
tier2_gpr_4 = tier2_mem.aot_advance32(tier2_gpr_17 + static_cast<std::uint32_t>(29552));
tier2_gpr_4 = (tier2_mem.aot_load8(ctx.gpr[28] + static_cast<std::uint32_t>(-17676)));
{ const bool branch_taken = tier2_gpr_4 == 0u;
// nop
if (branch_taken) {
goto SB_L_0895C934;
}
goto SB_L_0895C918;
}
SB_L_0895C918:
tier2_gpr_4 = (8960u << 16u);
tier2_gpr_4 = (tier2_gpr_4 + static_cast<std::uint32_t>(1));
{ std::uint32_t tier2_old_pointer = 0u;
tier2_gpr_4 = tier2_mem.aot_append32(tier2_gpr_17 + static_cast<std::uint32_t>(29552), tier2_gpr_4, &tier2_old_pointer);
tier2_gpr_5 = tier2_old_pointer; }
goto SB_L_0895C934;
SB_L_0895C934:
ctx.gpr[2] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(96)));
{ std::uint32_t tier2_words[14]{};
if (tier2_mem.aot_try_load32_block(tier2_gpr_29 + static_cast<std::uint32_t>(136), tier2_words)) {
ctx.fpr[20] = std::bit_cast<float>(tier2_words[0]);
ctx.fpr[22] = std::bit_cast<float>(tier2_words[1]);
ctx.fpr[24] = std::bit_cast<float>(tier2_words[2]);
ctx.fpr[26] = std::bit_cast<float>(tier2_words[3]);
ctx.gpr[16] = tier2_words[4];
tier2_gpr_17 = tier2_words[5];
ctx.gpr[18] = tier2_words[6];
ctx.gpr[19] = tier2_words[7];
ctx.gpr[20] = tier2_words[8];
ctx.gpr[21] = tier2_words[9];
ctx.gpr[22] = tier2_words[10];
ctx.gpr[23] = tier2_words[11];
ctx.gpr[30] = tier2_words[12];
ctx.gpr[31] = tier2_words[13];
} else {
ctx.fpr[20] = std::bit_cast<float>(tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(136)));
ctx.fpr[22] = std::bit_cast<float>(tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(140)));
ctx.fpr[24] = std::bit_cast<float>(tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(144)));
ctx.fpr[26] = std::bit_cast<float>(tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(148)));
ctx.gpr[16] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(152)));
tier2_gpr_17 = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(156)));
ctx.gpr[18] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(160)));
ctx.gpr[19] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(164)));
ctx.gpr[20] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(168)));
ctx.gpr[21] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(172)));
ctx.gpr[22] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(176)));
ctx.gpr[23] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(180)));
ctx.gpr[30] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(184)));
ctx.gpr[31] = (tier2_mem.aot_load32(tier2_gpr_29 + static_cast<std::uint32_t>(188)));
} }
jump_target = ctx.gpr[31];
tier2_gpr_29 = (tier2_gpr_29 + static_cast<std::uint32_t>(192));
local_pc = jump_target;
goto TIER2_LOCAL_DISPATCH_U0086;
// 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