mirror of
https://github.com/jessicanataliagta/PSPRecomp
synced 2026-09-26 16:49:34 -04:00
96405fbb47
otimizaçoes round 20
11792 lines
577 KiB
C++
11792 lines
577 KiB
C++
#include "psprecomp/runtime.hpp"
|
|
#include "generated_units.hpp"
|
|
#include "vcs_resident_regions.hpp"
|
|
#include <bit>
|
|
#include <cmath>
|
|
#include <cstdint>
|
|
#include <limits>
|
|
|
|
namespace psprecomp {
|
|
// PSPRECOMP_V811_COMPACT_DISPATCH: 64-slot occupancy masks + per-group base id.
|
|
static constexpr std::uint64_t kEntryMasks_recomp_unit_0038[64] = {
|
|
0x522154AA282002A5ull, 0x910A222505488120ull, 0x401505402820A082ull, 0x0A80502540000000ull,
|
|
0x244140000000802Aull, 0xA101511110000000ull, 0x0400200000020006ull, 0x04205442A040A000ull,
|
|
0x8210A15128888423ull, 0x4544428204110908ull, 0x0401510850200A88ull, 0x0400082182B00002ull,
|
|
0x1240019810810020ull, 0x5008101100885205ull, 0x50440A1100192002ull, 0x9280400010A10290ull,
|
|
0x20020815054A4400ull, 0x88A1228211010221ull, 0x9295240829100000ull, 0x952A494022421924ull,
|
|
0x4481045008428104ull, 0x22EAA00406512008ull, 0x4082540204541010ull, 0x3095129008654A49ull,
|
|
0x244922494A490008ull, 0x20408D4402011122ull, 0x48948008892224A5ull, 0x491290102492A48Aull,
|
|
0x08A00832948AA925ull, 0x0808929208C20021ull, 0x1048404014600215ull, 0x0084084AA0890080ull,
|
|
0x4288041195204010ull, 0x2352A00244200202ull, 0x4940841452854442ull, 0x92409014A4019495ull,
|
|
0x2420984082440A24ull, 0xA086A2A084202242ull, 0x2010D24002114108ull, 0x92421590A1025242ull,
|
|
0x4800002400924924ull, 0x0413522204881220ull, 0x108400008055000Aull, 0x0108502150902204ull,
|
|
0x0011208000000001ull, 0xC244084441100954ull, 0x8104040000020020ull, 0x0500140820202002ull,
|
|
0x000000000AA21000ull, 0x800000000A020000ull, 0x00000000002A8844ull, 0x6400000000501000ull,
|
|
0x0A02AA8551AA0001ull, 0x41111515442502A8ull, 0x8051000810944554ull, 0x1824115282A20A94ull,
|
|
0x4900800040A41045ull, 0x6084104508882A20ull, 0x22A22A0214108228ull, 0x0881004500844511ull,
|
|
0x40A0008540808882ull, 0x80081440010A9400ull, 0x222222011140010Aull, 0xA40AA00940008542ull,
|
|
};
|
|
static constexpr std::uint16_t kEntryBases_recomp_unit_0038[64] = {
|
|
1u, 21u, 38u, 52u, 61u, 70u, 80u, 85u, 97u, 115u, 130u, 143u, 153u, 164u, 177u, 190u,
|
|
202u, 215u, 230u, 244u, 264u, 277u, 294u, 307u, 328u, 345u, 359u, 377u, 396u, 416u, 430u, 443u,
|
|
455u, 469u, 483u, 501u, 520u, 535u, 552u, 565u, 584u, 596u, 611u, 621u, 634u, 639u, 655u, 661u,
|
|
670u, 676u, 680u, 687u, 693u, 711u, 730u, 745u, 764u, 776u, 791u, 807u, 820u, 832u, 843u, 856u,
|
|
};
|
|
void recomp_unit_0038_entry(Runtime &rt, AllegrexContext &ctx, std::uint16_t direct_entry_id, GuestMemory::AotFastView &aot_mem) {
|
|
// PSPRECOMP_AOT_REGCACHE_BEGIN
|
|
// PSPRECOMP_AOT_REGCACHE_META gprs=4,5,31,29,6,2 fprs=12,13,14,20 gpr_occ=4205 fpr_occ=423 gpr_total=6003 fpr_total=649
|
|
std::uint32_t aot_gpr_4 = ctx.gpr[4];
|
|
std::uint32_t aot_gpr_5 = ctx.gpr[5];
|
|
std::uint32_t aot_gpr_31 = ctx.gpr[31];
|
|
std::uint32_t aot_gpr_29 = ctx.gpr[29];
|
|
std::uint32_t aot_gpr_6 = ctx.gpr[6];
|
|
std::uint32_t aot_gpr_2 = ctx.gpr[2];
|
|
float aot_fpr_12 = ctx.fpr[12];
|
|
float aot_fpr_13 = ctx.fpr[13];
|
|
float aot_fpr_14 = ctx.fpr[14];
|
|
float aot_fpr_20 = ctx.fpr[20];
|
|
bool aot_regcache_valid = true;
|
|
#define AOT_REGCACHE_SYNC_OUT() do { if (aot_regcache_valid) { ctx.gpr[4] = aot_gpr_4; ctx.gpr[5] = aot_gpr_5; ctx.gpr[31] = aot_gpr_31; ctx.gpr[29] = aot_gpr_29; ctx.gpr[6] = aot_gpr_6; ctx.gpr[2] = aot_gpr_2; ctx.fpr[12] = aot_fpr_12; ctx.fpr[13] = aot_fpr_13; ctx.fpr[14] = aot_fpr_14; ctx.fpr[20] = aot_fpr_20; } } while (false)
|
|
#define AOT_REGCACHE_SYNC_IN() do { if (aot_regcache_valid) { aot_gpr_4 = ctx.gpr[4]; aot_gpr_5 = ctx.gpr[5]; aot_gpr_31 = ctx.gpr[31]; aot_gpr_29 = ctx.gpr[29]; aot_gpr_6 = ctx.gpr[6]; aot_gpr_2 = ctx.gpr[2]; aot_fpr_12 = ctx.fpr[12]; aot_fpr_13 = ctx.fpr[13]; aot_fpr_14 = ctx.fpr[14]; aot_fpr_20 = ctx.fpr[20]; } } while (false)
|
|
// PSPRECOMP_AOT_REGCACHE_END
|
|
std::uint32_t jump_target = 0u;
|
|
std::uint32_t local_transfers = 0u;
|
|
std::uint32_t local_redispatch_rounds = 0u;
|
|
std::uint32_t local_pc = ctx.pc;
|
|
std::uint32_t entry_id = direct_entry_id;
|
|
LOCAL_DISPATCH:
|
|
{
|
|
if (entry_id == 0u) {
|
|
const std::uint32_t entry_delta = local_pc - 0x0889C000u;
|
|
entry_id = 0u;
|
|
if (entry_delta < 16384u && (entry_delta & 3u) == 0u) {
|
|
const std::uint32_t entry_slot = entry_delta >> 2u;
|
|
const std::uint32_t entry_group = entry_slot >> 6u;
|
|
const std::uint64_t entry_mask = kEntryMasks_recomp_unit_0038[entry_group];
|
|
const std::uint64_t entry_bit = 1ull << (entry_slot & 63u);
|
|
if ((entry_mask & entry_bit) != 0u) {
|
|
entry_id = static_cast<std::uint16_t>(
|
|
kEntryBases_recomp_unit_0038[entry_group] +
|
|
std::popcount(entry_mask & (entry_bit - 1ull)));
|
|
}
|
|
}
|
|
}
|
|
switch (entry_id) {
|
|
case 1u: goto L_0889C000;
|
|
case 2u: goto L_0889C008;
|
|
case 3u: goto L_0889C014;
|
|
case 4u: goto L_0889C01C;
|
|
case 5u: goto L_0889C024;
|
|
case 6u: goto L_0889C054;
|
|
case 7u: goto L_0889C06C;
|
|
case 8u: goto L_0889C074;
|
|
case 9u: goto L_0889C084;
|
|
case 10u: goto L_0889C08C;
|
|
case 11u: goto L_0889C094;
|
|
case 12u: goto L_0889C09C;
|
|
case 13u: goto L_0889C0A8;
|
|
case 14u: goto L_0889C0B0;
|
|
case 15u: goto L_0889C0B8;
|
|
case 16u: goto L_0889C0C0;
|
|
case 17u: goto L_0889C0D4;
|
|
case 18u: goto L_0889C0E4;
|
|
case 19u: goto L_0889C0F0;
|
|
case 20u: goto L_0889C0F8;
|
|
case 21u: goto L_0889C114;
|
|
case 22u: goto L_0889C120;
|
|
case 23u: goto L_0889C13C;
|
|
case 24u: goto L_0889C14C;
|
|
case 25u: goto L_0889C158;
|
|
case 26u: goto L_0889C160;
|
|
case 27u: goto L_0889C168;
|
|
case 28u: goto L_0889C180;
|
|
case 29u: goto L_0889C188;
|
|
case 30u: goto L_0889C194;
|
|
case 31u: goto L_0889C1A4;
|
|
case 32u: goto L_0889C1B4;
|
|
case 33u: goto L_0889C1C4;
|
|
case 34u: goto L_0889C1CC;
|
|
case 35u: goto L_0889C1E0;
|
|
case 36u: goto L_0889C1F0;
|
|
case 37u: goto L_0889C1FC;
|
|
case 38u: goto L_0889C204;
|
|
case 39u: goto L_0889C21C;
|
|
case 40u: goto L_0889C234;
|
|
case 41u: goto L_0889C23C;
|
|
case 42u: goto L_0889C254;
|
|
case 43u: goto L_0889C26C;
|
|
case 44u: goto L_0889C274;
|
|
case 45u: goto L_0889C298;
|
|
case 46u: goto L_0889C2A0;
|
|
case 47u: goto L_0889C2A8;
|
|
case 48u: goto L_0889C2C0;
|
|
case 49u: goto L_0889C2C8;
|
|
case 50u: goto L_0889C2D0;
|
|
case 51u: goto L_0889C2F8;
|
|
case 52u: goto L_0889C378;
|
|
case 53u: goto L_0889C380;
|
|
case 54u: goto L_0889C388;
|
|
case 55u: goto L_0889C394;
|
|
case 56u: goto L_0889C3B0;
|
|
case 57u: goto L_0889C3B8;
|
|
case 58u: goto L_0889C3DC;
|
|
case 59u: goto L_0889C3E4;
|
|
case 60u: goto L_0889C3EC;
|
|
case 61u: goto L_0889C404;
|
|
case 62u: goto L_0889C40C;
|
|
case 63u: goto L_0889C414;
|
|
case 64u: goto L_0889C43C;
|
|
case 65u: goto L_0889C4B8;
|
|
case 66u: goto L_0889C4C0;
|
|
case 67u: goto L_0889C4D8;
|
|
case 68u: goto L_0889C4E8;
|
|
case 69u: goto L_0889C4F4;
|
|
case 70u: goto L_0889C570;
|
|
case 71u: goto L_0889C580;
|
|
case 72u: goto L_0889C590;
|
|
case 73u: goto L_0889C5A0;
|
|
case 74u: goto L_0889C5B0;
|
|
case 75u: goto L_0889C5B8;
|
|
case 76u: goto L_0889C5C0;
|
|
case 77u: goto L_0889C5E0;
|
|
case 78u: goto L_0889C5F4;
|
|
case 79u: goto L_0889C5FC;
|
|
case 80u: goto L_0889C604;
|
|
case 81u: goto L_0889C608;
|
|
case 82u: goto L_0889C644;
|
|
case 83u: goto L_0889C6B4;
|
|
case 84u: goto L_0889C6E8;
|
|
case 85u: goto L_0889C734;
|
|
case 86u: goto L_0889C73C;
|
|
case 87u: goto L_0889C758;
|
|
case 88u: goto L_0889C774;
|
|
case 89u: goto L_0889C77C;
|
|
case 90u: goto L_0889C784;
|
|
case 91u: goto L_0889C798;
|
|
case 92u: goto L_0889C7A8;
|
|
case 93u: goto L_0889C7B0;
|
|
case 94u: goto L_0889C7B8;
|
|
case 95u: goto L_0889C7D4;
|
|
case 96u: goto L_0889C7E8;
|
|
case 97u: goto L_0889C800;
|
|
case 98u: goto L_0889C804;
|
|
case 99u: goto L_0889C814;
|
|
case 100u: goto L_0889C828;
|
|
case 101u: goto L_0889C83C;
|
|
case 102u: goto L_0889C84C;
|
|
case 103u: goto L_0889C85C;
|
|
case 104u: goto L_0889C86C;
|
|
case 105u: goto L_0889C874;
|
|
case 106u: goto L_0889C880;
|
|
case 107u: goto L_0889C890;
|
|
case 108u: goto L_0889C898;
|
|
case 109u: goto L_0889C8A0;
|
|
case 110u: goto L_0889C8B4;
|
|
case 111u: goto L_0889C8BC;
|
|
case 112u: goto L_0889C8D0;
|
|
case 113u: goto L_0889C8E4;
|
|
case 114u: goto L_0889C8FC;
|
|
case 115u: goto L_0889C90C;
|
|
case 116u: goto L_0889C920;
|
|
case 117u: goto L_0889C92C;
|
|
case 118u: goto L_0889C940;
|
|
case 119u: goto L_0889C950;
|
|
case 120u: goto L_0889C968;
|
|
case 121u: goto L_0889C984;
|
|
case 122u: goto L_0889C99C;
|
|
case 123u: goto L_0889C9A4;
|
|
case 124u: goto L_0889C9B8;
|
|
case 125u: goto L_0889C9C8;
|
|
case 126u: goto L_0889C9D8;
|
|
case 127u: goto L_0889C9E0;
|
|
case 128u: goto L_0889C9E8;
|
|
case 129u: goto L_0889C9F8;
|
|
case 130u: goto L_0889CA0C;
|
|
case 131u: goto L_0889CA1C;
|
|
case 132u: goto L_0889CA24;
|
|
case 133u: goto L_0889CA2C;
|
|
case 134u: goto L_0889CA54;
|
|
case 135u: goto L_0889CA70;
|
|
case 136u: goto L_0889CA78;
|
|
case 137u: goto L_0889CA8C;
|
|
case 138u: goto L_0889CAA0;
|
|
case 139u: goto L_0889CAB0;
|
|
case 140u: goto L_0889CAB8;
|
|
case 141u: goto L_0889CAC0;
|
|
case 142u: goto L_0889CAE8;
|
|
case 143u: goto L_0889CB04;
|
|
case 144u: goto L_0889CB50;
|
|
case 145u: goto L_0889CB54;
|
|
case 146u: goto L_0889CB5C;
|
|
case 147u: goto L_0889CB64;
|
|
case 148u: goto L_0889CB7C;
|
|
case 149u: goto L_0889CB80;
|
|
case 150u: goto L_0889CB94;
|
|
case 151u: goto L_0889CBAC;
|
|
case 152u: goto L_0889CBE8;
|
|
case 153u: goto L_0889CC14;
|
|
case 154u: goto L_0889CC40;
|
|
case 155u: goto L_0889CC5C;
|
|
case 156u: goto L_0889CC70;
|
|
case 157u: goto L_0889CC8C;
|
|
case 158u: goto L_0889CC90;
|
|
case 159u: goto L_0889CC9C;
|
|
case 160u: goto L_0889CCA0;
|
|
case 161u: goto L_0889CCD8;
|
|
case 162u: goto L_0889CCE4;
|
|
case 163u: goto L_0889CCF0;
|
|
case 164u: goto L_0889CD00;
|
|
case 165u: goto L_0889CD08;
|
|
case 166u: goto L_0889CD24;
|
|
case 167u: goto L_0889CD30;
|
|
case 168u: goto L_0889CD38;
|
|
case 169u: goto L_0889CD4C;
|
|
case 170u: goto L_0889CD5C;
|
|
case 171u: goto L_0889CD80;
|
|
case 172u: goto L_0889CD90;
|
|
case 173u: goto L_0889CDB0;
|
|
case 174u: goto L_0889CDCC;
|
|
case 175u: goto L_0889CDF0;
|
|
case 176u: goto L_0889CDF8;
|
|
case 177u: goto L_0889CE04;
|
|
case 178u: goto L_0889CE34;
|
|
case 179u: goto L_0889CE40;
|
|
case 180u: goto L_0889CE4C;
|
|
case 181u: goto L_0889CE50;
|
|
case 182u: goto L_0889CE80;
|
|
case 183u: goto L_0889CE90;
|
|
case 184u: goto L_0889CEA4;
|
|
case 185u: goto L_0889CEAC;
|
|
case 186u: goto L_0889CEC8;
|
|
case 187u: goto L_0889CED8;
|
|
case 188u: goto L_0889CEF0;
|
|
case 189u: goto L_0889CEF8;
|
|
case 190u: goto L_0889CF10;
|
|
case 191u: goto L_0889CF1C;
|
|
case 192u: goto L_0889CF24;
|
|
case 193u: goto L_0889CF40;
|
|
case 194u: goto L_0889CF54;
|
|
case 195u: goto L_0889CF5C;
|
|
case 196u: goto L_0889CF70;
|
|
case 197u: goto L_0889CFB8;
|
|
case 198u: goto L_0889CFDC;
|
|
case 199u: goto L_0889CFE4;
|
|
case 200u: goto L_0889CFF0;
|
|
case 201u: goto L_0889CFFC;
|
|
case 202u: goto L_0889D028;
|
|
case 203u: goto L_0889D038;
|
|
case 204u: goto L_0889D044;
|
|
case 205u: goto L_0889D04C;
|
|
case 206u: goto L_0889D058;
|
|
case 207u: goto L_0889D060;
|
|
case 208u: goto L_0889D068;
|
|
case 209u: goto L_0889D080;
|
|
case 210u: goto L_0889D088;
|
|
case 211u: goto L_0889D090;
|
|
case 212u: goto L_0889D0AC;
|
|
case 213u: goto L_0889D0C4;
|
|
case 214u: goto L_0889D0F4;
|
|
case 215u: goto L_0889D100;
|
|
case 216u: goto L_0889D114;
|
|
case 217u: goto L_0889D124;
|
|
case 218u: goto L_0889D140;
|
|
case 219u: goto L_0889D160;
|
|
case 220u: goto L_0889D170;
|
|
case 221u: goto L_0889D184;
|
|
case 222u: goto L_0889D19C;
|
|
case 223u: goto L_0889D1A4;
|
|
case 224u: goto L_0889D1B4;
|
|
case 225u: goto L_0889D1C0;
|
|
case 226u: goto L_0889D1D4;
|
|
case 227u: goto L_0889D1DC;
|
|
case 228u: goto L_0889D1EC;
|
|
case 229u: goto L_0889D1FC;
|
|
case 230u: goto L_0889D250;
|
|
case 231u: goto L_0889D260;
|
|
case 232u: goto L_0889D26C;
|
|
case 233u: goto L_0889D274;
|
|
case 234u: goto L_0889D28C;
|
|
case 235u: goto L_0889D2A8;
|
|
case 236u: goto L_0889D2B4;
|
|
case 237u: goto L_0889D2C0;
|
|
case 238u: goto L_0889D2C8;
|
|
case 239u: goto L_0889D2D0;
|
|
case 240u: goto L_0889D2DC;
|
|
case 241u: goto L_0889D2E4;
|
|
case 242u: goto L_0889D2F0;
|
|
case 243u: goto L_0889D2FC;
|
|
case 244u: goto L_0889D308;
|
|
case 245u: goto L_0889D314;
|
|
case 246u: goto L_0889D320;
|
|
case 247u: goto L_0889D32C;
|
|
case 248u: goto L_0889D330;
|
|
case 249u: goto L_0889D344;
|
|
case 250u: goto L_0889D358;
|
|
case 251u: goto L_0889D364;
|
|
case 252u: goto L_0889D374;
|
|
case 253u: goto L_0889D398;
|
|
case 254u: goto L_0889D3A0;
|
|
case 255u: goto L_0889D3AC;
|
|
case 256u: goto L_0889D3B8;
|
|
case 257u: goto L_0889D3C4;
|
|
case 258u: goto L_0889D3CC;
|
|
case 259u: goto L_0889D3D4;
|
|
case 260u: goto L_0889D3E0;
|
|
case 261u: goto L_0889D3E8;
|
|
case 262u: goto L_0889D3F0;
|
|
case 263u: goto L_0889D3FC;
|
|
case 264u: goto L_0889D408;
|
|
case 265u: goto L_0889D420;
|
|
case 266u: goto L_0889D43C;
|
|
case 267u: goto L_0889D444;
|
|
case 268u: goto L_0889D458;
|
|
case 269u: goto L_0889D46C;
|
|
case 270u: goto L_0889D490;
|
|
case 271u: goto L_0889D498;
|
|
case 272u: goto L_0889D4A8;
|
|
case 273u: goto L_0889D4C0;
|
|
case 274u: goto L_0889D4DC;
|
|
case 275u: goto L_0889D4E8;
|
|
case 276u: goto L_0889D4F8;
|
|
case 277u: goto L_0889D50C;
|
|
case 278u: goto L_0889D534;
|
|
case 279u: goto L_0889D540;
|
|
case 280u: goto L_0889D550;
|
|
case 281u: goto L_0889D558;
|
|
case 282u: goto L_0889D564;
|
|
case 283u: goto L_0889D568;
|
|
case 284u: goto L_0889D588;
|
|
case 285u: goto L_0889D5B4;
|
|
case 286u: goto L_0889D5BC;
|
|
case 287u: goto L_0889D5C4;
|
|
case 288u: goto L_0889D5CC;
|
|
case 289u: goto L_0889D5D4;
|
|
case 290u: goto L_0889D5D8;
|
|
case 291u: goto L_0889D5DC;
|
|
case 292u: goto L_0889D5E4;
|
|
case 293u: goto L_0889D5F4;
|
|
case 294u: goto L_0889D610;
|
|
case 295u: goto L_0889D630;
|
|
case 296u: goto L_0889D648;
|
|
case 297u: goto L_0889D650;
|
|
case 298u: goto L_0889D658;
|
|
case 299u: goto L_0889D668;
|
|
case 300u: goto L_0889D684;
|
|
case 301u: goto L_0889D6A8;
|
|
case 302u: goto L_0889D6B0;
|
|
case 303u: goto L_0889D6B8;
|
|
case 304u: goto L_0889D6C4;
|
|
case 305u: goto L_0889D6DC;
|
|
case 306u: goto L_0889D6F8;
|
|
case 307u: goto L_0889D700;
|
|
case 308u: goto L_0889D70C;
|
|
case 309u: goto L_0889D718;
|
|
case 310u: goto L_0889D724;
|
|
case 311u: goto L_0889D72C;
|
|
case 312u: goto L_0889D738;
|
|
case 313u: goto L_0889D740;
|
|
case 314u: goto L_0889D748;
|
|
case 315u: goto L_0889D754;
|
|
case 316u: goto L_0889D758;
|
|
case 317u: goto L_0889D76C;
|
|
case 318u: goto L_0889D790;
|
|
case 319u: goto L_0889D79C;
|
|
case 320u: goto L_0889D7A4;
|
|
case 321u: goto L_0889D7B0;
|
|
case 322u: goto L_0889D7C0;
|
|
case 323u: goto L_0889D7C8;
|
|
case 324u: goto L_0889D7D0;
|
|
case 325u: goto L_0889D7DC;
|
|
case 326u: goto L_0889D7F0;
|
|
case 327u: goto L_0889D7F4;
|
|
case 328u: goto L_0889D80C;
|
|
case 329u: goto L_0889D840;
|
|
case 330u: goto L_0889D84C;
|
|
case 331u: goto L_0889D858;
|
|
case 332u: goto L_0889D864;
|
|
case 333u: goto L_0889D86C;
|
|
case 334u: goto L_0889D878;
|
|
case 335u: goto L_0889D880;
|
|
case 336u: goto L_0889D88C;
|
|
case 337u: goto L_0889D898;
|
|
case 338u: goto L_0889D8A4;
|
|
case 339u: goto L_0889D8B4;
|
|
case 340u: goto L_0889D8C0;
|
|
case 341u: goto L_0889D8CC;
|
|
case 342u: goto L_0889D8D8;
|
|
case 343u: goto L_0889D8E8;
|
|
case 344u: goto L_0889D8F4;
|
|
case 345u: goto L_0889D904;
|
|
case 346u: goto L_0889D914;
|
|
case 347u: goto L_0889D920;
|
|
case 348u: goto L_0889D930;
|
|
case 349u: goto L_0889D940;
|
|
case 350u: goto L_0889D964;
|
|
case 351u: goto L_0889D988;
|
|
case 352u: goto L_0889D998;
|
|
case 353u: goto L_0889D9A0;
|
|
case 354u: goto L_0889D9A8;
|
|
case 355u: goto L_0889D9AC;
|
|
case 356u: goto L_0889D9BC;
|
|
case 357u: goto L_0889D9D8;
|
|
case 358u: goto L_0889D9F4;
|
|
case 359u: goto L_0889DA00;
|
|
case 360u: goto L_0889DA08;
|
|
case 361u: goto L_0889DA14;
|
|
case 362u: goto L_0889DA1C;
|
|
case 363u: goto L_0889DA28;
|
|
case 364u: goto L_0889DA34;
|
|
case 365u: goto L_0889DA44;
|
|
case 366u: goto L_0889DA54;
|
|
case 367u: goto L_0889DA60;
|
|
case 368u: goto L_0889DA6C;
|
|
case 369u: goto L_0889DA7C;
|
|
case 370u: goto L_0889DA8C;
|
|
case 371u: goto L_0889DABC;
|
|
case 372u: goto L_0889DAC8;
|
|
case 373u: goto L_0889DAD0;
|
|
case 374u: goto L_0889DADC;
|
|
case 375u: goto L_0889DAEC;
|
|
case 376u: goto L_0889DAF8;
|
|
case 377u: goto L_0889DB04;
|
|
case 378u: goto L_0889DB0C;
|
|
case 379u: goto L_0889DB1C;
|
|
case 380u: goto L_0889DB28;
|
|
case 381u: goto L_0889DB34;
|
|
case 382u: goto L_0889DB3C;
|
|
case 383u: goto L_0889DB44;
|
|
case 384u: goto L_0889DB50;
|
|
case 385u: goto L_0889DB5C;
|
|
case 386u: goto L_0889DB68;
|
|
case 387u: goto L_0889DB74;
|
|
case 388u: goto L_0889DB90;
|
|
case 389u: goto L_0889DBB0;
|
|
case 390u: goto L_0889DBBC;
|
|
case 391u: goto L_0889DBC4;
|
|
case 392u: goto L_0889DBD0;
|
|
case 393u: goto L_0889DBE0;
|
|
case 394u: goto L_0889DBEC;
|
|
case 395u: goto L_0889DBF8;
|
|
case 396u: goto L_0889DC00;
|
|
case 397u: goto L_0889DC08;
|
|
case 398u: goto L_0889DC14;
|
|
case 399u: goto L_0889DC20;
|
|
case 400u: goto L_0889DC2C;
|
|
case 401u: goto L_0889DC34;
|
|
case 402u: goto L_0889DC3C;
|
|
case 403u: goto L_0889DC44;
|
|
case 404u: goto L_0889DC4C;
|
|
case 405u: goto L_0889DC5C;
|
|
case 406u: goto L_0889DC68;
|
|
case 407u: goto L_0889DC70;
|
|
case 408u: goto L_0889DC7C;
|
|
case 409u: goto L_0889DC84;
|
|
case 410u: goto L_0889DC90;
|
|
case 411u: goto L_0889DC94;
|
|
case 412u: goto L_0889DCAC;
|
|
case 413u: goto L_0889DCD4;
|
|
case 414u: goto L_0889DCDC;
|
|
case 415u: goto L_0889DCEC;
|
|
case 416u: goto L_0889DD00;
|
|
case 417u: goto L_0889DD14;
|
|
case 418u: goto L_0889DD44;
|
|
case 419u: goto L_0889DD58;
|
|
case 420u: goto L_0889DD5C;
|
|
case 421u: goto L_0889DD6C;
|
|
case 422u: goto L_0889DD84;
|
|
case 423u: goto L_0889DD90;
|
|
case 424u: goto L_0889DD9C;
|
|
case 425u: goto L_0889DDA4;
|
|
case 426u: goto L_0889DDB0;
|
|
case 427u: goto L_0889DDBC;
|
|
case 428u: goto L_0889DDCC;
|
|
case 429u: goto L_0889DDEC;
|
|
case 430u: goto L_0889DE00;
|
|
case 431u: goto L_0889DE08;
|
|
case 432u: goto L_0889DE10;
|
|
case 433u: goto L_0889DE24;
|
|
case 434u: goto L_0889DE54;
|
|
case 435u: goto L_0889DE58;
|
|
case 436u: goto L_0889DE68;
|
|
case 437u: goto L_0889DE70;
|
|
case 438u: goto L_0889DE98;
|
|
case 439u: goto L_0889DEB8;
|
|
case 440u: goto L_0889DECC;
|
|
case 441u: goto L_0889DED8;
|
|
case 442u: goto L_0889DEF0;
|
|
case 443u: goto L_0889DF1C;
|
|
case 444u: goto L_0889DF40;
|
|
case 445u: goto L_0889DF4C;
|
|
case 446u: goto L_0889DF5C;
|
|
case 447u: goto L_0889DF74;
|
|
case 448u: goto L_0889DF7C;
|
|
case 449u: goto L_0889DF84;
|
|
case 450u: goto L_0889DF8C;
|
|
case 451u: goto L_0889DF98;
|
|
case 452u: goto L_0889DFAC;
|
|
case 453u: goto L_0889DFC8;
|
|
case 454u: goto L_0889DFDC;
|
|
case 455u: goto L_0889E010;
|
|
case 456u: goto L_0889E038;
|
|
case 457u: goto L_0889E054;
|
|
case 458u: goto L_0889E060;
|
|
case 459u: goto L_0889E068;
|
|
case 460u: goto L_0889E070;
|
|
case 461u: goto L_0889E07C;
|
|
case 462u: goto L_0889E080;
|
|
case 463u: goto L_0889E090;
|
|
case 464u: goto L_0889E0A8;
|
|
case 465u: goto L_0889E0CC;
|
|
case 466u: goto L_0889E0DC;
|
|
case 467u: goto L_0889E0E4;
|
|
case 468u: goto L_0889E0F8;
|
|
case 469u: goto L_0889E104;
|
|
case 470u: goto L_0889E124;
|
|
case 471u: goto L_0889E154;
|
|
case 472u: goto L_0889E168;
|
|
case 473u: goto L_0889E178;
|
|
case 474u: goto L_0889E184;
|
|
case 475u: goto L_0889E1B4;
|
|
case 476u: goto L_0889E1BC;
|
|
case 477u: goto L_0889E1C4;
|
|
case 478u: goto L_0889E1D0;
|
|
case 479u: goto L_0889E1D8;
|
|
case 480u: goto L_0889E1E0;
|
|
case 481u: goto L_0889E1E4;
|
|
case 482u: goto L_0889E1F4;
|
|
case 483u: goto L_0889E204;
|
|
case 484u: goto L_0889E218;
|
|
case 485u: goto L_0889E228;
|
|
case 486u: goto L_0889E238;
|
|
case 487u: goto L_0889E240;
|
|
case 488u: goto L_0889E248;
|
|
case 489u: goto L_0889E25C;
|
|
case 490u: goto L_0889E264;
|
|
case 491u: goto L_0889E270;
|
|
case 492u: goto L_0889E278;
|
|
case 493u: goto L_0889E288;
|
|
case 494u: goto L_0889E290;
|
|
case 495u: goto L_0889E2A8;
|
|
case 496u: goto L_0889E2BC;
|
|
case 497u: goto L_0889E2D8;
|
|
case 498u: goto L_0889E2E0;
|
|
case 499u: goto L_0889E2EC;
|
|
case 500u: goto L_0889E2F8;
|
|
case 501u: goto L_0889E300;
|
|
case 502u: goto L_0889E308;
|
|
case 503u: goto L_0889E310;
|
|
case 504u: goto L_0889E31C;
|
|
case 505u: goto L_0889E328;
|
|
case 506u: goto L_0889E330;
|
|
case 507u: goto L_0889E33C;
|
|
case 508u: goto L_0889E340;
|
|
case 509u: goto L_0889E368;
|
|
case 510u: goto L_0889E374;
|
|
case 511u: goto L_0889E37C;
|
|
case 512u: goto L_0889E388;
|
|
case 513u: goto L_0889E390;
|
|
case 514u: goto L_0889E3B0;
|
|
case 515u: goto L_0889E3BC;
|
|
case 516u: goto L_0889E3D8;
|
|
case 517u: goto L_0889E3E4;
|
|
case 518u: goto L_0889E3F0;
|
|
case 519u: goto L_0889E3FC;
|
|
case 520u: goto L_0889E408;
|
|
case 521u: goto L_0889E414;
|
|
case 522u: goto L_0889E424;
|
|
case 523u: goto L_0889E42C;
|
|
case 524u: goto L_0889E448;
|
|
case 525u: goto L_0889E458;
|
|
case 526u: goto L_0889E464;
|
|
case 527u: goto L_0889E47C;
|
|
case 528u: goto L_0889E498;
|
|
case 529u: goto L_0889E4AC;
|
|
case 530u: goto L_0889E4B0;
|
|
case 531u: goto L_0889E4BC;
|
|
case 532u: goto L_0889E4D4;
|
|
case 533u: goto L_0889E4E8;
|
|
case 534u: goto L_0889E4F4;
|
|
case 535u: goto L_0889E504;
|
|
case 536u: goto L_0889E518;
|
|
case 537u: goto L_0889E524;
|
|
case 538u: goto L_0889E534;
|
|
case 539u: goto L_0889E554;
|
|
case 540u: goto L_0889E568;
|
|
case 541u: goto L_0889E57C;
|
|
case 542u: goto L_0889E594;
|
|
case 543u: goto L_0889E59C;
|
|
case 544u: goto L_0889E5A4;
|
|
case 545u: goto L_0889E5B4;
|
|
case 546u: goto L_0889E5BC;
|
|
case 547u: goto L_0889E5C4;
|
|
case 548u: goto L_0889E5C8;
|
|
case 549u: goto L_0889E5DC;
|
|
case 550u: goto L_0889E5F4;
|
|
case 551u: goto L_0889E5FC;
|
|
case 552u: goto L_0889E60C;
|
|
case 553u: goto L_0889E620;
|
|
case 554u: goto L_0889E638;
|
|
case 555u: goto L_0889E640;
|
|
case 556u: goto L_0889E650;
|
|
case 557u: goto L_0889E664;
|
|
case 558u: goto L_0889E698;
|
|
case 559u: goto L_0889E6A4;
|
|
case 560u: goto L_0889E6B0;
|
|
case 561u: goto L_0889E6B8;
|
|
case 562u: goto L_0889E6BC;
|
|
case 563u: goto L_0889E6D0;
|
|
case 564u: goto L_0889E6F4;
|
|
case 565u: goto L_0889E704;
|
|
case 566u: goto L_0889E718;
|
|
case 567u: goto L_0889E724;
|
|
case 568u: goto L_0889E730;
|
|
case 569u: goto L_0889E738;
|
|
case 570u: goto L_0889E744;
|
|
case 571u: goto L_0889E760;
|
|
case 572u: goto L_0889E774;
|
|
case 573u: goto L_0889E77C;
|
|
case 574u: goto L_0889E790;
|
|
case 575u: goto L_0889E79C;
|
|
case 576u: goto L_0889E7A0;
|
|
case 577u: goto L_0889E7A8;
|
|
case 578u: goto L_0889E7B0;
|
|
case 579u: goto L_0889E7C4;
|
|
case 580u: goto L_0889E7D8;
|
|
case 581u: goto L_0889E7E4;
|
|
case 582u: goto L_0889E7F0;
|
|
case 583u: goto L_0889E7FC;
|
|
case 584u: goto L_0889E808;
|
|
case 585u: goto L_0889E814;
|
|
case 586u: goto L_0889E820;
|
|
case 587u: goto L_0889E82C;
|
|
case 588u: goto L_0889E838;
|
|
case 589u: goto L_0889E844;
|
|
case 590u: goto L_0889E850;
|
|
case 591u: goto L_0889E85C;
|
|
case 592u: goto L_0889E888;
|
|
case 593u: goto L_0889E894;
|
|
case 594u: goto L_0889E8EC;
|
|
case 595u: goto L_0889E8F8;
|
|
case 596u: goto L_0889E914;
|
|
case 597u: goto L_0889E924;
|
|
case 598u: goto L_0889E930;
|
|
case 599u: goto L_0889E94C;
|
|
case 600u: goto L_0889E95C;
|
|
case 601u: goto L_0889E968;
|
|
case 602u: goto L_0889E984;
|
|
case 603u: goto L_0889E994;
|
|
case 604u: goto L_0889E9A4;
|
|
case 605u: goto L_0889E9B0;
|
|
case 606u: goto L_0889E9B8;
|
|
case 607u: goto L_0889E9C0;
|
|
case 608u: goto L_0889E9C4;
|
|
case 609u: goto L_0889E9D0;
|
|
case 610u: goto L_0889E9E8;
|
|
case 611u: goto L_0889EA04;
|
|
case 612u: goto L_0889EA0C;
|
|
case 613u: goto L_0889EA40;
|
|
case 614u: goto L_0889EA48;
|
|
case 615u: goto L_0889EA50;
|
|
case 616u: goto L_0889EA58;
|
|
case 617u: goto L_0889EA7C;
|
|
case 618u: goto L_0889EAC8;
|
|
case 619u: goto L_0889EADC;
|
|
case 620u: goto L_0889EAF0;
|
|
case 621u: goto L_0889EB08;
|
|
case 622u: goto L_0889EB24;
|
|
case 623u: goto L_0889EB34;
|
|
case 624u: goto L_0889EB50;
|
|
case 625u: goto L_0889EB5C;
|
|
case 626u: goto L_0889EB70;
|
|
case 627u: goto L_0889EB78;
|
|
case 628u: goto L_0889EB80;
|
|
case 629u: goto L_0889EB94;
|
|
case 630u: goto L_0889EBB0;
|
|
case 631u: goto L_0889EBB8;
|
|
case 632u: goto L_0889EBCC;
|
|
case 633u: goto L_0889EBE0;
|
|
case 634u: goto L_0889EC00;
|
|
case 635u: goto L_0889EC9C;
|
|
case 636u: goto L_0889ECB4;
|
|
case 637u: goto L_0889ECC0;
|
|
case 638u: goto L_0889ECD0;
|
|
case 639u: goto L_0889ED08;
|
|
case 640u: goto L_0889ED10;
|
|
case 641u: goto L_0889ED18;
|
|
case 642u: goto L_0889ED20;
|
|
case 643u: goto L_0889ED2C;
|
|
case 644u: goto L_0889ED50;
|
|
case 645u: goto L_0889ED60;
|
|
case 646u: goto L_0889ED78;
|
|
case 647u: goto L_0889ED88;
|
|
case 648u: goto L_0889ED98;
|
|
case 649u: goto L_0889EDAC;
|
|
case 650u: goto L_0889EDC8;
|
|
case 651u: goto L_0889EDD8;
|
|
case 652u: goto L_0889EDE4;
|
|
case 653u: goto L_0889EDF8;
|
|
case 654u: goto L_0889EDFC;
|
|
case 655u: goto L_0889EE14;
|
|
case 656u: goto L_0889EE44;
|
|
case 657u: goto L_0889EEA8;
|
|
case 658u: goto L_0889EEC8;
|
|
case 659u: goto L_0889EEE0;
|
|
case 660u: goto L_0889EEFC;
|
|
case 661u: goto L_0889EF04;
|
|
case 662u: goto L_0889EF34;
|
|
case 663u: goto L_0889EF54;
|
|
case 664u: goto L_0889EF74;
|
|
case 665u: goto L_0889EF8C;
|
|
case 666u: goto L_0889EFA8;
|
|
case 667u: goto L_0889EFB0;
|
|
case 668u: goto L_0889EFE0;
|
|
case 669u: goto L_0889EFE8;
|
|
case 670u: goto L_0889F030;
|
|
case 671u: goto L_0889F044;
|
|
case 672u: goto L_0889F054;
|
|
case 673u: goto L_0889F05C;
|
|
case 674u: goto L_0889F064;
|
|
case 675u: goto L_0889F06C;
|
|
case 676u: goto L_0889F144;
|
|
case 677u: goto L_0889F164;
|
|
case 678u: goto L_0889F16C;
|
|
case 679u: goto L_0889F1FC;
|
|
case 680u: goto L_0889F208;
|
|
case 681u: goto L_0889F218;
|
|
case 682u: goto L_0889F22C;
|
|
case 683u: goto L_0889F23C;
|
|
case 684u: goto L_0889F244;
|
|
case 685u: goto L_0889F24C;
|
|
case 686u: goto L_0889F254;
|
|
case 687u: goto L_0889F330;
|
|
case 688u: goto L_0889F350;
|
|
case 689u: goto L_0889F358;
|
|
case 690u: goto L_0889F3E8;
|
|
case 691u: goto L_0889F3F4;
|
|
case 692u: goto L_0889F3F8;
|
|
case 693u: goto L_0889F400;
|
|
case 694u: goto L_0889F444;
|
|
case 695u: goto L_0889F44C;
|
|
case 696u: goto L_0889F454;
|
|
case 697u: goto L_0889F45C;
|
|
case 698u: goto L_0889F460;
|
|
case 699u: goto L_0889F470;
|
|
case 700u: goto L_0889F478;
|
|
case 701u: goto L_0889F480;
|
|
case 702u: goto L_0889F488;
|
|
case 703u: goto L_0889F49C;
|
|
case 704u: goto L_0889F4A4;
|
|
case 705u: goto L_0889F4AC;
|
|
case 706u: goto L_0889F4B4;
|
|
case 707u: goto L_0889F4BC;
|
|
case 708u: goto L_0889F4C4;
|
|
case 709u: goto L_0889F4E4;
|
|
case 710u: goto L_0889F4EC;
|
|
case 711u: goto L_0889F50C;
|
|
case 712u: goto L_0889F514;
|
|
case 713u: goto L_0889F51C;
|
|
case 714u: goto L_0889F524;
|
|
case 715u: goto L_0889F540;
|
|
case 716u: goto L_0889F548;
|
|
case 717u: goto L_0889F554;
|
|
case 718u: goto L_0889F568;
|
|
case 719u: goto L_0889F578;
|
|
case 720u: goto L_0889F580;
|
|
case 721u: goto L_0889F588;
|
|
case 722u: goto L_0889F590;
|
|
case 723u: goto L_0889F5A0;
|
|
case 724u: goto L_0889F5A8;
|
|
case 725u: goto L_0889F5B0;
|
|
case 726u: goto L_0889F5C0;
|
|
case 727u: goto L_0889F5D0;
|
|
case 728u: goto L_0889F5E0;
|
|
case 729u: goto L_0889F5F8;
|
|
case 730u: goto L_0889F608;
|
|
case 731u: goto L_0889F610;
|
|
case 732u: goto L_0889F618;
|
|
case 733u: goto L_0889F620;
|
|
case 734u: goto L_0889F628;
|
|
case 735u: goto L_0889F638;
|
|
case 736u: goto L_0889F648;
|
|
case 737u: goto L_0889F650;
|
|
case 738u: goto L_0889F65C;
|
|
case 739u: goto L_0889F670;
|
|
case 740u: goto L_0889F68C;
|
|
case 741u: goto L_0889F6C0;
|
|
case 742u: goto L_0889F6D0;
|
|
case 743u: goto L_0889F6D8;
|
|
case 744u: goto L_0889F6FC;
|
|
case 745u: goto L_0889F708;
|
|
case 746u: goto L_0889F710;
|
|
case 747u: goto L_0889F71C;
|
|
case 748u: goto L_0889F724;
|
|
case 749u: goto L_0889F72C;
|
|
case 750u: goto L_0889F744;
|
|
case 751u: goto L_0889F754;
|
|
case 752u: goto L_0889F75C;
|
|
case 753u: goto L_0889F764;
|
|
case 754u: goto L_0889F77C;
|
|
case 755u: goto L_0889F784;
|
|
case 756u: goto L_0889F790;
|
|
case 757u: goto L_0889F798;
|
|
case 758u: goto L_0889F7A0;
|
|
case 759u: goto L_0889F7B0;
|
|
case 760u: goto L_0889F7C8;
|
|
case 761u: goto L_0889F7D4;
|
|
case 762u: goto L_0889F7EC;
|
|
case 763u: goto L_0889F7F0;
|
|
case 764u: goto L_0889F800;
|
|
case 765u: goto L_0889F808;
|
|
case 766u: goto L_0889F818;
|
|
case 767u: goto L_0889F830;
|
|
case 768u: goto L_0889F848;
|
|
case 769u: goto L_0889F854;
|
|
case 770u: goto L_0889F85C;
|
|
case 771u: goto L_0889F878;
|
|
case 772u: goto L_0889F8BC;
|
|
case 773u: goto L_0889F8E0;
|
|
case 774u: goto L_0889F8EC;
|
|
case 775u: goto L_0889F8F8;
|
|
case 776u: goto L_0889F914;
|
|
case 777u: goto L_0889F924;
|
|
case 778u: goto L_0889F92C;
|
|
case 779u: goto L_0889F934;
|
|
case 780u: goto L_0889F94C;
|
|
case 781u: goto L_0889F95C;
|
|
case 782u: goto L_0889F96C;
|
|
case 783u: goto L_0889F980;
|
|
case 784u: goto L_0889F988;
|
|
case 785u: goto L_0889F998;
|
|
case 786u: goto L_0889F9B0;
|
|
case 787u: goto L_0889F9C8;
|
|
case 788u: goto L_0889F9DC;
|
|
case 789u: goto L_0889F9F4;
|
|
case 790u: goto L_0889F9F8;
|
|
case 791u: goto L_0889FA0C;
|
|
case 792u: goto L_0889FA14;
|
|
case 793u: goto L_0889FA24;
|
|
case 794u: goto L_0889FA3C;
|
|
case 795u: goto L_0889FA50;
|
|
case 796u: goto L_0889FA68;
|
|
case 797u: goto L_0889FA70;
|
|
case 798u: goto L_0889FA84;
|
|
case 799u: goto L_0889FAA4;
|
|
case 800u: goto L_0889FAAC;
|
|
case 801u: goto L_0889FAB4;
|
|
case 802u: goto L_0889FAC4;
|
|
case 803u: goto L_0889FAD4;
|
|
case 804u: goto L_0889FADC;
|
|
case 805u: goto L_0889FAE4;
|
|
case 806u: goto L_0889FAF4;
|
|
case 807u: goto L_0889FB00;
|
|
case 808u: goto L_0889FB10;
|
|
case 809u: goto L_0889FB20;
|
|
case 810u: goto L_0889FB28;
|
|
case 811u: goto L_0889FB38;
|
|
case 812u: goto L_0889FB48;
|
|
case 813u: goto L_0889FB5C;
|
|
case 814u: goto L_0889FB80;
|
|
case 815u: goto L_0889FB88;
|
|
case 816u: goto L_0889FB98;
|
|
case 817u: goto L_0889FBC0;
|
|
case 818u: goto L_0889FBDC;
|
|
case 819u: goto L_0889FBEC;
|
|
case 820u: goto L_0889FC04;
|
|
case 821u: goto L_0889FC1C;
|
|
case 822u: goto L_0889FC2C;
|
|
case 823u: goto L_0889FC3C;
|
|
case 824u: goto L_0889FC5C;
|
|
case 825u: goto L_0889FC78;
|
|
case 826u: goto L_0889FC80;
|
|
case 827u: goto L_0889FC88;
|
|
case 828u: goto L_0889FC9C;
|
|
case 829u: goto L_0889FCD4;
|
|
case 830u: goto L_0889FCDC;
|
|
case 831u: goto L_0889FCF8;
|
|
case 832u: goto L_0889FD28;
|
|
case 833u: goto L_0889FD30;
|
|
case 834u: goto L_0889FD3C;
|
|
case 835u: goto L_0889FD44;
|
|
case 836u: goto L_0889FD4C;
|
|
case 837u: goto L_0889FD60;
|
|
case 838u: goto L_0889FD98;
|
|
case 839u: goto L_0889FDA8;
|
|
case 840u: goto L_0889FDB0;
|
|
case 841u: goto L_0889FDCC;
|
|
case 842u: goto L_0889FDFC;
|
|
case 843u: goto L_0889FE04;
|
|
case 844u: goto L_0889FE0C;
|
|
case 845u: goto L_0889FE20;
|
|
case 846u: goto L_0889FE58;
|
|
case 847u: goto L_0889FE60;
|
|
case 848u: goto L_0889FE70;
|
|
case 849u: goto L_0889FE80;
|
|
case 850u: goto L_0889FEA4;
|
|
case 851u: goto L_0889FEB4;
|
|
case 852u: goto L_0889FEC4;
|
|
case 853u: goto L_0889FED4;
|
|
case 854u: goto L_0889FEE4;
|
|
case 855u: goto L_0889FEF4;
|
|
case 856u: goto L_0889FF04;
|
|
case 857u: goto L_0889FF18;
|
|
case 858u: goto L_0889FF20;
|
|
case 859u: goto L_0889FF28;
|
|
case 860u: goto L_0889FF3C;
|
|
case 861u: goto L_0889FF78;
|
|
case 862u: goto L_0889FF80;
|
|
case 863u: goto L_0889FF8C;
|
|
case 864u: goto L_0889FFB4;
|
|
case 865u: goto L_0889FFBC;
|
|
case 866u: goto L_0889FFC4;
|
|
case 867u: goto L_0889FFCC;
|
|
case 868u: goto L_0889FFE8;
|
|
case 869u: goto L_0889FFF4;
|
|
case 870u: goto L_0889FFFC;
|
|
default:
|
|
if (local_transfers == 0u) rt.unsupported(ctx.pc, 0u, "invalid internal function entry");
|
|
else ctx.pc = local_pc;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
}
|
|
// PSPRECOMP_V813_SHARED_JR_DISPATCH: one dynamic-JR reject/redispatch path per unit.
|
|
LOCAL_JR_DISPATCH:
|
|
{
|
|
const std::uint32_t local_delta_v813 = jump_target - 0x0889C000u;
|
|
if (local_delta_v813 >= 16384u || (local_delta_v813 & 3u) != 0u) {
|
|
ctx.pc = jump_target;
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
// PSPRECOMP_V814_CONTINUATION_RETURN
|
|
Runtime::AotTailContinuation aot_cont_v814{};
|
|
if (rt.take_aot_tail_continuation(jump_target, aot_cont_v814)) {
|
|
#if defined(__clang__) && defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
[[clang::musttail]] return aot_cont_v814.function(
|
|
rt, ctx, aot_cont_v814.entry_id, aot_mem);
|
|
#else
|
|
aot_cont_v814.function(rt, ctx, aot_cont_v814.entry_id, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
local_pc = jump_target;
|
|
entry_id = 0u;
|
|
goto LOCAL_DISPATCH;
|
|
|
|
// PSPRECOMP_V812_SHARED_SCHED_BLOCK: one scheduler-exact slow boundary per unit.
|
|
LOCAL_SCHED_BOUNDARY:
|
|
ctx.pc = jump_target;
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (local_redispatch_rounds < 7u && rt.continue_generated_local_dispatch(ctx)) {
|
|
++local_redispatch_rounds;
|
|
AOT_REGCACHE_SYNC_IN();
|
|
local_transfers = 0u;
|
|
local_pc = ctx.pc;
|
|
entry_id = 0u;
|
|
goto LOCAL_DISPATCH;
|
|
}
|
|
return;
|
|
L_0889C000:
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C5B8;
|
|
}
|
|
goto L_0889C008;
|
|
}
|
|
L_0889C008:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(628)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C024;
|
|
}
|
|
goto L_0889C014;
|
|
}
|
|
L_0889C014:
|
|
aot_gpr_31 = (0x0889C01Cu);
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0036.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 4u, 0x0889C01Cu, 0x088961FCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0036_entry(rt, ctx, 434u, aot_mem);
|
|
#else
|
|
recomp_unit_0036_entry(rt, ctx, 434u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0036_entry, 36u, 434u, 0x088961FCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C01Cu) goto L_0889C01C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C01C:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C5B8;
|
|
}
|
|
goto L_0889C024;
|
|
}
|
|
L_0889C024:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(ctx.gpr[28] + static_cast<std::uint32_t>(-25492)));
|
|
aot_mem.aot_direct_store16(ctx.gpr[18] + static_cast<std::uint32_t>(84), static_cast<std::uint16_t>(aot_gpr_4));
|
|
ctx.gpr[19] = (0u | 0u);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(16)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(336), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 14u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ 6u);
|
|
aot_gpr_4 = (aot_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C0F8;
|
|
}
|
|
goto L_0889C054;
|
|
}
|
|
L_0889C054:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 512u);
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C0C0;
|
|
}
|
|
goto L_0889C06C;
|
|
}
|
|
L_0889C06C:
|
|
{ const bool branch_taken = ctx.gpr[17] == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C084;
|
|
}
|
|
goto L_0889C074;
|
|
}
|
|
L_0889C074:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(2228)));
|
|
aot_gpr_5 = (0u | 58u);
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889C0C0;
|
|
}
|
|
goto L_0889C084;
|
|
}
|
|
L_0889C084:
|
|
{ const bool branch_taken = ctx.gpr[16] == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C0B8;
|
|
}
|
|
goto L_0889C08C;
|
|
}
|
|
L_0889C08C:
|
|
aot_gpr_31 = (0x0889C094u);
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0067.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 11u, 0x0889C094u, 0x08910B38u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0067_entry(rt, ctx, 195u, aot_mem);
|
|
#else
|
|
recomp_unit_0067_entry(rt, ctx, 195u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0067_entry, 67u, 195u, 0x08910B38u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C094u) goto L_0889C094;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C094:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C0B8;
|
|
}
|
|
goto L_0889C09C;
|
|
}
|
|
L_0889C09C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(1152)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C0B8;
|
|
}
|
|
goto L_0889C0A8;
|
|
}
|
|
L_0889C0A8:
|
|
aot_gpr_31 = (0x0889C0B0u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(1152)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0191.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 14u, 0x0889C0B0u, 0x08B017A8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0191_entry(rt, ctx, 409u, aot_mem);
|
|
#else
|
|
recomp_unit_0191_entry(rt, ctx, 409u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0191_entry, 191u, 409u, 0x08B017A8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C0B0u) goto L_0889C0B0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C0B0:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C0C0;
|
|
}
|
|
goto L_0889C0B8;
|
|
}
|
|
L_0889C0B8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[19] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C26C;
|
|
}
|
|
goto L_0889C0C0;
|
|
}
|
|
L_0889C0C0:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(ctx.gpr[18] + static_cast<std::uint32_t>(86))))));
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7656)));
|
|
aot_gpr_6 = (static_cast<std::int32_t>(aot_gpr_4) < static_cast<std::int32_t>(aot_gpr_6) ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_6 == 0u;
|
|
aot_gpr_5 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C0E4;
|
|
}
|
|
goto L_0889C0D4;
|
|
}
|
|
L_0889C0D4:
|
|
aot_gpr_4 = (aot_gpr_4 << 2u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(24)));
|
|
aot_gpr_4 = (aot_gpr_5 + aot_gpr_4);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
goto L_0889C0E4;
|
|
L_0889C0E4:
|
|
aot_gpr_4 = (aot_gpr_5 | 0u);
|
|
aot_gpr_31 = (0x0889C0F0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(80)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0063.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 19u, 0x0889C0F0u, 0x089039E4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0063_entry(rt, ctx, 664u, aot_mem);
|
|
#else
|
|
recomp_unit_0063_entry(rt, ctx, 664u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0063_entry, 63u, 664u, 0x089039E4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C0F0u) goto L_0889C0F0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C0F0:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[19] = (aot_gpr_2 | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C26C;
|
|
}
|
|
goto L_0889C0F8;
|
|
}
|
|
L_0889C0F8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 14u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ 14u);
|
|
aot_gpr_4 = (aot_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C23C;
|
|
}
|
|
goto L_0889C114;
|
|
}
|
|
L_0889C114:
|
|
ctx.gpr[16] = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(352)));
|
|
{ const bool branch_taken = ctx.gpr[16] == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C158;
|
|
}
|
|
goto L_0889C120;
|
|
}
|
|
L_0889C120:
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(640), ctx.gpr[21]);
|
|
aot_mem.aot_direct_store8(aot_gpr_29 + static_cast<std::uint32_t>(596), static_cast<std::uint8_t>(ctx.gpr[17]));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(108)));
|
|
ctx.gpr[17] = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(ctx.gpr[17] + static_cast<std::uint32_t>(0))))));
|
|
aot_gpr_31 = (0x0889C13Cu);
|
|
ctx.gpr[21] = (ctx.gpr[16] + aot_gpr_4);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0115.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 23u, 0x0889C13Cu, 0x089D273Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0115_entry(rt, ctx, 419u, aot_mem);
|
|
#else
|
|
recomp_unit_0115_entry(rt, ctx, 419u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0115_entry, 115u, 419u, 0x089D273Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C13Cu) goto L_0889C13C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C13C:
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_4 = (ctx.gpr[21] | 0u);
|
|
jump_target = aot_gpr_6;
|
|
aot_gpr_31 = (0x0889C14Cu);
|
|
aot_gpr_5 = (aot_gpr_2 | 0u);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C14Cu) goto L_0889C14C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889C14C:
|
|
ctx.gpr[17] = (aot_mem.aot_direct_load8(aot_gpr_29 + static_cast<std::uint32_t>(596)));
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
ctx.gpr[21] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(640)));
|
|
if (branch_taken) {
|
|
goto L_0889C160;
|
|
}
|
|
goto L_0889C158;
|
|
}
|
|
L_0889C158:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[16] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C160;
|
|
}
|
|
goto L_0889C160;
|
|
}
|
|
L_0889C160:
|
|
{ const bool branch_taken = ctx.gpr[16] == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C204;
|
|
}
|
|
goto L_0889C168;
|
|
}
|
|
L_0889C168:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 512u);
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C1CC;
|
|
}
|
|
goto L_0889C180;
|
|
}
|
|
L_0889C180:
|
|
{ const bool branch_taken = ctx.gpr[17] == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C1C4;
|
|
}
|
|
goto L_0889C188;
|
|
}
|
|
L_0889C188:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(96)));
|
|
if (aot_gpr_4 != 0u) {
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(96)));
|
|
goto L_0889C1B4;
|
|
}
|
|
goto L_0889C194;
|
|
L_0889C194:
|
|
aot_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(ctx.gpr[16] + static_cast<std::uint32_t>(10))))));
|
|
aot_gpr_6 = (aot_gpr_29 + static_cast<std::uint32_t>(384));
|
|
aot_gpr_31 = (0x0889C1A4u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0166.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 31u, 0x0889C1A4u, 0x08A9C6FCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0166_entry(rt, ctx, 47u, aot_mem);
|
|
#else
|
|
recomp_unit_0166_entry(rt, ctx, 47u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0166_entry, 166u, 47u, 0x08A9C6FCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C1A4u) goto L_0889C1A4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C1A4:
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(96), aot_gpr_2);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_29 + static_cast<std::uint32_t>(384)));
|
|
aot_mem.aot_direct_store8(ctx.gpr[16] + static_cast<std::uint32_t>(4), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(96)));
|
|
goto L_0889C1B4;
|
|
L_0889C1B4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(180)));
|
|
aot_gpr_5 = (0u | 58u);
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889C1CC;
|
|
}
|
|
goto L_0889C1C4;
|
|
}
|
|
L_0889C1C4:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[19] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C234;
|
|
}
|
|
goto L_0889C1CC;
|
|
}
|
|
L_0889C1CC:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(ctx.gpr[18] + static_cast<std::uint32_t>(86))))));
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7656)));
|
|
aot_gpr_6 = (static_cast<std::int32_t>(aot_gpr_4) < static_cast<std::int32_t>(aot_gpr_6) ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_6 == 0u;
|
|
aot_gpr_5 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C1F0;
|
|
}
|
|
goto L_0889C1E0;
|
|
}
|
|
L_0889C1E0:
|
|
aot_gpr_4 = (aot_gpr_4 << 2u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(24)));
|
|
aot_gpr_4 = (aot_gpr_5 + aot_gpr_4);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
goto L_0889C1F0;
|
|
L_0889C1F0:
|
|
aot_gpr_4 = (aot_gpr_5 | 0u);
|
|
aot_gpr_31 = (0x0889C1FCu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(80)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0063.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 37u, 0x0889C1FCu, 0x089039E4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0063_entry(rt, ctx, 664u, aot_mem);
|
|
#else
|
|
recomp_unit_0063_entry(rt, ctx, 664u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0063_entry, 63u, 664u, 0x089039E4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C1FCu) goto L_0889C1FC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C1FC:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[19] = (aot_gpr_2 | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C234;
|
|
}
|
|
goto L_0889C204;
|
|
}
|
|
L_0889C204:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 512u);
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C234;
|
|
}
|
|
goto L_0889C21C;
|
|
}
|
|
L_0889C21C:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(ctx.gpr[18] + static_cast<std::uint32_t>(86))))));
|
|
aot_gpr_4 = (aot_gpr_4 << 2u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(24)));
|
|
aot_gpr_4 = (aot_gpr_5 + aot_gpr_4);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[19] = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(20)));
|
|
goto L_0889C234;
|
|
L_0889C234:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C26C;
|
|
}
|
|
goto L_0889C23C;
|
|
}
|
|
L_0889C23C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 512u);
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C26C;
|
|
}
|
|
goto L_0889C254;
|
|
}
|
|
L_0889C254:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(ctx.gpr[18] + static_cast<std::uint32_t>(86))))));
|
|
aot_gpr_4 = (aot_gpr_4 << 2u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(24)));
|
|
aot_gpr_4 = (aot_gpr_5 + aot_gpr_4);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[19] = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(20)));
|
|
goto L_0889C26C;
|
|
L_0889C26C:
|
|
{ const bool branch_taken = ctx.gpr[19] == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C388;
|
|
}
|
|
goto L_0889C274;
|
|
}
|
|
L_0889C274:
|
|
ctx.gpr[17] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(632)));
|
|
ctx.gpr[16] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(612)));
|
|
ctx.gpr[17] = (ctx.gpr[17] & 255u);
|
|
ctx.gpr[16] = (ctx.gpr[16] & 255u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(600)));
|
|
aot_gpr_6 = (ctx.gpr[19] + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[7] = (aot_gpr_29 + static_cast<std::uint32_t>(464));
|
|
aot_gpr_31 = (0x0889C298u);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0043.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 45u, 0x0889C298u, 0x088B1820u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0043_entry(rt, ctx, 207u, aot_mem);
|
|
#else
|
|
recomp_unit_0043_entry(rt, ctx, 207u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0043_entry, 43u, 207u, 0x088B1820u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C298u) goto L_0889C298;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C298:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
aot_gpr_4 = (aot_gpr_29 + static_cast<std::uint32_t>(464));
|
|
if (branch_taken) {
|
|
goto L_0889C2A8;
|
|
}
|
|
goto L_0889C2A0;
|
|
}
|
|
L_0889C2A0:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C378;
|
|
}
|
|
goto L_0889C2A8;
|
|
}
|
|
L_0889C2A8:
|
|
ctx.gpr[7] = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_5 = (ctx.gpr[19] | 0u);
|
|
aot_gpr_6 = (ctx.gpr[20] | 0u);
|
|
ctx.gpr[8] = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889C2C0u);
|
|
ctx.gpr[9] = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0043.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 48u, 0x0889C2C0u, 0x088B3CECu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0043_entry(rt, ctx, 484u, aot_mem);
|
|
#else
|
|
recomp_unit_0043_entry(rt, ctx, 484u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0043_entry, 43u, 484u, 0x088B3CECu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C2C0u) goto L_0889C2C0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C2C0:
|
|
if (aot_gpr_2 != 0u) {
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[20] + static_cast<std::uint32_t>(0)));
|
|
goto L_0889C2D0;
|
|
}
|
|
goto L_0889C2C8;
|
|
L_0889C2C8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C378;
|
|
}
|
|
goto L_0889C2D0;
|
|
}
|
|
L_0889C2D0:
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(448), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[20] + static_cast<std::uint32_t>(4)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(452), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[20] + static_cast<std::uint32_t>(8)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(456), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
ctx.gpr[16] = (aot_gpr_29 + static_cast<std::uint32_t>(448));
|
|
aot_gpr_4 = (ctx.gpr[23] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889C2F8u);
|
|
aot_gpr_6 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0035.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 51u, 0x0889C2F8u, 0x08891710u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0035_entry(rt, ctx, 194u, aot_mem);
|
|
#else
|
|
recomp_unit_0035_entry(rt, ctx, 194u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0035_entry, 35u, 194u, 0x08891710u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C2F8u) goto L_0889C2F8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C2F8:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[23] + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_4 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[23] + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_5 = (std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
aot_fpr_14 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[23] + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_6 = (std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_4, aot_gpr_5, aot_gpr_6};
|
|
aot_mem.aot_direct_store32_block(ctx.gpr[20] + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[20] + static_cast<std::uint32_t>(16)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(448), std::bit_cast<std::uint32_t>(ctx.fpr[15]));
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[20] + static_cast<std::uint32_t>(20)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(452), std::bit_cast<std::uint32_t>(ctx.fpr[15]));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[20] + static_cast<std::uint32_t>(24)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(456), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[18] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<4u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[18] + static_cast<std::uint32_t>(16);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<5u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[18] + static_cast<std::uint32_t>(32);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<6u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[16] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<7u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vtfm_ct<0u, 36u, 7u, 3u, 3u>();
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = ctx.gpr[23] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(620)));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[23] + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_5 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[23] + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_6 = (std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
aot_fpr_14 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[23] + static_cast<std::uint32_t>(8)));
|
|
ctx.gpr[7] = (std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_5, aot_gpr_6, ctx.gpr[7]};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_4 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_4 = (0u | 1u);
|
|
goto L_0889C378;
|
|
L_0889C378:
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C388;
|
|
}
|
|
goto L_0889C380;
|
|
}
|
|
L_0889C380:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(604)));
|
|
aot_mem.aot_direct_store32(aot_gpr_4 + static_cast<std::uint32_t>(0), ctx.gpr[18]);
|
|
goto L_0889C388;
|
|
L_0889C388:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_29 + static_cast<std::uint32_t>(624)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C5B8;
|
|
}
|
|
goto L_0889C394;
|
|
}
|
|
L_0889C394:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(92)));
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(336));
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(0))))));
|
|
aot_gpr_4 = (ctx.gpr[18] + aot_gpr_4);
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(4)));
|
|
jump_target = aot_gpr_6;
|
|
aot_gpr_31 = (0x0889C3B0u);
|
|
aot_gpr_5 = (aot_gpr_29 + static_cast<std::uint32_t>(64));
|
|
ctx.pc = jump_target;
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C3B0u) goto L_0889C3B0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889C3B0:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C5B8;
|
|
}
|
|
goto L_0889C3B8;
|
|
}
|
|
L_0889C3B8:
|
|
ctx.gpr[16] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(612)));
|
|
ctx.gpr[16] = (ctx.gpr[16] & 255u);
|
|
ctx.gpr[17] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(600)));
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_6 = (aot_gpr_29 + static_cast<std::uint32_t>(80));
|
|
ctx.gpr[19] = (aot_gpr_29 + static_cast<std::uint32_t>(544));
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889C3DCu);
|
|
ctx.gpr[7] = (ctx.gpr[19] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0043.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 58u, 0x0889C3DCu, 0x088B1820u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0043_entry(rt, ctx, 207u, aot_mem);
|
|
#else
|
|
recomp_unit_0043_entry(rt, ctx, 207u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0043_entry, 43u, 207u, 0x088B1820u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C3DCu) goto L_0889C3DC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C3DC:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
ctx.gpr[8] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C3EC;
|
|
}
|
|
goto L_0889C3E4;
|
|
}
|
|
L_0889C3E4:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C4B8;
|
|
}
|
|
goto L_0889C3EC;
|
|
}
|
|
L_0889C3EC:
|
|
aot_gpr_5 = (aot_gpr_29 + static_cast<std::uint32_t>(64));
|
|
aot_gpr_6 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
aot_gpr_4 = (ctx.gpr[19] | 0u);
|
|
ctx.gpr[7] = (aot_gpr_29 + static_cast<std::uint32_t>(336));
|
|
aot_gpr_31 = (0x0889C404u);
|
|
ctx.gpr[9] = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0043.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 61u, 0x0889C404u, 0x088B3CECu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0043_entry(rt, ctx, 484u, aot_mem);
|
|
#else
|
|
recomp_unit_0043_entry(rt, ctx, 484u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0043_entry, 43u, 484u, 0x088B3CECu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C404u) goto L_0889C404;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C404:
|
|
if (aot_gpr_2 != 0u) {
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(32)));
|
|
goto L_0889C414;
|
|
}
|
|
goto L_0889C40C;
|
|
L_0889C40C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C4B8;
|
|
}
|
|
goto L_0889C414;
|
|
}
|
|
L_0889C414:
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(528), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(36)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(532), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(40)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(536), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
ctx.gpr[16] = (aot_gpr_29 + static_cast<std::uint32_t>(528));
|
|
aot_gpr_4 = (ctx.gpr[22] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889C43Cu);
|
|
aot_gpr_6 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0035.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 64u, 0x0889C43Cu, 0x08891710u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0035_entry(rt, ctx, 194u, aot_mem);
|
|
#else
|
|
recomp_unit_0035_entry(rt, ctx, 194u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0035_entry, 35u, 194u, 0x08891710u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C43Cu) goto L_0889C43C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C43C:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[22] + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_4 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[22] + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_5 = (std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
aot_fpr_14 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[22] + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_6 = (std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_4, aot_gpr_5, aot_gpr_6};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(32), aot_run_words); }
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(48)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(528), std::bit_cast<std::uint32_t>(ctx.fpr[15]));
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(52)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(532), std::bit_cast<std::uint32_t>(ctx.fpr[15]));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(56)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(536), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[18] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<4u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[18] + static_cast<std::uint32_t>(16);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<5u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[18] + static_cast<std::uint32_t>(32);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<6u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[16] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<7u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vtfm_ct<0u, 36u, 7u, 3u, 3u>();
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = ctx.gpr[22] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[22] + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_4 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[22] + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_5 = (std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
aot_fpr_14 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[22] + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_6 = (std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_4, aot_gpr_5, aot_gpr_6};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(48), aot_run_words); }
|
|
aot_gpr_4 = (0u | 1u);
|
|
goto L_0889C4B8;
|
|
L_0889C4B8:
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_gpr_5 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
if (branch_taken) {
|
|
goto L_0889C5B8;
|
|
}
|
|
goto L_0889C4C0;
|
|
}
|
|
L_0889C4C0:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(16)));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(336)));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_12 <= aot_fpr_13)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C4F4;
|
|
}
|
|
goto L_0889C4D8;
|
|
}
|
|
L_0889C4D8:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(336)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(16), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_31 = (0x0889C4E8u);
|
|
aot_gpr_4 = (ctx.gpr[20] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 68u, 0x0889C4E8u, 0x08805288u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 157u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 157u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 157u, 0x08805288u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C4E8u) goto L_0889C4E8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C4E8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(604)));
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store32(aot_gpr_4 + static_cast<std::uint32_t>(0), ctx.gpr[18]);
|
|
if (branch_taken) {
|
|
goto L_0889C5B8;
|
|
}
|
|
goto L_0889C4F4;
|
|
}
|
|
L_0889C4F4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(616)));
|
|
{ const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[17] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 1u>();
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = ctx.gpr[21] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[21] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[18] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vdot_ct<28u, 0u, 1u, 3u>();
|
|
aot_gpr_4 = (ctx.vfpu_scalar_bits_ct<28u>());
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[20] + static_cast<std::uint32_t>(0)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(368), std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[20] + static_cast<std::uint32_t>(4)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(372), std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[20] + static_cast<std::uint32_t>(8)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(376), std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
aot_gpr_4 = (aot_gpr_29 + static_cast<std::uint32_t>(368));
|
|
{ const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
aot_gpr_4 = (ctx.gpr[18] + static_cast<std::uint32_t>(48));
|
|
{ const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 1u>();
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = ctx.gpr[21] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[21] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[18] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vdot_ct<28u, 0u, 1u, 3u>();
|
|
aot_gpr_4 = (ctx.vfpu_scalar_bits_ct<28u>());
|
|
aot_fpr_13 = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_12 < aot_fpr_20)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C580;
|
|
}
|
|
goto L_0889C570;
|
|
}
|
|
L_0889C570:
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_13 <= ctx.fpr[22])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C5A0;
|
|
}
|
|
goto L_0889C580;
|
|
}
|
|
L_0889C580:
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_12 <= ctx.fpr[24])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C5B8;
|
|
}
|
|
goto L_0889C590;
|
|
}
|
|
L_0889C590:
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_13 < ctx.fpr[22])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C5B8;
|
|
}
|
|
goto L_0889C5A0;
|
|
}
|
|
L_0889C5A0:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(336)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(16), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_31 = (0x0889C5B0u);
|
|
aot_gpr_4 = (ctx.gpr[20] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 74u, 0x0889C5B0u, 0x08805288u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 157u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 157u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 157u, 0x08805288u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C5B0u) goto L_0889C5B0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C5B0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(604)));
|
|
aot_mem.aot_direct_store32(aot_gpr_4 + static_cast<std::uint32_t>(0), ctx.gpr[18]);
|
|
goto L_0889C5B8;
|
|
L_0889C5B8:
|
|
{ const bool branch_taken = ctx.gpr[30] != 0u;
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0037_entry, 37u, 706u, 0x0889BFC0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889C5C0;
|
|
}
|
|
L_0889C5C0:
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(120), 0u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(636)));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(16)));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_12 < aot_fpr_13)) ? 0x00800000u : 0u);
|
|
if (!((ctx.fcr31 & 0x00800000u) != 0u)) {
|
|
aot_gpr_4 = (aot_gpr_29 + static_cast<std::uint32_t>(64));
|
|
goto L_0889C5FC;
|
|
}
|
|
goto L_0889C5E0;
|
|
L_0889C5E0:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(16)));
|
|
aot_mem.aot_direct_store32(aot_gpr_4 + static_cast<std::uint32_t>(0), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_4 = (aot_gpr_29 + static_cast<std::uint32_t>(64));
|
|
aot_gpr_31 = (0x0889C5F4u);
|
|
aot_gpr_5 = (0u | 2u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0099.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 78u, 0x0889C5F4u, 0x08990464u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0099_entry(rt, ctx, 70u, aot_mem);
|
|
#else
|
|
recomp_unit_0099_entry(rt, ctx, 70u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0099_entry, 99u, 70u, 0x08990464u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C5F4u) goto L_0889C5F4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C5F4:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_0889C608;
|
|
}
|
|
goto L_0889C5FC;
|
|
}
|
|
L_0889C5FC:
|
|
aot_gpr_31 = (0x0889C604u);
|
|
aot_gpr_5 = (0u | 2u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0099.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 80u, 0x0889C604u, 0x08990464u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0099_entry(rt, ctx, 70u, aot_mem);
|
|
#else
|
|
recomp_unit_0099_entry(rt, ctx, 70u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0099_entry, 99u, 70u, 0x08990464u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C604u) goto L_0889C604;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C604:
|
|
aot_gpr_2 = (0u | 0u);
|
|
goto L_0889C608;
|
|
L_0889C608:
|
|
{ std::uint32_t aot_run_words[13]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(644), aot_run_words);
|
|
aot_fpr_20 = std::bit_cast<float>(aot_run_words[0]);
|
|
ctx.fpr[22] = std::bit_cast<float>(aot_run_words[1]);
|
|
ctx.fpr[24] = std::bit_cast<float>(aot_run_words[2]);
|
|
ctx.gpr[16] = aot_run_words[3];
|
|
ctx.gpr[17] = aot_run_words[4];
|
|
ctx.gpr[18] = aot_run_words[5];
|
|
ctx.gpr[19] = aot_run_words[6];
|
|
ctx.gpr[20] = aot_run_words[7];
|
|
ctx.gpr[21] = aot_run_words[8];
|
|
ctx.gpr[22] = aot_run_words[9];
|
|
ctx.gpr[23] = aot_run_words[10];
|
|
ctx.gpr[30] = aot_run_words[11];
|
|
aot_gpr_31 = aot_run_words[12];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(704));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889C644:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-336));
|
|
{ const std::uint32_t aot_run_words[16]{std::bit_cast<std::uint32_t>(aot_fpr_20), std::bit_cast<std::uint32_t>(ctx.fpr[22]), std::bit_cast<std::uint32_t>(ctx.fpr[24]), std::bit_cast<std::uint32_t>(ctx.fpr[26]), std::bit_cast<std::uint32_t>(ctx.fpr[28]), std::bit_cast<std::uint32_t>(ctx.fpr[30]), ctx.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], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(272), aot_run_words); }
|
|
ctx.gpr[7] = (ctx.gpr[7] & 255u);
|
|
ctx.gpr[8] = (ctx.gpr[8] & 255u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(268), ctx.gpr[7]);
|
|
ctx.gpr[21] = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(256), ctx.gpr[8]);
|
|
ctx.gpr[20] = (aot_gpr_6 | 0u);
|
|
ctx.gpr[30] = (ctx.gpr[9] | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(244), aot_gpr_5);
|
|
ctx.fpr[26] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
{ const bool branch_taken = ctx.gpr[21] == 0u;
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(260), std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
if (branch_taken) {
|
|
goto L_0889CF70;
|
|
}
|
|
goto L_0889C6B4;
|
|
}
|
|
L_0889C6B4:
|
|
ctx.gpr[23] = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
ctx.fpr[22] = std::bit_cast<float>(0u);
|
|
ctx.gpr[22] = (aot_gpr_29 + static_cast<std::uint32_t>(64));
|
|
aot_gpr_4 = (16256u << 16u);
|
|
ctx.fpr[30] = std::bit_cast<float>(aot_gpr_4);
|
|
aot_gpr_4 = (2236u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(32304));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(264), aot_gpr_4);
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(192), aot_run_words);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_run_words[0]);
|
|
ctx.fpr[28] = std::bit_cast<float>(aot_run_words[1]);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_run_words[2]);
|
|
}
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(252), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(248), std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
goto L_0889C6E8;
|
|
L_0889C6E8:
|
|
ctx.gpr[17] = (aot_mem.aot_direct_load32(ctx.gpr[21] + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[21] = (aot_mem.aot_direct_load32(ctx.gpr[21] + static_cast<std::uint32_t>(8)));
|
|
ctx.gpr[16] = (ctx.gpr[17] + static_cast<std::uint32_t>(48));
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[16] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(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 = aot_gpr_29 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[16] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.gpr[18] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(244)));
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[18] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 1u>();
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = ctx.gpr[23] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[23] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vdot_ct<28u, 0u, 0u, 3u>();
|
|
ctx.execute_vfpu_unary_ct<28u, 28u, 1u, 22u>();
|
|
aot_gpr_4 = (ctx.vfpu_scalar_bits_ct<28u>());
|
|
ctx.fpr[24] = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[24] < ctx.fpr[26])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
ctx.gpr[19] = (0u + static_cast<std::uint32_t>(-65));
|
|
if (branch_taken) {
|
|
goto L_0889CF54;
|
|
}
|
|
goto L_0889C734;
|
|
}
|
|
L_0889C734:
|
|
aot_gpr_31 = (0x0889C73Cu);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0143.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 86u, 0x0889C73Cu, 0x08A4182Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0143_entry(rt, ctx, 290u, aot_mem);
|
|
#else
|
|
recomp_unit_0143_entry(rt, ctx, 290u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0143_entry, 143u, 290u, 0x08A4182Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C73Cu) goto L_0889C73C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C73C:
|
|
aot_gpr_4 = (4u << 16u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_5 & aot_gpr_4);
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CF54;
|
|
}
|
|
goto L_0889C758;
|
|
}
|
|
L_0889C758:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 14u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ 6u);
|
|
aot_gpr_4 = (aot_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C784;
|
|
}
|
|
goto L_0889C774;
|
|
}
|
|
L_0889C774:
|
|
aot_gpr_31 = (0x0889C77Cu);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0067.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 89u, 0x0889C77Cu, 0x08910B38u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0067_entry(rt, ctx, 195u, aot_mem);
|
|
#else
|
|
recomp_unit_0067_entry(rt, ctx, 195u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0067_entry, 67u, 195u, 0x08910B38u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C77Cu) goto L_0889C77C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C77C:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CF54;
|
|
}
|
|
goto L_0889C784;
|
|
}
|
|
L_0889C784:
|
|
aot_gpr_4 = (0u | 0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_5 = (aot_gpr_5 & 2048u);
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_6 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_0889C7A8;
|
|
}
|
|
goto L_0889C798;
|
|
}
|
|
L_0889C798:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(76)));
|
|
aot_gpr_5 = (aot_gpr_5 & 2048u);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
if (branch_taken) {
|
|
goto L_0889C7B0;
|
|
}
|
|
goto L_0889C7A8;
|
|
}
|
|
L_0889C7A8:
|
|
aot_gpr_4 = (aot_gpr_6 | 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
goto L_0889C7B0;
|
|
L_0889C7B0:
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CA8C;
|
|
}
|
|
goto L_0889C7B8;
|
|
}
|
|
L_0889C7B8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 14u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ 8u);
|
|
aot_gpr_4 = (aot_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_gpr_4 = (0u + static_cast<std::uint32_t>(-2049));
|
|
if (branch_taken) {
|
|
goto L_0889CA78;
|
|
}
|
|
goto L_0889C7D4;
|
|
}
|
|
L_0889C7D4:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(456)));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_12 <= ctx.fpr[22])) ? 0x00800000u : 0u);
|
|
if (((ctx.fcr31 & 0x00800000u) != 0u)) {
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(ctx.gpr[17] + static_cast<std::uint32_t>(86))))));
|
|
goto L_0889C804;
|
|
}
|
|
goto L_0889C7E8;
|
|
L_0889C7E8:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(456)));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(260)));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_13 <= aot_fpr_12)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C828;
|
|
}
|
|
goto L_0889C800;
|
|
}
|
|
L_0889C800:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(ctx.gpr[17] + static_cast<std::uint32_t>(86))))));
|
|
goto L_0889C804;
|
|
L_0889C804:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(104)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(186)));
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889C828;
|
|
}
|
|
goto L_0889C814;
|
|
}
|
|
L_0889C814:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(ctx.gpr[17] + static_cast<std::uint32_t>(86))))));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(104)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(188)));
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889C9F8;
|
|
}
|
|
goto L_0889C828;
|
|
}
|
|
L_0889C828:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(ctx.gpr[17] + static_cast<std::uint32_t>(86))))));
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7656)));
|
|
ctx.gpr[7] = (static_cast<std::int32_t>(aot_gpr_4) < static_cast<std::int32_t>(ctx.gpr[7]) ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[7] == 0u;
|
|
aot_gpr_5 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C84C;
|
|
}
|
|
goto L_0889C83C;
|
|
}
|
|
L_0889C83C:
|
|
aot_gpr_4 = (aot_gpr_4 << 2u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(24)));
|
|
aot_gpr_4 = (aot_gpr_5 + aot_gpr_4);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
goto L_0889C84C;
|
|
L_0889C84C:
|
|
aot_gpr_4 = (aot_gpr_5 | 0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(16)));
|
|
if (aot_gpr_5 == aot_gpr_6) {
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(58)));
|
|
goto L_0889C874;
|
|
}
|
|
goto L_0889C85C;
|
|
L_0889C85C:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(16)));
|
|
ctx.gpr[7] = (0u | 3u);
|
|
if (aot_gpr_5 == ctx.gpr[7]) {
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(58)));
|
|
goto L_0889C874;
|
|
}
|
|
goto L_0889C86C;
|
|
L_0889C86C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C898;
|
|
}
|
|
goto L_0889C874;
|
|
}
|
|
L_0889C874:
|
|
ctx.gpr[7] = (ctx.gpr[7] & 8192u);
|
|
{ const bool branch_taken = ctx.gpr[7] != 0u;
|
|
aot_gpr_5 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C890;
|
|
}
|
|
goto L_0889C880;
|
|
}
|
|
L_0889C880:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(58)));
|
|
aot_gpr_4 = (aot_gpr_4 & 16384u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_gpr_4 = (aot_gpr_5 & 255u);
|
|
if (branch_taken) {
|
|
goto L_0889C898;
|
|
}
|
|
goto L_0889C890;
|
|
}
|
|
L_0889C890:
|
|
aot_gpr_5 = (aot_gpr_6 | 0u);
|
|
aot_gpr_4 = (aot_gpr_5 & 255u);
|
|
goto L_0889C898;
|
|
L_0889C898:
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_gpr_4 = (0u + static_cast<std::uint32_t>(-2049));
|
|
if (branch_taken) {
|
|
goto L_0889C8BC;
|
|
}
|
|
goto L_0889C8A0;
|
|
}
|
|
L_0889C8A0:
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[18] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
aot_gpr_5 = (aot_gpr_29 + static_cast<std::uint32_t>(48));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
aot_gpr_31 = (0x0889C8B4u);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0008.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 110u, 0x0889C8B4u, 0x08827E00u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0008_entry(rt, ctx, 598u, aot_mem);
|
|
#else
|
|
recomp_unit_0008_entry(rt, ctx, 598u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0008_entry, 8u, 598u, 0x08827E00u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C8B4u) goto L_0889C8B4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C8B4:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C9F8;
|
|
}
|
|
goto L_0889C8BC;
|
|
}
|
|
L_0889C8BC:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_5 & aot_gpr_4);
|
|
aot_mem.aot_direct_store32(ctx.gpr[17] + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
aot_gpr_31 = (0x0889C8D0u);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0152.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 112u, 0x0889C8D0u, 0x08A66048u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0152_entry(rt, ctx, 463u, aot_mem);
|
|
#else
|
|
recomp_unit_0152_entry(rt, ctx, 463u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0152_entry, 152u, 463u, 0x08A66048u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C8D0u) goto L_0889C8D0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C8D0:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(ctx.gpr[17] + static_cast<std::uint32_t>(86))))));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(104)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(76)));
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889C968;
|
|
}
|
|
goto L_0889C8E4;
|
|
}
|
|
L_0889C8E4:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(aot_mem.aot_direct_load8(ctx.gpr[17] + static_cast<std::uint32_t>(482))))));
|
|
aot_gpr_4 = (aot_gpr_4 & 64u);
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C968;
|
|
}
|
|
goto L_0889C8FC;
|
|
}
|
|
L_0889C8FC:
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[16] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(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 = ctx.gpr[22] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
aot_gpr_31 = (0x0889C90Cu);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(72)));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B61B60, 215u, 341u, 0x08B61B60u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, ctx.gpr[3], aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], aot_gpr_29, aot_gpr_31, aot_fpr_12); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0215_entry, 215u, 341u, 0x08B61B60u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C90Cu) goto L_0889C90C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889C90C:
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25444)));
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25448)));
|
|
aot_gpr_5 = (ctx.gpr[3] | 0u);
|
|
aot_gpr_31 = (0x0889C920u);
|
|
aot_gpr_4 = (aot_gpr_2 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0215.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 116u, 0x0889C920u, 0x08B61F5Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0215_entry(rt, ctx, 395u, aot_mem);
|
|
#else
|
|
recomp_unit_0215_entry(rt, ctx, 395u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0215_entry, 215u, 395u, 0x08B61F5Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C920u) goto L_0889C920;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C920:
|
|
aot_gpr_5 = (ctx.gpr[3] | 0u);
|
|
aot_gpr_31 = (0x0889C92Cu);
|
|
aot_gpr_4 = (aot_gpr_2 | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B627F0, 215u, 515u, 0x08B627F0u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, ctx.gpr[3], aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], ctx.gpr[9], ctx.gpr[10], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0215_entry, 215u, 515u, 0x08B627F0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C92Cu) goto L_0889C92C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889C92C:
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(72), std::bit_cast<std::uint32_t>(ctx.fpr[0]));
|
|
aot_gpr_4 = (0u | 5u);
|
|
aot_gpr_5 = (ctx.gpr[22] | 0u);
|
|
aot_gpr_31 = (0x0889C940u);
|
|
aot_gpr_6 = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0079.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 118u, 0x0889C940u, 0x08941D04u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0079_entry(rt, ctx, 280u, aot_mem);
|
|
#else
|
|
recomp_unit_0079_entry(rt, ctx, 280u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0079_entry, 79u, 280u, 0x08941D04u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C940u) goto L_0889C940;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C940:
|
|
aot_gpr_4 = (0u | 6u);
|
|
aot_gpr_5 = (ctx.gpr[22] | 0u);
|
|
aot_gpr_31 = (0x0889C950u);
|
|
aot_gpr_6 = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0079.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 119u, 0x0889C950u, 0x08941D04u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0079_entry(rt, ctx, 280u, aot_mem);
|
|
#else
|
|
recomp_unit_0079_entry(rt, ctx, 280u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0079_entry, 79u, 280u, 0x08941D04u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C950u) goto L_0889C950;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889C950:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(aot_mem.aot_direct_load8(ctx.gpr[17] + static_cast<std::uint32_t>(482))))));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[19]);
|
|
aot_gpr_4 = (aot_gpr_4 | 64u);
|
|
aot_mem.aot_direct_store8(ctx.gpr[17] + static_cast<std::uint32_t>(482), static_cast<std::uint8_t>(aot_gpr_4));
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C9F8;
|
|
}
|
|
goto L_0889C968;
|
|
}
|
|
L_0889C968:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 14u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ 8u);
|
|
aot_gpr_4 = (aot_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C9F8;
|
|
}
|
|
goto L_0889C984;
|
|
}
|
|
L_0889C984:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(92)));
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(32));
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(0))))));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(4)));
|
|
jump_target = aot_gpr_5;
|
|
aot_gpr_31 = (0x0889C99Cu);
|
|
aot_gpr_4 = (ctx.gpr[17] + aot_gpr_4);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889C99Cu) goto L_0889C99C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889C99C:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C9F8;
|
|
}
|
|
goto L_0889C9A4;
|
|
}
|
|
L_0889C9A4:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(ctx.gpr[17] + static_cast<std::uint32_t>(86))))));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(104)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(138)));
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889C9D8;
|
|
}
|
|
goto L_0889C9B8;
|
|
}
|
|
L_0889C9B8:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(104)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(190)));
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889C9D8;
|
|
}
|
|
goto L_0889C9C8;
|
|
}
|
|
L_0889C9C8:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(104)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(192)));
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
aot_gpr_4 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889C9E0;
|
|
}
|
|
goto L_0889C9D8;
|
|
}
|
|
L_0889C9D8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_0889C9E0;
|
|
}
|
|
goto L_0889C9E0;
|
|
}
|
|
L_0889C9E0:
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C9F8;
|
|
}
|
|
goto L_0889C9E8;
|
|
}
|
|
L_0889C9E8:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(aot_mem.aot_direct_load8(ctx.gpr[17] + static_cast<std::uint32_t>(482))))));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[19]);
|
|
aot_gpr_4 = (aot_gpr_4 | 64u);
|
|
aot_mem.aot_direct_store8(ctx.gpr[17] + static_cast<std::uint32_t>(482), static_cast<std::uint8_t>(aot_gpr_4));
|
|
goto L_0889C9F8;
|
|
L_0889C9F8:
|
|
aot_gpr_4 = (0u | 0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_5 = (aot_gpr_5 & 2048u);
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_6 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_0889CA1C;
|
|
}
|
|
goto L_0889CA0C;
|
|
}
|
|
L_0889CA0C:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(76)));
|
|
aot_gpr_5 = (aot_gpr_5 & 2048u);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
if (branch_taken) {
|
|
goto L_0889CA24;
|
|
}
|
|
goto L_0889CA1C;
|
|
}
|
|
L_0889CA1C:
|
|
aot_gpr_4 = (aot_gpr_6 | 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
goto L_0889CA24;
|
|
L_0889CA24:
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CA8C;
|
|
}
|
|
goto L_0889CA2C;
|
|
}
|
|
L_0889CA2C:
|
|
aot_gpr_4 = (16384u << 16u);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
aot_fpr_13 = ctx.fpr[26] - ctx.fpr[24];
|
|
{ const float fs = aot_fpr_13; const float ft = aot_fpr_12; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_13 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_13 = fs * ft; }
|
|
aot_fpr_13 = aot_fpr_13 / ctx.fpr[26];
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[30]));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_13 < aot_fpr_12)) ? 0x00800000u : 0u);
|
|
if (((ctx.fcr31 & 0x00800000u) != 0u)) {
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
goto L_0889CA54;
|
|
}
|
|
goto L_0889CA54;
|
|
L_0889CA54:
|
|
aot_gpr_4 = (17723u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 | 32768u);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_gpr_4);
|
|
{ const float fs = aot_fpr_12; const float ft = aot_fpr_13; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889CA70u);
|
|
aot_gpr_5 = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0009.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 135u, 0x0889CA70u, 0x0882BFC8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0009_entry(rt, ctx, 482u, aot_mem);
|
|
#else
|
|
recomp_unit_0009_entry(rt, ctx, 482u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0009_entry, 9u, 482u, 0x0882BFC8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CA70u) goto L_0889CA70;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CA70:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CA8C;
|
|
}
|
|
goto L_0889CA78;
|
|
}
|
|
L_0889CA78:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_5 & aot_gpr_4);
|
|
aot_mem.aot_direct_store32(ctx.gpr[17] + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
aot_gpr_31 = (0x0889CA8Cu);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0152.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 137u, 0x0889CA8Cu, 0x08A66048u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0152_entry(rt, ctx, 463u, aot_mem);
|
|
#else
|
|
recomp_unit_0152_entry(rt, ctx, 463u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0152_entry, 152u, 463u, 0x08A66048u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CA8Cu) goto L_0889CA8C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CA8C:
|
|
aot_gpr_4 = (0u | 0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_5 = (aot_gpr_5 & 2048u);
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_6 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_0889CAB0;
|
|
}
|
|
goto L_0889CAA0;
|
|
}
|
|
L_0889CAA0:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(76)));
|
|
aot_gpr_5 = (aot_gpr_5 & 2048u);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
if (branch_taken) {
|
|
goto L_0889CAB8;
|
|
}
|
|
goto L_0889CAB0;
|
|
}
|
|
L_0889CAB0:
|
|
aot_gpr_4 = (aot_gpr_6 | 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
goto L_0889CAB8;
|
|
L_0889CAB8:
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CF54;
|
|
}
|
|
goto L_0889CAC0;
|
|
}
|
|
L_0889CAC0:
|
|
aot_gpr_4 = (16384u << 16u);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
aot_fpr_13 = ctx.fpr[26] - ctx.fpr[24];
|
|
{ const float fs = aot_fpr_13; const float ft = aot_fpr_12; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
aot_fpr_12 = aot_fpr_12 / ctx.fpr[26];
|
|
aot_fpr_20 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[30]));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_12 < aot_fpr_20)) ? 0x00800000u : 0u);
|
|
if (((ctx.fcr31 & 0x00800000u) != 0u)) {
|
|
aot_fpr_20 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
goto L_0889CAE8;
|
|
}
|
|
goto L_0889CAE8;
|
|
L_0889CAE8:
|
|
aot_gpr_4 = (15395u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 | 55050u);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_12 <= ctx.fpr[24])) ? 0x00800000u : 0u);
|
|
if (!((ctx.fcr31 & 0x00800000u) != 0u)) {
|
|
ctx.fpr[24] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
goto L_0889CB04;
|
|
}
|
|
goto L_0889CB04;
|
|
L_0889CB04:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(260)));
|
|
aot_gpr_4 = (17583u << 16u);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_gpr_4);
|
|
aot_fpr_14 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(208)));
|
|
{ const float fs = aot_fpr_12; const float ft = aot_fpr_14; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
aot_fpr_12 = aot_fpr_12 / aot_fpr_13;
|
|
{ const float fs = aot_fpr_12; const float ft = aot_fpr_20; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
aot_fpr_12 = aot_fpr_12 / ctx.fpr[24];
|
|
aot_gpr_4 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
ctx.set_vfpu_scalar_bits_ct<28u>(aot_gpr_4);
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[23] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vscl_ct<0u, 0u, 28u, 3u>();
|
|
aot_gpr_4 = (aot_gpr_29 + static_cast<std::uint32_t>(96));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(104)));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_13 < ctx.fpr[22])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889CB54;
|
|
}
|
|
goto L_0889CB50;
|
|
}
|
|
L_0889CB50:
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(104), std::bit_cast<std::uint32_t>(ctx.fpr[22]));
|
|
goto L_0889CB54;
|
|
L_0889CB54:
|
|
aot_gpr_31 = (0x0889CB5Cu);
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_compact_generated_leaf<&vcs_compact_leaf_08960424, 87u, 0x08960424u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CB5Cu) goto L_0889CB5C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889CB5C:
|
|
{ const bool branch_taken = ctx.gpr[17] != aot_gpr_2;
|
|
if (branch_taken) {
|
|
goto L_0889CB80;
|
|
}
|
|
goto L_0889CB64;
|
|
}
|
|
L_0889CB64:
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[30]));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(104)));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_13 < aot_fpr_12)) ? 0x00800000u : 0u);
|
|
if (((ctx.fcr31 & 0x00800000u) != 0u)) {
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(104)));
|
|
goto L_0889CB7C;
|
|
}
|
|
goto L_0889CB7C;
|
|
L_0889CB7C:
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(104), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
goto L_0889CB80;
|
|
L_0889CB80:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(96), aot_run_words);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_run_words[0]);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_run_words[1]);
|
|
aot_fpr_14 = std::bit_cast<float>(aot_run_words[2]);
|
|
}
|
|
aot_gpr_31 = (0x0889CB94u);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0152.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 150u, 0x0889CB94u, 0x08A66CD8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0152_entry(rt, ctx, 600u, aot_mem);
|
|
#else
|
|
recomp_unit_0152_entry(rt, ctx, 600u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0152_entry, 152u, 600u, 0x08A66CD8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CB94u) goto L_0889CB94;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CB94:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 8192u);
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CC40;
|
|
}
|
|
goto L_0889CBAC;
|
|
}
|
|
L_0889CBAC:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(8)));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(8)));
|
|
aot_fpr_12 = aot_fpr_12 - aot_fpr_13;
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(ctx.gpr[17] + static_cast<std::uint32_t>(86))))));
|
|
aot_gpr_4 = (aot_gpr_4 << 2u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(24)));
|
|
aot_gpr_4 = (aot_gpr_5 + aot_gpr_4);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(20)));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(12)));
|
|
aot_fpr_13 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_13) ^ 0x80000000u);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_12 <= aot_fpr_13)) ? 0x00800000u : 0u);
|
|
if (!((ctx.fcr31 & 0x00800000u) != 0u)) {
|
|
aot_fpr_13 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
goto L_0889CBE8;
|
|
}
|
|
goto L_0889CBE8;
|
|
L_0889CBE8:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(ctx.gpr[17] + static_cast<std::uint32_t>(86))))));
|
|
aot_gpr_4 = (aot_gpr_4 << 2u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(24)));
|
|
aot_gpr_4 = (aot_gpr_5 + aot_gpr_4);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(20)));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(12)));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_13 < aot_fpr_12)) ? 0x00800000u : 0u);
|
|
if (((ctx.fcr31 & 0x00800000u) != 0u)) {
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
goto L_0889CC14;
|
|
}
|
|
goto L_0889CC14;
|
|
L_0889CC14:
|
|
{ const std::uint32_t aot_run_words[3]{std::bit_cast<std::uint32_t>(ctx.fpr[22]), std::bit_cast<std::uint32_t>(ctx.fpr[22]), std::bit_cast<std::uint32_t>(aot_fpr_12)};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(144), aot_run_words); }
|
|
ctx.fpr[17] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(96), aot_run_words);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_run_words[0]);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_run_words[1]);
|
|
aot_fpr_14 = std::bit_cast<float>(aot_run_words[2]);
|
|
}
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
ctx.fpr[15] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[22]));
|
|
aot_gpr_31 = (0x0889CC40u);
|
|
ctx.fpr[16] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[22]));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0152.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 154u, 0x0889CC40u, 0x08A66E08u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0152_entry(rt, ctx, 611u, aot_mem);
|
|
#else
|
|
recomp_unit_0152_entry(rt, ctx, 611u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0152_entry, 152u, 611u, 0x08A66E08u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CC40u) goto L_0889CC40;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CC40:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 14u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ 4u);
|
|
aot_gpr_4 = (aot_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CD08;
|
|
}
|
|
goto L_0889CC5C;
|
|
}
|
|
L_0889CC5C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 496u);
|
|
aot_gpr_5 = (0u | 32u);
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
aot_gpr_4 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_0889CC90;
|
|
}
|
|
goto L_0889CC70;
|
|
}
|
|
L_0889CC70:
|
|
aot_gpr_4 = (0u + static_cast<std::uint32_t>(-497));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_5 & aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_4 | 48u);
|
|
aot_mem.aot_direct_store32(ctx.gpr[17] + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
aot_gpr_31 = (0x0889CC8Cu);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0207.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 157u, 0x0889CC8Cu, 0x08B41608u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0207_entry(rt, ctx, 365u, aot_mem);
|
|
#else
|
|
recomp_unit_0207_entry(rt, ctx, 365u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0207_entry, 207u, 365u, 0x08B41608u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CC8Cu) goto L_0889CC8C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CC8C:
|
|
aot_gpr_4 = (0u | 1u);
|
|
goto L_0889CC90;
|
|
L_0889CC90:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(256)));
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
aot_gpr_5 = (17545u << 16u);
|
|
if (branch_taken) {
|
|
goto L_0889CCA0;
|
|
}
|
|
goto L_0889CC9C;
|
|
}
|
|
L_0889CC9C:
|
|
aot_gpr_4 = (0u | 2u);
|
|
goto L_0889CCA0;
|
|
L_0889CCA0:
|
|
aot_gpr_5 = (aot_gpr_5 | 32768u);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_5);
|
|
{ const float fs = aot_fpr_20; const float ft = aot_fpr_12; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
aot_fpr_13 = std::bit_cast<float>(aot_gpr_4);
|
|
aot_fpr_13 = static_cast<float>(static_cast<std::int32_t>(std::bit_cast<std::uint32_t>(aot_fpr_13)));
|
|
{ const float fs = aot_fpr_12; const float ft = aot_fpr_13; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
{ const std::uint32_t aot_run_words[3]{std::bit_cast<std::uint32_t>(ctx.fpr[22]), std::bit_cast<std::uint32_t>(ctx.fpr[22]), std::bit_cast<std::uint32_t>(ctx.fpr[22])};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(160), aot_run_words); }
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[20] | 0u);
|
|
ctx.gpr[7] = (aot_gpr_29 + static_cast<std::uint32_t>(160));
|
|
aot_gpr_31 = (0x0889CCD8u);
|
|
aot_gpr_6 = (ctx.gpr[30] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0192.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 161u, 0x0889CCD8u, 0x08B0452Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0192_entry(rt, ctx, 71u, aot_mem);
|
|
#else
|
|
recomp_unit_0192_entry(rt, ctx, 71u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0192_entry, 192u, 71u, 0x08B0452Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CCD8u) goto L_0889CCD8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CCD8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(268)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CD00;
|
|
}
|
|
goto L_0889CCE4;
|
|
}
|
|
L_0889CCE4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(ctx.gpr[17] + static_cast<std::uint32_t>(666)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_gpr_4 = (0u | 10u);
|
|
if (branch_taken) {
|
|
goto L_0889CD00;
|
|
}
|
|
goto L_0889CCF0;
|
|
}
|
|
L_0889CCF0:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(ctx.gpr[17] + static_cast<std::uint32_t>(666)));
|
|
{ const std::int32_t dividend = static_cast<std::int32_t>(aot_gpr_5); const std::int32_t divisor = static_cast<std::int32_t>(aot_gpr_4); if (divisor == 0) { ctx.lo = dividend >= 0 ? 0xFFFFFFFFu : 1u; ctx.hi = static_cast<std::uint32_t>(dividend); } else if (dividend == static_cast<std::int32_t>(0x80000000u) && divisor == -1) { ctx.lo = 0x80000000u; ctx.hi = 0u; } else { ctx.lo = static_cast<std::uint32_t>(dividend / divisor); ctx.hi = static_cast<std::uint32_t>(dividend % divisor); } }
|
|
aot_gpr_4 = (ctx.lo);
|
|
aot_mem.aot_direct_store16(ctx.gpr[17] + static_cast<std::uint32_t>(666), static_cast<std::uint16_t>(aot_gpr_4));
|
|
goto L_0889CD00;
|
|
L_0889CD00:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CF54;
|
|
}
|
|
goto L_0889CD08;
|
|
}
|
|
L_0889CD08:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 14u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ 6u);
|
|
aot_gpr_4 = (aot_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CF24;
|
|
}
|
|
goto L_0889CD24;
|
|
}
|
|
L_0889CD24:
|
|
ctx.gpr[16] = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889CD30u);
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_compact_generated_leaf<&vcs_compact_leaf_08960424, 87u, 0x08960424u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CD30u) goto L_0889CD30;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889CD30:
|
|
{ const bool branch_taken = ctx.gpr[16] != aot_gpr_2;
|
|
if (branch_taken) {
|
|
goto L_0889CD5C;
|
|
}
|
|
goto L_0889CD38;
|
|
}
|
|
L_0889CD38:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(264)));
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(1976))))));
|
|
aot_gpr_5 = (0u | 45u);
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889CD5C;
|
|
}
|
|
goto L_0889CD4C;
|
|
}
|
|
L_0889CD4C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2228)));
|
|
aot_gpr_5 = (0u | 12u);
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889CF1C;
|
|
}
|
|
goto L_0889CD5C;
|
|
}
|
|
L_0889CD5C:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(96)));
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12) ^ 0x80000000u);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(100)));
|
|
aot_fpr_13 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_13) ^ 0x80000000u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(176), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(180), std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
aot_gpr_5 = (aot_gpr_29 + static_cast<std::uint32_t>(176));
|
|
aot_gpr_31 = (0x0889CD80u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0064.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 171u, 0x0889CD80u, 0x08906DC4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0064_entry(rt, ctx, 618u, aot_mem);
|
|
#else
|
|
recomp_unit_0064_entry(rt, ctx, 618u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0064_entry, 64u, 618u, 0x08906DC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CD80u) goto L_0889CD80;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CD80:
|
|
ctx.gpr[19] = (aot_gpr_2 | 0u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2120)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
ctx.gpr[18] = (ctx.gpr[19] & 255u);
|
|
if (branch_taken) {
|
|
goto L_0889CDF8;
|
|
}
|
|
goto L_0889CD90;
|
|
}
|
|
L_0889CD90:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2120)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 14u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ 4u);
|
|
aot_gpr_4 = (aot_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CDF8;
|
|
}
|
|
goto L_0889CDB0;
|
|
}
|
|
L_0889CDB0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2120)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 496u);
|
|
aot_gpr_4 = (aot_gpr_4 >> 4u);
|
|
aot_gpr_5 = (0u | 5u);
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889CDF8;
|
|
}
|
|
goto L_0889CDCC;
|
|
}
|
|
L_0889CDCC:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_5 = (17530u << 16u);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_5);
|
|
aot_gpr_5 = (ctx.gpr[20] | 0u);
|
|
aot_gpr_6 = (ctx.gpr[30] | 0u);
|
|
ctx.gpr[7] = (0u | 0u);
|
|
ctx.gpr[8] = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889CDF0u);
|
|
ctx.gpr[9] = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0057.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 175u, 0x0889CDF0u, 0x088EB674u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0057_entry(rt, ctx, 692u, aot_mem);
|
|
#else
|
|
recomp_unit_0057_entry(rt, ctx, 692u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0057_entry, 57u, 692u, 0x088EB674u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CDF0u) goto L_0889CDF0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CDF0:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CE80;
|
|
}
|
|
goto L_0889CDF8;
|
|
}
|
|
L_0889CDF8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2120)));
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
aot_gpr_4 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_0889CE40;
|
|
}
|
|
goto L_0889CE04;
|
|
}
|
|
L_0889CE04:
|
|
aot_gpr_4 = (0u + static_cast<std::uint32_t>(-2));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(456)));
|
|
aot_gpr_4 = (aot_gpr_5 & aot_gpr_4);
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(456), aot_gpr_4);
|
|
aot_gpr_4 = (16384u << 16u);
|
|
ctx.fpr[24] = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fpr[28] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[22]));
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[28]));
|
|
aot_fpr_13 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[28]));
|
|
aot_gpr_31 = (0x0889CE34u);
|
|
aot_fpr_14 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[24]));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0152.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 178u, 0x0889CE34u, 0x08A66CD8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0152_entry(rt, ctx, 600u, aot_mem);
|
|
#else
|
|
recomp_unit_0152_entry(rt, ctx, 600u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0152_entry, 152u, 600u, 0x08A66CD8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CE34u) goto L_0889CE34;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CE34:
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(248), std::bit_cast<std::uint32_t>(ctx.fpr[24]));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(252), std::bit_cast<std::uint32_t>(ctx.fpr[22]));
|
|
aot_gpr_4 = (0u | 1u);
|
|
goto L_0889CE40;
|
|
L_0889CE40:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(256)));
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
aot_gpr_5 = (17274u << 16u);
|
|
if (branch_taken) {
|
|
goto L_0889CE50;
|
|
}
|
|
goto L_0889CE4C;
|
|
}
|
|
L_0889CE4C:
|
|
aot_gpr_4 = (0u | 2u);
|
|
goto L_0889CE50;
|
|
L_0889CE50:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_5);
|
|
{ const float fs = aot_fpr_20; const float ft = aot_fpr_12; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
aot_fpr_13 = std::bit_cast<float>(aot_gpr_4);
|
|
aot_fpr_13 = static_cast<float>(static_cast<std::int32_t>(std::bit_cast<std::uint32_t>(aot_fpr_13)));
|
|
{ const float fs = aot_fpr_12; const float ft = aot_fpr_13; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[20] | 0u);
|
|
aot_gpr_6 = (ctx.gpr[30] | 0u);
|
|
ctx.gpr[7] = (0u | 0u);
|
|
ctx.gpr[8] = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889CE80u);
|
|
ctx.gpr[9] = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0057.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 182u, 0x0889CE80u, 0x088EB674u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0057_entry(rt, ctx, 692u, aot_mem);
|
|
#else
|
|
recomp_unit_0057_entry(rt, ctx, 692u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0057_entry, 57u, 692u, 0x088EB674u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CE80u) goto L_0889CE80;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CE80:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(2228)));
|
|
aot_gpr_5 = (0u | 57u);
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889CEA4;
|
|
}
|
|
goto L_0889CE90;
|
|
}
|
|
L_0889CE90:
|
|
aot_gpr_6 = (ctx.gpr[19] + static_cast<std::uint32_t>(28));
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_5 = (0u | 2000u);
|
|
aot_gpr_31 = (0x0889CEA4u);
|
|
ctx.gpr[7] = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0070.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 184u, 0x0889CEA4u, 0x0891C0E8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0070_entry(rt, ctx, 14u, aot_mem);
|
|
#else
|
|
recomp_unit_0070_entry(rt, ctx, 14u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0070_entry, 70u, 14u, 0x0891C0E8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CEA4u) goto L_0889CEA4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CEA4:
|
|
{ const bool branch_taken = ctx.gpr[20] == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CF1C;
|
|
}
|
|
goto L_0889CEAC;
|
|
}
|
|
L_0889CEAC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[20] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 14u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ 6u);
|
|
aot_gpr_4 = (aot_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CF1C;
|
|
}
|
|
goto L_0889CEC8;
|
|
}
|
|
L_0889CEC8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(1360)));
|
|
aot_gpr_5 = (0u | 6u);
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889CEF8;
|
|
}
|
|
goto L_0889CED8;
|
|
}
|
|
L_0889CED8:
|
|
aot_gpr_4 = (0u | 12u);
|
|
aot_gpr_5 = (0u | 1u);
|
|
aot_gpr_6 = (ctx.gpr[17] | 0u);
|
|
ctx.gpr[7] = (ctx.gpr[20] | 0u);
|
|
aot_gpr_31 = (0x0889CEF0u);
|
|
ctx.gpr[8] = (0u | 10000u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0095.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 188u, 0x0889CEF0u, 0x0898019Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0095_entry(rt, ctx, 24u, aot_mem);
|
|
#else
|
|
recomp_unit_0095_entry(rt, ctx, 24u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0095_entry, 95u, 24u, 0x0898019Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CEF0u) goto L_0889CEF0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CEF0:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CF10;
|
|
}
|
|
goto L_0889CEF8;
|
|
}
|
|
L_0889CEF8:
|
|
aot_gpr_4 = (0u | 11u);
|
|
aot_gpr_5 = (0u | 1u);
|
|
aot_gpr_6 = (ctx.gpr[17] | 0u);
|
|
ctx.gpr[7] = (ctx.gpr[20] | 0u);
|
|
aot_gpr_31 = (0x0889CF10u);
|
|
ctx.gpr[8] = (0u | 10000u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0095.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 190u, 0x0889CF10u, 0x0898019Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0095_entry(rt, ctx, 24u, aot_mem);
|
|
#else
|
|
recomp_unit_0095_entry(rt, ctx, 24u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0095_entry, 95u, 24u, 0x0898019Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CF10u) goto L_0889CF10;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CF10:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889CF1Cu);
|
|
aot_gpr_5 = (ctx.gpr[20] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0108.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 191u, 0x0889CF1Cu, 0x089B4624u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0108_entry(rt, ctx, 119u, aot_mem);
|
|
#else
|
|
recomp_unit_0108_entry(rt, ctx, 119u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0108_entry, 108u, 119u, 0x089B4624u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CF1Cu) goto L_0889CF1C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CF1C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889CF54;
|
|
}
|
|
goto L_0889CF24;
|
|
}
|
|
L_0889CF24:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 14u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ 8u);
|
|
aot_gpr_4 = (aot_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_gpr_4 = (17302u << 16u);
|
|
if (branch_taken) {
|
|
goto L_0889CF54;
|
|
}
|
|
goto L_0889CF40;
|
|
}
|
|
L_0889CF40:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
{ const float fs = aot_fpr_20; const float ft = aot_fpr_12; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889CF54u);
|
|
aot_gpr_5 = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0009.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 194u, 0x0889CF54u, 0x0882BFC8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0009_entry(rt, ctx, 482u, aot_mem);
|
|
#else
|
|
recomp_unit_0009_entry(rt, ctx, 482u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0009_entry, 9u, 482u, 0x0882BFC8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CF54u) goto L_0889CF54;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CF54:
|
|
{ const bool branch_taken = ctx.gpr[21] != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889C6E8;
|
|
}
|
|
goto L_0889CF5C;
|
|
}
|
|
L_0889CF5C:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(252)));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(248)));
|
|
{ const std::uint32_t aot_run_words[3]{std::bit_cast<std::uint32_t>(aot_fpr_12), std::bit_cast<std::uint32_t>(ctx.fpr[28]), std::bit_cast<std::uint32_t>(aot_fpr_13)};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(192), aot_run_words); }
|
|
goto L_0889CF70;
|
|
L_0889CF70:
|
|
{ std::uint32_t aot_run_words[16]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(272), aot_run_words);
|
|
aot_fpr_20 = std::bit_cast<float>(aot_run_words[0]);
|
|
ctx.fpr[22] = std::bit_cast<float>(aot_run_words[1]);
|
|
ctx.fpr[24] = std::bit_cast<float>(aot_run_words[2]);
|
|
ctx.fpr[26] = std::bit_cast<float>(aot_run_words[3]);
|
|
ctx.fpr[28] = std::bit_cast<float>(aot_run_words[4]);
|
|
ctx.fpr[30] = std::bit_cast<float>(aot_run_words[5]);
|
|
ctx.gpr[16] = aot_run_words[6];
|
|
ctx.gpr[17] = aot_run_words[7];
|
|
ctx.gpr[18] = aot_run_words[8];
|
|
ctx.gpr[19] = aot_run_words[9];
|
|
ctx.gpr[20] = aot_run_words[10];
|
|
ctx.gpr[21] = aot_run_words[11];
|
|
ctx.gpr[22] = aot_run_words[12];
|
|
ctx.gpr[23] = aot_run_words[13];
|
|
ctx.gpr[30] = aot_run_words[14];
|
|
aot_gpr_31 = aot_run_words[15];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(336));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889CFB8:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_gpr_31);
|
|
aot_gpr_4 = (2238u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(-6992));
|
|
ctx.gpr[7] = (2185u << 16u);
|
|
ctx.gpr[7] = (ctx.gpr[7] + static_cast<std::uint32_t>(6516));
|
|
aot_gpr_5 = (0u | 1u);
|
|
aot_gpr_31 = (0x0889CFDCu);
|
|
aot_gpr_6 = (0u | 352u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0215.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 198u, 0x0889CFDCu, 0x08B60C7Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0215_entry(rt, ctx, 158u, aot_mem);
|
|
#else
|
|
recomp_unit_0215_entry(rt, ctx, 158u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0215_entry, 215u, 158u, 0x08B60C7Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CFDCu) goto L_0889CFDC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889CFDC:
|
|
aot_gpr_31 = (0x0889CFE4u);
|
|
aot_gpr_4 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25440));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B60680, 215u, 68u, 0x08B60680u>(ctx, &aot_mem, ctx.pc, ctx.gpr[1], aot_gpr_2, aot_gpr_4, aot_gpr_5, ctx.gpr[16], ctx.gpr[17], ctx.gpr[18], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0215_entry, 215u, 68u, 0x08B60680u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CFE4u) goto L_0889CFE4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889CFE4:
|
|
aot_mem.aot_direct_store32(ctx.gpr[28] + static_cast<std::uint32_t>(7636), 0u);
|
|
aot_gpr_31 = (0x0889CFF0u);
|
|
aot_gpr_4 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25428));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B60680, 215u, 68u, 0x08B60680u>(ctx, &aot_mem, ctx.pc, ctx.gpr[1], aot_gpr_2, aot_gpr_4, aot_gpr_5, ctx.gpr[16], ctx.gpr[17], ctx.gpr[18], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0215_entry, 215u, 68u, 0x08B60680u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889CFF0u) goto L_0889CFF0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889CFF0:
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889CFFC:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-112));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(100), ctx.gpr[17]);
|
|
ctx.gpr[17] = (aot_gpr_5 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(96), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(104), ctx.gpr[18]);
|
|
ctx.gpr[16] = (aot_gpr_6 | 0u);
|
|
ctx.gpr[18] = (aot_gpr_4 | 0u);
|
|
aot_gpr_5 = (0u | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(108), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D028u);
|
|
aot_gpr_6 = (aot_gpr_29 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0120.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 202u, 0x0889D028u, 0x089E69E8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0120_entry(rt, ctx, 547u, aot_mem);
|
|
#else
|
|
recomp_unit_0120_entry(rt, ctx, 547u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0120_entry, 120u, 547u, 0x089E69E8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D028u) goto L_0889D028;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D028:
|
|
aot_gpr_5 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25416));
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D038u);
|
|
aot_gpr_6 = (aot_gpr_29 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0120.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 203u, 0x0889D038u, 0x089E6F54u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0120_entry(rt, ctx, 622u, aot_mem);
|
|
#else
|
|
recomp_unit_0120_entry(rt, ctx, 622u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0120_entry, 120u, 622u, 0x089E6F54u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D038u) goto L_0889D038;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D038:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_31 = (0x0889D044u);
|
|
aot_gpr_5 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25412));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0213.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 204u, 0x0889D044u, 0x08B582CCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0213_entry(rt, ctx, 56u, aot_mem);
|
|
#else
|
|
recomp_unit_0213_entry(rt, ctx, 56u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0213_entry, 213u, 56u, 0x08B582CCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D044u) goto L_0889D044;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D044:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
if (branch_taken) {
|
|
goto L_0889D058;
|
|
}
|
|
goto L_0889D04C;
|
|
}
|
|
L_0889D04C:
|
|
ctx.gpr[17] = (ctx.gpr[17] + static_cast<std::uint32_t>(-1));
|
|
{ const bool branch_taken = ctx.gpr[17] == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D068;
|
|
}
|
|
goto L_0889D058;
|
|
}
|
|
L_0889D058:
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D088;
|
|
}
|
|
goto L_0889D060;
|
|
}
|
|
L_0889D060:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D090;
|
|
}
|
|
goto L_0889D068;
|
|
}
|
|
L_0889D068:
|
|
aot_gpr_6 = (aot_gpr_4 | 0u);
|
|
aot_gpr_5 = (2232u << 16u);
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
ctx.gpr[7] = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889D080u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-22816));
|
|
goto L_0889D1FC;
|
|
L_0889D080:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D0AC;
|
|
}
|
|
goto L_0889D088;
|
|
}
|
|
L_0889D088:
|
|
aot_gpr_4 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25404));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_4);
|
|
goto L_0889D090;
|
|
L_0889D090:
|
|
ctx.gpr[7] = (aot_gpr_4 | 0u);
|
|
aot_gpr_5 = (2232u << 16u);
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_6 = (ctx.gpr[17] | 0u);
|
|
ctx.gpr[8] = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889D0ACu);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-22784));
|
|
goto L_0889D1FC;
|
|
L_0889D0AC:
|
|
{ std::uint32_t aot_run_words[4]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(96), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
aot_gpr_31 = aot_run_words[3];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(112));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D0C4:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[17] = (aot_gpr_6 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
aot_gpr_6 = (2232u << 16u);
|
|
ctx.gpr[16] = (aot_gpr_5 | 0u);
|
|
ctx.gpr[18] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), ctx.gpr[19]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(16), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D0F4u);
|
|
ctx.gpr[19] = (aot_gpr_6 + static_cast<std::uint32_t>(-22752));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806888, 0u, 324u, 0x08806888u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 324u, 0x08806888u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D0F4u) goto L_0889D0F4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D0F4:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D100u);
|
|
aot_gpr_5 = (aot_gpr_2 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 215u, 0x0889D100u, 0x088068B4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 327u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 327u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 327u, 0x088068B4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D100u) goto L_0889D100;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D100:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[19] | 0u);
|
|
aot_gpr_6 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D114u);
|
|
ctx.gpr[7] = (aot_gpr_2 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 216u, 0x0889D114u, 0x08806F24u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 440u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 440u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 440u, 0x08806F24u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D114u) goto L_0889D114;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D114:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889D124u);
|
|
aot_gpr_6 = (aot_gpr_2 | 0u);
|
|
goto L_0889CFFC;
|
|
L_0889D124:
|
|
{ std::uint32_t aot_run_words[5]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
ctx.gpr[19] = aot_run_words[3];
|
|
aot_gpr_31 = aot_run_words[4];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D140:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[16] = (aot_gpr_5 | 0u);
|
|
ctx.gpr[17] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D160u);
|
|
aot_gpr_5 = (aot_gpr_6 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 219u, 0x0889D160u, 0x088068B4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 327u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 327u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 327u, 0x088068B4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D160u) goto L_0889D160;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D160:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889D170u);
|
|
aot_gpr_6 = (aot_gpr_2 | 0u);
|
|
goto L_0889D0C4;
|
|
L_0889D170:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D184:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-112));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(96), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(100), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D19Cu);
|
|
aot_gpr_6 = (aot_gpr_29 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0120.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 222u, 0x0889D19Cu, 0x089E69E8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0120_entry(rt, ctx, 547u, aot_mem);
|
|
#else
|
|
recomp_unit_0120_entry(rt, ctx, 547u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0120_entry, 120u, 547u, 0x089E69E8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D19Cu) goto L_0889D19C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D19C:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D1DC;
|
|
}
|
|
goto L_0889D1A4;
|
|
}
|
|
L_0889D1A4:
|
|
aot_gpr_5 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25400));
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889D1B4u);
|
|
aot_gpr_6 = (aot_gpr_29 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0120.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 224u, 0x0889D1B4u, 0x089E6F54u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0120_entry(rt, ctx, 622u, aot_mem);
|
|
#else
|
|
recomp_unit_0120_entry(rt, ctx, 622u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0120_entry, 120u, 622u, 0x089E6F54u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D1B4u) goto L_0889D1B4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D1B4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(20)));
|
|
{ const bool branch_taken = static_cast<std::int32_t>(aot_gpr_4) <= 0;
|
|
if (branch_taken) {
|
|
goto L_0889D1DC;
|
|
}
|
|
goto L_0889D1C0;
|
|
}
|
|
L_0889D1C0:
|
|
ctx.gpr[7] = (aot_gpr_4 | 0u);
|
|
aot_gpr_5 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25396));
|
|
aot_gpr_6 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
aot_gpr_31 = (0x0889D1D4u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 226u, 0x0889D1D4u, 0x08806F24u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 440u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 440u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 440u, 0x08806F24u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D1D4u) goto L_0889D1D4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D1D4:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D1EC;
|
|
}
|
|
goto L_0889D1DC;
|
|
}
|
|
L_0889D1DC:
|
|
aot_gpr_5 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25388));
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889D1ECu);
|
|
aot_gpr_6 = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 228u, 0x0889D1ECu, 0x08806DE0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 426u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 426u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 426u, 0x08806DE0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D1ECu) goto L_0889D1EC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D1EC:
|
|
ctx.gpr[16] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(96)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(100)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(112));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D1FC:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-64));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(40), aot_gpr_6);
|
|
aot_gpr_4 = (0u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(44), ctx.gpr[7]);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(32));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(48), ctx.gpr[8]);
|
|
aot_gpr_4 = (aot_gpr_4 & 65535u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(52), ctx.gpr[9]);
|
|
aot_gpr_4 = (aot_gpr_29 + aot_gpr_4);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), ctx.gpr[18]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(56), ctx.gpr[10]);
|
|
ctx.gpr[18] = (aot_gpr_4 + static_cast<std::uint32_t>(8));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[17]);
|
|
ctx.gpr[17] = (aot_gpr_5 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(60), ctx.gpr[11]);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(16), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D250u);
|
|
aot_gpr_5 = (0u | 1u);
|
|
goto L_0889D184;
|
|
L_0889D250:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D260u);
|
|
aot_gpr_6 = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 231u, 0x0889D260u, 0x08806EC0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 436u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 436u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 436u, 0x08806EC0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D260u) goto L_0889D260;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D260:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889D26Cu);
|
|
aot_gpr_5 = (0u | 2u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 232u, 0x0889D26Cu, 0x08807904u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 546u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 546u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 546u, 0x08807904u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D26Cu) goto L_0889D26C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D26C:
|
|
aot_gpr_31 = (0x0889D274u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 233u, 0x0889D274u, 0x08807890u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 538u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 538u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 538u, 0x08807890u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D274u) goto L_0889D274;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D274:
|
|
{ std::uint32_t aot_run_words[4]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
aot_gpr_31 = aot_run_words[3];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(64));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D28C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_5 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D2A8u);
|
|
ctx.gpr[17] = (aot_gpr_4 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 235u, 0x0889D2A8u, 0x08806E68u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 430u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 430u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 430u, 0x08806E68u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D2A8u) goto L_0889D2A8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D2A8:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D2B4u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-10000));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 236u, 0x0889D2B4u, 0x08807148u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 456u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 456u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 456u, 0x08807148u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D2B4u) goto L_0889D2B4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D2B4:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D2C0u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806888, 0u, 324u, 0x08806888u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 324u, 0x08806888u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D2C0u) goto L_0889D2C0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D2C0:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D2D0;
|
|
}
|
|
goto L_0889D2C8;
|
|
}
|
|
L_0889D2C8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889D330;
|
|
}
|
|
goto L_0889D2D0;
|
|
}
|
|
L_0889D2D0:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D2DCu);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806654, 0u, 303u, 0x08806654u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 303u, 0x08806654u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D2DCu) goto L_0889D2DC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D2DC:
|
|
aot_gpr_31 = (0x0889D2E4u);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 241u, 0x0889D2E4u, 0x08807220u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 462u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 462u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 462u, 0x08807220u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D2E4u) goto L_0889D2E4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D2E4:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D2F0u);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 242u, 0x0889D2F0u, 0x08806E68u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 430u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 430u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 430u, 0x08806E68u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D2F0u) goto L_0889D2F0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D2F0:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D2FCu);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0880682C, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[16], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D2FCu) goto L_0889D2FC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D2FC:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D308u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-10000));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 244u, 0x0889D308u, 0x08807414u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 486u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 486u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 486u, 0x08807414u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D308u) goto L_0889D308;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D308:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D314u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0880682C, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[16], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D314u) goto L_0889D314;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D314:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D320u);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 246u, 0x0889D320u, 0x08806E68u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 430u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 430u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 430u, 0x08806E68u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D320u) goto L_0889D320;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D320:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D32Cu);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-10000));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 247u, 0x0889D32Cu, 0x08807414u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 486u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 486u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 486u, 0x08807414u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D32Cu) goto L_0889D32C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D32C:
|
|
aot_gpr_2 = (0u | 1u);
|
|
goto L_0889D330;
|
|
L_0889D330:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D344:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D358u);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 250u, 0x0889D358u, 0x08806E68u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 430u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 430u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 430u, 0x08806E68u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D358u) goto L_0889D358;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D358:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889D364u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-10000));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 251u, 0x0889D364u, 0x08807148u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 456u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 456u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 456u, 0x08807148u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D364u) goto L_0889D364;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D364:
|
|
ctx.gpr[16] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D374:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[17] = (aot_gpr_5 | 0u);
|
|
ctx.gpr[16] = (aot_gpr_6 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D398u);
|
|
ctx.gpr[18] = (aot_gpr_4 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 253u, 0x0889D398u, 0x08807294u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 466u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 466u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 466u, 0x08807294u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D398u) goto L_0889D398;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D398:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D3E8;
|
|
}
|
|
goto L_0889D3A0;
|
|
}
|
|
L_0889D3A0:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D3ACu);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-10000));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 255u, 0x0889D3ACu, 0x08807148u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 456u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 456u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 456u, 0x08807148u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D3ACu) goto L_0889D3AC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D3AC:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D3B8u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 256u, 0x0889D3B8u, 0x08806B2Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 375u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 375u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 375u, 0x08806B2Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D3B8u) goto L_0889D3B8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D3B8:
|
|
aot_gpr_4 = (aot_gpr_2 | 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D3D4;
|
|
}
|
|
goto L_0889D3C4;
|
|
}
|
|
L_0889D3C4:
|
|
aot_gpr_31 = (0x0889D3CCu);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0213.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 258u, 0x0889D3CCu, 0x08B582CCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0213_entry(rt, ctx, 56u, aot_mem);
|
|
#else
|
|
recomp_unit_0213_entry(rt, ctx, 56u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0213_entry, 213u, 56u, 0x08B582CCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D3CCu) goto L_0889D3CC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D3CC:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D3F0;
|
|
}
|
|
goto L_0889D3D4;
|
|
}
|
|
L_0889D3D4:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D3E0u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806654, 0u, 303u, 0x08806654u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 303u, 0x08806654u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D3E0u) goto L_0889D3E0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D3E0:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889D408;
|
|
}
|
|
goto L_0889D3E8;
|
|
}
|
|
L_0889D3E8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889D408;
|
|
}
|
|
goto L_0889D3F0;
|
|
}
|
|
L_0889D3F0:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D3FCu);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806654, 0u, 303u, 0x08806654u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 303u, 0x08806654u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D3FCu) goto L_0889D3FC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D3FC:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D408u);
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 264u, 0x0889D408u, 0x08806C5Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 397u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 397u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 397u, 0x08806C5Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D408u) goto L_0889D408;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D408:
|
|
{ std::uint32_t aot_run_words[4]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
aot_gpr_31 = aot_run_words[3];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D420:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[17] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D43Cu);
|
|
ctx.gpr[16] = (aot_gpr_6 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 266u, 0x0889D43Cu, 0x088064C0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 286u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 286u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 286u, 0x088064C0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D43Cu) goto L_0889D43C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D43C:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D458;
|
|
}
|
|
goto L_0889D444;
|
|
}
|
|
L_0889D444:
|
|
aot_gpr_5 = (2232u << 16u);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_6 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889D458u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-22732));
|
|
goto L_0889D1FC;
|
|
L_0889D458:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D46C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[17] = (aot_gpr_5 | 0u);
|
|
ctx.gpr[16] = (aot_gpr_6 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D490u);
|
|
ctx.gpr[18] = (aot_gpr_4 | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806888, 0u, 324u, 0x08806888u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 324u, 0x08806888u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D490u) goto L_0889D490;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D490:
|
|
{ const bool branch_taken = aot_gpr_2 == ctx.gpr[16];
|
|
if (branch_taken) {
|
|
goto L_0889D4A8;
|
|
}
|
|
goto L_0889D498;
|
|
}
|
|
L_0889D498:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D4A8u);
|
|
aot_gpr_6 = (ctx.gpr[16] | 0u);
|
|
goto L_0889D140;
|
|
L_0889D4A8:
|
|
{ std::uint32_t aot_run_words[4]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
aot_gpr_31 = aot_run_words[3];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D4C0:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_5 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D4DCu);
|
|
ctx.gpr[17] = (aot_gpr_4 | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806888, 0u, 324u, 0x08806888u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 324u, 0x08806888u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D4DCu) goto L_0889D4DC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D4DC:
|
|
aot_gpr_4 = (0u + static_cast<std::uint32_t>(-1));
|
|
{ const bool branch_taken = aot_gpr_2 != aot_gpr_4;
|
|
if (branch_taken) {
|
|
goto L_0889D4F8;
|
|
}
|
|
goto L_0889D4E8;
|
|
}
|
|
L_0889D4E8:
|
|
aot_gpr_6 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25384));
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D4F8u);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
goto L_0889CFFC;
|
|
L_0889D4F8:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D50C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[17] = (aot_gpr_5 | 0u);
|
|
ctx.gpr[16] = (aot_gpr_6 | 0u);
|
|
{ const std::uint32_t aot_run_words[3]{ctx.gpr[18], ctx.gpr[19], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_run_words); }
|
|
aot_gpr_31 = (0x0889D534u);
|
|
ctx.gpr[18] = (aot_gpr_4 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 278u, 0x0889D534u, 0x08806B2Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 375u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 375u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 375u, 0x08806B2Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D534u) goto L_0889D534;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D534:
|
|
ctx.gpr[19] = (aot_gpr_2 | 0u);
|
|
{ const bool branch_taken = ctx.gpr[19] != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D550;
|
|
}
|
|
goto L_0889D540;
|
|
}
|
|
L_0889D540:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D550u);
|
|
aot_gpr_6 = (0u | 4u);
|
|
goto L_0889D140;
|
|
L_0889D550:
|
|
{ const bool branch_taken = ctx.gpr[16] == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D568;
|
|
}
|
|
goto L_0889D558;
|
|
}
|
|
L_0889D558:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D564u);
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 282u, 0x0889D564u, 0x08806BD8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 387u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 387u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 387u, 0x08806BD8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D564u) goto L_0889D564;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D564:
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(0), aot_gpr_2);
|
|
goto L_0889D568;
|
|
L_0889D568:
|
|
aot_gpr_2 = (ctx.gpr[19] | 0u);
|
|
{ std::uint32_t aot_run_words[5]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
ctx.gpr[19] = aot_run_words[3];
|
|
aot_gpr_31 = aot_run_words[4];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D588:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
{ const std::uint32_t aot_run_words[3]{ctx.gpr[16], ctx.gpr[17], ctx.gpr[18]};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
ctx.gpr[16] = (ctx.gpr[7] | 0u);
|
|
ctx.gpr[18] = (aot_gpr_5 | 0u);
|
|
ctx.gpr[17] = (aot_gpr_6 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), ctx.gpr[19]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(16), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D5B4u);
|
|
ctx.gpr[19] = (aot_gpr_4 | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806888, 0u, 324u, 0x08806888u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 324u, 0x08806888u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D5B4u) goto L_0889D5B4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D5B4:
|
|
{ const bool branch_taken = static_cast<std::int32_t>(aot_gpr_2) > 0;
|
|
if (branch_taken) {
|
|
goto L_0889D5E4;
|
|
}
|
|
goto L_0889D5BC;
|
|
}
|
|
L_0889D5BC:
|
|
{ const bool branch_taken = ctx.gpr[16] == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D5DC;
|
|
}
|
|
goto L_0889D5C4;
|
|
}
|
|
L_0889D5C4:
|
|
{ const bool branch_taken = ctx.gpr[17] == 0u;
|
|
aot_gpr_4 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889D5D8;
|
|
}
|
|
goto L_0889D5CC;
|
|
}
|
|
L_0889D5CC:
|
|
aot_gpr_31 = (0x0889D5D4u);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B58974, 213u, 150u, 0x08B58974u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0213_entry, 213u, 150u, 0x08B58974u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D5D4u) goto L_0889D5D4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D5D4:
|
|
aot_gpr_4 = (aot_gpr_2 | 0u);
|
|
goto L_0889D5D8;
|
|
L_0889D5D8:
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(0), aot_gpr_4);
|
|
goto L_0889D5DC;
|
|
L_0889D5DC:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (ctx.gpr[17] | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889D5F4;
|
|
}
|
|
goto L_0889D5E4;
|
|
}
|
|
L_0889D5E4:
|
|
aot_gpr_4 = (ctx.gpr[19] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D5F4u);
|
|
aot_gpr_6 = (ctx.gpr[16] | 0u);
|
|
goto L_0889D50C;
|
|
L_0889D5F4:
|
|
{ std::uint32_t aot_run_words[5]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
ctx.gpr[19] = aot_run_words[3];
|
|
aot_gpr_31 = aot_run_words[4];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D610:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_5 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), std::bit_cast<std::uint32_t>(aot_fpr_20));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[17]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D630u);
|
|
ctx.gpr[17] = (aot_gpr_4 | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806A88, 0u, 360u, 0x08806A88u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 360u, 0x08806A88u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D630u) goto L_0889D630;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D630:
|
|
aot_fpr_20 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[0]));
|
|
aot_fpr_12 = std::bit_cast<float>(0u);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((!(std::isnan(aot_fpr_20) || std::isnan(aot_fpr_12)) && aot_fpr_20 == aot_fpr_12)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889D668;
|
|
}
|
|
goto L_0889D648;
|
|
}
|
|
L_0889D648:
|
|
aot_gpr_31 = (0x0889D650u);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0880692C, 0u, 337u, 0x0880692Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[16], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 337u, 0x0880692Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D650u) goto L_0889D650;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D650:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D668;
|
|
}
|
|
goto L_0889D658;
|
|
}
|
|
L_0889D658:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889D668u);
|
|
aot_gpr_6 = (0u | 3u);
|
|
goto L_0889D140;
|
|
L_0889D668:
|
|
ctx.fpr[0] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_20));
|
|
{ std::uint32_t aot_run_words[4]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
aot_fpr_20 = std::bit_cast<float>(aot_run_words[0]);
|
|
ctx.gpr[16] = aot_run_words[1];
|
|
ctx.gpr[17] = aot_run_words[2];
|
|
aot_gpr_31 = aot_run_words[3];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D684:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), std::bit_cast<std::uint32_t>(aot_fpr_20));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[16]);
|
|
aot_fpr_20 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
ctx.gpr[16] = (aot_gpr_5 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[17]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D6A8u);
|
|
ctx.gpr[17] = (aot_gpr_4 | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806888, 0u, 324u, 0x08806888u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 324u, 0x08806888u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D6A8u) goto L_0889D6A8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D6A8:
|
|
{ const bool branch_taken = static_cast<std::int32_t>(aot_gpr_2) > 0;
|
|
if (branch_taken) {
|
|
goto L_0889D6B8;
|
|
}
|
|
goto L_0889D6B0;
|
|
}
|
|
L_0889D6B0:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.fpr[0] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_20));
|
|
if (branch_taken) {
|
|
goto L_0889D6C4;
|
|
}
|
|
goto L_0889D6B8;
|
|
}
|
|
L_0889D6B8:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D6C4u);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
goto L_0889D610;
|
|
L_0889D6C4:
|
|
{ std::uint32_t aot_run_words[4]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
aot_fpr_20 = std::bit_cast<float>(aot_run_words[0]);
|
|
ctx.gpr[16] = aot_run_words[1];
|
|
ctx.gpr[17] = aot_run_words[2];
|
|
aot_gpr_31 = aot_run_words[3];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D6DC:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[17] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D6F8u);
|
|
ctx.gpr[16] = (aot_gpr_6 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 306u, 0x0889D6F8u, 0x08807294u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 466u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 466u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 466u, 0x08807294u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D6F8u) goto L_0889D6F8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D6F8:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D740;
|
|
}
|
|
goto L_0889D700;
|
|
}
|
|
L_0889D700:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D70Cu);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 308u, 0x0889D70Cu, 0x08806E68u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 430u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 430u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 430u, 0x08806E68u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D70Cu) goto L_0889D70C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D70C:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D718u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 309u, 0x0889D718u, 0x08807148u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 456u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 456u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 456u, 0x08807148u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D718u) goto L_0889D718;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D718:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D724u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806888, 0u, 324u, 0x08806888u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 324u, 0x08806888u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D724u) goto L_0889D724;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D724:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D748;
|
|
}
|
|
goto L_0889D72C;
|
|
}
|
|
L_0889D72C:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D738u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-3));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806654, 0u, 303u, 0x08806654u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 303u, 0x08806654u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D738u) goto L_0889D738;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D738:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889D758;
|
|
}
|
|
goto L_0889D740;
|
|
}
|
|
L_0889D740:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889D758;
|
|
}
|
|
goto L_0889D748;
|
|
}
|
|
L_0889D748:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D754u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 315u, 0x0889D754u, 0x088066C0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 310u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 310u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 310u, 0x088066C0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D754u) goto L_0889D754;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D754:
|
|
aot_gpr_2 = (0u | 1u);
|
|
goto L_0889D758;
|
|
L_0889D758:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D76C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
ctx.gpr[18] = (aot_gpr_4 | 0u);
|
|
ctx.gpr[17] = (aot_gpr_5 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
{ const bool branch_taken = static_cast<std::int32_t>(aot_gpr_5) > 0;
|
|
ctx.gpr[16] = (aot_gpr_6 | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889D7B0;
|
|
}
|
|
goto L_0889D790;
|
|
}
|
|
L_0889D790:
|
|
aot_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[17]) < -9999 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D7B0;
|
|
}
|
|
goto L_0889D79C;
|
|
}
|
|
L_0889D79C:
|
|
aot_gpr_31 = (0x0889D7A4u);
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806634, 0u, 302u, 0x08806634u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 302u, 0x08806634u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D7A4u) goto L_0889D7A4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D7A4:
|
|
ctx.gpr[17] = (aot_gpr_2 + ctx.gpr[17]);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[17] = (ctx.gpr[17] + static_cast<std::uint32_t>(1));
|
|
if (branch_taken) {
|
|
goto L_0889D7B0;
|
|
}
|
|
goto L_0889D7B0;
|
|
}
|
|
L_0889D7B0:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889D7C0u);
|
|
aot_gpr_6 = (ctx.gpr[16] | 0u);
|
|
goto L_0889D6DC;
|
|
L_0889D7C0:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D7D0;
|
|
}
|
|
goto L_0889D7C8;
|
|
}
|
|
L_0889D7C8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889D7F4;
|
|
}
|
|
goto L_0889D7D0;
|
|
}
|
|
L_0889D7D0:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D7DCu);
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0880682C, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[16], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D7DCu) goto L_0889D7DC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D7DC:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
ctx.gpr[16] = (0u | 1u);
|
|
aot_gpr_5 = (0u | 1u);
|
|
aot_gpr_31 = (0x0889D7F0u);
|
|
aot_gpr_6 = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 326u, 0x0889D7F0u, 0x08807644u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 508u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 508u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 508u, 0x08807644u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D7F0u) goto L_0889D7F0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D7F0:
|
|
aot_gpr_2 = (ctx.gpr[16] | 0u);
|
|
goto L_0889D7F4;
|
|
L_0889D7F4:
|
|
{ std::uint32_t aot_run_words[4]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
aot_gpr_31 = aot_run_words[3];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D80C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
{ const std::uint32_t aot_run_words[3]{ctx.gpr[17], ctx.gpr[18], ctx.gpr[19]};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_run_words); }
|
|
ctx.gpr[18] = (aot_gpr_4 | 0u);
|
|
ctx.gpr[19] = (aot_gpr_5 | 0u);
|
|
ctx.gpr[17] = (aot_gpr_6 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
{ const std::uint32_t aot_run_words[3]{ctx.gpr[20], ctx.gpr[21], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(16), aot_run_words); }
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
ctx.gpr[16] = (ctx.gpr[7] | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889D8B4;
|
|
}
|
|
goto L_0889D840;
|
|
}
|
|
L_0889D840:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D84Cu);
|
|
aot_gpr_5 = (ctx.gpr[19] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 330u, 0x0889D84Cu, 0x08806E68u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 430u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 430u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 430u, 0x08806E68u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D84Cu) goto L_0889D84C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D84C:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D858u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-10001));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 331u, 0x0889D858u, 0x088070DCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 453u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 453u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 453u, 0x088070DCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D858u) goto L_0889D858;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D858:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D864u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806888, 0u, 324u, 0x08806888u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 324u, 0x08806888u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D864u) goto L_0889D864;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D864:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D8A4;
|
|
}
|
|
goto L_0889D86C;
|
|
}
|
|
L_0889D86C:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D878u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806654, 0u, 303u, 0x08806654u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 303u, 0x08806654u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D878u) goto L_0889D878;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D878:
|
|
aot_gpr_31 = (0x0889D880u);
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 335u, 0x0889D880u, 0x08807220u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 462u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 462u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 462u, 0x08807220u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D880u) goto L_0889D880;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D880:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D88Cu);
|
|
aot_gpr_5 = (ctx.gpr[19] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 336u, 0x0889D88Cu, 0x08806E68u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 430u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 430u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 430u, 0x08806E68u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D88Cu) goto L_0889D88C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D88C:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D898u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0880682C, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[16], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D898u) goto L_0889D898;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D898:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D8A4u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-10001));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_088073CC, 0u, 483u, 0x088073CCu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[16], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 483u, 0x088073CCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D8A4u) goto L_0889D8A4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D8A4:
|
|
aot_gpr_5 = (ctx.gpr[16] + static_cast<std::uint32_t>(1));
|
|
aot_gpr_5 = (0u - aot_gpr_5);
|
|
aot_gpr_31 = (0x0889D8B4u);
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 339u, 0x0889D8B4u, 0x0880673Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 315u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 315u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 315u, 0x0880673Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D8B4u) goto L_0889D8B4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D8B4:
|
|
ctx.gpr[20] = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = ctx.gpr[20] == 0u;
|
|
ctx.gpr[21] = (ctx.gpr[16] + static_cast<std::uint32_t>(1));
|
|
if (branch_taken) {
|
|
goto L_0889D930;
|
|
}
|
|
goto L_0889D8C0;
|
|
}
|
|
L_0889D8C0:
|
|
ctx.gpr[19] = (ctx.gpr[16] + static_cast<std::uint32_t>(3));
|
|
ctx.gpr[21] = (0u - ctx.gpr[21]);
|
|
ctx.gpr[19] = (0u - ctx.gpr[19]);
|
|
goto L_0889D8CC;
|
|
L_0889D8CC:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D8D8u);
|
|
aot_gpr_5 = (ctx.gpr[20] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 342u, 0x0889D8D8u, 0x08806E68u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 430u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 430u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 430u, 0x08806E68u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D8D8u) goto L_0889D8D8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D8D8:
|
|
ctx.gpr[20] = (0u | 0u);
|
|
aot_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[20]) < static_cast<std::int32_t>(ctx.gpr[16]) ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D904;
|
|
}
|
|
goto L_0889D8E8;
|
|
}
|
|
L_0889D8E8:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D8F4u);
|
|
aot_gpr_5 = (ctx.gpr[21] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0880682C, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[16], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D8F4u) goto L_0889D8F4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D8F4:
|
|
ctx.gpr[20] = (ctx.gpr[20] + static_cast<std::uint32_t>(1));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[20]) < static_cast<std::int32_t>(ctx.gpr[16]) ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D8E8;
|
|
}
|
|
goto L_0889D904;
|
|
}
|
|
L_0889D904:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D914u);
|
|
aot_gpr_6 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 346u, 0x0889D914u, 0x08806FA8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 444u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 444u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 444u, 0x08806FA8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D914u) goto L_0889D914;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D914:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889D920u);
|
|
aot_gpr_5 = (ctx.gpr[19] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_088073CC, 0u, 483u, 0x088073CCu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[16], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 483u, 0x088073CCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D920u) goto L_0889D920;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D920:
|
|
ctx.gpr[17] = (ctx.gpr[17] + static_cast<std::uint32_t>(8));
|
|
ctx.gpr[20] = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = ctx.gpr[20] != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D8CC;
|
|
}
|
|
goto L_0889D930;
|
|
}
|
|
L_0889D930:
|
|
aot_gpr_5 = (0u - ctx.gpr[16]);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_31 = (0x0889D940u);
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806654, 0u, 303u, 0x08806654u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 303u, 0x08806654u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D940u) goto L_0889D940;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D940:
|
|
{ std::uint32_t aot_run_words[7]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
ctx.gpr[19] = aot_run_words[3];
|
|
ctx.gpr[20] = aot_run_words[4];
|
|
ctx.gpr[21] = aot_run_words[5];
|
|
aot_gpr_31 = aot_run_words[6];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D964:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[16] = (aot_gpr_5 | 0u);
|
|
ctx.gpr[17] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D988u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806A88, 0u, 360u, 0x08806A88u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 360u, 0x08806A88u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D988u) goto L_0889D988;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D988:
|
|
aot_fpr_12 = std::bit_cast<float>(ctx.fpu_float_to_word_ct<1u>(ctx.fpr[0]));
|
|
ctx.gpr[18] = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
{ const bool branch_taken = ctx.gpr[18] != 0u;
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889D9AC;
|
|
}
|
|
goto L_0889D998;
|
|
}
|
|
L_0889D998:
|
|
aot_gpr_31 = (0x0889D9A0u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0880692C, 0u, 337u, 0x0880692Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[16], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 337u, 0x0880692Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D9A0u) goto L_0889D9A0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D9A0:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889D9AC;
|
|
}
|
|
goto L_0889D9A8;
|
|
}
|
|
L_0889D9A8:
|
|
ctx.gpr[18] = (0u + static_cast<std::uint32_t>(-1));
|
|
goto L_0889D9AC;
|
|
L_0889D9AC:
|
|
aot_gpr_5 = (0u - ctx.gpr[16]);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_31 = (0x0889D9BCu);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806654, 0u, 303u, 0x08806654u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 303u, 0x08806654u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D9BCu) goto L_0889D9BC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889D9BC:
|
|
aot_gpr_2 = (ctx.gpr[18] | 0u);
|
|
{ std::uint32_t aot_run_words[4]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
aot_gpr_31 = aot_run_words[3];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889D9D8:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-10000));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889D9F4u);
|
|
aot_gpr_6 = (0u | 2u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 358u, 0x0889D9F4u, 0x088071ACu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 459u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 459u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 459u, 0x088071ACu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889D9F4u) goto L_0889D9F4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889D9F4:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889DA00u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806888, 0u, 324u, 0x08806888u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 324u, 0x08806888u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DA00u) goto L_0889DA00;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889DA00:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DA7C;
|
|
}
|
|
goto L_0889DA08;
|
|
}
|
|
L_0889DA08:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889DA14u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806654, 0u, 303u, 0x08806654u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 303u, 0x08806654u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DA14u) goto L_0889DA14;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889DA14:
|
|
aot_gpr_31 = (0x0889DA1Cu);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 362u, 0x0889DA1Cu, 0x08807220u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 462u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 462u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 462u, 0x08807220u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DA1Cu) goto L_0889DA1C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DA1C:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889DA28u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0880682C, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[16], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DA28u) goto L_0889DA28;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889DA28:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889DA34u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 364u, 0x0889DA34u, 0x08807510u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 492u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 492u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 492u, 0x08807510u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DA34u) goto L_0889DA34;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DA34:
|
|
aot_gpr_5 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25368));
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889DA44u);
|
|
aot_gpr_6 = (0u | 6u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 365u, 0x0889DA44u, 0x08806DE0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 426u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 426u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 426u, 0x08806DE0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DA44u) goto L_0889DA44;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DA44:
|
|
aot_gpr_5 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25360));
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889DA54u);
|
|
aot_gpr_6 = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 366u, 0x0889DA54u, 0x08806DE0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 426u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 426u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 426u, 0x08806DE0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DA54u) goto L_0889DA54;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DA54:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889DA60u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-3));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 367u, 0x0889DA60u, 0x08807414u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 486u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 486u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 486u, 0x08807414u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DA60u) goto L_0889DA60;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DA60:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889DA6Cu);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0880682C, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[16], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DA6Cu) goto L_0889DA6C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889DA6C:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-10000));
|
|
aot_gpr_31 = (0x0889DA7Cu);
|
|
aot_gpr_6 = (0u | 2u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 369u, 0x0889DA7Cu, 0x0880748Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 489u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 489u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 489u, 0x0880748Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DA7Cu) goto L_0889DA7C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DA7C:
|
|
ctx.gpr[16] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889DA8C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), std::bit_cast<std::uint32_t>(aot_fpr_20));
|
|
aot_fpr_20 = std::bit_cast<float>(aot_gpr_6);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[17]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), ctx.gpr[18]);
|
|
aot_fpr_20 = static_cast<float>(static_cast<std::int32_t>(std::bit_cast<std::uint32_t>(aot_fpr_20)));
|
|
ctx.gpr[18] = (ctx.gpr[28] + static_cast<std::uint32_t>(-25416));
|
|
ctx.gpr[17] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(16), aot_gpr_31);
|
|
{ const bool branch_taken = static_cast<std::int32_t>(aot_gpr_5) > 0;
|
|
ctx.gpr[16] = (aot_gpr_5 | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889DADC;
|
|
}
|
|
goto L_0889DABC;
|
|
}
|
|
L_0889DABC:
|
|
aot_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[16]) < -9999 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DADC;
|
|
}
|
|
goto L_0889DAC8;
|
|
}
|
|
L_0889DAC8:
|
|
aot_gpr_31 = (0x0889DAD0u);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806634, 0u, 302u, 0x08806634u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 302u, 0x08806634u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DAD0u) goto L_0889DAD0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889DAD0:
|
|
ctx.gpr[16] = (aot_gpr_2 + ctx.gpr[16]);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[16] = (ctx.gpr[16] + static_cast<std::uint32_t>(1));
|
|
if (branch_taken) {
|
|
goto L_0889DADC;
|
|
}
|
|
goto L_0889DADC;
|
|
}
|
|
L_0889DADC:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889DAECu);
|
|
aot_gpr_6 = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 375u, 0x0889DAECu, 0x08806DE0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 426u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 426u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 426u, 0x08806DE0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DAECu) goto L_0889DAEC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DAEC:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DAF8u);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 376u, 0x0889DAF8u, 0x08807148u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 456u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 456u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 456u, 0x08807148u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DAF8u) goto L_0889DAF8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DAF8:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DB04u);
|
|
aot_gpr_5 = (0u | 1u);
|
|
goto L_0889D964;
|
|
L_0889DB04:
|
|
{ const bool branch_taken = static_cast<std::int32_t>(aot_gpr_2) < 0;
|
|
if (branch_taken) {
|
|
goto L_0889DB3C;
|
|
}
|
|
goto L_0889DB0C;
|
|
}
|
|
L_0889DB0C:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889DB1Cu);
|
|
aot_gpr_6 = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 379u, 0x0889DB1Cu, 0x08806DE0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 426u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 426u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 426u, 0x08806DE0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DB1Cu) goto L_0889DB1C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DB1C:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DB28u);
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_20));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806DC0, 0u, 425u, 0x08806DC0u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_31, aot_fpr_12); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 425u, 0x08806DC0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DB28u) goto L_0889DB28;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889DB28:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DB34u);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 381u, 0x0889DB34u, 0x08807414u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 486u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 486u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 486u, 0x08807414u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DB34u) goto L_0889DB34;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DB34:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DB74;
|
|
}
|
|
goto L_0889DB3C;
|
|
}
|
|
L_0889DB3C:
|
|
aot_gpr_31 = (0x0889DB44u);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
goto L_0889D9D8;
|
|
L_0889DB44:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DB50u);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0880682C, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[16], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DB50u) goto L_0889DB50;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889DB50:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DB5Cu);
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_20));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806DC0, 0u, 425u, 0x08806DC0u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_31, aot_fpr_12); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 425u, 0x08806DC0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DB5Cu) goto L_0889DB5C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889DB5C:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DB68u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-3));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 386u, 0x0889DB68u, 0x08807414u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 486u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 486u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 486u, 0x08807414u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DB68u) goto L_0889DB68;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DB68:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DB74u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806654, 0u, 303u, 0x08806654u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 303u, 0x08806654u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DB74u) goto L_0889DB74;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889DB74:
|
|
{ std::uint32_t aot_run_words[5]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
aot_fpr_20 = std::bit_cast<float>(aot_run_words[0]);
|
|
ctx.gpr[16] = aot_run_words[1];
|
|
ctx.gpr[17] = aot_run_words[2];
|
|
ctx.gpr[18] = aot_run_words[3];
|
|
aot_gpr_31 = aot_run_words[4];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889DB90:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[17] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
{ const bool branch_taken = static_cast<std::int32_t>(aot_gpr_5) > 0;
|
|
ctx.gpr[16] = (aot_gpr_5 | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889DBD0;
|
|
}
|
|
goto L_0889DBB0;
|
|
}
|
|
L_0889DBB0:
|
|
aot_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[16]) < -9999 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DBD0;
|
|
}
|
|
goto L_0889DBBC;
|
|
}
|
|
L_0889DBBC:
|
|
aot_gpr_31 = (0x0889DBC4u);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806634, 0u, 302u, 0x08806634u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 302u, 0x08806634u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DBC4u) goto L_0889DBC4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889DBC4:
|
|
ctx.gpr[16] = (aot_gpr_2 + ctx.gpr[16]);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[16] = (ctx.gpr[16] + static_cast<std::uint32_t>(1));
|
|
if (branch_taken) {
|
|
goto L_0889DBD0;
|
|
}
|
|
goto L_0889DBD0;
|
|
}
|
|
L_0889DBD0:
|
|
aot_gpr_5 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25416));
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DBE0u);
|
|
aot_gpr_6 = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 393u, 0x0889DBE0u, 0x08806DE0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 426u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 426u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 426u, 0x08806DE0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DBE0u) goto L_0889DBE0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DBE0:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DBECu);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 394u, 0x0889DBECu, 0x08807148u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 456u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 456u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 456u, 0x08807148u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DBECu) goto L_0889DBEC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DBEC:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DBF8u);
|
|
aot_gpr_5 = (0u | 1u);
|
|
goto L_0889D964;
|
|
L_0889DBF8:
|
|
{ const bool branch_taken = static_cast<std::int32_t>(aot_gpr_2) >= 0;
|
|
if (branch_taken) {
|
|
goto L_0889DC44;
|
|
}
|
|
goto L_0889DC00;
|
|
}
|
|
L_0889DC00:
|
|
aot_gpr_31 = (0x0889DC08u);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
goto L_0889D9D8;
|
|
L_0889DC08:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DC14u);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0880682C, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[16], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 322u, 0x0880682Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DC14u) goto L_0889DC14;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889DC14:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DC20u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 399u, 0x0889DC20u, 0x08807148u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 456u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 456u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 456u, 0x08807148u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DC20u) goto L_0889DC20;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DC20:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DC2Cu);
|
|
aot_gpr_5 = (0u | 2u);
|
|
goto L_0889D964;
|
|
L_0889DC2C:
|
|
{ const bool branch_taken = static_cast<std::int32_t>(aot_gpr_2) >= 0;
|
|
if (branch_taken) {
|
|
goto L_0889DC3C;
|
|
}
|
|
goto L_0889DC34;
|
|
}
|
|
L_0889DC34:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[18] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_0889DC4C;
|
|
}
|
|
goto L_0889DC3C;
|
|
}
|
|
L_0889DC3C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DC94;
|
|
}
|
|
goto L_0889DC44;
|
|
}
|
|
L_0889DC44:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DC94;
|
|
}
|
|
goto L_0889DC4C;
|
|
}
|
|
L_0889DC4C:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889DC5Cu);
|
|
aot_gpr_6 = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 405u, 0x0889DC5Cu, 0x088071ACu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 459u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 459u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 459u, 0x088071ACu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DC5Cu) goto L_0889DC5C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DC5C:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DC68u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806888, 0u, 324u, 0x08806888u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 324u, 0x08806888u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DC68u) goto L_0889DC68;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889DC68:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DC84;
|
|
}
|
|
goto L_0889DC70;
|
|
}
|
|
L_0889DC70:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DC7Cu);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806654, 0u, 303u, 0x08806654u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 303u, 0x08806654u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DC7Cu) goto L_0889DC7C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889DC7C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[18] = (ctx.gpr[18] + static_cast<std::uint32_t>(1));
|
|
if (branch_taken) {
|
|
goto L_0889DC4C;
|
|
}
|
|
goto L_0889DC84;
|
|
}
|
|
L_0889DC84:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889DC90u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806654, 0u, 303u, 0x08806654u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 303u, 0x08806654u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DC90u) goto L_0889DC90;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889DC90:
|
|
aot_gpr_2 = (ctx.gpr[18] + static_cast<std::uint32_t>(-1));
|
|
goto L_0889DC94;
|
|
L_0889DC94:
|
|
{ std::uint32_t aot_run_words[4]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
aot_gpr_31 = aot_run_words[3];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889DCAC:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(0)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[17] = (ctx.gpr[16] + static_cast<std::uint32_t>(12));
|
|
aot_gpr_4 = (aot_gpr_4 - ctx.gpr[17]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DCDC;
|
|
}
|
|
goto L_0889DCD4;
|
|
}
|
|
L_0889DCD4:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889DD00;
|
|
}
|
|
goto L_0889DCDC;
|
|
}
|
|
L_0889DCDC:
|
|
aot_gpr_6 = (aot_gpr_4 | 0u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_31 = (0x0889DCECu);
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 415u, 0x0889DCECu, 0x08806DE0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 426u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 426u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 426u, 0x08806DE0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DCECu) goto L_0889DCEC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DCEC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(4)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(0), ctx.gpr[17]);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(1));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(4), aot_gpr_4);
|
|
aot_gpr_2 = (0u | 1u);
|
|
goto L_0889DD00;
|
|
L_0889DD00:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889DD14:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_5) < 2 ? 1u : 0u);
|
|
{ const std::uint32_t aot_run_words[5]{ctx.gpr[17], ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_run_words); }
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DDCC;
|
|
}
|
|
goto L_0889DD44;
|
|
}
|
|
L_0889DD44:
|
|
ctx.gpr[20] = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(8)));
|
|
ctx.gpr[19] = (0u | 1u);
|
|
aot_gpr_4 = (ctx.gpr[20] | 0u);
|
|
aot_gpr_31 = (0x0889DD58u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 419u, 0x0889DD58u, 0x08806BD8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 387u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 387u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 387u, 0x08806BD8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DD58u) goto L_0889DD58;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DD58:
|
|
ctx.gpr[18] = (aot_gpr_2 | 0u);
|
|
goto L_0889DD5C;
|
|
L_0889DD5C:
|
|
ctx.gpr[17] = (ctx.gpr[19] + static_cast<std::uint32_t>(1));
|
|
aot_gpr_5 = (0u - ctx.gpr[17]);
|
|
aot_gpr_31 = (0x0889DD6Cu);
|
|
aot_gpr_4 = (ctx.gpr[20] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 421u, 0x0889DD6Cu, 0x08806BD8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 387u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 387u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 387u, 0x08806BD8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DD6Cu) goto L_0889DD6C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DD6C:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_6 = (aot_gpr_5 - ctx.gpr[19]);
|
|
aot_gpr_6 = (aot_gpr_6 + static_cast<std::uint32_t>(1));
|
|
aot_gpr_6 = (static_cast<std::int32_t>(aot_gpr_6) < 10 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_6 == 0u;
|
|
aot_gpr_4 = (aot_gpr_2 | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889DD90;
|
|
}
|
|
goto L_0889DD84;
|
|
}
|
|
L_0889DD84:
|
|
aot_gpr_6 = (aot_gpr_4 < ctx.gpr[18] ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_6 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DD9C;
|
|
}
|
|
goto L_0889DD90;
|
|
}
|
|
L_0889DD90:
|
|
ctx.gpr[18] = (aot_gpr_4 + ctx.gpr[18]);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[19] = (ctx.gpr[17] | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889DDA4;
|
|
}
|
|
goto L_0889DD9C;
|
|
}
|
|
L_0889DD9C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DDB0;
|
|
}
|
|
goto L_0889DDA4;
|
|
}
|
|
L_0889DDA4:
|
|
aot_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[17]) < static_cast<std::int32_t>(aot_gpr_5) ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DD5C;
|
|
}
|
|
goto L_0889DDB0;
|
|
}
|
|
L_0889DDB0:
|
|
aot_gpr_4 = (ctx.gpr[20] | 0u);
|
|
aot_gpr_31 = (0x0889DDBCu);
|
|
aot_gpr_5 = (ctx.gpr[19] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 427u, 0x0889DDBCu, 0x08807904u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 546u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 546u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 546u, 0x08807904u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DDBCu) goto L_0889DDBC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DDBC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_4 = (aot_gpr_4 - ctx.gpr[19]);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(1));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(4), aot_gpr_4);
|
|
goto L_0889DDCC;
|
|
L_0889DDCC:
|
|
{ std::uint32_t aot_run_words[6]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
ctx.gpr[19] = aot_run_words[3];
|
|
ctx.gpr[20] = aot_run_words[4];
|
|
aot_gpr_31 = aot_run_words[5];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889DDEC:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889DE00u);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
goto L_0889DCAC;
|
|
L_0889DE00:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DE10;
|
|
}
|
|
goto L_0889DE08;
|
|
}
|
|
L_0889DE08:
|
|
aot_gpr_31 = (0x0889DE10u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
goto L_0889DD14;
|
|
L_0889DE10:
|
|
aot_gpr_2 = (ctx.gpr[16] + static_cast<std::uint32_t>(12));
|
|
ctx.gpr[16] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889DE24:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(16), ctx.gpr[20]);
|
|
ctx.gpr[20] = (aot_gpr_6 + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
ctx.gpr[16] = (ctx.gpr[20] | 0u);
|
|
ctx.gpr[18] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), ctx.gpr[19]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(20), aot_gpr_31);
|
|
{ const bool branch_taken = aot_gpr_6 == 0u;
|
|
ctx.gpr[17] = (aot_gpr_5 | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889DE98;
|
|
}
|
|
goto L_0889DE54;
|
|
}
|
|
L_0889DE54:
|
|
ctx.gpr[19] = (ctx.gpr[18] + static_cast<std::uint32_t>(1036));
|
|
goto L_0889DE58;
|
|
L_0889DE58:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_4 = (aot_gpr_4 < ctx.gpr[19] ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DE70;
|
|
}
|
|
goto L_0889DE68;
|
|
}
|
|
L_0889DE68:
|
|
aot_gpr_31 = (0x0889DE70u);
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
goto L_0889DDEC;
|
|
L_0889DE70:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(aot_mem.aot_direct_load8(ctx.gpr[17] + static_cast<std::uint32_t>(0))))));
|
|
aot_gpr_6 = (aot_gpr_4 + static_cast<std::uint32_t>(1));
|
|
aot_mem.aot_direct_store32(ctx.gpr[18] + static_cast<std::uint32_t>(0), aot_gpr_6);
|
|
aot_gpr_6 = (ctx.gpr[20] | 0u);
|
|
ctx.gpr[20] = (ctx.gpr[16] + static_cast<std::uint32_t>(-1));
|
|
ctx.gpr[17] = (ctx.gpr[17] + static_cast<std::uint32_t>(1));
|
|
aot_mem.aot_direct_store8(aot_gpr_4 + static_cast<std::uint32_t>(0), static_cast<std::uint8_t>(aot_gpr_5));
|
|
{ const bool branch_taken = aot_gpr_6 != 0u;
|
|
ctx.gpr[16] = (ctx.gpr[20] | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889DE58;
|
|
}
|
|
goto L_0889DE98;
|
|
}
|
|
L_0889DE98:
|
|
{ std::uint32_t aot_run_words[6]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
ctx.gpr[19] = aot_run_words[3];
|
|
ctx.gpr[20] = aot_run_words[4];
|
|
aot_gpr_31 = aot_run_words[5];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889DEB8:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889DECCu);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
goto L_0889DCAC;
|
|
L_0889DECC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_31 = (0x0889DED8u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(4)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 441u, 0x0889DED8u, 0x08807904u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 546u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 546u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 546u, 0x08807904u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DED8u) goto L_0889DED8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DED8:
|
|
aot_gpr_4 = (0u | 1u);
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(4), aot_gpr_4);
|
|
ctx.gpr[16] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889DEF0:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), ctx.gpr[19]);
|
|
ctx.gpr[19] = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(16), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889DF1Cu);
|
|
aot_gpr_4 = (ctx.gpr[19] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 443u, 0x0889DF1Cu, 0x08806BD8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 387u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 387u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 387u, 0x08806BD8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DF1Cu) goto L_0889DF1C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DF1C:
|
|
ctx.gpr[17] = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_4 = (ctx.gpr[16] + static_cast<std::uint32_t>(12));
|
|
aot_gpr_4 = (ctx.gpr[17] - aot_gpr_4);
|
|
aot_gpr_5 = (0u | 1024u);
|
|
ctx.gpr[18] = (aot_gpr_2 | 0u);
|
|
aot_gpr_4 = (aot_gpr_5 - aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_4 < ctx.gpr[18] ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DF7C;
|
|
}
|
|
goto L_0889DF40;
|
|
}
|
|
L_0889DF40:
|
|
aot_gpr_4 = (ctx.gpr[19] | 0u);
|
|
aot_gpr_31 = (0x0889DF4Cu);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 445u, 0x0889DF4Cu, 0x08806B2Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 375u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 375u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 375u, 0x08806B2Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DF4Cu) goto L_0889DF4C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DF4C:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_5 = (aot_gpr_2 | 0u);
|
|
aot_gpr_31 = (0x0889DF5Cu);
|
|
aot_gpr_6 = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0088.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 446u, 0x0889DF5Cu, 0x089645DCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0088_entry(rt, ctx, 36u, aot_mem);
|
|
#else
|
|
recomp_unit_0088_entry(rt, ctx, 36u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0088_entry, 88u, 36u, 0x089645DCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DF5Cu) goto L_0889DF5C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DF5C:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_4 = (ctx.gpr[19] | 0u);
|
|
aot_gpr_5 = (aot_gpr_5 + ctx.gpr[18]);
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(0), aot_gpr_5);
|
|
aot_gpr_31 = (0x0889DF74u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806654, 0u, 303u, 0x08806654u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 303u, 0x08806654u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DF74u) goto L_0889DF74;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889DF74:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DFAC;
|
|
}
|
|
goto L_0889DF7C;
|
|
}
|
|
L_0889DF7C:
|
|
aot_gpr_31 = (0x0889DF84u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
goto L_0889DCAC;
|
|
L_0889DF84:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889DF98;
|
|
}
|
|
goto L_0889DF8C;
|
|
}
|
|
L_0889DF8C:
|
|
aot_gpr_4 = (ctx.gpr[19] | 0u);
|
|
aot_gpr_31 = (0x0889DF98u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 451u, 0x0889DF98u, 0x0880673Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 315u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 315u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 315u, 0x0880673Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889DF98u) goto L_0889DF98;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889DF98:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(1));
|
|
aot_gpr_31 = (0x0889DFACu);
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(4), aot_gpr_5);
|
|
goto L_0889DD14;
|
|
L_0889DFAC:
|
|
{ std::uint32_t aot_run_words[5]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
ctx.gpr[19] = aot_run_words[3];
|
|
aot_gpr_31 = aot_run_words[4];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889DFC8:
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(8), aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_5 + static_cast<std::uint32_t>(12));
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(0), aot_gpr_4);
|
|
jump_target = aot_gpr_31;
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(4), 0u);
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889DFDC:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[17] = (aot_gpr_5 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
ctx.gpr[18] = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(0)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_6 | 0u);
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25348)));
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25352)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(0)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889E010u);
|
|
ctx.gpr[8] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0205.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 455u, 0x0889E010u, 0x08B3B264u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0205_entry(rt, ctx, 898u, aot_mem);
|
|
#else
|
|
recomp_unit_0205_entry(rt, ctx, 898u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0205_entry, 205u, 898u, 0x08B3B264u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E010u) goto L_0889E010;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E010:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_6 = (32768u << 16u);
|
|
aot_gpr_6 = (aot_gpr_6 + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_5 = (aot_gpr_2 | 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_6);
|
|
aot_gpr_4 = (aot_gpr_5 < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ 1u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889E068;
|
|
}
|
|
goto L_0889E038;
|
|
}
|
|
L_0889E038:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[17] + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_5 = (32768u << 16u);
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_5 = (aot_gpr_6 & aot_gpr_5);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
ctx.gpr[17] = (ctx.gpr[17] + static_cast<std::uint32_t>(4));
|
|
if (branch_taken) {
|
|
goto L_0889E070;
|
|
}
|
|
goto L_0889E054;
|
|
}
|
|
L_0889E054:
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889E060u);
|
|
aot_gpr_6 = (0u | 1024u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0205.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 458u, 0x0889E060u, 0x08B3AEC4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0205_entry(rt, ctx, 822u, aot_mem);
|
|
#else
|
|
recomp_unit_0205_entry(rt, ctx, 822u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0205_entry, 205u, 822u, 0x08B3AEC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E060u) goto L_0889E060;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E060:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (aot_gpr_2 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_0889E080;
|
|
}
|
|
goto L_0889E068;
|
|
}
|
|
L_0889E068:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889E090;
|
|
}
|
|
goto L_0889E070;
|
|
}
|
|
L_0889E070:
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889E07Cu);
|
|
aot_gpr_6 = (0u | 1024u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0205.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 461u, 0x0889E07Cu, 0x08B3B0E4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0205_entry(rt, ctx, 864u, aot_mem);
|
|
#else
|
|
recomp_unit_0205_entry(rt, ctx, 864u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0205_entry, 205u, 864u, 0x08B3B0E4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E07Cu) goto L_0889E07C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E07C:
|
|
aot_gpr_4 = (aot_gpr_2 | 0u);
|
|
goto L_0889E080;
|
|
L_0889E080:
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(0), aot_gpr_4);
|
|
aot_gpr_2 = (0u | 0u);
|
|
if (aot_gpr_4 != 0u) {
|
|
aot_gpr_2 = (ctx.gpr[17] | 0u);
|
|
goto L_0889E090;
|
|
}
|
|
goto L_0889E090;
|
|
L_0889E090:
|
|
{ std::uint32_t aot_run_words[4]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
aot_gpr_31 = aot_run_words[3];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E0A8:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_5 | 0u);
|
|
{ const std::uint32_t aot_run_words[4]{ctx.gpr[17], ctx.gpr[18], ctx.gpr[19], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_run_words); }
|
|
aot_gpr_31 = (0x0889E0CCu);
|
|
ctx.gpr[17] = (aot_gpr_4 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 465u, 0x0889E0CCu, 0x08806B2Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 375u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 375u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 375u, 0x08806B2Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E0CCu) goto L_0889E0CC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E0CC:
|
|
aot_gpr_4 = (2232u << 16u);
|
|
ctx.gpr[18] = (aot_gpr_2 + static_cast<std::uint32_t>(1));
|
|
aot_gpr_31 = (0x0889E0DCu);
|
|
ctx.gpr[19] = (aot_gpr_4 + static_cast<std::uint32_t>(-22712));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0212_entry, 212u, 341u, 0x08B552F4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E0DCu) goto L_0889E0DC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E0DC:
|
|
aot_gpr_31 = (0x0889E0E4u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_2 + static_cast<std::uint32_t>(0)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0213.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 467u, 0x0889E0E4u, 0x08B583A8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0213_entry(rt, ctx, 74u, aot_mem);
|
|
#else
|
|
recomp_unit_0213_entry(rt, ctx, 74u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0213_entry, 213u, 74u, 0x08B583A8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E0E4u) goto L_0889E0E4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E0E4:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[19] | 0u);
|
|
aot_gpr_6 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889E0F8u);
|
|
ctx.gpr[7] = (aot_gpr_2 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 468u, 0x0889E0F8u, 0x08806F24u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 440u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 440u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 440u, 0x08806F24u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E0F8u) goto L_0889E0F8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E0F8:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889E104u);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 469u, 0x0889E104u, 0x088066C0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 310u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 310u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 310u, 0x088066C0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E104u) goto L_0889E104;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E104:
|
|
aot_gpr_2 = (0u | 2u);
|
|
{ std::uint32_t aot_run_words[5]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
ctx.gpr[19] = aot_run_words[3];
|
|
aot_gpr_31 = aot_run_words[4];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E124:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-1072));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(1032), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
{ const std::uint32_t aot_run_words[7]{ctx.gpr[17], ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[22], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(1036), aot_run_words); }
|
|
aot_gpr_31 = (0x0889E154u);
|
|
ctx.gpr[17] = (aot_gpr_5 | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806634, 0u, 302u, 0x08806634u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 302u, 0x08806634u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E154u) goto L_0889E154;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E154:
|
|
ctx.gpr[18] = (aot_gpr_2 + static_cast<std::uint32_t>(1));
|
|
aot_gpr_5 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25344));
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889E168u);
|
|
aot_gpr_6 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 472u, 0x0889E168u, 0x08806F24u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 440u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 440u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 440u, 0x08806F24u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E168u) goto L_0889E168;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E168:
|
|
aot_gpr_5 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25340));
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889E178u);
|
|
aot_gpr_6 = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0001.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 473u, 0x0889E178u, 0x08809B44u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0001_entry(rt, ctx, 356u, aot_mem);
|
|
#else
|
|
recomp_unit_0001_entry(rt, ctx, 356u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0001_entry, 1u, 356u, 0x08809B44u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E178u) goto L_0889E178;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E178:
|
|
ctx.gpr[19] = (aot_gpr_2 | 0u);
|
|
{ const bool branch_taken = ctx.gpr[19] == 0u;
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_gpr_2);
|
|
if (branch_taken) {
|
|
goto L_0889E1C4;
|
|
}
|
|
goto L_0889E184;
|
|
}
|
|
L_0889E184:
|
|
aot_gpr_4 = (ctx.gpr[19] | 0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
ctx.gpr[19] = (32768u << 16u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[7] = (2234u << 16u);
|
|
aot_gpr_6 = (aot_gpr_5 & ctx.gpr[19]);
|
|
ctx.gpr[21] = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25316)));
|
|
ctx.gpr[22] = (ctx.gpr[7] + static_cast<std::uint32_t>(14520));
|
|
aot_gpr_5 = (aot_gpr_29 + static_cast<std::uint32_t>(1028));
|
|
ctx.gpr[20] = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25320)));
|
|
{ const bool branch_taken = aot_gpr_6 == 0u;
|
|
ctx.gpr[22] = (ctx.gpr[22] + static_cast<std::uint32_t>(1));
|
|
if (branch_taken) {
|
|
goto L_0889E1D8;
|
|
}
|
|
goto L_0889E1B4;
|
|
}
|
|
L_0889E1B4:
|
|
aot_gpr_31 = (0x0889E1BCu);
|
|
aot_gpr_6 = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0205.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 476u, 0x0889E1BCu, 0x08B3AEC4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0205_entry(rt, ctx, 822u, aot_mem);
|
|
#else
|
|
recomp_unit_0205_entry(rt, ctx, 822u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0205_entry, 205u, 822u, 0x08B3AEC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E1BCu) goto L_0889E1BC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E1BC:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
if (branch_taken) {
|
|
goto L_0889E1E4;
|
|
}
|
|
goto L_0889E1C4;
|
|
}
|
|
L_0889E1C4:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889E1D0u);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
goto L_0889E0A8;
|
|
L_0889E1D0:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889E340;
|
|
}
|
|
goto L_0889E1D8;
|
|
}
|
|
L_0889E1D8:
|
|
aot_gpr_31 = (0x0889E1E0u);
|
|
aot_gpr_6 = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0205.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 480u, 0x0889E1E0u, 0x08B3B0E4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0205_entry(rt, ctx, 864u, aot_mem);
|
|
#else
|
|
recomp_unit_0205_entry(rt, ctx, 864u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0205_entry, 205u, 864u, 0x08B3B0E4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E1E0u) goto L_0889E1E0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E1E0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
goto L_0889E1E4;
|
|
L_0889E1E4:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_5 = (aot_gpr_5 & ctx.gpr[19]);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
if (branch_taken) {
|
|
goto L_0889E218;
|
|
}
|
|
goto L_0889E1F4;
|
|
}
|
|
L_0889E1F4:
|
|
ctx.gpr[7] = (ctx.gpr[21] | 0u);
|
|
aot_gpr_6 = (ctx.gpr[20] | 0u);
|
|
aot_gpr_31 = (0x0889E204u);
|
|
ctx.gpr[8] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0205.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 483u, 0x0889E204u, 0x08B3B024u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0205_entry(rt, ctx, 855u, aot_mem);
|
|
#else
|
|
recomp_unit_0205_entry(rt, ctx, 855u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0205_entry, 205u, 855u, 0x08B3B024u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E204u) goto L_0889E204;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E204:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(aot_mem.aot_direct_load8(aot_gpr_29 + static_cast<std::uint32_t>(1028))))));
|
|
aot_gpr_4 = (ctx.gpr[22] + aot_gpr_4);
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(0))))));
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_5 = (aot_gpr_4 & 8u);
|
|
if (branch_taken) {
|
|
goto L_0889E238;
|
|
}
|
|
goto L_0889E218;
|
|
}
|
|
L_0889E218:
|
|
ctx.gpr[7] = (ctx.gpr[21] | 0u);
|
|
aot_gpr_6 = (ctx.gpr[20] | 0u);
|
|
aot_gpr_31 = (0x0889E228u);
|
|
ctx.gpr[8] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0205.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 485u, 0x0889E228u, 0x08B3B264u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0205_entry(rt, ctx, 898u, aot_mem);
|
|
#else
|
|
recomp_unit_0205_entry(rt, ctx, 898u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0205_entry, 205u, 898u, 0x08B3B264u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E228u) goto L_0889E228;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E228:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(aot_mem.aot_direct_load8(aot_gpr_29 + static_cast<std::uint32_t>(1028))))));
|
|
aot_gpr_4 = (ctx.gpr[22] + aot_gpr_4);
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(0))))));
|
|
aot_gpr_5 = (aot_gpr_4 & 8u);
|
|
goto L_0889E238;
|
|
L_0889E238:
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (aot_gpr_4 & 151u);
|
|
if (branch_taken) {
|
|
goto L_0889E290;
|
|
}
|
|
goto L_0889E240;
|
|
}
|
|
L_0889E240:
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889E290;
|
|
}
|
|
goto L_0889E248;
|
|
}
|
|
L_0889E248:
|
|
ctx.gpr[20] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[20] + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_5 = (aot_gpr_5 & ctx.gpr[19]);
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[20] + static_cast<std::uint32_t>(0)));
|
|
if (branch_taken) {
|
|
goto L_0889E270;
|
|
}
|
|
goto L_0889E25C;
|
|
}
|
|
L_0889E25C:
|
|
aot_gpr_31 = (0x0889E264u);
|
|
ctx.pc = 0x08B7363Cu;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E264:
|
|
aot_gpr_4 = (0u + static_cast<std::uint32_t>(-1));
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store32(ctx.gpr[20] + static_cast<std::uint32_t>(0), aot_gpr_4);
|
|
if (branch_taken) {
|
|
goto L_0889E278;
|
|
}
|
|
goto L_0889E270;
|
|
}
|
|
L_0889E270:
|
|
aot_gpr_31 = (0x0889E278u);
|
|
ctx.pc = 0x08B7368Cu;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E278:
|
|
aot_gpr_5 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25336));
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889E288u);
|
|
aot_gpr_6 = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0001.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 493u, 0x0889E288u, 0x08809B44u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0001_entry(rt, ctx, 356u, aot_mem);
|
|
#else
|
|
recomp_unit_0001_entry(rt, ctx, 356u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0001_entry, 1u, 356u, 0x08809B44u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E288u) goto L_0889E288;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E288:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_gpr_2);
|
|
if (branch_taken) {
|
|
goto L_0889E2EC;
|
|
}
|
|
goto L_0889E290;
|
|
}
|
|
L_0889E290:
|
|
aot_gpr_6 = (2186u << 16u);
|
|
ctx.gpr[21] = (ctx.gpr[19] | 0u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_31 = (0x0889E2A8u);
|
|
ctx.gpr[17] = (aot_gpr_6 + static_cast<std::uint32_t>(-8228));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 495u, 0x0889E2A8u, 0x08806B2Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 375u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 375u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 375u, 0x08806B2Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E2A8u) goto L_0889E2A8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E2A8:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_6 = (aot_gpr_29 | 0u);
|
|
aot_gpr_31 = (0x0889E2BCu);
|
|
ctx.gpr[7] = (aot_gpr_2 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 496u, 0x0889E2BCu, 0x0880771Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 517u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 517u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 517u, 0x0880771Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E2BCu) goto L_0889E2BC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E2BC:
|
|
ctx.gpr[20] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[17] = (aot_gpr_2 | 0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[20] + static_cast<std::uint32_t>(4)));
|
|
ctx.gpr[19] = (0u | 0u);
|
|
aot_gpr_5 = (aot_gpr_5 & ctx.gpr[21]);
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[20] + static_cast<std::uint32_t>(0)));
|
|
if (branch_taken) {
|
|
goto L_0889E300;
|
|
}
|
|
goto L_0889E2D8;
|
|
}
|
|
L_0889E2D8:
|
|
aot_gpr_31 = (0x0889E2E0u);
|
|
ctx.pc = 0x08B7363Cu;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E2E0:
|
|
aot_gpr_4 = (0u + static_cast<std::uint32_t>(-1));
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store32(ctx.gpr[20] + static_cast<std::uint32_t>(0), aot_gpr_4);
|
|
if (branch_taken) {
|
|
goto L_0889E308;
|
|
}
|
|
goto L_0889E2EC;
|
|
}
|
|
L_0889E2EC:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889E2F8u);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
goto L_0889E0A8;
|
|
L_0889E2F8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889E340;
|
|
}
|
|
goto L_0889E300;
|
|
}
|
|
L_0889E300:
|
|
aot_gpr_31 = (0x0889E308u);
|
|
ctx.pc = 0x08B7368Cu;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E308:
|
|
{ const bool branch_taken = ctx.gpr[19] == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889E330;
|
|
}
|
|
goto L_0889E310;
|
|
}
|
|
L_0889E310:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889E31Cu);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806654, 0u, 303u, 0x08806654u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 303u, 0x08806654u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E31Cu) goto L_0889E31C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E31C:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889E328u);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
goto L_0889E0A8;
|
|
L_0889E328:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889E340;
|
|
}
|
|
goto L_0889E330;
|
|
}
|
|
L_0889E330:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889E33Cu);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 507u, 0x0889E33Cu, 0x088066C0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 310u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 310u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 310u, 0x088066C0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E33Cu) goto L_0889E33C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E33C:
|
|
aot_gpr_2 = (ctx.gpr[17] | 0u);
|
|
goto L_0889E340;
|
|
L_0889E340:
|
|
{ std::uint32_t aot_run_words[8]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(1032), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
ctx.gpr[19] = aot_run_words[3];
|
|
ctx.gpr[20] = aot_run_words[4];
|
|
ctx.gpr[21] = aot_run_words[5];
|
|
ctx.gpr[22] = aot_run_words[6];
|
|
aot_gpr_31 = aot_run_words[7];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(1072));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E368:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(4)));
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889E37C;
|
|
}
|
|
goto L_0889E374;
|
|
}
|
|
L_0889E374:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889E388;
|
|
}
|
|
goto L_0889E37C;
|
|
}
|
|
L_0889E37C:
|
|
aot_mem.aot_direct_store32(aot_gpr_6 + static_cast<std::uint32_t>(0), aot_gpr_4);
|
|
aot_gpr_2 = (aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(4), 0u);
|
|
goto L_0889E388;
|
|
L_0889E388:
|
|
jump_target = aot_gpr_31;
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E390:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_gpr_5);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_6);
|
|
aot_gpr_5 = (2186u << 16u);
|
|
aot_gpr_6 = (aot_gpr_29 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889E3B0u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-7320));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 514u, 0x0889E3B0u, 0x0880771Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 517u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 517u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 517u, 0x0880771Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E3B0u) goto L_0889E3B0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E3B0:
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(8)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E3BC:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[4]{ctx.gpr[16], ctx.gpr[17], ctx.gpr[18], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889E464;
|
|
}
|
|
goto L_0889E3D8;
|
|
}
|
|
L_0889E3D8:
|
|
aot_gpr_5 = (ctx.gpr[28] + static_cast<std::uint32_t>(-25312));
|
|
aot_gpr_31 = (0x0889E3E4u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 517u, 0x0889E3E4u, 0x08806E68u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 430u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 430u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 430u, 0x08806E68u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E3E4u) goto L_0889E3E4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E3E4:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889E3F0u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-10001));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 518u, 0x0889E3F0u, 0x088070DCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 453u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 453u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 453u, 0x088070DCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E3F0u) goto L_0889E3F0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E3F0:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889E3FCu);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806888, 0u, 324u, 0x08806888u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 324u, 0x08806888u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E3FCu) goto L_0889E3FC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E3FC:
|
|
aot_gpr_4 = (0u | 6u);
|
|
{ const bool branch_taken = aot_gpr_2 != aot_gpr_4;
|
|
if (branch_taken) {
|
|
goto L_0889E42C;
|
|
}
|
|
goto L_0889E408;
|
|
}
|
|
L_0889E408:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889E414u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 521u, 0x0889E414u, 0x0880673Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 315u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 315u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 315u, 0x0880673Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E414u) goto L_0889E414;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E414:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_5 = (0u | 1u);
|
|
aot_gpr_31 = (0x0889E424u);
|
|
aot_gpr_6 = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 522u, 0x0889E424u, 0x08807644u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 508u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 508u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 508u, 0x08807644u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E424u) goto L_0889E424;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E424:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889E464;
|
|
}
|
|
goto L_0889E42C;
|
|
}
|
|
L_0889E42C:
|
|
aot_gpr_4 = (2234u << 16u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(15532)));
|
|
ctx.gpr[17] = (ctx.gpr[28] + static_cast<std::uint32_t>(-25304));
|
|
ctx.gpr[18] = (aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(12)));
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889E448u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 524u, 0x0889E448u, 0x08806B2Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 375u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 375u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 375u, 0x08806B2Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E448u) goto L_0889E448;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E448:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889E458u);
|
|
aot_gpr_6 = (aot_gpr_2 | 0u);
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0212_entry, 212u, 425u, 0x08B55920u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E458u) goto L_0889E458;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E458:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889E464u);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-3));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08806654, 0u, 303u, 0x08806654u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0000_entry, 0u, 303u, 0x08806654u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E464u) goto L_0889E464;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E464:
|
|
{ std::uint32_t aot_run_words[4]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
aot_gpr_31 = aot_run_words[3];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E47C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[17] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
ctx.gpr[16] = (aot_gpr_5 | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889E4B0;
|
|
}
|
|
goto L_0889E498;
|
|
}
|
|
L_0889E498:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_5 = (0u | 0u);
|
|
aot_gpr_6 = (0u + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_31 = (0x0889E4ACu);
|
|
ctx.gpr[7] = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0000.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 529u, 0x0889E4ACu, 0x0880768Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0000_entry(rt, ctx, 512u, aot_mem);
|
|
#else
|
|
recomp_unit_0000_entry(rt, ctx, 512u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0000_entry, 0u, 512u, 0x0880768Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E4ACu) goto L_0889E4AC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E4AC:
|
|
ctx.gpr[16] = (aot_gpr_2 | 0u);
|
|
goto L_0889E4B0;
|
|
L_0889E4B0:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_31 = (0x0889E4BCu);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
goto L_0889E3BC;
|
|
L_0889E4BC:
|
|
aot_gpr_2 = (ctx.gpr[16] | 0u);
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E4D4:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889E4E8u);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
goto L_0889E124;
|
|
L_0889E4E8:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889E4F4u);
|
|
aot_gpr_5 = (aot_gpr_2 | 0u);
|
|
goto L_0889E47C;
|
|
L_0889E4F4:
|
|
ctx.gpr[16] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E504:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889E518u);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
goto L_0889E390;
|
|
L_0889E518:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889E524u);
|
|
aot_gpr_5 = (aot_gpr_2 | 0u);
|
|
goto L_0889E47C;
|
|
L_0889E524:
|
|
ctx.gpr[16] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E534:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[17] = (aot_gpr_4 | 0u);
|
|
ctx.gpr[16] = (aot_gpr_5 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889E554u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B58974, 213u, 150u, 0x08B58974u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0213_entry, 213u, 150u, 0x08B58974u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E554u) goto L_0889E554;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E554:
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_6 = (aot_gpr_2 | 0u);
|
|
aot_gpr_31 = (0x0889E568u);
|
|
ctx.gpr[7] = (ctx.gpr[16] | 0u);
|
|
goto L_0889E504;
|
|
L_0889E568:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E57C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{ctx.gpr[16], ctx.gpr[17], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
ctx.gpr[17] = (0u | 0u);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
goto L_0889E594;
|
|
L_0889E594:
|
|
aot_gpr_31 = (0x0889E59Cu);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(8)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0133.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 543u, 0x0889E59Cu, 0x08A1A2ECu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0133_entry(rt, ctx, 299u, aot_mem);
|
|
#else
|
|
recomp_unit_0133_entry(rt, ctx, 299u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0133_entry, 133u, 299u, 0x08A1A2ECu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E59Cu) goto L_0889E59C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E59C:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889E5BC;
|
|
}
|
|
goto L_0889E5A4;
|
|
}
|
|
L_0889E5A4:
|
|
ctx.gpr[17] = (ctx.gpr[17] + static_cast<std::uint32_t>(1));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[17]) < 1 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
ctx.gpr[16] = (ctx.gpr[16] + static_cast<std::uint32_t>(4));
|
|
if (branch_taken) {
|
|
goto L_0889E594;
|
|
}
|
|
goto L_0889E5B4;
|
|
}
|
|
L_0889E5B4:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889E5C4;
|
|
}
|
|
goto L_0889E5BC;
|
|
}
|
|
L_0889E5BC:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889E5C8;
|
|
}
|
|
goto L_0889E5C4;
|
|
}
|
|
L_0889E5C4:
|
|
aot_gpr_2 = (0u | 1u);
|
|
goto L_0889E5C8;
|
|
L_0889E5C8:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E5DC:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{ctx.gpr[16], ctx.gpr[17], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
ctx.gpr[17] = (0u | 0u);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
goto L_0889E5F4;
|
|
L_0889E5F4:
|
|
aot_gpr_31 = (0x0889E5FCu);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(8)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0133.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 551u, 0x0889E5FCu, 0x08A1A348u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0133_entry(rt, ctx, 306u, aot_mem);
|
|
#else
|
|
recomp_unit_0133_entry(rt, ctx, 306u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0133_entry, 133u, 306u, 0x08A1A348u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E5FCu) goto L_0889E5FC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E5FC:
|
|
ctx.gpr[17] = (ctx.gpr[17] + static_cast<std::uint32_t>(1));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[17]) < 1 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
ctx.gpr[16] = (ctx.gpr[16] + static_cast<std::uint32_t>(4));
|
|
if (branch_taken) {
|
|
goto L_0889E5F4;
|
|
}
|
|
goto L_0889E60C;
|
|
}
|
|
L_0889E60C:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E620:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{ctx.gpr[16], ctx.gpr[17], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
ctx.gpr[17] = (0u | 0u);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
goto L_0889E638;
|
|
L_0889E638:
|
|
aot_gpr_31 = (0x0889E640u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(8)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0133.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 555u, 0x0889E640u, 0x08A1A350u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0133_entry(rt, ctx, 307u, aot_mem);
|
|
#else
|
|
recomp_unit_0133_entry(rt, ctx, 307u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0133_entry, 133u, 307u, 0x08A1A350u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E640u) goto L_0889E640;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E640:
|
|
ctx.gpr[17] = (ctx.gpr[17] + static_cast<std::uint32_t>(1));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[17]) < 1 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
ctx.gpr[16] = (ctx.gpr[16] + static_cast<std::uint32_t>(4));
|
|
if (branch_taken) {
|
|
goto L_0889E638;
|
|
}
|
|
goto L_0889E650;
|
|
}
|
|
L_0889E650:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E664:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
{ const std::uint32_t aot_run_words[5]{ctx.gpr[17], ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_run_words); }
|
|
aot_gpr_4 = (2234u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(21920));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(4), aot_gpr_4);
|
|
ctx.gpr[20] = (0u | 0u);
|
|
ctx.gpr[17] = (ctx.gpr[16] | 0u);
|
|
goto L_0889E698;
|
|
L_0889E698:
|
|
ctx.gpr[19] = (0u | 0u);
|
|
aot_gpr_31 = (0x0889E6A4u);
|
|
aot_gpr_4 = (0u | 96u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0174.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 559u, 0x0889E6A4u, 0x08ABE278u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0174_entry(rt, ctx, 466u, aot_mem);
|
|
#else
|
|
recomp_unit_0174_entry(rt, ctx, 466u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0174_entry, 174u, 466u, 0x08ABE278u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E6A4u) goto L_0889E6A4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E6A4:
|
|
ctx.gpr[18] = (aot_gpr_2 | 0u);
|
|
{ const bool branch_taken = ctx.gpr[18] == 0u;
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889E6BC;
|
|
}
|
|
goto L_0889E6B0;
|
|
}
|
|
L_0889E6B0:
|
|
aot_gpr_31 = (0x0889E6B8u);
|
|
aot_gpr_5 = (ctx.gpr[20] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0133.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 561u, 0x0889E6B8u, 0x08A1A2DCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0133_entry(rt, ctx, 298u, aot_mem);
|
|
#else
|
|
recomp_unit_0133_entry(rt, ctx, 298u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0133_entry, 133u, 298u, 0x08A1A2DCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E6B8u) goto L_0889E6B8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E6B8:
|
|
ctx.gpr[19] = (ctx.gpr[18] | 0u);
|
|
goto L_0889E6BC;
|
|
L_0889E6BC:
|
|
aot_mem.aot_direct_store32(ctx.gpr[17] + static_cast<std::uint32_t>(8), ctx.gpr[19]);
|
|
ctx.gpr[20] = (ctx.gpr[20] + static_cast<std::uint32_t>(1));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[20]) < 1 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
ctx.gpr[17] = (ctx.gpr[17] + static_cast<std::uint32_t>(4));
|
|
if (branch_taken) {
|
|
goto L_0889E698;
|
|
}
|
|
goto L_0889E6D0;
|
|
}
|
|
L_0889E6D0:
|
|
aot_gpr_2 = (ctx.gpr[16] | 0u);
|
|
{ std::uint32_t aot_run_words[6]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
ctx.gpr[19] = aot_run_words[3];
|
|
ctx.gpr[20] = aot_run_words[4];
|
|
aot_gpr_31 = aot_run_words[5];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E6F4:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_gpr_31);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889E738;
|
|
}
|
|
goto L_0889E704;
|
|
}
|
|
L_0889E704:
|
|
aot_gpr_6 = (2235u << 16u);
|
|
aot_gpr_6 = (aot_gpr_6 + static_cast<std::uint32_t>(-27556));
|
|
aot_mem.aot_direct_store32(aot_gpr_4 + static_cast<std::uint32_t>(4), aot_gpr_6);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_mem.aot_direct_store32(ctx.gpr[28] + static_cast<std::uint32_t>(5900), 0u);
|
|
if (branch_taken) {
|
|
goto L_0889E724;
|
|
}
|
|
goto L_0889E718;
|
|
}
|
|
L_0889E718:
|
|
aot_gpr_6 = (2235u << 16u);
|
|
aot_gpr_6 = (aot_gpr_6 + static_cast<std::uint32_t>(-28772));
|
|
aot_mem.aot_direct_store32(aot_gpr_4 + static_cast<std::uint32_t>(4), aot_gpr_6);
|
|
goto L_0889E724;
|
|
L_0889E724:
|
|
aot_gpr_5 = (aot_gpr_5 & 1u);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889E738;
|
|
}
|
|
goto L_0889E730;
|
|
}
|
|
L_0889E730:
|
|
aot_gpr_31 = (0x0889E738u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08ABE2C0, 174u, 470u, 0x08ABE2C0u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], ctx.gpr[16], ctx.gpr[17], ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0174_entry, 174u, 470u, 0x08ABE2C0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E738u) goto L_0889E738;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E738:
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E744:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[17] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
ctx.gpr[16] = (aot_gpr_5 | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889E7B0;
|
|
}
|
|
goto L_0889E760;
|
|
}
|
|
L_0889E760:
|
|
aot_gpr_4 = (2234u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(21920));
|
|
aot_mem.aot_direct_store32(ctx.gpr[17] + static_cast<std::uint32_t>(4), aot_gpr_4);
|
|
aot_gpr_31 = (0x0889E774u);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
goto L_0889E5DC;
|
|
L_0889E774:
|
|
{ const bool branch_taken = ctx.gpr[17] == 0u;
|
|
aot_gpr_4 = (ctx.gpr[16] & 1u);
|
|
if (branch_taken) {
|
|
goto L_0889E7A0;
|
|
}
|
|
goto L_0889E77C;
|
|
}
|
|
L_0889E77C:
|
|
aot_gpr_4 = (2235u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(-27556));
|
|
aot_mem.aot_direct_store32(ctx.gpr[17] + static_cast<std::uint32_t>(4), aot_gpr_4);
|
|
{ const bool branch_taken = ctx.gpr[17] == 0u;
|
|
aot_mem.aot_direct_store32(ctx.gpr[28] + static_cast<std::uint32_t>(5900), 0u);
|
|
if (branch_taken) {
|
|
goto L_0889E79C;
|
|
}
|
|
goto L_0889E790;
|
|
}
|
|
L_0889E790:
|
|
aot_gpr_4 = (2235u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(-28772));
|
|
aot_mem.aot_direct_store32(ctx.gpr[17] + static_cast<std::uint32_t>(4), aot_gpr_4);
|
|
goto L_0889E79C;
|
|
L_0889E79C:
|
|
aot_gpr_4 = (ctx.gpr[16] & 1u);
|
|
goto L_0889E7A0;
|
|
L_0889E7A0:
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889E7B0;
|
|
}
|
|
goto L_0889E7A8;
|
|
}
|
|
L_0889E7A8:
|
|
aot_gpr_31 = (0x0889E7B0u);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08ABE2C0, 174u, 470u, 0x08ABE2C0u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[8], ctx.gpr[16], ctx.gpr[17], ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0174_entry, 174u, 470u, 0x08ABE2C0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E7B0u) goto L_0889E7B0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E7B0:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E7C4:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_gpr_4 = (0u | 2u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889E7D8u);
|
|
aot_gpr_5 = (0u | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08861668, 23u, 203u, 0x08861668u>(ctx, &aot_mem, ctx.pc, ctx.gpr[1], aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0023_entry, 23u, 203u, 0x08861668u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E7D8u) goto L_0889E7D8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E7D8:
|
|
aot_gpr_4 = (0u | 3u);
|
|
aot_gpr_31 = (0x0889E7E4u);
|
|
aot_gpr_5 = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08861668, 23u, 203u, 0x08861668u>(ctx, &aot_mem, ctx.pc, ctx.gpr[1], aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0023_entry, 23u, 203u, 0x08861668u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E7E4u) goto L_0889E7E4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E7E4:
|
|
aot_gpr_4 = (0u | 4u);
|
|
aot_gpr_31 = (0x0889E7F0u);
|
|
aot_gpr_5 = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08861668, 23u, 203u, 0x08861668u>(ctx, &aot_mem, ctx.pc, ctx.gpr[1], aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0023_entry, 23u, 203u, 0x08861668u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E7F0u) goto L_0889E7F0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E7F0:
|
|
aot_gpr_4 = (0u | 6u);
|
|
aot_gpr_31 = (0x0889E7FCu);
|
|
aot_gpr_5 = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08861668, 23u, 203u, 0x08861668u>(ctx, &aot_mem, ctx.pc, ctx.gpr[1], aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0023_entry, 23u, 203u, 0x08861668u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E7FCu) goto L_0889E7FC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E7FC:
|
|
aot_gpr_4 = (0u | 5u);
|
|
aot_gpr_31 = (0x0889E808u);
|
|
aot_gpr_5 = (0u | 2u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08861668, 23u, 203u, 0x08861668u>(ctx, &aot_mem, ctx.pc, ctx.gpr[1], aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0023_entry, 23u, 203u, 0x08861668u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E808u) goto L_0889E808;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E808:
|
|
aot_gpr_4 = (0u | 7u);
|
|
aot_gpr_31 = (0x0889E814u);
|
|
aot_gpr_5 = (0u | 2u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08861668, 23u, 203u, 0x08861668u>(ctx, &aot_mem, ctx.pc, ctx.gpr[1], aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0023_entry, 23u, 203u, 0x08861668u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E814u) goto L_0889E814;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E814:
|
|
aot_gpr_4 = (0u | 10u);
|
|
aot_gpr_31 = (0x0889E820u);
|
|
aot_gpr_5 = (0u | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08861668, 23u, 203u, 0x08861668u>(ctx, &aot_mem, ctx.pc, ctx.gpr[1], aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0023_entry, 23u, 203u, 0x08861668u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E820u) goto L_0889E820;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E820:
|
|
aot_gpr_4 = (0u | 8u);
|
|
aot_gpr_31 = (0x0889E82Cu);
|
|
aot_gpr_5 = (0u | 5u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08861668, 23u, 203u, 0x08861668u>(ctx, &aot_mem, ctx.pc, ctx.gpr[1], aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0023_entry, 23u, 203u, 0x08861668u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E82Cu) goto L_0889E82C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E82C:
|
|
aot_gpr_4 = (0u | 9u);
|
|
aot_gpr_31 = (0x0889E838u);
|
|
aot_gpr_5 = (0u | 6u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08861668, 23u, 203u, 0x08861668u>(ctx, &aot_mem, ctx.pc, ctx.gpr[1], aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0023_entry, 23u, 203u, 0x08861668u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E838u) goto L_0889E838;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E838:
|
|
aot_gpr_4 = (0u | 14u);
|
|
aot_gpr_31 = (0x0889E844u);
|
|
aot_gpr_5 = (0u | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08861668, 23u, 203u, 0x08861668u>(ctx, &aot_mem, ctx.pc, ctx.gpr[1], aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0023_entry, 23u, 203u, 0x08861668u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E844u) goto L_0889E844;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E844:
|
|
aot_gpr_4 = (0u | 11u);
|
|
aot_gpr_31 = (0x0889E850u);
|
|
aot_gpr_5 = (0u | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08861668, 23u, 203u, 0x08861668u>(ctx, &aot_mem, ctx.pc, ctx.gpr[1], aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0023_entry, 23u, 203u, 0x08861668u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E850u) goto L_0889E850;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E850:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-23440)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889E888;
|
|
}
|
|
goto L_0889E85C;
|
|
}
|
|
L_0889E85C:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(11096)));
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(11092)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(11100)));
|
|
aot_gpr_5 = (aot_gpr_5 << 8u);
|
|
aot_gpr_5 = (aot_gpr_5 | aot_gpr_6);
|
|
aot_gpr_4 = (aot_gpr_4 << 16u);
|
|
aot_gpr_5 = (aot_gpr_5 | aot_gpr_4);
|
|
aot_gpr_4 = (65280u << 16u);
|
|
aot_gpr_5 = (aot_gpr_5 | aot_gpr_4);
|
|
aot_gpr_31 = (0x0889E888u);
|
|
aot_gpr_4 = (0u | 12u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08861668, 23u, 203u, 0x08861668u>(ctx, &aot_mem, ctx.pc, ctx.gpr[1], aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0023_entry, 23u, 203u, 0x08861668u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E888u) goto L_0889E888;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E888:
|
|
aot_gpr_4 = (0u | 13u);
|
|
aot_gpr_31 = (0x0889E894u);
|
|
aot_gpr_5 = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08861668, 23u, 203u, 0x08861668u>(ctx, &aot_mem, ctx.pc, ctx.gpr[1], aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0023_entry, 23u, 203u, 0x08861668u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E894u) goto L_0889E894;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889E894:
|
|
aot_fpr_12 = std::bit_cast<float>(0u);
|
|
aot_gpr_4 = (2236u << 16u);
|
|
aot_gpr_5 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(29552)));
|
|
aot_gpr_5 = (aot_gpr_5 >> 8u);
|
|
ctx.gpr[7] = (18944u << 16u);
|
|
aot_gpr_5 = (aot_gpr_5 | ctx.gpr[7]);
|
|
aot_mem.aot_direct_store32(aot_gpr_6 + static_cast<std::uint32_t>(0), aot_gpr_5);
|
|
ctx.gpr[7] = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(29552)));
|
|
aot_gpr_6 = (ctx.gpr[7] >> 8u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(4));
|
|
ctx.gpr[7] = (19200u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_4 + static_cast<std::uint32_t>(29552), aot_gpr_5);
|
|
aot_gpr_6 = (aot_gpr_6 | ctx.gpr[7]);
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(0), aot_gpr_6);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(29552)));
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(4));
|
|
aot_mem.aot_direct_store32(aot_gpr_4 + static_cast<std::uint32_t>(29552), aot_gpr_5);
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E8EC:
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(0), aot_gpr_4);
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_2 = (0u | 0u);
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E8F8:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_gpr_5 = (2186u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), 0u);
|
|
aot_gpr_6 = (aot_gpr_29 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889E914u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-5908));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0117.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 596u, 0x0889E914u, 0x089D86FCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0117_entry(rt, ctx, 82u, aot_mem);
|
|
#else
|
|
recomp_unit_0117_entry(rt, ctx, 82u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0117_entry, 117u, 82u, 0x089D86FCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E914u) goto L_0889E914;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E914:
|
|
aot_gpr_2 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E924:
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(0), aot_gpr_4);
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_2 = (0u | 0u);
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E930:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_gpr_5 = (2186u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), 0u);
|
|
aot_gpr_6 = (aot_gpr_29 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889E94Cu);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-5852));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0091.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 599u, 0x0889E94Cu, 0x08972E68u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0091_entry(rt, ctx, 626u, aot_mem);
|
|
#else
|
|
recomp_unit_0091_entry(rt, ctx, 626u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0091_entry, 91u, 626u, 0x08972E68u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E94Cu) goto L_0889E94C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E94C:
|
|
aot_gpr_2 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E95C:
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(0), aot_gpr_4);
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_2 = (0u | 0u);
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E968:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_gpr_5 = (2186u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), 0u);
|
|
aot_gpr_6 = (aot_gpr_29 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889E984u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-5796));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0152.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 602u, 0x0889E984u, 0x08A65998u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0152_entry(rt, ctx, 352u, aot_mem);
|
|
#else
|
|
recomp_unit_0152_entry(rt, ctx, 352u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0152_entry, 152u, 352u, 0x08A65998u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E984u) goto L_0889E984;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E984:
|
|
aot_gpr_2 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E994:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889E9A4u);
|
|
goto L_0889E8F8;
|
|
L_0889E9A4:
|
|
aot_gpr_4 = (aot_gpr_2 | 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889E9C0;
|
|
}
|
|
goto L_0889E9B0;
|
|
}
|
|
L_0889E9B0:
|
|
aot_gpr_31 = (0x0889E9B8u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(20)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0089.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 606u, 0x0889E9B8u, 0x08968F88u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0089_entry(rt, ctx, 226u, aot_mem);
|
|
#else
|
|
recomp_unit_0089_entry(rt, ctx, 226u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0089_entry, 89u, 226u, 0x08968F88u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889E9B8u) goto L_0889E9B8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889E9B8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u < aot_gpr_2 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_0889E9C4;
|
|
}
|
|
goto L_0889E9C0;
|
|
}
|
|
L_0889E9C0:
|
|
aot_gpr_2 = (0u | 0u);
|
|
goto L_0889E9C4;
|
|
L_0889E9C4:
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889E9D0:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-48));
|
|
{ const std::uint32_t aot_run_words[3]{std::bit_cast<std::uint32_t>(aot_fpr_20), ctx.gpr[16], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(28), aot_run_words); }
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_gpr_2 = (aot_gpr_4 | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889EA50;
|
|
}
|
|
goto L_0889E9E8;
|
|
}
|
|
L_0889E9E8:
|
|
ctx.gpr[16] = (aot_mem.aot_direct_load32(aot_gpr_2 + static_cast<std::uint32_t>(4)));
|
|
aot_fpr_20 = std::bit_cast<float>(0u);
|
|
aot_gpr_4 = (0u | 1u);
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_20));
|
|
aot_gpr_5 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889EA04u);
|
|
aot_gpr_6 = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0089.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 611u, 0x0889EA04u, 0x089690F0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0089_entry(rt, ctx, 244u, aot_mem);
|
|
#else
|
|
recomp_unit_0089_entry(rt, ctx, 244u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0089_entry, 89u, 244u, 0x089690F0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889EA04u) goto L_0889EA04;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889EA04:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889EA48;
|
|
}
|
|
goto L_0889EA0C;
|
|
}
|
|
L_0889EA0C:
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load32(aot_gpr_2 + static_cast<std::uint32_t>(16)));
|
|
{ const std::uint32_t aot_run_words[5]{std::bit_cast<std::uint32_t>(aot_fpr_20), std::bit_cast<std::uint32_t>(aot_fpr_20), std::bit_cast<std::uint32_t>(aot_fpr_20), std::bit_cast<std::uint32_t>(aot_fpr_20), std::bit_cast<std::uint32_t>(aot_fpr_20)};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_4 = (16256u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(20), std::bit_cast<std::uint32_t>(aot_fpr_20));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.gpr[8] = (0u | 0u);
|
|
aot_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[8]) < static_cast<std::int32_t>(ctx.gpr[16]) ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(24), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
if (branch_taken) {
|
|
goto L_0889EA58;
|
|
}
|
|
goto L_0889EA40;
|
|
}
|
|
L_0889EA40:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889EAC8;
|
|
}
|
|
goto L_0889EA48;
|
|
}
|
|
L_0889EA48:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889EAC8;
|
|
}
|
|
goto L_0889EA50;
|
|
}
|
|
L_0889EA50:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889EAC8;
|
|
}
|
|
goto L_0889EA58;
|
|
}
|
|
L_0889EA58:
|
|
{ std::uint32_t aot_run_words[4]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_run_words);
|
|
aot_gpr_6 = aot_run_words[0];
|
|
aot_gpr_5 = aot_run_words[1];
|
|
aot_gpr_4 = aot_run_words[2];
|
|
aot_fpr_12 = std::bit_cast<float>(aot_run_words[3]);
|
|
}
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_fpr_14 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
ctx.gpr[9] = (0u | 0u);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(8)));
|
|
ctx.gpr[7] = (ctx.gpr[7] + ctx.gpr[9]);
|
|
goto L_0889EA7C;
|
|
L_0889EA7C:
|
|
ctx.gpr[9] = (ctx.gpr[7] + static_cast<std::uint32_t>(8));
|
|
ctx.gpr[10] = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_mem.aot_direct_store32(ctx.gpr[9] + static_cast<std::uint32_t>(0), aot_gpr_6);
|
|
ctx.gpr[11] = (std::bit_cast<std::uint32_t>(ctx.fpr[15]));
|
|
aot_mem.aot_direct_store32(ctx.gpr[9] + static_cast<std::uint32_t>(4), aot_gpr_5);
|
|
ctx.gpr[3] = (std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
aot_mem.aot_direct_store32(ctx.gpr[9] + static_cast<std::uint32_t>(8), aot_gpr_4);
|
|
ctx.gpr[12] = (std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
aot_mem.aot_direct_store32(ctx.gpr[9] + static_cast<std::uint32_t>(12), ctx.gpr[10]);
|
|
ctx.gpr[9] = (ctx.gpr[7] + static_cast<std::uint32_t>(24));
|
|
{ const std::uint32_t aot_run_words[3]{ctx.gpr[11], ctx.gpr[3], ctx.gpr[12]};
|
|
aot_mem.aot_direct_store32_block(ctx.gpr[9] + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_mem.aot_direct_store32(ctx.gpr[7] + static_cast<std::uint32_t>(4), std::bit_cast<std::uint32_t>(aot_fpr_20));
|
|
aot_mem.aot_direct_store32(ctx.gpr[7] + static_cast<std::uint32_t>(0), 0u);
|
|
ctx.gpr[8] = (ctx.gpr[8] + static_cast<std::uint32_t>(1));
|
|
ctx.gpr[9] = (static_cast<std::int32_t>(ctx.gpr[8]) < static_cast<std::int32_t>(ctx.gpr[16]) ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[9] != 0u;
|
|
ctx.gpr[7] = (ctx.gpr[7] + static_cast<std::uint32_t>(36));
|
|
if (branch_taken) {
|
|
goto L_0889EA7C;
|
|
}
|
|
goto L_0889EAC8;
|
|
}
|
|
L_0889EAC8:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(28), aot_run_words);
|
|
aot_fpr_20 = std::bit_cast<float>(aot_run_words[0]);
|
|
ctx.gpr[16] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(48));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889EADC:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889EAF0u);
|
|
ctx.gpr[16] = (aot_gpr_5 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0089.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 620u, 0x0889EAF0u, 0x0896950Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0089_entry(rt, ctx, 287u, aot_mem);
|
|
#else
|
|
recomp_unit_0089_entry(rt, ctx, 287u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0089_entry, 89u, 287u, 0x0896950Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889EAF0u) goto L_0889EAF0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889EAF0:
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(0), aot_gpr_2);
|
|
aot_gpr_2 = (0u | 0u);
|
|
ctx.gpr[16] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889EB08:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_gpr_5 = (2186u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), 0u);
|
|
aot_gpr_6 = (aot_gpr_29 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889EB24u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-5412));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0117.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 622u, 0x0889EB24u, 0x089D86FCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0117_entry(rt, ctx, 82u, aot_mem);
|
|
#else
|
|
recomp_unit_0117_entry(rt, ctx, 82u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0117_entry, 117u, 82u, 0x089D86FCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889EB24u) goto L_0889EB24;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889EB24:
|
|
aot_gpr_2 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889EB34:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[17] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889EB50u);
|
|
ctx.gpr[16] = (aot_gpr_5 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0089.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 624u, 0x0889EB50u, 0x089694F8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0089_entry(rt, ctx, 285u, aot_mem);
|
|
#else
|
|
recomp_unit_0089_entry(rt, ctx, 285u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0089_entry, 89u, 285u, 0x089694F8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889EB50u) goto L_0889EB50;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889EB50:
|
|
aot_gpr_4 = (aot_gpr_2 | 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889EB78;
|
|
}
|
|
goto L_0889EB5C;
|
|
}
|
|
L_0889EB5C:
|
|
aot_gpr_5 = (2186u << 16u);
|
|
aot_gpr_4 = (ctx.gpr[17] | 0u);
|
|
aot_gpr_6 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889EB70u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-5324));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0091.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 626u, 0x0889EB70u, 0x08972D0Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0091_entry(rt, ctx, 614u, aot_mem);
|
|
#else
|
|
recomp_unit_0091_entry(rt, ctx, 614u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0091_entry, 91u, 614u, 0x08972D0Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889EB70u) goto L_0889EB70;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889EB70:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (ctx.gpr[17] | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889EB80;
|
|
}
|
|
goto L_0889EB78;
|
|
}
|
|
L_0889EB78:
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(0), aot_gpr_4);
|
|
aot_gpr_2 = (0u | 0u);
|
|
goto L_0889EB80;
|
|
L_0889EB80:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889EB94:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889EBB0u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0089.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 630u, 0x0889EBB0u, 0x089694F8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0089_entry(rt, ctx, 285u, aot_mem);
|
|
#else
|
|
recomp_unit_0089_entry(rt, ctx, 285u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0089_entry, 89u, 285u, 0x089694F8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889EBB0u) goto L_0889EBB0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889EBB0:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_gpr_2);
|
|
if (branch_taken) {
|
|
goto L_0889EBCC;
|
|
}
|
|
goto L_0889EBB8;
|
|
}
|
|
L_0889EBB8:
|
|
aot_gpr_5 = (2186u << 16u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_6 = (aot_gpr_29 | 0u);
|
|
aot_gpr_31 = (0x0889EBCCu);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-5324));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0091.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 632u, 0x0889EBCCu, 0x08972D0Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0091_entry(rt, ctx, 614u, aot_mem);
|
|
#else
|
|
recomp_unit_0091_entry(rt, ctx, 614u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0091_entry, 91u, 614u, 0x08972D0Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889EBCCu) goto L_0889EBCC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889EBCC:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
aot_gpr_2 = aot_run_words[0];
|
|
ctx.gpr[16] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889EBE0:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), ctx.gpr[16]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), ctx.gpr[17]);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
ctx.gpr[17] = (aot_gpr_6 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889EC00u);
|
|
aot_gpr_4 = (aot_gpr_5 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0089.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 634u, 0x0889EC00u, 0x089694F0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0089_entry(rt, ctx, 284u, aot_mem);
|
|
#else
|
|
recomp_unit_0089_entry(rt, ctx, 284u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0089_entry, 89u, 284u, 0x089694F0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889EC00u) goto L_0889EC00;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889EC00:
|
|
aot_gpr_4 = (ctx.gpr[17] << 6u);
|
|
aot_gpr_4 = (aot_gpr_2 + aot_gpr_4);
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_4 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
aot_gpr_5 = aot_run_words[0];
|
|
aot_gpr_6 = aot_run_words[1];
|
|
ctx.gpr[7] = aot_run_words[2];
|
|
}
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(0), aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(12)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(4), aot_gpr_6);
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(16)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(8), ctx.gpr[7]);
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(20)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(12), aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(24)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(16), aot_gpr_6);
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(28)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(20), ctx.gpr[7]);
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(32)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(24), aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(36)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(28), aot_gpr_6);
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(40)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(32), ctx.gpr[7]);
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(44)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(36), aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(48)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(40), aot_gpr_6);
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(52)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(44), ctx.gpr[7]);
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(56)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(48), aot_gpr_5);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(60)));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_6, ctx.gpr[7], aot_gpr_4};
|
|
aot_mem.aot_direct_store32_block(ctx.gpr[16] + static_cast<std::uint32_t>(52), aot_run_words); }
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
aot_gpr_31 = aot_run_words[2];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889EC9C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-80));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(64), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(68), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889ECB4u);
|
|
aot_gpr_4 = (aot_gpr_29 | 0u);
|
|
goto L_0889EBE0;
|
|
L_0889ECB4:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889ECC0u);
|
|
aot_gpr_5 = (aot_gpr_29 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0117.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 637u, 0x0889ECC0u, 0x089D8C3Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0117_entry(rt, ctx, 149u, aot_mem);
|
|
#else
|
|
recomp_unit_0117_entry(rt, ctx, 149u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0117_entry, 117u, 149u, 0x089D8C3Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889ECC0u) goto L_0889ECC0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889ECC0:
|
|
ctx.gpr[16] = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(64)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(68)));
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(80));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889ECD0:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-304));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(264), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
{ const std::uint32_t aot_run_words[9]{ctx.gpr[17], ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[22], ctx.gpr[23], ctx.gpr[30], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(268), aot_run_words); }
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
ctx.gpr[20] = (aot_gpr_5 | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889ED10;
|
|
}
|
|
goto L_0889ED08;
|
|
}
|
|
L_0889ED08:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889EE14;
|
|
}
|
|
goto L_0889ED10;
|
|
}
|
|
L_0889ED10:
|
|
aot_gpr_31 = (0x0889ED18u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
goto L_0889E8F8;
|
|
L_0889ED18:
|
|
aot_gpr_31 = (0x0889ED20u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_2 + static_cast<std::uint32_t>(20)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0089.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 642u, 0x0889ED20u, 0x08968F88u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0089_entry(rt, ctx, 226u, aot_mem);
|
|
#else
|
|
recomp_unit_0089_entry(rt, ctx, 226u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0089_entry, 89u, 226u, 0x08968F88u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889ED20u) goto L_0889ED20;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889ED20:
|
|
ctx.gpr[22] = (aot_gpr_2 | 0u);
|
|
aot_gpr_31 = (0x0889ED2Cu);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
goto L_0889EB08;
|
|
L_0889ED2C:
|
|
aot_fpr_12 = std::bit_cast<float>(0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(260), aot_gpr_2);
|
|
aot_mem.aot_direct_store32(ctx.gpr[20] + static_cast<std::uint32_t>(0), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_mem.aot_direct_store32(ctx.gpr[20] + static_cast<std::uint32_t>(4), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
ctx.gpr[16] = (0u | 0u);
|
|
ctx.gpr[18] = (0u | 0u);
|
|
aot_mem.aot_direct_store32(ctx.gpr[20] + static_cast<std::uint32_t>(8), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_31 = (0x0889ED50u);
|
|
aot_gpr_4 = (ctx.gpr[22] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0089.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 644u, 0x0889ED50u, 0x08968F9Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0089_entry(rt, ctx, 228u, aot_mem);
|
|
#else
|
|
recomp_unit_0089_entry(rt, ctx, 228u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0089_entry, 89u, 228u, 0x08968F9Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889ED50u) goto L_0889ED50;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889ED50:
|
|
ctx.gpr[17] = (0u | 1u);
|
|
aot_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[17]) < static_cast<std::int32_t>(aot_gpr_2) ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(256), aot_gpr_2);
|
|
if (branch_taken) {
|
|
goto L_0889EE14;
|
|
}
|
|
goto L_0889ED60;
|
|
}
|
|
L_0889ED60:
|
|
aot_gpr_4 = (0u | 12u);
|
|
ctx.gpr[30] = (aot_gpr_29 + static_cast<std::uint32_t>(128));
|
|
ctx.gpr[21] = (aot_gpr_29 + static_cast<std::uint32_t>(192));
|
|
ctx.gpr[23] = (aot_gpr_29 + static_cast<std::uint32_t>(176));
|
|
ctx.gpr[20] = (ctx.gpr[20] + aot_gpr_4);
|
|
ctx.gpr[19] = (0u | 8u);
|
|
goto L_0889ED78;
|
|
L_0889ED78:
|
|
aot_gpr_4 = (ctx.gpr[30] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[22] | 0u);
|
|
aot_gpr_31 = (0x0889ED88u);
|
|
aot_gpr_6 = (ctx.gpr[17] | 0u);
|
|
goto L_0889EC9C;
|
|
L_0889ED88:
|
|
aot_gpr_4 = (ctx.gpr[21] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[22] | 0u);
|
|
aot_gpr_31 = (0x0889ED98u);
|
|
aot_gpr_6 = (ctx.gpr[18] | 0u);
|
|
goto L_0889EBE0;
|
|
L_0889ED98:
|
|
aot_gpr_4 = (ctx.gpr[20] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[23] | 0u);
|
|
aot_gpr_6 = (0u | 1u);
|
|
aot_gpr_31 = (0x0889EDACu);
|
|
ctx.gpr[7] = (ctx.gpr[21] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0023.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 649u, 0x0889EDACu, 0x088618A8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0023_entry(rt, ctx, 233u, aot_mem);
|
|
#else
|
|
recomp_unit_0023_entry(rt, ctx, 233u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0023_entry, 23u, 233u, 0x088618A8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889EDACu) goto L_0889EDAC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889EDAC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(260)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(48)));
|
|
aot_gpr_4 = (aot_gpr_4 + ctx.gpr[19]);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(2)));
|
|
aot_gpr_5 = (aot_gpr_4 & 2u);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889EDD8;
|
|
}
|
|
goto L_0889EDC8;
|
|
}
|
|
L_0889EDC8:
|
|
ctx.gpr[16] = (ctx.gpr[16] + static_cast<std::uint32_t>(1));
|
|
aot_gpr_5 = (ctx.gpr[16] << 2u);
|
|
aot_gpr_5 = (aot_gpr_29 + aot_gpr_5);
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(0), ctx.gpr[18]);
|
|
goto L_0889EDD8;
|
|
L_0889EDD8:
|
|
aot_gpr_4 = (aot_gpr_4 & 1u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889EDF8;
|
|
}
|
|
goto L_0889EDE4;
|
|
}
|
|
L_0889EDE4:
|
|
aot_gpr_4 = (ctx.gpr[16] << 2u);
|
|
aot_gpr_4 = (aot_gpr_29 + aot_gpr_4);
|
|
ctx.gpr[18] = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[16] = (ctx.gpr[16] + static_cast<std::uint32_t>(-1));
|
|
if (branch_taken) {
|
|
goto L_0889EDFC;
|
|
}
|
|
goto L_0889EDF8;
|
|
}
|
|
L_0889EDF8:
|
|
ctx.gpr[18] = (ctx.gpr[17] | 0u);
|
|
goto L_0889EDFC;
|
|
L_0889EDFC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(256)));
|
|
ctx.gpr[17] = (ctx.gpr[17] + static_cast<std::uint32_t>(1));
|
|
ctx.gpr[20] = (ctx.gpr[20] + static_cast<std::uint32_t>(12));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[17]) < static_cast<std::int32_t>(aot_gpr_4) ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
ctx.gpr[19] = (ctx.gpr[19] + static_cast<std::uint32_t>(8));
|
|
if (branch_taken) {
|
|
goto L_0889ED78;
|
|
}
|
|
goto L_0889EE14;
|
|
}
|
|
L_0889EE14:
|
|
{ std::uint32_t aot_run_words[10]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(264), aot_run_words);
|
|
ctx.gpr[16] = aot_run_words[0];
|
|
ctx.gpr[17] = aot_run_words[1];
|
|
ctx.gpr[18] = aot_run_words[2];
|
|
ctx.gpr[19] = aot_run_words[3];
|
|
ctx.gpr[20] = aot_run_words[4];
|
|
ctx.gpr[21] = aot_run_words[5];
|
|
ctx.gpr[22] = aot_run_words[6];
|
|
ctx.gpr[23] = aot_run_words[7];
|
|
ctx.gpr[30] = aot_run_words[8];
|
|
aot_gpr_31 = aot_run_words[9];
|
|
}
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(304));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889EE44:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-112));
|
|
{ const std::uint32_t vfpu_address = aot_gpr_6 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(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 = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 1u>();
|
|
ctx.gpr[9] = (aot_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 = ctx.gpr[9] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[9] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vdot_ct<28u, 0u, 0u, 3u>();
|
|
ctx.execute_vfpu_unary_ct<28u, 28u, 1u, 22u>();
|
|
aot_gpr_6 = (ctx.vfpu_scalar_bits_ct<28u>());
|
|
aot_fpr_13 = std::bit_cast<float>(aot_gpr_6);
|
|
aot_gpr_6 = (16256u << 16u);
|
|
aot_fpr_14 = std::bit_cast<float>(aot_gpr_6);
|
|
aot_fpr_13 = aot_fpr_14 / aot_fpr_13;
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(20)));
|
|
{ const float fs = aot_fpr_12; const float ft = aot_fpr_13; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
aot_gpr_6 = (0u | 0u);
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
ctx.fpr[16] = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[8] + static_cast<std::uint32_t>(4)));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[15] <= ctx.fpr[16])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889EEC8;
|
|
}
|
|
goto L_0889EEA8;
|
|
}
|
|
L_0889EEA8:
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
ctx.fpr[16] = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[8] + static_cast<std::uint32_t>(4)));
|
|
ctx.fpr[15] = ctx.fpr[15] - ctx.fpr[16];
|
|
aot_fpr_12 = ctx.fpr[15] / aot_fpr_12;
|
|
aot_gpr_6 = (0u | 1u);
|
|
{ const float fs = aot_fpr_12; const float ft = aot_fpr_13; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_fpr_12 = aot_fpr_14 - aot_fpr_12;
|
|
if (branch_taken) {
|
|
goto L_0889EEFC;
|
|
}
|
|
goto L_0889EEC8;
|
|
}
|
|
L_0889EEC8:
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
ctx.fpr[16] = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[7] + static_cast<std::uint32_t>(4)));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[15] < ctx.fpr[16])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889EEFC;
|
|
}
|
|
goto L_0889EEE0;
|
|
}
|
|
L_0889EEE0:
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
ctx.fpr[16] = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[7] + static_cast<std::uint32_t>(4)));
|
|
ctx.fpr[15] = ctx.fpr[15] - ctx.fpr[16];
|
|
aot_fpr_12 = ctx.fpr[15] / aot_fpr_12;
|
|
aot_gpr_6 = (0u | 1u);
|
|
{ const float fs = aot_fpr_12; const float ft = aot_fpr_13; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
aot_fpr_12 = aot_fpr_14 - aot_fpr_12;
|
|
goto L_0889EEFC;
|
|
L_0889EEFC:
|
|
{ const bool branch_taken = aot_gpr_6 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889EF34;
|
|
}
|
|
goto L_0889EF04;
|
|
}
|
|
L_0889EF04:
|
|
aot_gpr_6 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
ctx.set_vfpu_scalar_bits_ct<1u>(aot_gpr_6);
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[9] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vscl_ct<0u, 0u, 1u, 3u>();
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = ctx.gpr[9] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[9] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 0u>();
|
|
aot_gpr_6 = (aot_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 = aot_gpr_6 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_6 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(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 = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
goto L_0889EF34;
|
|
L_0889EF34:
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(16)));
|
|
ctx.fpr[16] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.fpr[17] = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[8] + static_cast<std::uint32_t>(0)));
|
|
{ const float fs = ctx.fpr[15]; const float ft = aot_fpr_13; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[15] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[15] = fs * ft; }
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[16] <= ctx.fpr[17])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
aot_gpr_6 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889EF74;
|
|
}
|
|
goto L_0889EF54;
|
|
}
|
|
L_0889EF54:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.fpr[16] = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[8] + static_cast<std::uint32_t>(0)));
|
|
aot_fpr_12 = aot_fpr_12 - ctx.fpr[16];
|
|
aot_fpr_12 = aot_fpr_12 / ctx.fpr[15];
|
|
aot_gpr_6 = (0u | 1u);
|
|
{ const float fs = aot_fpr_12; const float ft = aot_fpr_13; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_fpr_12 = aot_fpr_14 - aot_fpr_12;
|
|
if (branch_taken) {
|
|
goto L_0889EFA8;
|
|
}
|
|
goto L_0889EF74;
|
|
}
|
|
L_0889EF74:
|
|
ctx.fpr[16] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.fpr[17] = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[7] + static_cast<std::uint32_t>(0)));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[16] < ctx.fpr[17])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889EFA8;
|
|
}
|
|
goto L_0889EF8C;
|
|
}
|
|
L_0889EF8C:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.fpr[16] = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[7] + static_cast<std::uint32_t>(0)));
|
|
aot_fpr_12 = aot_fpr_12 - ctx.fpr[16];
|
|
aot_fpr_12 = aot_fpr_12 / ctx.fpr[15];
|
|
aot_gpr_6 = (0u | 1u);
|
|
{ const float fs = aot_fpr_12; const float ft = aot_fpr_13; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
aot_fpr_12 = aot_fpr_14 - aot_fpr_12;
|
|
goto L_0889EFA8;
|
|
L_0889EFA8:
|
|
{ const bool branch_taken = aot_gpr_6 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889EFE0;
|
|
}
|
|
goto L_0889EFB0;
|
|
}
|
|
L_0889EFB0:
|
|
aot_gpr_6 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
ctx.set_vfpu_scalar_bits_ct<1u>(aot_gpr_6);
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[9] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vscl_ct<0u, 0u, 1u, 3u>();
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = ctx.gpr[9] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[9] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 0u>();
|
|
aot_gpr_5 = (aot_gpr_29 + static_cast<std::uint32_t>(48));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(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 = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
goto L_0889EFE0;
|
|
L_0889EFE0:
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(112));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889EFE8:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-640));
|
|
ctx.fpr[18] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
aot_fpr_14 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_6 + static_cast<std::uint32_t>(0)));
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[7] + static_cast<std::uint32_t>(0)));
|
|
ctx.fpr[18] = ctx.fpr[18] - aot_fpr_14;
|
|
ctx.fpr[16] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
ctx.fpr[17] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
ctx.fpr[19] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_6 + static_cast<std::uint32_t>(4)));
|
|
aot_fpr_14 = ctx.fpr[15] - ctx.fpr[16];
|
|
ctx.gpr[8] = (ctx.gpr[8] & 255u);
|
|
ctx.fpr[17] = ctx.fpr[17] - ctx.fpr[19];
|
|
ctx.fpr[16] = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[7] + static_cast<std::uint32_t>(4)));
|
|
ctx.fpr[15] = std::bit_cast<float>(0u);
|
|
ctx.fpr[0] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(4)));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((!(std::isnan(aot_fpr_14) || std::isnan(ctx.fpr[15])) && aot_fpr_14 == ctx.fpr[15])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
ctx.fpr[16] = ctx.fpr[16] - ctx.fpr[0];
|
|
if (branch_taken) {
|
|
goto L_0889F208;
|
|
}
|
|
goto L_0889F030;
|
|
}
|
|
L_0889F030:
|
|
aot_fpr_14 = ctx.fpr[18] / aot_fpr_14;
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_14 < ctx.fpr[15])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F064;
|
|
}
|
|
goto L_0889F044;
|
|
}
|
|
L_0889F044:
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_13 < aot_fpr_14)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F064;
|
|
}
|
|
goto L_0889F054;
|
|
}
|
|
L_0889F054:
|
|
{ const bool branch_taken = ctx.gpr[8] != 0u;
|
|
{ const float fs = aot_fpr_12; const float ft = aot_fpr_12; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[18] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[18] = fs * ft; }
|
|
if (branch_taken) {
|
|
goto L_0889F06C;
|
|
}
|
|
goto L_0889F05C;
|
|
}
|
|
L_0889F05C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F16C;
|
|
}
|
|
goto L_0889F064;
|
|
}
|
|
L_0889F064:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F3F8;
|
|
}
|
|
goto L_0889F06C;
|
|
}
|
|
L_0889F06C:
|
|
ctx.gpr[11] = (std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
ctx.set_vfpu_scalar_bits_ct<28u>(ctx.gpr[11]);
|
|
{ const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vscl_ct<0u, 0u, 28u, 3u>();
|
|
ctx.gpr[11] = (aot_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 = ctx.gpr[11] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[11] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 0u>();
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_29 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
ctx.fpr[19] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(72), std::bit_cast<std::uint32_t>(ctx.fpr[19]));
|
|
ctx.fpr[19] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(76), std::bit_cast<std::uint32_t>(ctx.fpr[19]));
|
|
ctx.gpr[11] = (std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
ctx.set_vfpu_scalar_bits_ct<28u>(ctx.gpr[11]);
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[7] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vscl_ct<0u, 0u, 28u, 3u>();
|
|
ctx.gpr[11] = (aot_gpr_29 + static_cast<std::uint32_t>(48));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = ctx.gpr[11] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_6 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[11] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 0u>();
|
|
ctx.gpr[11] = (aot_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 = ctx.gpr[11] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
ctx.fpr[19] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(32)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(80), std::bit_cast<std::uint32_t>(ctx.fpr[19]));
|
|
ctx.fpr[0] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(36)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(84), std::bit_cast<std::uint32_t>(ctx.fpr[0]));
|
|
ctx.fpr[2] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(72)));
|
|
ctx.fpr[19] = ctx.fpr[2] - ctx.fpr[19];
|
|
ctx.fpr[1] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(76)));
|
|
ctx.fpr[0] = ctx.fpr[1] - ctx.fpr[0];
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(384), std::bit_cast<std::uint32_t>(ctx.fpr[19]));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(388), std::bit_cast<std::uint32_t>(ctx.fpr[0]));
|
|
ctx.gpr[11] = (std::bit_cast<std::uint32_t>(ctx.fpr[19]));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(88), ctx.gpr[11]);
|
|
ctx.gpr[11] = (std::bit_cast<std::uint32_t>(ctx.fpr[0]));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(92), ctx.gpr[11]);
|
|
ctx.fpr[3] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(88)));
|
|
ctx.gpr[11] = (std::bit_cast<std::uint32_t>(ctx.fpr[3]));
|
|
ctx.fpr[2] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(92)));
|
|
aot_gpr_2 = (std::bit_cast<std::uint32_t>(ctx.fpr[2]));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(64), ctx.gpr[11]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(68), aot_gpr_2);
|
|
ctx.fpr[1] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(64)));
|
|
{ const float fs = ctx.fpr[1]; const float ft = ctx.fpr[1]; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[19] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[19] = fs * ft; }
|
|
ctx.fpr[0] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(68)));
|
|
{ const float fs = ctx.fpr[0]; const float ft = ctx.fpr[0]; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[0] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[0] = fs * ft; }
|
|
ctx.fpr[19] = ctx.fpr[19] + ctx.fpr[0];
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[19] < ctx.fpr[18])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F164;
|
|
}
|
|
goto L_0889F144;
|
|
}
|
|
L_0889F144:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(80)));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(84)));
|
|
{ const std::uint32_t aot_run_words[3]{std::bit_cast<std::uint32_t>(aot_fpr_12), std::bit_cast<std::uint32_t>(aot_fpr_13), std::bit_cast<std::uint32_t>(ctx.fpr[15])};
|
|
aot_mem.aot_direct_store32_block(ctx.gpr[10] + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_mem.aot_direct_store32(ctx.gpr[9] + static_cast<std::uint32_t>(0), std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_0889F3F8;
|
|
}
|
|
goto L_0889F164;
|
|
}
|
|
L_0889F164:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F208;
|
|
}
|
|
goto L_0889F16C;
|
|
}
|
|
L_0889F16C:
|
|
ctx.gpr[11] = (std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
ctx.set_vfpu_scalar_bits_ct<28u>(ctx.gpr[11]);
|
|
{ const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vscl_ct<0u, 0u, 28u, 3u>();
|
|
ctx.gpr[11] = (aot_gpr_29 + static_cast<std::uint32_t>(96));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = ctx.gpr[11] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[11] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 0u>();
|
|
ctx.gpr[11] = (aot_gpr_29 + static_cast<std::uint32_t>(144));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = ctx.gpr[11] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
aot_gpr_2 = (std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
ctx.set_vfpu_scalar_bits_ct<28u>(aot_gpr_2);
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[7] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vscl_ct<0u, 0u, 28u, 3u>();
|
|
aot_gpr_2 = (aot_gpr_29 + static_cast<std::uint32_t>(128));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_2 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_6 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_2 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 0u>();
|
|
ctx.gpr[3] = (aot_gpr_29 + static_cast<std::uint32_t>(112));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = ctx.gpr[3] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[3] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(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 = ctx.gpr[10] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[11] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[10] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 1u>();
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_2 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_2 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vdot_ct<28u, 0u, 0u, 3u>();
|
|
ctx.gpr[11] = (ctx.vfpu_scalar_bits_ct<28u>());
|
|
ctx.fpr[19] = std::bit_cast<float>(ctx.gpr[11]);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[19] < ctx.fpr[18])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F208;
|
|
}
|
|
goto L_0889F1FC;
|
|
}
|
|
L_0889F1FC:
|
|
aot_mem.aot_direct_store32(ctx.gpr[9] + static_cast<std::uint32_t>(0), std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_0889F3F8;
|
|
}
|
|
goto L_0889F208;
|
|
}
|
|
L_0889F208:
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((!(std::isnan(ctx.fpr[16]) || std::isnan(ctx.fpr[15])) && ctx.fpr[16] == ctx.fpr[15])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F3F4;
|
|
}
|
|
goto L_0889F218;
|
|
}
|
|
L_0889F218:
|
|
aot_fpr_14 = ctx.fpr[17] / ctx.fpr[16];
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_14 < ctx.fpr[15])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F24C;
|
|
}
|
|
goto L_0889F22C;
|
|
}
|
|
L_0889F22C:
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_13 < aot_fpr_14)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F24C;
|
|
}
|
|
goto L_0889F23C;
|
|
}
|
|
L_0889F23C:
|
|
{ const bool branch_taken = ctx.gpr[8] != 0u;
|
|
{ const float fs = aot_fpr_12; const float ft = aot_fpr_12; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[18] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[18] = fs * ft; }
|
|
if (branch_taken) {
|
|
goto L_0889F254;
|
|
}
|
|
goto L_0889F244;
|
|
}
|
|
L_0889F244:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F358;
|
|
}
|
|
goto L_0889F24C;
|
|
}
|
|
L_0889F24C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F3F8;
|
|
}
|
|
goto L_0889F254;
|
|
}
|
|
L_0889F254:
|
|
ctx.gpr[8] = (std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
ctx.set_vfpu_scalar_bits_ct<28u>(ctx.gpr[8]);
|
|
{ const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vscl_ct<0u, 0u, 28u, 3u>();
|
|
aot_gpr_5 = (aot_gpr_29 + static_cast<std::uint32_t>(176));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 0u>();
|
|
aot_gpr_4 = (aot_gpr_29 + static_cast<std::uint32_t>(160));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(160)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(232), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(164)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(236), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_4 = (std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
ctx.set_vfpu_scalar_bits_ct<28u>(aot_gpr_4);
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[7] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vscl_ct<0u, 0u, 28u, 3u>();
|
|
aot_gpr_4 = (aot_gpr_29 + static_cast<std::uint32_t>(208));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_6 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 0u>();
|
|
aot_gpr_4 = (aot_gpr_29 + static_cast<std::uint32_t>(192));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(192)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(240), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(196)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(244), std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
ctx.fpr[16] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(232)));
|
|
aot_fpr_12 = ctx.fpr[16] - aot_fpr_12;
|
|
ctx.fpr[17] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(236)));
|
|
aot_fpr_13 = ctx.fpr[17] - aot_fpr_13;
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(544), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(548), std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
aot_gpr_4 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(248), aot_gpr_4);
|
|
aot_gpr_4 = (std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(252), aot_gpr_4);
|
|
ctx.fpr[19] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(248)));
|
|
aot_gpr_4 = (std::bit_cast<std::uint32_t>(ctx.fpr[19]));
|
|
ctx.fpr[16] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(252)));
|
|
aot_gpr_5 = (std::bit_cast<std::uint32_t>(ctx.fpr[16]));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(224), aot_gpr_4);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(228), aot_gpr_5);
|
|
ctx.fpr[17] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(224)));
|
|
{ const float fs = ctx.fpr[17]; const float ft = ctx.fpr[17]; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(228)));
|
|
{ const float fs = aot_fpr_13; const float ft = aot_fpr_13; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_13 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_13 = fs * ft; }
|
|
aot_fpr_12 = aot_fpr_12 + aot_fpr_13;
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_12 < ctx.fpr[18])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F350;
|
|
}
|
|
goto L_0889F330;
|
|
}
|
|
L_0889F330:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(240)));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(244)));
|
|
{ const std::uint32_t aot_run_words[3]{std::bit_cast<std::uint32_t>(aot_fpr_12), std::bit_cast<std::uint32_t>(aot_fpr_13), std::bit_cast<std::uint32_t>(ctx.fpr[15])};
|
|
aot_mem.aot_direct_store32_block(ctx.gpr[10] + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_mem.aot_direct_store32(ctx.gpr[9] + static_cast<std::uint32_t>(0), std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_0889F3F8;
|
|
}
|
|
goto L_0889F350;
|
|
}
|
|
L_0889F350:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F3F4;
|
|
}
|
|
goto L_0889F358;
|
|
}
|
|
L_0889F358:
|
|
ctx.gpr[8] = (std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
ctx.set_vfpu_scalar_bits_ct<28u>(ctx.gpr[8]);
|
|
{ const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vscl_ct<0u, 0u, 28u, 3u>();
|
|
aot_gpr_5 = (aot_gpr_29 + static_cast<std::uint32_t>(256));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 0u>();
|
|
aot_gpr_4 = (aot_gpr_29 + static_cast<std::uint32_t>(304));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
aot_gpr_5 = (std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
ctx.set_vfpu_scalar_bits_ct<28u>(aot_gpr_5);
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[7] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vscl_ct<0u, 0u, 28u, 3u>();
|
|
aot_gpr_5 = (aot_gpr_29 + static_cast<std::uint32_t>(288));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_6 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 0u>();
|
|
aot_gpr_6 = (aot_gpr_29 + static_cast<std::uint32_t>(272));
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_6 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_6 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(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 = ctx.gpr[10] + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[10] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 1u, 3u, 1u>();
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vdot_ct<28u, 0u, 0u, 3u>();
|
|
aot_gpr_4 = (ctx.vfpu_scalar_bits_ct<28u>());
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_12 < ctx.fpr[18])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F3F4;
|
|
}
|
|
goto L_0889F3E8;
|
|
}
|
|
L_0889F3E8:
|
|
aot_mem.aot_direct_store32(ctx.gpr[9] + static_cast<std::uint32_t>(0), std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_0889F3F8;
|
|
}
|
|
goto L_0889F3F4;
|
|
}
|
|
L_0889F3F4:
|
|
aot_gpr_2 = (0u | 0u);
|
|
goto L_0889F3F8;
|
|
L_0889F3F8:
|
|
jump_target = aot_gpr_31;
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(640));
|
|
// PSPRECOMP_V813_JR_FAST_EXIT: preserve the exact 256-transfer boundary; common JR path is shared.
|
|
if (++local_transfers < 256u) goto LOCAL_JR_DISPATCH;
|
|
// PSPRECOMP_V812_SHARED_SCHED_JUMP
|
|
goto LOCAL_SCHED_BOUNDARY;
|
|
L_0889F400:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-288));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(260), ctx.gpr[16]);
|
|
ctx.gpr[16] = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(276), ctx.gpr[20]);
|
|
ctx.gpr[20] = (ctx.gpr[7] | 0u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
{ const std::uint32_t aot_run_words[4]{std::bit_cast<std::uint32_t>(aot_fpr_20), std::bit_cast<std::uint32_t>(ctx.fpr[22]), std::bit_cast<std::uint32_t>(ctx.fpr[24]), std::bit_cast<std::uint32_t>(ctx.fpr[26])};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(244), aot_run_words); }
|
|
{ const std::uint32_t aot_run_words[3]{ctx.gpr[17], ctx.gpr[18], ctx.gpr[19]};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(264), aot_run_words); }
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(280), ctx.gpr[21]);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(284), aot_gpr_31);
|
|
aot_gpr_31 = (0x0889F444u);
|
|
ctx.gpr[17] = (0u | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0890D44C, 66u, 315u, 0x0890D44Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0066_entry, 66u, 315u, 0x0890D44Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F444u) goto L_0889F444;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889F444:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F460;
|
|
}
|
|
goto L_0889F44C;
|
|
}
|
|
L_0889F44C:
|
|
aot_gpr_31 = (0x0889F454u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0170.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 696u, 0x0889F454u, 0x08AAE958u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0170_entry(rt, ctx, 526u, aot_mem);
|
|
#else
|
|
recomp_unit_0170_entry(rt, ctx, 526u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0170_entry, 170u, 526u, 0x08AAE958u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F454u) goto L_0889F454;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889F454:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F460;
|
|
}
|
|
goto L_0889F45C;
|
|
}
|
|
L_0889F45C:
|
|
ctx.gpr[17] = (0u | 1u);
|
|
goto L_0889F460;
|
|
L_0889F460:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_4 = (aot_gpr_4 & 2048u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F548;
|
|
}
|
|
goto L_0889F470;
|
|
}
|
|
L_0889F470:
|
|
{ const bool branch_taken = ctx.gpr[17] != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F548;
|
|
}
|
|
goto L_0889F478;
|
|
}
|
|
L_0889F478:
|
|
aot_gpr_31 = (0x0889F480u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0890D44C, 66u, 315u, 0x0890D44Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0066_entry, 66u, 315u, 0x0890D44Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F480u) goto L_0889F480;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889F480:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F49C;
|
|
}
|
|
goto L_0889F488;
|
|
}
|
|
L_0889F488:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2049));
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(460), aot_gpr_4);
|
|
if (branch_taken) {
|
|
goto L_0889F554;
|
|
}
|
|
goto L_0889F49C;
|
|
}
|
|
L_0889F49C:
|
|
aot_gpr_31 = (0x0889F4A4u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0082.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 704u, 0x0889F4A4u, 0x0894D4DCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0082_entry(rt, ctx, 295u, aot_mem);
|
|
#else
|
|
recomp_unit_0082_entry(rt, ctx, 295u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0082_entry, 82u, 295u, 0x0894D4DCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F4A4u) goto L_0889F4A4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889F4A4:
|
|
aot_gpr_31 = (0x0889F4ACu);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0067.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 705u, 0x0889F4ACu, 0x08910B38u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0067_entry(rt, ctx, 195u, aot_mem);
|
|
#else
|
|
recomp_unit_0067_entry(rt, ctx, 195u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0067_entry, 67u, 195u, 0x08910B38u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F4ACu) goto L_0889F4AC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889F4AC:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F524;
|
|
}
|
|
goto L_0889F4B4;
|
|
}
|
|
L_0889F4B4:
|
|
aot_gpr_31 = (0x0889F4BCu);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0036.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 707u, 0x0889F4BCu, 0x088954ACu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0036_entry(rt, ctx, 273u, aot_mem);
|
|
#else
|
|
recomp_unit_0036_entry(rt, ctx, 273u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0036_entry, 36u, 273u, 0x088954ACu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F4BCu) goto L_0889F4BC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889F4BC:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F524;
|
|
}
|
|
goto L_0889F4C4;
|
|
}
|
|
L_0889F4C4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(1929))))));
|
|
aot_gpr_6 = (aot_gpr_5 << 5u);
|
|
aot_gpr_5 = (aot_gpr_5 << 2u);
|
|
aot_gpr_5 = (aot_gpr_6 - aot_gpr_5);
|
|
aot_gpr_4 = (aot_gpr_4 + aot_gpr_5);
|
|
aot_gpr_31 = (0x0889F4E4u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(1396));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0143.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 709u, 0x0889F4E4u, 0x08A40D34u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0143_entry(rt, ctx, 159u, aot_mem);
|
|
#else
|
|
recomp_unit_0143_entry(rt, ctx, 159u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0143_entry, 143u, 159u, 0x08A40D34u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F4E4u) goto L_0889F4E4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889F4E4:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F50C;
|
|
}
|
|
goto L_0889F4EC;
|
|
}
|
|
L_0889F4EC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2049));
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(460), aot_gpr_4);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-4097));
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(460), aot_gpr_4);
|
|
if (branch_taken) {
|
|
goto L_0889F540;
|
|
}
|
|
goto L_0889F50C;
|
|
}
|
|
L_0889F50C:
|
|
aot_gpr_31 = (0x0889F514u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0108.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 712u, 0x0889F514u, 0x089B4A30u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0108_entry(rt, ctx, 184u, aot_mem);
|
|
#else
|
|
recomp_unit_0108_entry(rt, ctx, 184u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0108_entry, 108u, 184u, 0x089B4A30u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F514u) goto L_0889F514;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889F514:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F540;
|
|
}
|
|
goto L_0889F51C;
|
|
}
|
|
L_0889F51C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 1u);
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 119u, 0x088A08ECu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889F524;
|
|
}
|
|
L_0889F524:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-2049));
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(460), aot_gpr_4);
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-4097));
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(460), aot_gpr_4);
|
|
goto L_0889F540;
|
|
L_0889F540:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F554;
|
|
}
|
|
goto L_0889F548;
|
|
}
|
|
L_0889F548:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889F554u);
|
|
aot_gpr_5 = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0039.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 717u, 0x0889F554u, 0x088A1AF4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0039_entry(rt, ctx, 377u, aot_mem);
|
|
#else
|
|
recomp_unit_0039_entry(rt, ctx, 377u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 377u, 0x088A1AF4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F554u) goto L_0889F554;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889F554:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(1728)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7660)));
|
|
aot_gpr_4 = (aot_gpr_5 < aot_gpr_4 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F578;
|
|
}
|
|
goto L_0889F568;
|
|
}
|
|
L_0889F568:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_4 = (aot_gpr_4 & 512u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F590;
|
|
}
|
|
goto L_0889F578;
|
|
}
|
|
L_0889F578:
|
|
aot_gpr_31 = (0x0889F580u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0890D44C, 66u, 315u, 0x0890D44Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0066_entry, 66u, 315u, 0x0890D44Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F580u) goto L_0889F580;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889F580:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F5A8;
|
|
}
|
|
goto L_0889F588;
|
|
}
|
|
L_0889F588:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F618;
|
|
}
|
|
goto L_0889F590;
|
|
}
|
|
L_0889F590:
|
|
ctx.gpr[17] = (0u | 1u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889F5A0u);
|
|
aot_gpr_5 = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0890BE50, 65u, 982u, 0x0890BE50u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0065_entry, 65u, 982u, 0x0890BE50u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F5A0u) goto L_0889F5A0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889F5A0:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (ctx.gpr[17] | 0u);
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 119u, 0x088A08ECu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889F5A8;
|
|
}
|
|
L_0889F5A8:
|
|
aot_gpr_31 = (0x0889F5B0u);
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_compact_generated_leaf<&vcs_compact_leaf_08960424, 87u, 0x08960424u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F5B0u) goto L_0889F5B0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889F5B0:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(1360)));
|
|
aot_gpr_6 = (0u | 6u);
|
|
{ const bool branch_taken = aot_gpr_5 != aot_gpr_6;
|
|
aot_gpr_4 = (aot_gpr_2 | 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F5D0;
|
|
}
|
|
goto L_0889F5C0;
|
|
}
|
|
L_0889F5C0:
|
|
aot_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(2318))))));
|
|
aot_gpr_5 = (aot_gpr_5 & 1u);
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F5F8;
|
|
}
|
|
goto L_0889F5D0;
|
|
}
|
|
L_0889F5D0:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(2318))))));
|
|
aot_gpr_4 = (aot_gpr_4 & 2u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F5F8;
|
|
}
|
|
goto L_0889F5E0;
|
|
}
|
|
L_0889F5E0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_5 = (0u | 65u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(2228));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889F618;
|
|
}
|
|
goto L_0889F5F8;
|
|
}
|
|
L_0889F5F8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2228)));
|
|
aot_gpr_5 = (0u | 54u);
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
ctx.gpr[17] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_0889F610;
|
|
}
|
|
goto L_0889F608;
|
|
}
|
|
L_0889F608:
|
|
aot_gpr_31 = (0x0889F610u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0065.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 731u, 0x0889F610u, 0x0890905Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0065_entry(rt, ctx, 282u, aot_mem);
|
|
#else
|
|
recomp_unit_0065_entry(rt, ctx, 282u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0065_entry, 65u, 282u, 0x0890905Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F610u) goto L_0889F610;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889F610:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (ctx.gpr[17] | 0u);
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 119u, 0x088A08ECu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889F618;
|
|
}
|
|
L_0889F618:
|
|
aot_gpr_31 = (0x0889F620u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0890D44C, 66u, 315u, 0x0890D44Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0066_entry, 66u, 315u, 0x0890D44Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F620u) goto L_0889F620;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889F620:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F670;
|
|
}
|
|
goto L_0889F628;
|
|
}
|
|
L_0889F628:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(1360)));
|
|
aot_gpr_5 = (0u | 6u);
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889F670;
|
|
}
|
|
goto L_0889F638;
|
|
}
|
|
L_0889F638:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2276)));
|
|
aot_gpr_5 = (0u | 2u);
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889F670;
|
|
}
|
|
goto L_0889F648;
|
|
}
|
|
L_0889F648:
|
|
aot_gpr_31 = (0x0889F650u);
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_compact_generated_leaf<&vcs_compact_leaf_08960424, 87u, 0x08960424u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F650u) goto L_0889F650;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889F650:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_2 + static_cast<std::uint32_t>(2312)));
|
|
{ const bool branch_taken = static_cast<std::int32_t>(aot_gpr_4) <= 0;
|
|
if (branch_taken) {
|
|
goto L_0889F670;
|
|
}
|
|
goto L_0889F65C;
|
|
}
|
|
L_0889F65C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(468)));
|
|
aot_gpr_5 = (128u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F6FC;
|
|
}
|
|
goto L_0889F670;
|
|
}
|
|
L_0889F670:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_fpr_20 = std::bit_cast<float>(0u);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(1252)));
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_12 <= aot_fpr_20)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F6D8;
|
|
}
|
|
goto L_0889F68C;
|
|
}
|
|
L_0889F68C:
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[20] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vdot_ct<28u, 0u, 0u, 3u>();
|
|
ctx.execute_vfpu_unary_ct<28u, 28u, 1u, 22u>();
|
|
aot_gpr_4 = (ctx.vfpu_scalar_bits_ct<28u>());
|
|
ctx.fpr[22] = std::bit_cast<float>(aot_gpr_4);
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(aot_mem.aot_direct_load8(ctx.gpr[16] + static_cast<std::uint32_t>(1929))))));
|
|
aot_gpr_5 = (aot_gpr_4 << 5u);
|
|
aot_gpr_4 = (aot_gpr_4 << 2u);
|
|
aot_gpr_4 = (aot_gpr_5 - aot_gpr_4);
|
|
aot_gpr_4 = (ctx.gpr[16] + aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(1396));
|
|
aot_gpr_31 = (0x0889F6C0u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B1FD70, 198u, 733u, 0x08B1FD70u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[28], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0198_entry, 198u, 733u, 0x08B1FD70u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F6C0u) goto L_0889F6C0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889F6C0:
|
|
ctx.fpr[24] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_2 + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2120)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F710;
|
|
}
|
|
goto L_0889F6D0;
|
|
}
|
|
L_0889F6D0:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.fpr[26] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[24]));
|
|
if (branch_taken) {
|
|
goto L_0889F71C;
|
|
}
|
|
goto L_0889F6D8;
|
|
}
|
|
L_0889F6D8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-257));
|
|
aot_gpr_4 = (aot_gpr_4 | 128u);
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(460), aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
aot_gpr_4 = (aot_gpr_4 | 256u);
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(460), aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 1u);
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 119u, 0x088A08ECu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889F6FC;
|
|
}
|
|
L_0889F6FC:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889F708u);
|
|
aot_gpr_5 = (0u | 3u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0178.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 745u, 0x0889F708u, 0x08ACD4BCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0178_entry(rt, ctx, 442u, aot_mem);
|
|
#else
|
|
recomp_unit_0178_entry(rt, ctx, 442u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0178_entry, 178u, 442u, 0x08ACD4BCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F708u) goto L_0889F708;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889F708:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 1u);
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 119u, 0x088A08ECu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889F710;
|
|
}
|
|
L_0889F710:
|
|
aot_gpr_4 = (16448u << 16u);
|
|
ctx.fpr[26] = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fpr[26] = ctx.fpr[24] / ctx.fpr[26];
|
|
goto L_0889F71C;
|
|
L_0889F71C:
|
|
aot_gpr_31 = (0x0889F724u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0067.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 748u, 0x0889F724u, 0x08910B38u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0067_entry(rt, ctx, 195u, aot_mem);
|
|
#else
|
|
recomp_unit_0067_entry(rt, ctx, 195u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0067_entry, 67u, 195u, 0x08910B38u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F724u) goto L_0889F724;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889F724:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F744;
|
|
}
|
|
goto L_0889F72C;
|
|
}
|
|
L_0889F72C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_5 = (0u | 60u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(2228));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 44u, 0x088A0284u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889F744;
|
|
}
|
|
L_0889F744:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2244)));
|
|
ctx.gpr[18] = (0u | 1u);
|
|
{ const bool branch_taken = aot_gpr_4 != ctx.gpr[18];
|
|
ctx.gpr[19] = (0u | 6u);
|
|
if (branch_taken) {
|
|
goto L_0889F784;
|
|
}
|
|
goto L_0889F754;
|
|
}
|
|
L_0889F754:
|
|
aot_gpr_31 = (0x0889F75Cu);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0064.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 752u, 0x0889F75Cu, 0x08906DE4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0064_entry(rt, ctx, 620u, aot_mem);
|
|
#else
|
|
recomp_unit_0064_entry(rt, ctx, 620u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0064_entry, 64u, 620u, 0x08906DE4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F75Cu) goto L_0889F75C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889F75C:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F784;
|
|
}
|
|
goto L_0889F764;
|
|
}
|
|
L_0889F764:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_6 = (0u | 0u);
|
|
ctx.gpr[7] = (0u | 0u);
|
|
aot_gpr_31 = (0x0889F77Cu);
|
|
ctx.gpr[8] = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0065.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 754u, 0x0889F77Cu, 0x08909A64u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0065_entry(rt, ctx, 442u, aot_mem);
|
|
#else
|
|
recomp_unit_0065_entry(rt, ctx, 442u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0065_entry, 65u, 442u, 0x08909A64u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F77Cu) goto L_0889F77C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889F77C:
|
|
aot_gpr_31 = (0x0889F784u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0065.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 755u, 0x0889F784u, 0x0890932Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0065_entry(rt, ctx, 332u, aot_mem);
|
|
#else
|
|
recomp_unit_0065_entry(rt, ctx, 332u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0065_entry, 65u, 332u, 0x0890932Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F784u) goto L_0889F784;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889F784:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(1360)));
|
|
{ const bool branch_taken = aot_gpr_4 != ctx.gpr[19];
|
|
if (branch_taken) {
|
|
goto L_0889F85C;
|
|
}
|
|
goto L_0889F790;
|
|
}
|
|
L_0889F790:
|
|
aot_gpr_31 = (0x0889F798u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0890D44C, 66u, 315u, 0x0890D44Cu>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0066_entry, 66u, 315u, 0x0890D44Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F798u) goto L_0889F798;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889F798:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F85C;
|
|
}
|
|
goto L_0889F7A0;
|
|
}
|
|
L_0889F7A0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(ctx.gpr[16] + static_cast<std::uint32_t>(2301)));
|
|
aot_gpr_5 = (16384u << 16u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_5);
|
|
if (branch_taken) {
|
|
goto L_0889F7F0;
|
|
}
|
|
goto L_0889F7B0;
|
|
}
|
|
L_0889F7B0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_5 = (0u | 45u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(2228));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889F7D4;
|
|
}
|
|
goto L_0889F7C8;
|
|
}
|
|
L_0889F7C8:
|
|
aot_gpr_4 = (16480u << 16u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
if (branch_taken) {
|
|
goto L_0889F7F0;
|
|
}
|
|
goto L_0889F7D4;
|
|
}
|
|
L_0889F7D4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_5 = (0u | 60u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(2228));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889F7F0;
|
|
}
|
|
goto L_0889F7EC;
|
|
}
|
|
L_0889F7EC:
|
|
aot_mem.aot_direct_store8(ctx.gpr[16] + static_cast<std::uint32_t>(2301), static_cast<std::uint8_t>(0u));
|
|
goto L_0889F7F0;
|
|
L_0889F7F0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2228)));
|
|
aot_gpr_5 = (0u | 17u);
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889F808;
|
|
}
|
|
goto L_0889F800;
|
|
}
|
|
L_0889F800:
|
|
aot_gpr_4 = (16544u << 16u);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
goto L_0889F808;
|
|
L_0889F808:
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[22] < aot_fpr_12)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F85C;
|
|
}
|
|
goto L_0889F818;
|
|
}
|
|
L_0889F818:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7660)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(1732)));
|
|
aot_gpr_4 = (aot_gpr_5 < aot_gpr_4 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F848;
|
|
}
|
|
goto L_0889F830;
|
|
}
|
|
L_0889F830:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_5 = (0u | 60u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(2228));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889F85C;
|
|
}
|
|
goto L_0889F848;
|
|
}
|
|
L_0889F848:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_31 = (0x0889F854u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0140.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 769u, 0x0889F854u, 0x08A346B4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0140_entry(rt, ctx, 108u, aot_mem);
|
|
#else
|
|
recomp_unit_0140_entry(rt, ctx, 108u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0140_entry, 140u, 108u, 0x08A346B4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F854u) goto L_0889F854;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889F854:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (0u | 2u);
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 119u, 0x088A08ECu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889F85C;
|
|
}
|
|
L_0889F85C:
|
|
aot_gpr_4 = (15820u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 | 52429u);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[22] <= aot_fpr_12)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F8E0;
|
|
}
|
|
goto L_0889F878;
|
|
}
|
|
L_0889F878:
|
|
aot_fpr_13 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_4 = (std::bit_cast<std::uint32_t>(ctx.fpr[22]));
|
|
ctx.set_vfpu_scalar_bits_ct<28u>(aot_gpr_4);
|
|
ctx.execute_vfpu_unary_ct<28u, 28u, 1u, 16u>();
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[20] + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vscl_ct<0u, 0u, 28u, 3u>();
|
|
{ float vfpu_value[4]{}; ctx.read_vfpu_vector_ct<0u, 4u>(vfpu_value);
|
|
const std::uint32_t vfpu_address = aot_gpr_29 + static_cast<std::uint32_t>(0);
|
|
const std::uint32_t 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])};
|
|
aot_mem.aot_direct_store32_block(vfpu_address, vfpu_words); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_29 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<0u, 4u>(vfpu_value); }
|
|
aot_gpr_4 = (ctx.gpr[16] + static_cast<std::uint32_t>(16));
|
|
{ const std::uint32_t vfpu_address = aot_gpr_4 + static_cast<std::uint32_t>(0);
|
|
std::uint32_t vfpu_words[4]{};
|
|
aot_mem.aot_direct_load32_block(vfpu_address, vfpu_words);
|
|
float vfpu_value[4]{
|
|
std::bit_cast<float>(vfpu_words[0]),
|
|
std::bit_cast<float>(vfpu_words[1]),
|
|
std::bit_cast<float>(vfpu_words[2]),
|
|
std::bit_cast<float>(vfpu_words[3])};
|
|
ctx.write_vfpu_vector_ct<1u, 4u>(vfpu_value); }
|
|
ctx.execute_vfpu_vdot_ct<28u, 0u, 1u, 3u>();
|
|
aot_gpr_4 = (ctx.vfpu_scalar_bits_ct<28u>());
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_12 <= aot_fpr_13)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889F8E0;
|
|
}
|
|
goto L_0889F8BC;
|
|
}
|
|
L_0889F8BC:
|
|
aot_gpr_4 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
ctx.set_vfpu_scalar_bits_ct<0u>(aot_gpr_4);
|
|
{ const float vfpu_constant = std::bit_cast<float>(0x3FC90FDBu);
|
|
const float vfpu_value[4]{vfpu_constant, vfpu_constant, vfpu_constant, vfpu_constant};
|
|
ctx.write_vfpu_vector_with_destination_prefix_ct<32u, 1u>(vfpu_value); }
|
|
ctx.execute_vfpu_unary_ct<0u, 0u, 1u, 5u>();
|
|
ctx.execute_vfpu_unary_ct<64u, 0u, 1u, 23u>();
|
|
ctx.execute_vfpu_vec3_ct<0u, 64u, 32u, 1u, 2u>();
|
|
ctx.execute_vfpu_vec3_ct<64u, 32u, 0u, 1u, 1u>();
|
|
aot_gpr_4 = (ctx.vfpu_scalar_bits_ct<64u>());
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
goto L_0889F8E0;
|
|
L_0889F8E0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(1772)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F914;
|
|
}
|
|
goto L_0889F8EC;
|
|
}
|
|
L_0889F8EC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(1776)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F914;
|
|
}
|
|
goto L_0889F8F8;
|
|
}
|
|
L_0889F8F8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(1772)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(1776)));
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7660)));
|
|
aot_gpr_4 = (aot_gpr_4 + aot_gpr_5);
|
|
aot_gpr_4 = (aot_gpr_4 < aot_gpr_6 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889F92C;
|
|
}
|
|
goto L_0889F914;
|
|
}
|
|
L_0889F914:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_4 = (aot_gpr_4 & 512u);
|
|
if (aot_gpr_4 == 0u) {
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(456)));
|
|
goto L_0889F94C;
|
|
}
|
|
goto L_0889F924;
|
|
L_0889F924:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FBC0;
|
|
}
|
|
goto L_0889F92C;
|
|
}
|
|
L_0889F92C:
|
|
aot_gpr_31 = (0x0889F934u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08909B60, 65u, 454u, 0x08909B60u>(ctx, &aot_mem, ctx.pc, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[16], aot_gpr_29, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0065_entry, 65u, 454u, 0x08909B60u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889F934u) goto L_0889F934;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889F934:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(1772), 0u);
|
|
aot_gpr_4 = (aot_gpr_4 | 128u);
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(460), aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (ctx.gpr[18] | 0u);
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 119u, 0x088A08ECu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889F94C;
|
|
}
|
|
L_0889F94C:
|
|
ctx.gpr[20] = (4096u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[20]);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FBC0;
|
|
}
|
|
goto L_0889F95C;
|
|
}
|
|
L_0889F95C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2228)));
|
|
aot_gpr_5 = (0u | 16u);
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889FBC0;
|
|
}
|
|
goto L_0889F96C;
|
|
}
|
|
L_0889F96C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_5 = (128u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FBC0;
|
|
}
|
|
goto L_0889F980;
|
|
}
|
|
L_0889F980:
|
|
{ const bool branch_taken = ctx.gpr[17] != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FBC0;
|
|
}
|
|
goto L_0889F988;
|
|
}
|
|
L_0889F988:
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[22] <= ctx.fpr[24])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
ctx.gpr[21] = (0u | 61u);
|
|
if (branch_taken) {
|
|
goto L_0889FA3C;
|
|
}
|
|
goto L_0889F998;
|
|
}
|
|
L_0889F998:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7660)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(1732)));
|
|
aot_gpr_4 = (aot_gpr_5 < aot_gpr_4 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FA3C;
|
|
}
|
|
goto L_0889F9B0;
|
|
}
|
|
L_0889F9B0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_5 = (0u | 65u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(2228));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889FA3C;
|
|
}
|
|
goto L_0889F9C8;
|
|
}
|
|
L_0889F9C8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(2228));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = aot_gpr_4 == ctx.gpr[21];
|
|
aot_gpr_4 = (16448u << 16u);
|
|
if (branch_taken) {
|
|
goto L_0889F9F8;
|
|
}
|
|
goto L_0889F9DC;
|
|
}
|
|
L_0889F9DC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_5 = (0u | 59u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(2228));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889FA0C;
|
|
}
|
|
goto L_0889F9F4;
|
|
}
|
|
L_0889F9F4:
|
|
aot_gpr_4 = (16448u << 16u);
|
|
goto L_0889F9F8;
|
|
L_0889F9F8:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[22] < aot_fpr_12)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889FA3C;
|
|
}
|
|
goto L_0889FA0C;
|
|
}
|
|
L_0889FA0C:
|
|
aot_gpr_31 = (0x0889FA14u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B20934, 199u, 110u, 0x08B20934u>(ctx, &aot_mem, ctx.pc, ctx.hi, ctx.lo, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[28], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0199_entry, 199u, 110u, 0x08B20934u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FA14u) goto L_0889FA14;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889FA14:
|
|
aot_gpr_4 = (aot_gpr_2 & 65535u);
|
|
aot_gpr_4 = (aot_gpr_4 & 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_gpr_4 = (16192u << 16u);
|
|
if (branch_taken) {
|
|
goto L_0889FBC0;
|
|
}
|
|
goto L_0889FA24;
|
|
}
|
|
L_0889FA24:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
{ const float fs = ctx.fpr[24]; const float ft = aot_fpr_12; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[22] <= aot_fpr_12)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889FBC0;
|
|
}
|
|
goto L_0889FA3C;
|
|
}
|
|
L_0889FA3C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(2228));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = aot_gpr_4 == ctx.gpr[21];
|
|
if (branch_taken) {
|
|
goto L_0889FA68;
|
|
}
|
|
goto L_0889FA50;
|
|
}
|
|
L_0889FA50:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_5 = (0u | 59u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(2228));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889FA70;
|
|
}
|
|
goto L_0889FA68;
|
|
}
|
|
L_0889FA68:
|
|
aot_gpr_4 = (16384u << 16u);
|
|
ctx.fpr[26] = std::bit_cast<float>(aot_gpr_4);
|
|
goto L_0889FA70;
|
|
L_0889FA70:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(456)));
|
|
aot_gpr_5 = (16384u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FB28;
|
|
}
|
|
goto L_0889FA84;
|
|
}
|
|
L_0889FA84:
|
|
{ const std::uint32_t aot_run_words[3]{std::bit_cast<std::uint32_t>(aot_fpr_20), std::bit_cast<std::uint32_t>(aot_fpr_20), std::bit_cast<std::uint32_t>(aot_fpr_20)};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(32), aot_run_words); }
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
ctx.gpr[17] = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(48));
|
|
aot_gpr_31 = (0x0889FAA4u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0067.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 799u, 0x0889FAA4u, 0x08910218u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0067_entry(rt, ctx, 34u, aot_mem);
|
|
#else
|
|
recomp_unit_0067_entry(rt, ctx, 34u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0067_entry, 67u, 34u, 0x08910218u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FAA4u) goto L_0889FAA4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FAA4:
|
|
aot_gpr_31 = (0x0889FAACu);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0066.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 800u, 0x0889FAACu, 0x0890FCD8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0066_entry(rt, ctx, 843u, aot_mem);
|
|
#else
|
|
recomp_unit_0066_entry(rt, ctx, 843u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0066_entry, 66u, 843u, 0x0890FCD8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FAACu) goto L_0889FAAC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FAAC:
|
|
{ const bool branch_taken = aot_gpr_2 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FAD4;
|
|
}
|
|
goto L_0889FAB4;
|
|
}
|
|
L_0889FAB4:
|
|
ctx.gpr[18] = (aot_gpr_29 + static_cast<std::uint32_t>(48));
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889FAC4u);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0067.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 802u, 0x0889FAC4u, 0x08910074u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0067_entry(rt, ctx, 10u, aot_mem);
|
|
#else
|
|
recomp_unit_0067_entry(rt, ctx, 10u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0067_entry, 67u, 10u, 0x08910074u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FAC4u) goto L_0889FAC4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FAC4:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x0889FAD4u);
|
|
aot_gpr_6 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0108.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 803u, 0x0889FAD4u, 0x089B5A20u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0108_entry(rt, ctx, 358u, aot_mem);
|
|
#else
|
|
recomp_unit_0108_entry(rt, ctx, 358u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0108_entry, 108u, 358u, 0x089B5A20u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FAD4u) goto L_0889FAD4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FAD4:
|
|
aot_gpr_31 = (0x0889FADCu);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0066.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 804u, 0x0889FADCu, 0x0890FCD8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0066_entry(rt, ctx, 843u, aot_mem);
|
|
#else
|
|
recomp_unit_0066_entry(rt, ctx, 843u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0066_entry, 66u, 843u, 0x0890FCD8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FADCu) goto L_0889FADC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FADC:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FB00;
|
|
}
|
|
goto L_0889FAE4;
|
|
}
|
|
L_0889FAE4:
|
|
ctx.gpr[17] = (aot_gpr_29 + static_cast<std::uint32_t>(64));
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889FAF4u);
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0067.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 806u, 0x0889FAF4u, 0x089105E8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0067_entry(rt, ctx, 94u, aot_mem);
|
|
#else
|
|
recomp_unit_0067_entry(rt, ctx, 94u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0067_entry, 67u, 94u, 0x089105E8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FAF4u) goto L_0889FAF4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FAF4:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889FB00u);
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0067.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 807u, 0x0889FB00u, 0x08910218u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0067_entry(rt, ctx, 34u, aot_mem);
|
|
#else
|
|
recomp_unit_0067_entry(rt, ctx, 34u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0067_entry, 67u, 34u, 0x08910218u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FB00u) goto L_0889FB00;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FB00:
|
|
ctx.gpr[17] = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889FB10u);
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0067.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 808u, 0x0889FB10u, 0x08910074u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0067_entry(rt, ctx, 10u, aot_mem);
|
|
#else
|
|
recomp_unit_0067_entry(rt, ctx, 10u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0067_entry, 67u, 10u, 0x08910074u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FB10u) goto L_0889FB10;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FB10:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2060)));
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889FB20u);
|
|
aot_gpr_5 = (ctx.gpr[17] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0065.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 809u, 0x0889FB20u, 0x0890AA84u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0065_entry(rt, ctx, 686u, aot_mem);
|
|
#else
|
|
recomp_unit_0065_entry(rt, ctx, 686u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0065_entry, 65u, 686u, 0x0890AA84u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FB20u) goto L_0889FB20;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FB20:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FB38;
|
|
}
|
|
goto L_0889FB28;
|
|
}
|
|
L_0889FB28:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[26]));
|
|
aot_gpr_31 = (0x0889FB38u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0065.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 811u, 0x0889FB38u, 0x0890AED8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0065_entry(rt, ctx, 751u, aot_mem);
|
|
#else
|
|
recomp_unit_0065_entry(rt, ctx, 751u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0065_entry, 65u, 751u, 0x0890AED8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FB38u) goto L_0889FB38;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FB38:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(1300)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_gpr_4 = (16544u << 16u);
|
|
if (branch_taken) {
|
|
goto L_0889FB88;
|
|
}
|
|
goto L_0889FB48;
|
|
}
|
|
L_0889FB48:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[22] < aot_fpr_12)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889FB88;
|
|
}
|
|
goto L_0889FB5C;
|
|
}
|
|
L_0889FB5C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(456)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(468)));
|
|
aot_gpr_4 = (aot_gpr_4 | ctx.gpr[20]);
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(456), aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_5 | 2048u);
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(468), aot_gpr_4);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889FB80u);
|
|
aot_gpr_5 = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_0890BE50, 65u, 982u, 0x0890BE50u>(ctx, &aot_mem, ctx.pc, aot_gpr_4, aot_gpr_5, aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0065_entry, 65u, 982u, 0x0890BE50u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FB80u) goto L_0889FB80;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889FB80:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 43u, 0x088A027Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889FB88;
|
|
}
|
|
L_0889FB88:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(468)));
|
|
aot_gpr_4 = (aot_gpr_4 & 2048u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 43u, 0x088A027Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889FB98;
|
|
}
|
|
L_0889FB98:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(456)));
|
|
aot_gpr_5 = (61440u << 16u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(468)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(456), aot_gpr_4);
|
|
aot_gpr_4 = (0u + static_cast<std::uint32_t>(-2049));
|
|
aot_gpr_4 = (aot_gpr_5 & aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(468), aot_gpr_4);
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 43u, 0x088A027Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889FBC0;
|
|
}
|
|
L_0889FBC0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2228)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(1744)));
|
|
ctx.gpr[20] = (aot_gpr_4 ^ 39u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7660)));
|
|
aot_gpr_4 = (aot_gpr_5 < aot_gpr_4 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
ctx.gpr[20] = (ctx.gpr[20] < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_0889FE60;
|
|
}
|
|
goto L_0889FBDC;
|
|
}
|
|
L_0889FBDC:
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[22] < ctx.fpr[24])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889FE60;
|
|
}
|
|
goto L_0889FBEC;
|
|
}
|
|
L_0889FBEC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_5 = (0u | 46u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(2228));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889FE60;
|
|
}
|
|
goto L_0889FC04;
|
|
}
|
|
L_0889FC04:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_5 = (0u | 60u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(2228));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_0889FE60;
|
|
}
|
|
goto L_0889FC1C;
|
|
}
|
|
L_0889FC1C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_4 = (aot_gpr_4 & 8192u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FC3C;
|
|
}
|
|
goto L_0889FC2C;
|
|
}
|
|
L_0889FC2C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_4 = (aot_gpr_4 & 4096u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FD30;
|
|
}
|
|
goto L_0889FC3C;
|
|
}
|
|
L_0889FC3C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_5 = (65472u << 16u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(460), aot_gpr_4);
|
|
aot_gpr_31 = (0x0889FC5Cu);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0056.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 824u, 0x0889FC5Cu, 0x088E76D4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0056_entry(rt, ctx, 716u, aot_mem);
|
|
#else
|
|
recomp_unit_0056_entry(rt, ctx, 716u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0056_entry, 56u, 716u, 0x088E76D4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FC5Cu) goto L_0889FC5C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FC5C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(92)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(240));
|
|
aot_gpr_6 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(0))))));
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
jump_target = ctx.gpr[7];
|
|
aot_gpr_31 = (0x0889FC78u);
|
|
aot_gpr_4 = (ctx.gpr[16] + aot_gpr_6);
|
|
ctx.pc = jump_target;
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_call(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FC78u) goto L_0889FC78;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889FC78:
|
|
{ const bool branch_taken = ctx.gpr[20] == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FD44;
|
|
}
|
|
goto L_0889FC80;
|
|
}
|
|
L_0889FC80:
|
|
aot_gpr_31 = (0x0889FC88u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B20934, 199u, 110u, 0x08B20934u>(ctx, &aot_mem, ctx.pc, ctx.hi, ctx.lo, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[28], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0199_entry, 199u, 110u, 0x08B20934u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FC88u) goto L_0889FC88;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889FC88:
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25268)));
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25272)));
|
|
aot_gpr_4 = (aot_gpr_2 | 0u);
|
|
aot_gpr_31 = (0x0889FC9Cu);
|
|
aot_gpr_5 = (0u | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B60E5C, 215u, 177u, 0x08B60E5Cu>(ctx, &aot_mem, ctx.pc, ctx.hi, ctx.lo, aot_gpr_2, ctx.gpr[3], aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[9], ctx.gpr[10], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0215_entry, 215u, 177u, 0x08B60E5Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FC9Cu) goto L_0889FC9C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889FC9C:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25260)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25264)));
|
|
ctx.gpr[1] = (ctx.gpr[3] << 1u);
|
|
aot_gpr_6 = (aot_gpr_2 >> 31u);
|
|
ctx.gpr[7] = (static_cast<std::uint32_t>(static_cast<std::int32_t>(ctx.gpr[3]) >> 31u));
|
|
aot_gpr_6 = (ctx.gpr[1] | aot_gpr_6);
|
|
ctx.gpr[8] = (aot_gpr_6 + aot_gpr_4);
|
|
ctx.gpr[9] = (ctx.gpr[8] < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_6 = (ctx.gpr[9] + ctx.gpr[7]);
|
|
aot_gpr_5 = (aot_gpr_6 + aot_gpr_5);
|
|
aot_gpr_4 = (ctx.gpr[8] | 0u);
|
|
aot_gpr_5 = (aot_gpr_4 | 0u);
|
|
aot_gpr_31 = (0x0889FCD4u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0065.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 829u, 0x0889FCD4u, 0x0890A5BCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0065_entry(rt, ctx, 613u, aot_mem);
|
|
#else
|
|
recomp_unit_0065_entry(rt, ctx, 613u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0065_entry, 65u, 613u, 0x0890A5BCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FCD4u) goto L_0889FCD4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FCD4:
|
|
aot_gpr_31 = (0x0889FCDCu);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B20934, 199u, 110u, 0x08B20934u>(ctx, &aot_mem, ctx.pc, ctx.hi, ctx.lo, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[28], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0199_entry, 199u, 110u, 0x08B20934u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FCDCu) goto L_0889FCDC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889FCDC:
|
|
ctx.gpr[19] = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25252)));
|
|
ctx.gpr[18] = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25256)));
|
|
aot_gpr_4 = (aot_gpr_2 | 0u);
|
|
aot_gpr_5 = (0u | 0u);
|
|
ctx.gpr[7] = (ctx.gpr[19] | 0u);
|
|
aot_gpr_31 = (0x0889FCF8u);
|
|
aot_gpr_6 = (ctx.gpr[18] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B60E5C, 215u, 177u, 0x08B60E5Cu>(ctx, &aot_mem, ctx.pc, ctx.hi, ctx.lo, aot_gpr_2, ctx.gpr[3], aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[9], ctx.gpr[10], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0215_entry, 215u, 177u, 0x08B60E5Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FCF8u) goto L_0889FCF8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889FCF8:
|
|
ctx.gpr[1] = (ctx.gpr[3] << 1u);
|
|
aot_gpr_4 = (aot_gpr_2 >> 31u);
|
|
aot_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(ctx.gpr[3]) >> 31u));
|
|
aot_gpr_4 = (ctx.gpr[1] | aot_gpr_4);
|
|
aot_gpr_6 = (aot_gpr_4 + ctx.gpr[18]);
|
|
ctx.gpr[7] = (aot_gpr_6 < ctx.gpr[18] ? 1u : 0u);
|
|
aot_gpr_4 = (ctx.gpr[7] + aot_gpr_5);
|
|
aot_gpr_5 = (aot_gpr_4 + ctx.gpr[19]);
|
|
aot_gpr_4 = (aot_gpr_6 | 0u);
|
|
aot_gpr_5 = (aot_gpr_4 | 0u);
|
|
aot_gpr_31 = (0x0889FD28u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0065.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 832u, 0x0889FD28u, 0x0890A484u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0065_entry(rt, ctx, 598u, aot_mem);
|
|
#else
|
|
recomp_unit_0065_entry(rt, ctx, 598u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0065_entry, 65u, 598u, 0x0890A484u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FD28u) goto L_0889FD28;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FD28:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 40u, 0x088A0238u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889FD30;
|
|
}
|
|
L_0889FD30:
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889FD3Cu);
|
|
aot_gpr_5 = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0105.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 834u, 0x0889FD3Cu, 0x089AB4FCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0105_entry(rt, ctx, 696u, aot_mem);
|
|
#else
|
|
recomp_unit_0105_entry(rt, ctx, 696u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0105_entry, 105u, 696u, 0x089AB4FCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FD3Cu) goto L_0889FD3C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FD3C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (ctx.gpr[18] | 0u);
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 119u, 0x088A08ECu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889FD44;
|
|
}
|
|
L_0889FD44:
|
|
aot_gpr_31 = (0x0889FD4Cu);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B20934, 199u, 110u, 0x08B20934u>(ctx, &aot_mem, ctx.pc, ctx.hi, ctx.lo, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[28], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0199_entry, 199u, 110u, 0x08B20934u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FD4Cu) goto L_0889FD4C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889FD4C:
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25244)));
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25248)));
|
|
aot_gpr_4 = (aot_gpr_2 | 0u);
|
|
aot_gpr_31 = (0x0889FD60u);
|
|
aot_gpr_5 = (0u | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B60E5C, 215u, 177u, 0x08B60E5Cu>(ctx, &aot_mem, ctx.pc, ctx.hi, ctx.lo, aot_gpr_2, ctx.gpr[3], aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[9], ctx.gpr[10], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0215_entry, 215u, 177u, 0x08B60E5Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FD60u) goto L_0889FD60;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889FD60:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25236)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25240)));
|
|
ctx.gpr[1] = (ctx.gpr[3] << 1u);
|
|
aot_gpr_6 = (aot_gpr_2 >> 31u);
|
|
ctx.gpr[7] = (static_cast<std::uint32_t>(static_cast<std::int32_t>(ctx.gpr[3]) >> 31u));
|
|
aot_gpr_6 = (ctx.gpr[1] | aot_gpr_6);
|
|
ctx.gpr[8] = (aot_gpr_6 + aot_gpr_4);
|
|
ctx.gpr[9] = (ctx.gpr[8] < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_6 = (ctx.gpr[9] + ctx.gpr[7]);
|
|
aot_gpr_5 = (aot_gpr_6 + aot_gpr_5);
|
|
aot_gpr_4 = (ctx.gpr[8] | 0u);
|
|
aot_gpr_5 = (aot_gpr_4 | 0u);
|
|
aot_gpr_31 = (0x0889FD98u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0065.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 838u, 0x0889FD98u, 0x0890A5BCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0065_entry(rt, ctx, 613u, aot_mem);
|
|
#else
|
|
recomp_unit_0065_entry(rt, ctx, 613u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0065_entry, 65u, 613u, 0x0890A5BCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FD98u) goto L_0889FD98;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FD98:
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((ctx.fpr[26] < ctx.fpr[22])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_0889FE04;
|
|
}
|
|
goto L_0889FDA8;
|
|
}
|
|
L_0889FDA8:
|
|
aot_gpr_31 = (0x0889FDB0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B20934, 199u, 110u, 0x08B20934u>(ctx, &aot_mem, ctx.pc, ctx.hi, ctx.lo, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[28], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0199_entry, 199u, 110u, 0x08B20934u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FDB0u) goto L_0889FDB0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889FDB0:
|
|
ctx.gpr[19] = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25252)));
|
|
ctx.gpr[18] = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25256)));
|
|
aot_gpr_4 = (aot_gpr_2 | 0u);
|
|
aot_gpr_5 = (0u | 0u);
|
|
ctx.gpr[7] = (ctx.gpr[19] | 0u);
|
|
aot_gpr_31 = (0x0889FDCCu);
|
|
aot_gpr_6 = (ctx.gpr[18] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B60E5C, 215u, 177u, 0x08B60E5Cu>(ctx, &aot_mem, ctx.pc, ctx.hi, ctx.lo, aot_gpr_2, ctx.gpr[3], aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[9], ctx.gpr[10], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0215_entry, 215u, 177u, 0x08B60E5Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FDCCu) goto L_0889FDCC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889FDCC:
|
|
ctx.gpr[1] = (ctx.gpr[3] << 1u);
|
|
aot_gpr_4 = (aot_gpr_2 >> 31u);
|
|
aot_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(ctx.gpr[3]) >> 31u));
|
|
aot_gpr_4 = (ctx.gpr[1] | aot_gpr_4);
|
|
aot_gpr_6 = (aot_gpr_4 + ctx.gpr[18]);
|
|
ctx.gpr[7] = (aot_gpr_6 < ctx.gpr[18] ? 1u : 0u);
|
|
aot_gpr_4 = (ctx.gpr[7] + aot_gpr_5);
|
|
aot_gpr_5 = (aot_gpr_4 + ctx.gpr[19]);
|
|
aot_gpr_4 = (aot_gpr_6 | 0u);
|
|
aot_gpr_5 = (aot_gpr_4 | 0u);
|
|
aot_gpr_31 = (0x0889FDFCu);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0065.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 842u, 0x0889FDFCu, 0x0890A484u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0065_entry(rt, ctx, 598u, aot_mem);
|
|
#else
|
|
recomp_unit_0065_entry(rt, ctx, 598u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0065_entry, 65u, 598u, 0x0890A484u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FDFCu) goto L_0889FDFC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FDFC:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 40u, 0x088A0238u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889FE04;
|
|
}
|
|
L_0889FE04:
|
|
aot_gpr_31 = (0x0889FE0Cu);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B20934, 199u, 110u, 0x08B20934u>(ctx, &aot_mem, ctx.pc, ctx.hi, ctx.lo, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[28], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0199_entry, 199u, 110u, 0x08B20934u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FE0Cu) goto L_0889FE0C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889FE0C:
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25228)));
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25232)));
|
|
aot_gpr_4 = (aot_gpr_2 | 0u);
|
|
aot_gpr_31 = (0x0889FE20u);
|
|
aot_gpr_5 = (0u | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B60E5C, 215u, 177u, 0x08B60E5Cu>(ctx, &aot_mem, ctx.pc, ctx.hi, ctx.lo, aot_gpr_2, ctx.gpr[3], aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[9], ctx.gpr[10], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0215_entry, 215u, 177u, 0x08B60E5Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FE20u) goto L_0889FE20;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889FE20:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25220)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25224)));
|
|
ctx.gpr[1] = (ctx.gpr[3] << 1u);
|
|
aot_gpr_6 = (aot_gpr_2 >> 31u);
|
|
ctx.gpr[7] = (static_cast<std::uint32_t>(static_cast<std::int32_t>(ctx.gpr[3]) >> 31u));
|
|
aot_gpr_6 = (ctx.gpr[1] | aot_gpr_6);
|
|
ctx.gpr[8] = (aot_gpr_6 + aot_gpr_4);
|
|
ctx.gpr[9] = (ctx.gpr[8] < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_6 = (ctx.gpr[9] + ctx.gpr[7]);
|
|
aot_gpr_5 = (aot_gpr_6 + aot_gpr_5);
|
|
aot_gpr_4 = (ctx.gpr[8] | 0u);
|
|
aot_gpr_5 = (aot_gpr_4 | 0u);
|
|
aot_gpr_31 = (0x0889FE58u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0065.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 846u, 0x0889FE58u, 0x0890A484u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0065_entry(rt, ctx, 598u, aot_mem);
|
|
#else
|
|
recomp_unit_0065_entry(rt, ctx, 598u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0065_entry, 65u, 598u, 0x0890A484u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FE58u) goto L_0889FE58;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FE58:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 40u, 0x088A0238u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889FE60;
|
|
}
|
|
L_0889FE60:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2192)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(1300)));
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FEA4;
|
|
}
|
|
goto L_0889FE70;
|
|
}
|
|
L_0889FE70:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(468)));
|
|
aot_gpr_4 = (aot_gpr_4 & 2048u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FEA4;
|
|
}
|
|
goto L_0889FE80;
|
|
}
|
|
L_0889FE80:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(456)));
|
|
aot_gpr_5 = (61440u << 16u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(468)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(456), aot_gpr_4);
|
|
aot_gpr_4 = (0u + static_cast<std::uint32_t>(-2049));
|
|
aot_gpr_4 = (aot_gpr_5 & aot_gpr_4);
|
|
aot_mem.aot_direct_store32(ctx.gpr[16] + static_cast<std::uint32_t>(468), aot_gpr_4);
|
|
goto L_0889FEA4;
|
|
L_0889FEA4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2228)));
|
|
aot_gpr_5 = (0u | 16u);
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 40u, 0x088A0238u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889FEB4;
|
|
}
|
|
L_0889FEB4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(2228)));
|
|
aot_gpr_5 = (0u | 17u);
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 40u, 0x088A0238u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889FEC4;
|
|
}
|
|
L_0889FEC4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_4 = (aot_gpr_4 & 2048u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FF04;
|
|
}
|
|
goto L_0889FED4;
|
|
}
|
|
L_0889FED4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_4 = (aot_gpr_4 & 512u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FF04;
|
|
}
|
|
goto L_0889FEE4;
|
|
}
|
|
L_0889FEE4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_4 = (aot_gpr_4 & 8192u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FF04;
|
|
}
|
|
goto L_0889FEF4;
|
|
}
|
|
L_0889FEF4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_4 = (aot_gpr_4 & 4096u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FF20;
|
|
}
|
|
goto L_0889FF04;
|
|
}
|
|
L_0889FF04:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(460)));
|
|
aot_gpr_5 = (64u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FF80;
|
|
}
|
|
goto L_0889FF18;
|
|
}
|
|
L_0889FF18:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 7u, 0x088A0048u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889FF20;
|
|
}
|
|
L_0889FF20:
|
|
aot_gpr_31 = (0x0889FF28u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B20934, 199u, 110u, 0x08B20934u>(ctx, &aot_mem, ctx.pc, ctx.hi, ctx.lo, aot_gpr_2, aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[28], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0199_entry, 199u, 110u, 0x08B20934u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FF28u) goto L_0889FF28;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889FF28:
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25212)));
|
|
aot_gpr_6 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25216)));
|
|
aot_gpr_4 = (aot_gpr_2 | 0u);
|
|
aot_gpr_31 = (0x0889FF3Cu);
|
|
aot_gpr_5 = (0u | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B60E5C, 215u, 177u, 0x08B60E5Cu>(ctx, &aot_mem, ctx.pc, ctx.hi, ctx.lo, aot_gpr_2, ctx.gpr[3], aot_gpr_4, aot_gpr_5, aot_gpr_6, ctx.gpr[7], ctx.gpr[9], ctx.gpr[10], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0215_entry, 215u, 177u, 0x08B60E5Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FF3Cu) goto L_0889FF3C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_0889FF3C:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25204)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-25208)));
|
|
ctx.gpr[1] = (ctx.gpr[3] << 1u);
|
|
aot_gpr_6 = (aot_gpr_2 >> 31u);
|
|
ctx.gpr[7] = (static_cast<std::uint32_t>(static_cast<std::int32_t>(ctx.gpr[3]) >> 31u));
|
|
aot_gpr_6 = (ctx.gpr[1] | aot_gpr_6);
|
|
ctx.gpr[8] = (aot_gpr_6 + aot_gpr_4);
|
|
ctx.gpr[9] = (ctx.gpr[8] < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_6 = (ctx.gpr[9] + ctx.gpr[7]);
|
|
aot_gpr_5 = (aot_gpr_6 + aot_gpr_5);
|
|
aot_gpr_4 = (ctx.gpr[8] | 0u);
|
|
aot_gpr_5 = (aot_gpr_4 | 0u);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
aot_gpr_31 = (0x0889FF78u);
|
|
aot_gpr_6 = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0105.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 861u, 0x0889FF78u, 0x089AB1F0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0105_entry(rt, ctx, 654u, aot_mem);
|
|
#else
|
|
recomp_unit_0105_entry(rt, ctx, 654u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0105_entry, 105u, 654u, 0x089AB1F0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FF78u) goto L_0889FF78;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FF78:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_2 = (ctx.gpr[18] | 0u);
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 119u, 0x088A08ECu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889FF80;
|
|
}
|
|
L_0889FF80:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[16] + static_cast<std::uint32_t>(1360)));
|
|
{ const bool branch_taken = aot_gpr_4 != ctx.gpr[19];
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 6u, 0x088A0040u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889FF8C;
|
|
}
|
|
L_0889FF8C:
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(aot_mem.aot_direct_load8(ctx.gpr[16] + static_cast<std::uint32_t>(1929))))));
|
|
aot_gpr_5 = (aot_gpr_4 << 5u);
|
|
aot_gpr_4 = (aot_gpr_4 << 2u);
|
|
aot_gpr_4 = (aot_gpr_5 - aot_gpr_4);
|
|
aot_gpr_4 = (ctx.gpr[16] + aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(1396));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_4) < 20 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FFE8;
|
|
}
|
|
goto L_0889FFB4;
|
|
}
|
|
L_0889FFB4:
|
|
aot_gpr_31 = (0x0889FFBCu);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0067.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 865u, 0x0889FFBCu, 0x08910150u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0067_entry(rt, ctx, 20u, aot_mem);
|
|
#else
|
|
recomp_unit_0067_entry(rt, ctx, 20u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0067_entry, 67u, 20u, 0x08910150u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FFBCu) goto L_0889FFBC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FFBC:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FFF4;
|
|
}
|
|
goto L_0889FFC4;
|
|
}
|
|
L_0889FFC4:
|
|
aot_gpr_31 = (0x0889FFCCu);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0067.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 867u, 0x0889FFCCu, 0x08910150u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0067_entry(rt, ctx, 20u, aot_mem);
|
|
#else
|
|
recomp_unit_0067_entry(rt, ctx, 20u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0067_entry, 67u, 20u, 0x08910150u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FFCCu) goto L_0889FFCC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FFCC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_2 + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_4 = (aot_gpr_4 & 14u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ 8u);
|
|
aot_gpr_4 = (aot_gpr_4 < static_cast<std::uint32_t>(1) ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_0889FFF4;
|
|
}
|
|
goto L_0889FFE8;
|
|
}
|
|
L_0889FFE8:
|
|
aot_gpr_4 = (16576u << 16u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.fpr[26] = std::bit_cast<float>(aot_gpr_4);
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 7u, 0x088A0048u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
goto L_0889FFF4;
|
|
}
|
|
L_0889FFF4:
|
|
aot_gpr_31 = (0x0889FFFCu);
|
|
aot_gpr_4 = (ctx.gpr[16] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0038->0067.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0038_entry, 870u, 0x0889FFFCu, 0x08910150u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0067_entry(rt, ctx, 20u, aot_mem);
|
|
#else
|
|
recomp_unit_0067_entry(rt, ctx, 20u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0067_entry, 67u, 20u, 0x08910150u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x0889FFFCu) goto L_0889FFFC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_0889FFFC:
|
|
{ const bool branch_taken = aot_gpr_2 == 0u;
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 5u, 0x088A0034u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0039_entry, 39u, 2u, 0x088A0004u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()); AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
}
|
|
|
|
#undef AOT_REGCACHE_SYNC_IN
|
|
#undef AOT_REGCACHE_SYNC_OUT
|
|
|
|
void recomp_unit_0038(Runtime &rt, AllegrexContext &ctx) {
|
|
auto aot_mem = rt.memory().aot_fast_view();
|
|
recomp_unit_0038_entry(rt, ctx, 0u, aot_mem);
|
|
}
|
|
|
|
void register_generated_unit_38(Runtime &runtime) {
|
|
runtime.register_generated_unit(38u, 0x0889C000u, 16384u, &recomp_unit_0038, &recomp_unit_0038_entry);
|
|
// PSPRECOMP_V812_COMPACT_REGISTRATION: same entry set, looped once in Runtime instead of source-expanded calls.
|
|
runtime.register_generated_entry_mask(0x0889C000u, &recomp_unit_0038, "recomp_unit_0038",
|
|
kEntryMasks_recomp_unit_0038, 64u);
|
|
}
|
|
} // namespace psprecomp
|