mirror of
https://github.com/jessicanataliagta/PSPRecomp
synced 2026-09-26 16:49:34 -04:00
96405fbb47
otimizaçoes round 20
10607 lines
520 KiB
C++
10607 lines
520 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_0184[64] = {
|
|
0x120002040A940921ull, 0x54A04000A004C820ull, 0x1004024808040800ull, 0x0010100090004090ull,
|
|
0x4524010081904024ull, 0x0002401060901445ull, 0xA509004012008010ull, 0x281A82400402A05Aull,
|
|
0x501200204804C120ull, 0x0040900098240503ull, 0x4004182405115149ull, 0x1024040C120281A2ull,
|
|
0x4000830480A01A40ull, 0x54A8008020210000ull, 0x18C06A2004800106ull, 0x0120020802401004ull,
|
|
0x1A0900206090140Dull, 0x01042401030480A0ull, 0x1202806424022211ull, 0x0812008204A4010Cull,
|
|
0x0408240040852002ull, 0x0348080021200204ull, 0x06090140D2401020ull, 0x418084140D002401ull,
|
|
0x0900420048080900ull, 0x18900418084140D0ull, 0x00401200830480A0ull, 0x9014030900102024ull,
|
|
0x0200548444802060ull, 0x1004802000200540ull, 0xA019240105112008ull, 0x0041111200830480ull,
|
|
0x88A10A10A10A1089ull, 0x20C1202806248020ull, 0x000A004C82012000ull, 0x1200804080054A04ull,
|
|
0x4140350000000000ull, 0x0041080240041808ull, 0x2008000240400200ull, 0x2041800009001001ull,
|
|
0x4001200204001200ull, 0x202806A891120020ull, 0x40000824890040C1ull, 0x0B444AAD0A149000ull,
|
|
0x912008004284004Aull, 0x0888900412448020ull, 0x4010491200855202ull, 0x0000900209248922ull,
|
|
0x0400120081602020ull, 0x2451400200824890ull, 0x0C12028061200820ull, 0x2400844040812002ull,
|
|
0x4890040C12028068ull, 0x2115520204480082ull, 0x0002400102508900ull, 0x8020855200808020ull,
|
|
0x400419048020D284ull, 0x40040C1202806902ull, 0x20A824010A404082ull, 0x8020455240042920ull,
|
|
0x0040480201010004ull, 0x018194C240082489ull, 0x114048001030480Aull, 0x050545469A8292A3ull,
|
|
};
|
|
static constexpr std::uint16_t kEntryBases_recomp_unit_0184[64] = {
|
|
1u, 14u, 27u, 35u, 42u, 55u, 67u, 78u, 94u, 106u, 118u, 134u, 148u, 160u, 170u, 184u,
|
|
192u, 207u, 218u, 232u, 244u, 254u, 264u, 277u, 290u, 299u, 313u, 323u, 335u, 347u, 355u, 369u,
|
|
380u, 397u, 410u, 419u, 430u, 437u, 446u, 452u, 460u, 467u, 481u, 492u, 511u, 523u, 535u, 549u,
|
|
561u, 570u, 583u, 595u, 605u, 619u, 633u, 642u, 653u, 667u, 680u, 693u, 707u, 714u, 730u, 742u,
|
|
};
|
|
void recomp_unit_0184_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,16,29,31,17 fprs=12,13,22,14 gpr_occ=4835 fpr_occ=352 gpr_total=6206 fpr_total=454
|
|
std::uint32_t aot_gpr_4 = ctx.gpr[4];
|
|
std::uint32_t aot_gpr_5 = ctx.gpr[5];
|
|
std::uint32_t aot_gpr_16 = ctx.gpr[16];
|
|
std::uint32_t aot_gpr_29 = ctx.gpr[29];
|
|
std::uint32_t aot_gpr_31 = ctx.gpr[31];
|
|
std::uint32_t aot_gpr_17 = ctx.gpr[17];
|
|
float aot_fpr_12 = ctx.fpr[12];
|
|
float aot_fpr_13 = ctx.fpr[13];
|
|
float aot_fpr_22 = ctx.fpr[22];
|
|
float aot_fpr_14 = ctx.fpr[14];
|
|
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[16] = aot_gpr_16; ctx.gpr[29] = aot_gpr_29; ctx.gpr[31] = aot_gpr_31; ctx.gpr[17] = aot_gpr_17; ctx.fpr[12] = aot_fpr_12; ctx.fpr[13] = aot_fpr_13; ctx.fpr[22] = aot_fpr_22; ctx.fpr[14] = aot_fpr_14; } } 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_16 = ctx.gpr[16]; aot_gpr_29 = ctx.gpr[29]; aot_gpr_31 = ctx.gpr[31]; aot_gpr_17 = ctx.gpr[17]; aot_fpr_12 = ctx.fpr[12]; aot_fpr_13 = ctx.fpr[13]; aot_fpr_22 = ctx.fpr[22]; aot_fpr_14 = ctx.fpr[14]; } } 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 - 0x08AE4000u;
|
|
entry_id = 0u;
|
|
if (entry_delta < 16364u && (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_0184[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_0184[entry_group] +
|
|
std::popcount(entry_mask & (entry_bit - 1ull)));
|
|
}
|
|
}
|
|
}
|
|
switch (entry_id) {
|
|
case 1u: goto L_08AE4000;
|
|
case 2u: goto L_08AE4014;
|
|
case 3u: goto L_08AE4020;
|
|
case 4u: goto L_08AE402C;
|
|
case 5u: goto L_08AE4048;
|
|
case 6u: goto L_08AE4050;
|
|
case 7u: goto L_08AE405C;
|
|
case 8u: goto L_08AE4064;
|
|
case 9u: goto L_08AE406C;
|
|
case 10u: goto L_08AE4088;
|
|
case 11u: goto L_08AE40A4;
|
|
case 12u: goto L_08AE40E4;
|
|
case 13u: goto L_08AE40F0;
|
|
case 14u: goto L_08AE4114;
|
|
case 15u: goto L_08AE412C;
|
|
case 16u: goto L_08AE4138;
|
|
case 17u: goto L_08AE413C;
|
|
case 18u: goto L_08AE4148;
|
|
case 19u: goto L_08AE4174;
|
|
case 20u: goto L_08AE417C;
|
|
case 21u: goto L_08AE41B8;
|
|
case 22u: goto L_08AE41D4;
|
|
case 23u: goto L_08AE41DC;
|
|
case 24u: goto L_08AE41E8;
|
|
case 25u: goto L_08AE41F0;
|
|
case 26u: goto L_08AE41F8;
|
|
case 27u: goto L_08AE422C;
|
|
case 28u: goto L_08AE4248;
|
|
case 29u: goto L_08AE426C;
|
|
case 30u: goto L_08AE428C;
|
|
case 31u: goto L_08AE4298;
|
|
case 32u: goto L_08AE42A4;
|
|
case 33u: goto L_08AE42C8;
|
|
case 34u: goto L_08AE42F0;
|
|
case 35u: goto L_08AE4310;
|
|
case 36u: goto L_08AE431C;
|
|
case 37u: goto L_08AE4338;
|
|
case 38u: goto L_08AE4370;
|
|
case 39u: goto L_08AE437C;
|
|
case 40u: goto L_08AE43B0;
|
|
case 41u: goto L_08AE43D0;
|
|
case 42u: goto L_08AE4408;
|
|
case 43u: goto L_08AE4414;
|
|
case 44u: goto L_08AE4438;
|
|
case 45u: goto L_08AE4450;
|
|
case 46u: goto L_08AE445C;
|
|
case 47u: goto L_08AE4460;
|
|
case 48u: goto L_08AE447C;
|
|
case 49u: goto L_08AE44A0;
|
|
case 50u: goto L_08AE44C8;
|
|
case 51u: goto L_08AE44D4;
|
|
case 52u: goto L_08AE44E0;
|
|
case 53u: goto L_08AE44E8;
|
|
case 54u: goto L_08AE44F8;
|
|
case 55u: goto L_08AE4500;
|
|
case 56u: goto L_08AE4508;
|
|
case 57u: goto L_08AE4518;
|
|
case 58u: goto L_08AE4528;
|
|
case 59u: goto L_08AE4530;
|
|
case 60u: goto L_08AE4550;
|
|
case 61u: goto L_08AE455C;
|
|
case 62u: goto L_08AE4574;
|
|
case 63u: goto L_08AE4578;
|
|
case 64u: goto L_08AE4590;
|
|
case 65u: goto L_08AE45B8;
|
|
case 66u: goto L_08AE45C4;
|
|
case 67u: goto L_08AE4610;
|
|
case 68u: goto L_08AE463C;
|
|
case 69u: goto L_08AE4664;
|
|
case 70u: goto L_08AE4670;
|
|
case 71u: goto L_08AE4698;
|
|
case 72u: goto L_08AE46C0;
|
|
case 73u: goto L_08AE46CC;
|
|
case 74u: goto L_08AE46E0;
|
|
case 75u: goto L_08AE46E8;
|
|
case 76u: goto L_08AE46F4;
|
|
case 77u: goto L_08AE46FC;
|
|
case 78u: goto L_08AE4704;
|
|
case 79u: goto L_08AE470C;
|
|
case 80u: goto L_08AE4710;
|
|
case 81u: goto L_08AE4718;
|
|
case 82u: goto L_08AE4734;
|
|
case 83u: goto L_08AE473C;
|
|
case 84u: goto L_08AE4744;
|
|
case 85u: goto L_08AE4768;
|
|
case 86u: goto L_08AE4798;
|
|
case 87u: goto L_08AE47A4;
|
|
case 88u: goto L_08AE47BC;
|
|
case 89u: goto L_08AE47C4;
|
|
case 90u: goto L_08AE47CC;
|
|
case 91u: goto L_08AE47D0;
|
|
case 92u: goto L_08AE47EC;
|
|
case 93u: goto L_08AE47F4;
|
|
case 94u: goto L_08AE4814;
|
|
case 95u: goto L_08AE4820;
|
|
case 96u: goto L_08AE4838;
|
|
case 97u: goto L_08AE483C;
|
|
case 98u: goto L_08AE4848;
|
|
case 99u: goto L_08AE486C;
|
|
case 100u: goto L_08AE4878;
|
|
case 101u: goto L_08AE4894;
|
|
case 102u: goto L_08AE48C4;
|
|
case 103u: goto L_08AE48D0;
|
|
case 104u: goto L_08AE48F0;
|
|
case 105u: goto L_08AE48F8;
|
|
case 106u: goto L_08AE4900;
|
|
case 107u: goto L_08AE4904;
|
|
case 108u: goto L_08AE4920;
|
|
case 109u: goto L_08AE4928;
|
|
case 110u: goto L_08AE4948;
|
|
case 111u: goto L_08AE4954;
|
|
case 112u: goto L_08AE496C;
|
|
case 113u: goto L_08AE4970;
|
|
case 114u: goto L_08AE497C;
|
|
case 115u: goto L_08AE49B0;
|
|
case 116u: goto L_08AE49BC;
|
|
case 117u: goto L_08AE49D8;
|
|
case 118u: goto L_08AE4A00;
|
|
case 119u: goto L_08AE4A0C;
|
|
case 120u: goto L_08AE4A18;
|
|
case 121u: goto L_08AE4A20;
|
|
case 122u: goto L_08AE4A30;
|
|
case 123u: goto L_08AE4A38;
|
|
case 124u: goto L_08AE4A40;
|
|
case 125u: goto L_08AE4A50;
|
|
case 126u: goto L_08AE4A60;
|
|
case 127u: goto L_08AE4A68;
|
|
case 128u: goto L_08AE4A88;
|
|
case 129u: goto L_08AE4A94;
|
|
case 130u: goto L_08AE4AAC;
|
|
case 131u: goto L_08AE4AB0;
|
|
case 132u: goto L_08AE4AC8;
|
|
case 133u: goto L_08AE4AF8;
|
|
case 134u: goto L_08AE4B04;
|
|
case 135u: goto L_08AE4B14;
|
|
case 136u: goto L_08AE4B1C;
|
|
case 137u: goto L_08AE4B20;
|
|
case 138u: goto L_08AE4B3C;
|
|
case 139u: goto L_08AE4B44;
|
|
case 140u: goto L_08AE4B64;
|
|
case 141u: goto L_08AE4B70;
|
|
case 142u: goto L_08AE4B88;
|
|
case 143u: goto L_08AE4B8C;
|
|
case 144u: goto L_08AE4BA8;
|
|
case 145u: goto L_08AE4BC8;
|
|
case 146u: goto L_08AE4BD4;
|
|
case 147u: goto L_08AE4BF0;
|
|
case 148u: goto L_08AE4C18;
|
|
case 149u: goto L_08AE4C24;
|
|
case 150u: goto L_08AE4C2C;
|
|
case 151u: goto L_08AE4C30;
|
|
case 152u: goto L_08AE4C54;
|
|
case 153u: goto L_08AE4C5C;
|
|
case 154u: goto L_08AE4C7C;
|
|
case 155u: goto L_08AE4C88;
|
|
case 156u: goto L_08AE4CA0;
|
|
case 157u: goto L_08AE4CA4;
|
|
case 158u: goto L_08AE4CBC;
|
|
case 159u: goto L_08AE4CF8;
|
|
case 160u: goto L_08AE4D40;
|
|
case 161u: goto L_08AE4D54;
|
|
case 162u: goto L_08AE4D74;
|
|
case 163u: goto L_08AE4D9C;
|
|
case 164u: goto L_08AE4DCC;
|
|
case 165u: goto L_08AE4DD4;
|
|
case 166u: goto L_08AE4DDC;
|
|
case 167u: goto L_08AE4DE8;
|
|
case 168u: goto L_08AE4DF0;
|
|
case 169u: goto L_08AE4DF8;
|
|
case 170u: goto L_08AE4E04;
|
|
case 171u: goto L_08AE4E08;
|
|
case 172u: goto L_08AE4E20;
|
|
case 173u: goto L_08AE4E5C;
|
|
case 174u: goto L_08AE4E68;
|
|
case 175u: goto L_08AE4E94;
|
|
case 176u: goto L_08AE4EA4;
|
|
case 177u: goto L_08AE4EAC;
|
|
case 178u: goto L_08AE4EB4;
|
|
case 179u: goto L_08AE4EB8;
|
|
case 180u: goto L_08AE4ED8;
|
|
case 181u: goto L_08AE4EDC;
|
|
case 182u: goto L_08AE4EEC;
|
|
case 183u: goto L_08AE4EF0;
|
|
case 184u: goto L_08AE4F08;
|
|
case 185u: goto L_08AE4F30;
|
|
case 186u: goto L_08AE4F58;
|
|
case 187u: goto L_08AE4F64;
|
|
case 188u: goto L_08AE4F8C;
|
|
case 189u: goto L_08AE4FA4;
|
|
case 190u: goto L_08AE4FD4;
|
|
case 191u: goto L_08AE4FE0;
|
|
case 192u: goto L_08AE5000;
|
|
case 193u: goto L_08AE5008;
|
|
case 194u: goto L_08AE500C;
|
|
case 195u: goto L_08AE5028;
|
|
case 196u: goto L_08AE5030;
|
|
case 197u: goto L_08AE5050;
|
|
case 198u: goto L_08AE505C;
|
|
case 199u: goto L_08AE5074;
|
|
case 200u: goto L_08AE5078;
|
|
case 201u: goto L_08AE5094;
|
|
case 202u: goto L_08AE50C0;
|
|
case 203u: goto L_08AE50CC;
|
|
case 204u: goto L_08AE50E4;
|
|
case 205u: goto L_08AE50EC;
|
|
case 206u: goto L_08AE50F0;
|
|
case 207u: goto L_08AE5114;
|
|
case 208u: goto L_08AE511C;
|
|
case 209u: goto L_08AE513C;
|
|
case 210u: goto L_08AE5148;
|
|
case 211u: goto L_08AE5160;
|
|
case 212u: goto L_08AE5164;
|
|
case 213u: goto L_08AE5180;
|
|
case 214u: goto L_08AE51A8;
|
|
case 215u: goto L_08AE51B4;
|
|
case 216u: goto L_08AE51C8;
|
|
case 217u: goto L_08AE51E0;
|
|
case 218u: goto L_08AE5200;
|
|
case 219u: goto L_08AE5210;
|
|
case 220u: goto L_08AE5224;
|
|
case 221u: goto L_08AE5234;
|
|
case 222u: goto L_08AE5244;
|
|
case 223u: goto L_08AE5268;
|
|
case 224u: goto L_08AE5274;
|
|
case 225u: goto L_08AE5288;
|
|
case 226u: goto L_08AE5294;
|
|
case 227u: goto L_08AE5298;
|
|
case 228u: goto L_08AE52BC;
|
|
case 229u: goto L_08AE52C4;
|
|
case 230u: goto L_08AE52E4;
|
|
case 231u: goto L_08AE52F0;
|
|
case 232u: goto L_08AE5308;
|
|
case 233u: goto L_08AE530C;
|
|
case 234u: goto L_08AE5320;
|
|
case 235u: goto L_08AE5348;
|
|
case 236u: goto L_08AE5354;
|
|
case 237u: goto L_08AE535C;
|
|
case 238u: goto L_08AE5368;
|
|
case 239u: goto L_08AE5384;
|
|
case 240u: goto L_08AE539C;
|
|
case 241u: goto L_08AE53C4;
|
|
case 242u: goto L_08AE53D0;
|
|
case 243u: goto L_08AE53EC;
|
|
case 244u: goto L_08AE5404;
|
|
case 245u: goto L_08AE5434;
|
|
case 246u: goto L_08AE5440;
|
|
case 247u: goto L_08AE5448;
|
|
case 248u: goto L_08AE545C;
|
|
case 249u: goto L_08AE5478;
|
|
case 250u: goto L_08AE54A8;
|
|
case 251u: goto L_08AE54B4;
|
|
case 252u: goto L_08AE54CC;
|
|
case 253u: goto L_08AE54E8;
|
|
case 254u: goto L_08AE5508;
|
|
case 255u: goto L_08AE5524;
|
|
case 256u: goto L_08AE5554;
|
|
case 257u: goto L_08AE5560;
|
|
case 258u: goto L_08AE5574;
|
|
case 259u: goto L_08AE55AC;
|
|
case 260u: goto L_08AE55CC;
|
|
case 261u: goto L_08AE55D8;
|
|
case 262u: goto L_08AE55E0;
|
|
case 263u: goto L_08AE55E4;
|
|
case 264u: goto L_08AE5614;
|
|
case 265u: goto L_08AE5630;
|
|
case 266u: goto L_08AE5658;
|
|
case 267u: goto L_08AE5664;
|
|
case 268u: goto L_08AE5670;
|
|
case 269u: goto L_08AE5678;
|
|
case 270u: goto L_08AE567C;
|
|
case 271u: goto L_08AE5698;
|
|
case 272u: goto L_08AE56A0;
|
|
case 273u: goto L_08AE56C0;
|
|
case 274u: goto L_08AE56CC;
|
|
case 275u: goto L_08AE56E4;
|
|
case 276u: goto L_08AE56E8;
|
|
case 277u: goto L_08AE5700;
|
|
case 278u: goto L_08AE5728;
|
|
case 279u: goto L_08AE5734;
|
|
case 280u: goto L_08AE5760;
|
|
case 281u: goto L_08AE5768;
|
|
case 282u: goto L_08AE576C;
|
|
case 283u: goto L_08AE5788;
|
|
case 284u: goto L_08AE5790;
|
|
case 285u: goto L_08AE57A8;
|
|
case 286u: goto L_08AE57BC;
|
|
case 287u: goto L_08AE57DC;
|
|
case 288u: goto L_08AE57E0;
|
|
case 289u: goto L_08AE57F8;
|
|
case 290u: goto L_08AE5820;
|
|
case 291u: goto L_08AE582C;
|
|
case 292u: goto L_08AE584C;
|
|
case 293u: goto L_08AE586C;
|
|
case 294u: goto L_08AE5878;
|
|
case 295u: goto L_08AE58A4;
|
|
case 296u: goto L_08AE58B8;
|
|
case 297u: goto L_08AE58E0;
|
|
case 298u: goto L_08AE58EC;
|
|
case 299u: goto L_08AE5910;
|
|
case 300u: goto L_08AE5918;
|
|
case 301u: goto L_08AE591C;
|
|
case 302u: goto L_08AE5938;
|
|
case 303u: goto L_08AE5940;
|
|
case 304u: goto L_08AE5958;
|
|
case 305u: goto L_08AE596C;
|
|
case 306u: goto L_08AE598C;
|
|
case 307u: goto L_08AE5990;
|
|
case 308u: goto L_08AE59A8;
|
|
case 309u: goto L_08AE59D0;
|
|
case 310u: goto L_08AE59DC;
|
|
case 311u: goto L_08AE59EC;
|
|
case 312u: goto L_08AE59F0;
|
|
case 313u: goto L_08AE5A14;
|
|
case 314u: goto L_08AE5A1C;
|
|
case 315u: goto L_08AE5A3C;
|
|
case 316u: goto L_08AE5A48;
|
|
case 317u: goto L_08AE5A60;
|
|
case 318u: goto L_08AE5A64;
|
|
case 319u: goto L_08AE5A7C;
|
|
case 320u: goto L_08AE5AA4;
|
|
case 321u: goto L_08AE5AB0;
|
|
case 322u: goto L_08AE5AD8;
|
|
case 323u: goto L_08AE5B08;
|
|
case 324u: goto L_08AE5B14;
|
|
case 325u: goto L_08AE5B34;
|
|
case 326u: goto L_08AE5B50;
|
|
case 327u: goto L_08AE5B80;
|
|
case 328u: goto L_08AE5B8C;
|
|
case 329u: goto L_08AE5BA0;
|
|
case 330u: goto L_08AE5BA4;
|
|
case 331u: goto L_08AE5BC8;
|
|
case 332u: goto L_08AE5BD0;
|
|
case 333u: goto L_08AE5BF0;
|
|
case 334u: goto L_08AE5BFC;
|
|
case 335u: goto L_08AE5C14;
|
|
case 336u: goto L_08AE5C18;
|
|
case 337u: goto L_08AE5C34;
|
|
case 338u: goto L_08AE5C5C;
|
|
case 339u: goto L_08AE5C68;
|
|
case 340u: goto L_08AE5C78;
|
|
case 341u: goto L_08AE5C88;
|
|
case 342u: goto L_08AE5C9C;
|
|
case 343u: goto L_08AE5CA8;
|
|
case 344u: goto L_08AE5CB0;
|
|
case 345u: goto L_08AE5CB8;
|
|
case 346u: goto L_08AE5CE4;
|
|
case 347u: goto L_08AE5D18;
|
|
case 348u: goto L_08AE5D20;
|
|
case 349u: goto L_08AE5D28;
|
|
case 350u: goto L_08AE5D54;
|
|
case 351u: goto L_08AE5D94;
|
|
case 352u: goto L_08AE5DBC;
|
|
case 353u: goto L_08AE5DC8;
|
|
case 354u: goto L_08AE5DF0;
|
|
case 355u: goto L_08AE5E0C;
|
|
case 356u: goto L_08AE5E34;
|
|
case 357u: goto L_08AE5E40;
|
|
case 358u: goto L_08AE5E50;
|
|
case 359u: goto L_08AE5E60;
|
|
case 360u: goto L_08AE5E68;
|
|
case 361u: goto L_08AE5E80;
|
|
case 362u: goto L_08AE5EA8;
|
|
case 363u: goto L_08AE5EB4;
|
|
case 364u: goto L_08AE5EC0;
|
|
case 365u: goto L_08AE5ECC;
|
|
case 366u: goto L_08AE5ED0;
|
|
case 367u: goto L_08AE5EF4;
|
|
case 368u: goto L_08AE5EFC;
|
|
case 369u: goto L_08AE5F1C;
|
|
case 370u: goto L_08AE5F28;
|
|
case 371u: goto L_08AE5F40;
|
|
case 372u: goto L_08AE5F44;
|
|
case 373u: goto L_08AE5F5C;
|
|
case 374u: goto L_08AE5F84;
|
|
case 375u: goto L_08AE5F90;
|
|
case 376u: goto L_08AE5FA0;
|
|
case 377u: goto L_08AE5FB0;
|
|
case 378u: goto L_08AE5FC0;
|
|
case 379u: goto L_08AE5FD8;
|
|
case 380u: goto L_08AE6000;
|
|
case 381u: goto L_08AE600C;
|
|
case 382u: goto L_08AE601C;
|
|
case 383u: goto L_08AE6030;
|
|
case 384u: goto L_08AE6044;
|
|
case 385u: goto L_08AE604C;
|
|
case 386u: goto L_08AE6060;
|
|
case 387u: goto L_08AE6074;
|
|
case 388u: goto L_08AE607C;
|
|
case 389u: goto L_08AE6090;
|
|
case 390u: goto L_08AE60A4;
|
|
case 391u: goto L_08AE60AC;
|
|
case 392u: goto L_08AE60C0;
|
|
case 393u: goto L_08AE60D4;
|
|
case 394u: goto L_08AE60DC;
|
|
case 395u: goto L_08AE60EC;
|
|
case 396u: goto L_08AE60FC;
|
|
case 397u: goto L_08AE6114;
|
|
case 398u: goto L_08AE613C;
|
|
case 399u: goto L_08AE6148;
|
|
case 400u: goto L_08AE6154;
|
|
case 401u: goto L_08AE6164;
|
|
case 402u: goto L_08AE6168;
|
|
case 403u: goto L_08AE618C;
|
|
case 404u: goto L_08AE6194;
|
|
case 405u: goto L_08AE61B4;
|
|
case 406u: goto L_08AE61C0;
|
|
case 407u: goto L_08AE61D8;
|
|
case 408u: goto L_08AE61DC;
|
|
case 409u: goto L_08AE61F4;
|
|
case 410u: goto L_08AE6234;
|
|
case 411u: goto L_08AE6240;
|
|
case 412u: goto L_08AE6264;
|
|
case 413u: goto L_08AE627C;
|
|
case 414u: goto L_08AE6288;
|
|
case 415u: goto L_08AE628C;
|
|
case 416u: goto L_08AE6298;
|
|
case 417u: goto L_08AE62C4;
|
|
case 418u: goto L_08AE62CC;
|
|
case 419u: goto L_08AE6308;
|
|
case 420u: goto L_08AE6324;
|
|
case 421u: goto L_08AE632C;
|
|
case 422u: goto L_08AE6338;
|
|
case 423u: goto L_08AE6340;
|
|
case 424u: goto L_08AE6348;
|
|
case 425u: goto L_08AE637C;
|
|
case 426u: goto L_08AE6398;
|
|
case 427u: goto L_08AE63BC;
|
|
case 428u: goto L_08AE63E4;
|
|
case 429u: goto L_08AE63F0;
|
|
case 430u: goto L_08AE64A0;
|
|
case 431u: goto L_08AE64A8;
|
|
case 432u: goto L_08AE64B0;
|
|
case 433u: goto L_08AE64B4;
|
|
case 434u: goto L_08AE64D8;
|
|
case 435u: goto L_08AE64E0;
|
|
case 436u: goto L_08AE64F8;
|
|
case 437u: goto L_08AE650C;
|
|
case 438u: goto L_08AE652C;
|
|
case 439u: goto L_08AE6530;
|
|
case 440u: goto L_08AE6548;
|
|
case 441u: goto L_08AE6578;
|
|
case 442u: goto L_08AE6584;
|
|
case 443u: goto L_08AE65AC;
|
|
case 444u: goto L_08AE65C0;
|
|
case 445u: goto L_08AE65D8;
|
|
case 446u: goto L_08AE6624;
|
|
case 447u: goto L_08AE6658;
|
|
case 448u: goto L_08AE6678;
|
|
case 449u: goto L_08AE6684;
|
|
case 450u: goto L_08AE66CC;
|
|
case 451u: goto L_08AE66F4;
|
|
case 452u: goto L_08AE6700;
|
|
case 453u: goto L_08AE6730;
|
|
case 454u: goto L_08AE6760;
|
|
case 455u: goto L_08AE676C;
|
|
case 456u: goto L_08AE67BC;
|
|
case 457u: goto L_08AE67C0;
|
|
case 458u: goto L_08AE67D8;
|
|
case 459u: goto L_08AE67F4;
|
|
case 460u: goto L_08AE6824;
|
|
case 461u: goto L_08AE6830;
|
|
case 462u: goto L_08AE6868;
|
|
case 463u: goto L_08AE6884;
|
|
case 464u: goto L_08AE68B4;
|
|
case 465u: goto L_08AE68C0;
|
|
case 466u: goto L_08AE68F8;
|
|
case 467u: goto L_08AE6914;
|
|
case 468u: goto L_08AE6944;
|
|
case 469u: goto L_08AE6950;
|
|
case 470u: goto L_08AE6960;
|
|
case 471u: goto L_08AE6970;
|
|
case 472u: goto L_08AE697C;
|
|
case 473u: goto L_08AE698C;
|
|
case 474u: goto L_08AE6994;
|
|
case 475u: goto L_08AE699C;
|
|
case 476u: goto L_08AE69A4;
|
|
case 477u: goto L_08AE69A8;
|
|
case 478u: goto L_08AE69CC;
|
|
case 479u: goto L_08AE69D4;
|
|
case 480u: goto L_08AE69F4;
|
|
case 481u: goto L_08AE6A00;
|
|
case 482u: goto L_08AE6A18;
|
|
case 483u: goto L_08AE6A1C;
|
|
case 484u: goto L_08AE6A38;
|
|
case 485u: goto L_08AE6A60;
|
|
case 486u: goto L_08AE6A6C;
|
|
case 487u: goto L_08AE6A7C;
|
|
case 488u: goto L_08AE6A88;
|
|
case 489u: goto L_08AE6A94;
|
|
case 490u: goto L_08AE6AAC;
|
|
case 491u: goto L_08AE6AF8;
|
|
case 492u: goto L_08AE6B30;
|
|
case 493u: goto L_08AE6B3C;
|
|
case 494u: goto L_08AE6B48;
|
|
case 495u: goto L_08AE6B50;
|
|
case 496u: goto L_08AE6B64;
|
|
case 497u: goto L_08AE6B6C;
|
|
case 498u: goto L_08AE6B80;
|
|
case 499u: goto L_08AE6B88;
|
|
case 500u: goto L_08AE6B8C;
|
|
case 501u: goto L_08AE6B94;
|
|
case 502u: goto L_08AE6B9C;
|
|
case 503u: goto L_08AE6BA4;
|
|
case 504u: goto L_08AE6BAC;
|
|
case 505u: goto L_08AE6BB8;
|
|
case 506u: goto L_08AE6BC8;
|
|
case 507u: goto L_08AE6BD8;
|
|
case 508u: goto L_08AE6BE0;
|
|
case 509u: goto L_08AE6BE4;
|
|
case 510u: goto L_08AE6BEC;
|
|
case 511u: goto L_08AE6C04;
|
|
case 512u: goto L_08AE6C0C;
|
|
case 513u: goto L_08AE6C18;
|
|
case 514u: goto L_08AE6C48;
|
|
case 515u: goto L_08AE6C5C;
|
|
case 516u: goto L_08AE6C64;
|
|
case 517u: goto L_08AE6C78;
|
|
case 518u: goto L_08AE6CAC;
|
|
case 519u: goto L_08AE6CD4;
|
|
case 520u: goto L_08AE6CE0;
|
|
case 521u: goto L_08AE6CF0;
|
|
case 522u: goto L_08AE6CFC;
|
|
case 523u: goto L_08AE6D14;
|
|
case 524u: goto L_08AE6D3C;
|
|
case 525u: goto L_08AE6D48;
|
|
case 526u: goto L_08AE6D58;
|
|
case 527u: goto L_08AE6D64;
|
|
case 528u: goto L_08AE6D70;
|
|
case 529u: goto L_08AE6D88;
|
|
case 530u: goto L_08AE6DB0;
|
|
case 531u: goto L_08AE6DBC;
|
|
case 532u: goto L_08AE6DCC;
|
|
case 533u: goto L_08AE6DDC;
|
|
case 534u: goto L_08AE6DEC;
|
|
case 535u: goto L_08AE6E04;
|
|
case 536u: goto L_08AE6E24;
|
|
case 537u: goto L_08AE6E30;
|
|
case 538u: goto L_08AE6E38;
|
|
case 539u: goto L_08AE6E40;
|
|
case 540u: goto L_08AE6E48;
|
|
case 541u: goto L_08AE6E5C;
|
|
case 542u: goto L_08AE6E84;
|
|
case 543u: goto L_08AE6E90;
|
|
case 544u: goto L_08AE6EA0;
|
|
case 545u: goto L_08AE6EAC;
|
|
case 546u: goto L_08AE6EB8;
|
|
case 547u: goto L_08AE6ED0;
|
|
case 548u: goto L_08AE6EF8;
|
|
case 549u: goto L_08AE6F04;
|
|
case 550u: goto L_08AE6F14;
|
|
case 551u: goto L_08AE6F20;
|
|
case 552u: goto L_08AE6F2C;
|
|
case 553u: goto L_08AE6F3C;
|
|
case 554u: goto L_08AE6F48;
|
|
case 555u: goto L_08AE6F54;
|
|
case 556u: goto L_08AE6F60;
|
|
case 557u: goto L_08AE6F6C;
|
|
case 558u: goto L_08AE6F84;
|
|
case 559u: goto L_08AE6FB0;
|
|
case 560u: goto L_08AE6FBC;
|
|
case 561u: goto L_08AE7014;
|
|
case 562u: goto L_08AE7034;
|
|
case 563u: goto L_08AE7054;
|
|
case 564u: goto L_08AE7058;
|
|
case 565u: goto L_08AE7060;
|
|
case 566u: goto L_08AE707C;
|
|
case 567u: goto L_08AE70A4;
|
|
case 568u: goto L_08AE70B0;
|
|
case 569u: goto L_08AE70E8;
|
|
case 570u: goto L_08AE7110;
|
|
case 571u: goto L_08AE711C;
|
|
case 572u: goto L_08AE712C;
|
|
case 573u: goto L_08AE7138;
|
|
case 574u: goto L_08AE7144;
|
|
case 575u: goto L_08AE715C;
|
|
case 576u: goto L_08AE7184;
|
|
case 577u: goto L_08AE71B8;
|
|
case 578u: goto L_08AE71C0;
|
|
case 579u: goto L_08AE71D0;
|
|
case 580u: goto L_08AE71D8;
|
|
case 581u: goto L_08AE71E8;
|
|
case 582u: goto L_08AE71F4;
|
|
case 583u: goto L_08AE7214;
|
|
case 584u: goto L_08AE722C;
|
|
case 585u: goto L_08AE7254;
|
|
case 586u: goto L_08AE7260;
|
|
case 587u: goto L_08AE7274;
|
|
case 588u: goto L_08AE7278;
|
|
case 589u: goto L_08AE729C;
|
|
case 590u: goto L_08AE72A4;
|
|
case 591u: goto L_08AE72C4;
|
|
case 592u: goto L_08AE72D0;
|
|
case 593u: goto L_08AE72E8;
|
|
case 594u: goto L_08AE72EC;
|
|
case 595u: goto L_08AE7304;
|
|
case 596u: goto L_08AE7334;
|
|
case 597u: goto L_08AE7340;
|
|
case 598u: goto L_08AE735C;
|
|
case 599u: goto L_08AE7378;
|
|
case 600u: goto L_08AE7398;
|
|
case 601u: goto L_08AE73A8;
|
|
case 602u: goto L_08AE73BC;
|
|
case 603u: goto L_08AE73E8;
|
|
case 604u: goto L_08AE73F4;
|
|
case 605u: goto L_08AE740C;
|
|
case 606u: goto L_08AE7414;
|
|
case 607u: goto L_08AE7418;
|
|
case 608u: goto L_08AE743C;
|
|
case 609u: goto L_08AE7444;
|
|
case 610u: goto L_08AE7464;
|
|
case 611u: goto L_08AE7470;
|
|
case 612u: goto L_08AE7488;
|
|
case 613u: goto L_08AE748C;
|
|
case 614u: goto L_08AE74A8;
|
|
case 615u: goto L_08AE74D0;
|
|
case 616u: goto L_08AE74DC;
|
|
case 617u: goto L_08AE74EC;
|
|
case 618u: goto L_08AE74F8;
|
|
case 619u: goto L_08AE7504;
|
|
case 620u: goto L_08AE751C;
|
|
case 621u: goto L_08AE754C;
|
|
case 622u: goto L_08AE7558;
|
|
case 623u: goto L_08AE7568;
|
|
case 624u: goto L_08AE7584;
|
|
case 625u: goto L_08AE75A4;
|
|
case 626u: goto L_08AE75B0;
|
|
case 627u: goto L_08AE75B8;
|
|
case 628u: goto L_08AE75C0;
|
|
case 629u: goto L_08AE75C8;
|
|
case 630u: goto L_08AE75D0;
|
|
case 631u: goto L_08AE75E0;
|
|
case 632u: goto L_08AE75F4;
|
|
case 633u: goto L_08AE7620;
|
|
case 634u: goto L_08AE762C;
|
|
case 635u: goto L_08AE763C;
|
|
case 636u: goto L_08AE7650;
|
|
case 637u: goto L_08AE7658;
|
|
case 638u: goto L_08AE7664;
|
|
case 639u: goto L_08AE7680;
|
|
case 640u: goto L_08AE76B8;
|
|
case 641u: goto L_08AE76C4;
|
|
case 642u: goto L_08AE7714;
|
|
case 643u: goto L_08AE773C;
|
|
case 644u: goto L_08AE775C;
|
|
case 645u: goto L_08AE7784;
|
|
case 646u: goto L_08AE7790;
|
|
case 647u: goto L_08AE7798;
|
|
case 648u: goto L_08AE77A0;
|
|
case 649u: goto L_08AE77A8;
|
|
case 650u: goto L_08AE77BC;
|
|
case 651u: goto L_08AE77D4;
|
|
case 652u: goto L_08AE77FC;
|
|
case 653u: goto L_08AE7808;
|
|
case 654u: goto L_08AE781C;
|
|
case 655u: goto L_08AE7824;
|
|
case 656u: goto L_08AE7830;
|
|
case 657u: goto L_08AE7838;
|
|
case 658u: goto L_08AE783C;
|
|
case 659u: goto L_08AE7854;
|
|
case 660u: goto L_08AE787C;
|
|
case 661u: goto L_08AE7888;
|
|
case 662u: goto L_08AE78A0;
|
|
case 663u: goto L_08AE78AC;
|
|
case 664u: goto L_08AE78B0;
|
|
case 665u: goto L_08AE78C8;
|
|
case 666u: goto L_08AE78F8;
|
|
case 667u: goto L_08AE7904;
|
|
case 668u: goto L_08AE7920;
|
|
case 669u: goto L_08AE792C;
|
|
case 670u: goto L_08AE7934;
|
|
case 671u: goto L_08AE7938;
|
|
case 672u: goto L_08AE795C;
|
|
case 673u: goto L_08AE7964;
|
|
case 674u: goto L_08AE7984;
|
|
case 675u: goto L_08AE7990;
|
|
case 676u: goto L_08AE79A8;
|
|
case 677u: goto L_08AE79AC;
|
|
case 678u: goto L_08AE79C8;
|
|
case 679u: goto L_08AE79F8;
|
|
case 680u: goto L_08AE7A04;
|
|
case 681u: goto L_08AE7A1C;
|
|
case 682u: goto L_08AE7A38;
|
|
case 683u: goto L_08AE7A58;
|
|
case 684u: goto L_08AE7A64;
|
|
case 685u: goto L_08AE7A6C;
|
|
case 686u: goto L_08AE7A80;
|
|
case 687u: goto L_08AE7AA8;
|
|
case 688u: goto L_08AE7AB4;
|
|
case 689u: goto L_08AE7ACC;
|
|
case 690u: goto L_08AE7AD4;
|
|
case 691u: goto L_08AE7ADC;
|
|
case 692u: goto L_08AE7AF4;
|
|
case 693u: goto L_08AE7B14;
|
|
case 694u: goto L_08AE7B20;
|
|
case 695u: goto L_08AE7B2C;
|
|
case 696u: goto L_08AE7B34;
|
|
case 697u: goto L_08AE7B48;
|
|
case 698u: goto L_08AE7B78;
|
|
case 699u: goto L_08AE7B84;
|
|
case 700u: goto L_08AE7B90;
|
|
case 701u: goto L_08AE7B98;
|
|
case 702u: goto L_08AE7BA0;
|
|
case 703u: goto L_08AE7BA8;
|
|
case 704u: goto L_08AE7BB8;
|
|
case 705u: goto L_08AE7BD4;
|
|
case 706u: goto L_08AE7BFC;
|
|
case 707u: goto L_08AE7C08;
|
|
case 708u: goto L_08AE7C40;
|
|
case 709u: goto L_08AE7C60;
|
|
case 710u: goto L_08AE7C84;
|
|
case 711u: goto L_08AE7CAC;
|
|
case 712u: goto L_08AE7CB8;
|
|
case 713u: goto L_08AE7CD8;
|
|
case 714u: goto L_08AE7D00;
|
|
case 715u: goto L_08AE7D0C;
|
|
case 716u: goto L_08AE7D1C;
|
|
case 717u: goto L_08AE7D28;
|
|
case 718u: goto L_08AE7D34;
|
|
case 719u: goto L_08AE7D4C;
|
|
case 720u: goto L_08AE7D78;
|
|
case 721u: goto L_08AE7D84;
|
|
case 722u: goto L_08AE7D98;
|
|
case 723u: goto L_08AE7D9C;
|
|
case 724u: goto L_08AE7DA8;
|
|
case 725u: goto L_08AE7DB0;
|
|
case 726u: goto L_08AE7DBC;
|
|
case 727u: goto L_08AE7DC0;
|
|
case 728u: goto L_08AE7DDC;
|
|
case 729u: goto L_08AE7DE0;
|
|
case 730u: goto L_08AE7E04;
|
|
case 731u: goto L_08AE7E0C;
|
|
case 732u: goto L_08AE7E2C;
|
|
case 733u: goto L_08AE7E38;
|
|
case 734u: goto L_08AE7E50;
|
|
case 735u: goto L_08AE7E54;
|
|
case 736u: goto L_08AE7E70;
|
|
case 737u: goto L_08AE7EAC;
|
|
case 738u: goto L_08AE7EB8;
|
|
case 739u: goto L_08AE7ED8;
|
|
case 740u: goto L_08AE7EE0;
|
|
case 741u: goto L_08AE7EF0;
|
|
case 742u: goto L_08AE7F00;
|
|
case 743u: goto L_08AE7F04;
|
|
case 744u: goto L_08AE7F14;
|
|
case 745u: goto L_08AE7F1C;
|
|
case 746u: goto L_08AE7F24;
|
|
case 747u: goto L_08AE7F30;
|
|
case 748u: goto L_08AE7F3C;
|
|
case 749u: goto L_08AE7F44;
|
|
case 750u: goto L_08AE7F5C;
|
|
case 751u: goto L_08AE7F64;
|
|
case 752u: goto L_08AE7F6C;
|
|
case 753u: goto L_08AE7F70;
|
|
case 754u: goto L_08AE7F7C;
|
|
case 755u: goto L_08AE7F84;
|
|
case 756u: goto L_08AE7F88;
|
|
case 757u: goto L_08AE7F98;
|
|
case 758u: goto L_08AE7FA0;
|
|
case 759u: goto L_08AE7FA8;
|
|
case 760u: goto L_08AE7FB8;
|
|
case 761u: goto L_08AE7FC0;
|
|
case 762u: goto L_08AE7FC8;
|
|
case 763u: goto L_08AE7FE0;
|
|
case 764u: goto L_08AE7FE8;
|
|
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 - 0x08AE4000u;
|
|
if (local_delta_v813 >= 16364u || (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_08AE4000:
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE4014u);
|
|
ctx.gpr[7] = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 2u, 0x08AE4014u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4014u) goto L_08AE4014;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4014:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE4020u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4020u) goto L_08AE4020;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE4020:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(522)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_gpr_17 = (ctx.gpr[2] | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4048;
|
|
}
|
|
goto L_08AE402C;
|
|
}
|
|
L_08AE402C:
|
|
aot_gpr_4 = (2239u << 16u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
ctx.gpr[7] = (aot_gpr_16 | 0u);
|
|
ctx.gpr[8] = (0u | 0u);
|
|
aot_gpr_31 = (0x08AE4048u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(21784));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 5u, 0x08AE4048u, 0x0886565Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 331u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 331u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 331u, 0x0886565Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4048u) goto L_08AE4048;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4048:
|
|
{ const bool branch_taken = aot_gpr_17 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4088;
|
|
}
|
|
goto L_08AE4050;
|
|
}
|
|
L_08AE4050:
|
|
aot_gpr_4 = (aot_gpr_17 | 0u);
|
|
aot_gpr_31 = (0x08AE405Cu);
|
|
aot_gpr_5 = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0035.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 7u, 0x08AE405Cu, 0x08891B8Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0035_entry(rt, ctx, 247u, aot_mem);
|
|
#else
|
|
recomp_unit_0035_entry(rt, ctx, 247u, 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, 247u, 0x08891B8Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE405Cu) goto L_08AE405C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE405C:
|
|
aot_gpr_31 = (0x08AE4064u);
|
|
aot_gpr_4 = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0035.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 8u, 0x08AE4064u, 0x0889358Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0035_entry(rt, ctx, 537u, aot_mem);
|
|
#else
|
|
recomp_unit_0035_entry(rt, ctx, 537u, 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, 537u, 0x0889358Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4064u) goto L_08AE4064;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4064:
|
|
{ const bool branch_taken = aot_gpr_17 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4088;
|
|
}
|
|
goto L_08AE406C;
|
|
}
|
|
L_08AE406C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(92)));
|
|
aot_gpr_5 = (0u | 3u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(24));
|
|
ctx.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 = (0x08AE4088u);
|
|
aot_gpr_4 = (aot_gpr_17 + ctx.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 == 0x08AE4088u) goto L_08AE4088;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE4088:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE40A4:
|
|
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), aot_gpr_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
{ const std::uint32_t aot_run_words[3]{std::bit_cast<std::uint32_t>(ctx.fpr[20]), std::bit_cast<std::uint32_t>(aot_fpr_22), std::bit_cast<std::uint32_t>(ctx.fpr[24])};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(84), aot_run_words); }
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_17, ctx.gpr[18], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(100), aot_run_words); }
|
|
aot_gpr_17 = (2236u << 16u);
|
|
ctx.gpr[18] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
ctx.gpr[6] = (0u | 4u);
|
|
aot_gpr_31 = (0x08AE40E4u);
|
|
ctx.gpr[7] = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 12u, 0x08AE40E4u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE40E4u) goto L_08AE40E4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE40E4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE40F0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE40F0u) goto L_08AE40F0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE40F0:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(ctx.gpr[18] + static_cast<std::uint32_t>(4), aot_run_words);
|
|
aot_fpr_22 = std::bit_cast<float>(aot_run_words[0]);
|
|
ctx.fpr[20] = std::bit_cast<float>(aot_run_words[1]);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_run_words[2]);
|
|
}
|
|
aot_gpr_4 = (49864u << 16u);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((!(std::isnan(aot_fpr_12) || std::isnan(aot_fpr_13)) && aot_fpr_12 == aot_fpr_13)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
aot_gpr_16 = (ctx.gpr[2] | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE412C;
|
|
}
|
|
goto L_08AE4114;
|
|
}
|
|
L_08AE4114:
|
|
aot_gpr_4 = (50042u << 16u);
|
|
aot_fpr_13 = 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_08AE413C;
|
|
}
|
|
goto L_08AE412C;
|
|
}
|
|
L_08AE412C:
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_22));
|
|
aot_gpr_31 = (0x08AE4138u);
|
|
aot_fpr_13 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[20]));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0035.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 16u, 0x08AE4138u, 0x088933E8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0035_entry(rt, ctx, 514u, aot_mem);
|
|
#else
|
|
recomp_unit_0035_entry(rt, ctx, 514u, 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, 514u, 0x088933E8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4138u) goto L_08AE4138;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4138:
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[0]));
|
|
goto L_08AE413C;
|
|
L_08AE413C:
|
|
ctx.fpr[24] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_31 = (0x08AE4148u);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0179.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 18u, 0x08AE4148u, 0x08AD0AE4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0179_entry(rt, ctx, 160u, aot_mem);
|
|
#else
|
|
recomp_unit_0179_entry(rt, ctx, 160u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0179_entry, 179u, 160u, 0x08AD0AE4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4148u) goto L_08AE4148;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4148:
|
|
aot_fpr_13 = ctx.fpr[24] + ctx.fpr[0];
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(32), std::bit_cast<std::uint32_t>(aot_fpr_22));
|
|
aot_gpr_4 = (15395u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(36), std::bit_cast<std::uint32_t>(ctx.fpr[20]));
|
|
aot_gpr_4 = (aot_gpr_4 | 55051u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(40), std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
aot_fpr_12 = 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(aot_gpr_16 + static_cast<std::uint32_t>(533))))));
|
|
aot_gpr_5 = (static_cast<std::int32_t>(aot_gpr_4) < 8 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_4) < 10 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE41B8;
|
|
}
|
|
goto L_08AE4174;
|
|
}
|
|
L_08AE4174:
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE41B8;
|
|
}
|
|
goto L_08AE417C;
|
|
}
|
|
L_08AE417C:
|
|
aot_gpr_4 = (aot_gpr_16 + static_cast<std::uint32_t>(448));
|
|
{ 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 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
{ 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>();
|
|
aot_gpr_4 = (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_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); }
|
|
ctx.execute_vfpu_vdot_ct<28u, 0u, 0u, 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_13 < aot_fpr_12)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE41E8;
|
|
}
|
|
goto L_08AE41B8;
|
|
}
|
|
L_08AE41B8:
|
|
aot_gpr_4 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
{ 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); }
|
|
{ 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); }
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (aot_gpr_29 | 0u);
|
|
aot_gpr_31 = (0x08AE41D4u);
|
|
ctx.gpr[6] = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0207.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 22u, 0x08AE41D4u, 0x08B4196Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0207_entry(rt, ctx, 391u, aot_mem);
|
|
#else
|
|
recomp_unit_0207_entry(rt, ctx, 391u, 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, 391u, 0x08B4196Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE41D4u) goto L_08AE41D4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE41D4:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE41F0;
|
|
}
|
|
goto L_08AE41DC;
|
|
}
|
|
L_08AE41DC:
|
|
aot_gpr_4 = (0u | 9u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(533), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE41F8;
|
|
}
|
|
goto L_08AE41E8;
|
|
}
|
|
L_08AE41E8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4248;
|
|
}
|
|
goto L_08AE41F0;
|
|
}
|
|
L_08AE41F0:
|
|
aot_gpr_4 = (0u | 8u);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(533), static_cast<std::uint8_t>(aot_gpr_4));
|
|
goto L_08AE41F8;
|
|
L_08AE41F8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-497));
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
aot_gpr_4 = (aot_gpr_4 | 48u);
|
|
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_16 + static_cast<std::uint32_t>(613))))));
|
|
aot_mem.aot_direct_store32(aot_gpr_16 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_5 | 16u);
|
|
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_16 + static_cast<std::uint32_t>(535))))));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(613), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (0u | 1u);
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(aot_gpr_4) < static_cast<std::int32_t>(aot_gpr_5) ? 1u : 0u);
|
|
if (ctx.gpr[6] != 0u) {
|
|
aot_gpr_4 = (aot_gpr_5 | 0u);
|
|
goto L_08AE422C;
|
|
}
|
|
goto L_08AE422C;
|
|
L_08AE422C:
|
|
aot_gpr_4 = (aot_gpr_4 << 24u);
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(aot_gpr_4) >> 24u));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(535), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7660)));
|
|
ctx.gpr[2] = (0u | 0u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store32(aot_gpr_16 + static_cast<std::uint32_t>(504), aot_gpr_4);
|
|
if (branch_taken) {
|
|
goto L_08AE4248;
|
|
}
|
|
goto L_08AE4248;
|
|
}
|
|
L_08AE4248:
|
|
{ std::uint32_t aot_run_words[7]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(84), aot_run_words);
|
|
ctx.fpr[20] = std::bit_cast<float>(aot_run_words[0]);
|
|
aot_fpr_22 = std::bit_cast<float>(aot_run_words[1]);
|
|
ctx.fpr[24] = std::bit_cast<float>(aot_run_words[2]);
|
|
aot_gpr_16 = aot_run_words[3];
|
|
aot_gpr_17 = aot_run_words[4];
|
|
ctx.gpr[18] = 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>(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_08AE426C:
|
|
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>(8), aot_gpr_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE428Cu);
|
|
ctx.gpr[7] = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 30u, 0x08AE428Cu, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE428Cu) goto L_08AE428C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE428C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE4298u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4298u) goto L_08AE4298;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE4298:
|
|
aot_gpr_16 = (ctx.gpr[2] | 0u);
|
|
aot_gpr_31 = (0x08AE42A4u);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0207.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 32u, 0x08AE42A4u, 0x08B41694u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0207_entry(rt, ctx, 374u, aot_mem);
|
|
#else
|
|
recomp_unit_0207_entry(rt, ctx, 374u, 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, 374u, 0x08B41694u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE42A4u) goto L_08AE42A4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE42A4:
|
|
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_16 + static_cast<std::uint32_t>(613))))));
|
|
aot_gpr_4 = (0u | 1u);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(533), static_cast<std::uint8_t>(aot_gpr_4));
|
|
ctx.gpr[6] = (aot_gpr_5 | 16u);
|
|
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_16 + static_cast<std::uint32_t>(535))))));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(613), static_cast<std::uint8_t>(ctx.gpr[6]));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(aot_gpr_4) < static_cast<std::int32_t>(aot_gpr_5) ? 1u : 0u);
|
|
if (ctx.gpr[6] != 0u) {
|
|
aot_gpr_4 = (aot_gpr_5 | 0u);
|
|
goto L_08AE42C8;
|
|
}
|
|
goto L_08AE42C8;
|
|
L_08AE42C8:
|
|
aot_gpr_4 = (aot_gpr_4 << 24u);
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(aot_gpr_4) >> 24u));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(535), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7660)));
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_16 + static_cast<std::uint32_t>(504), aot_gpr_4);
|
|
aot_gpr_16 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(12)));
|
|
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_08AE42F0:
|
|
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_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE4310u);
|
|
ctx.gpr[7] = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 35u, 0x08AE4310u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4310u) goto L_08AE4310;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4310:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE431Cu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE431Cu) goto L_08AE431C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE431C:
|
|
aot_gpr_4 = (0u | 0u);
|
|
aot_mem.aot_direct_store8(ctx.gpr[2] + static_cast<std::uint32_t>(533), static_cast<std::uint8_t>(aot_gpr_4));
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_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_08AE4338:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-48));
|
|
{ const std::uint32_t aot_run_words[5]{aot_gpr_16, aot_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>(16), aot_run_words); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
ctx.gpr[19] = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_gpr_31 = (0x08AE4370u);
|
|
ctx.gpr[7] = (ctx.gpr[19] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 38u, 0x08AE4370u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4370u) goto L_08AE4370;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4370:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE437Cu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE437Cu) goto L_08AE437C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE437C:
|
|
aot_gpr_4 = (ctx.gpr[2] + 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<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); }
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[18] + static_cast<std::uint32_t>(29704), aot_gpr_4);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[19] + static_cast<std::uint32_t>(4), aot_gpr_4);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(8)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[19] + static_cast<std::uint32_t>(8), aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
aot_gpr_31 = (0x08AE43B0u);
|
|
ctx.gpr[6] = (0u | 3u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08862890, 23u, 431u, 0x08862890u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], ctx.gpr[7], ctx.gpr[8], ctx.gpr[9], ctx.gpr[10], ctx.gpr[11], aot_gpr_16, aot_gpr_17, ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[28], 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, 431u, 0x08862890u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE43B0u) goto L_08AE43B0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE43B0:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
{ std::uint32_t aot_run_words[5]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(16), aot_run_words);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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>(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_08AE43D0:
|
|
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>(8), aot_gpr_16);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(16), ctx.gpr[18]);
|
|
ctx.gpr[18] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 4u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), std::bit_cast<std::uint32_t>(ctx.fpr[20]));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), std::bit_cast<std::uint32_t>(aot_fpr_22));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(20), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE4408u);
|
|
ctx.gpr[7] = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 42u, 0x08AE4408u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4408u) goto L_08AE4408;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4408:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE4414u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4414u) goto L_08AE4414;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE4414:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(ctx.gpr[18] + static_cast<std::uint32_t>(4), aot_run_words);
|
|
aot_fpr_22 = std::bit_cast<float>(aot_run_words[0]);
|
|
ctx.fpr[20] = std::bit_cast<float>(aot_run_words[1]);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_run_words[2]);
|
|
}
|
|
aot_gpr_4 = (49864u << 16u);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((!(std::isnan(aot_fpr_12) || std::isnan(aot_fpr_13)) && aot_fpr_12 == aot_fpr_13)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
aot_gpr_17 = (ctx.gpr[2] | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4450;
|
|
}
|
|
goto L_08AE4438;
|
|
}
|
|
L_08AE4438:
|
|
aot_gpr_4 = (50042u << 16u);
|
|
aot_fpr_13 = 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_08AE4460;
|
|
}
|
|
goto L_08AE4450;
|
|
}
|
|
L_08AE4450:
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_22));
|
|
aot_gpr_31 = (0x08AE445Cu);
|
|
aot_fpr_13 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[20]));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0035.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 46u, 0x08AE445Cu, 0x088933E8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0035_entry(rt, ctx, 514u, aot_mem);
|
|
#else
|
|
recomp_unit_0035_entry(rt, ctx, 514u, 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, 514u, 0x088933E8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE445Cu) goto L_08AE445C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE445C:
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[0]));
|
|
goto L_08AE4460;
|
|
L_08AE4460:
|
|
aot_fpr_14 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_22));
|
|
aot_fpr_13 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[20]));
|
|
aot_gpr_31 = (0x08AE447Cu);
|
|
ctx.gpr[6] = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0185.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 48u, 0x08AE447Cu, 0x08AEBC84u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0185_entry(rt, ctx, 699u, aot_mem);
|
|
#else
|
|
recomp_unit_0185_entry(rt, ctx, 699u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0185_entry, 185u, 699u, 0x08AEBC84u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE447Cu) goto L_08AE447C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE447C:
|
|
ctx.gpr[2] = (0u | 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.fpr[20] = std::bit_cast<float>(aot_run_words[0]);
|
|
aot_fpr_22 = std::bit_cast<float>(aot_run_words[1]);
|
|
aot_gpr_16 = aot_run_words[2];
|
|
aot_gpr_17 = aot_run_words[3];
|
|
ctx.gpr[18] = 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_08AE44A0:
|
|
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_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE44C8u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 50u, 0x08AE44C8u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE44C8u) goto L_08AE44C8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE44C8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE44D4u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE44D4u) goto L_08AE44D4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE44D4:
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4508;
|
|
}
|
|
goto L_08AE44E0;
|
|
}
|
|
L_08AE44E0:
|
|
aot_gpr_31 = (0x08AE44E8u);
|
|
aot_gpr_4 = (aot_gpr_5 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0183.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 53u, 0x08AE44E8u, 0x08AE3E80u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0183_entry(rt, ctx, 1011u, aot_mem);
|
|
#else
|
|
recomp_unit_0183_entry(rt, ctx, 1011u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0183_entry, 183u, 1011u, 0x08AE3E80u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE44E8u) goto L_08AE44E8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE44E8:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = ctx.gpr[2] != 0u;
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4500;
|
|
}
|
|
goto L_08AE44F8;
|
|
}
|
|
L_08AE44F8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[6] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_08AE4518;
|
|
}
|
|
goto L_08AE4500;
|
|
}
|
|
L_08AE4500:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[6] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4518;
|
|
}
|
|
goto L_08AE4508;
|
|
}
|
|
L_08AE4508:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
ctx.gpr[6] = (0u | 0u);
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
goto L_08AE4518;
|
|
L_08AE4518:
|
|
ctx.gpr[6] = (ctx.gpr[6] & 255u);
|
|
aot_gpr_5 = (ctx.gpr[6] ^ aot_gpr_5);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4530;
|
|
}
|
|
goto L_08AE4528;
|
|
}
|
|
L_08AE4528:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_5));
|
|
if (branch_taken) {
|
|
goto L_08AE4578;
|
|
}
|
|
goto L_08AE4530;
|
|
}
|
|
L_08AE4530:
|
|
aot_gpr_4 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[7] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_4 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[7]));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(ctx.gpr[6]) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE455C;
|
|
}
|
|
goto L_08AE4550;
|
|
}
|
|
L_08AE4550:
|
|
aot_gpr_4 = (aot_gpr_5 & aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE4578;
|
|
}
|
|
goto L_08AE455C;
|
|
}
|
|
L_08AE455C:
|
|
aot_gpr_4 = (aot_gpr_5 | aot_gpr_4);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_5) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4578;
|
|
}
|
|
goto L_08AE4574;
|
|
}
|
|
L_08AE4574:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE4578;
|
|
L_08AE4578:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE4590:
|
|
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>(8), aot_gpr_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_17);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(16), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE45B8u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 65u, 0x08AE45B8u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE45B8u) goto L_08AE45B8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE45B8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE45C4u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE45C4u) goto L_08AE45C4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE45C4:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
aot_fpr_12 = std::bit_cast<float>(ctx.fpu_float_to_word_ct<1u>(aot_fpr_12));
|
|
ctx.gpr[6] = (17008u << 16u);
|
|
aot_fpr_13 = std::bit_cast<float>(ctx.gpr[6]);
|
|
ctx.gpr[6] = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_4 = (ctx.gpr[2] | 0u);
|
|
ctx.gpr[6] = (ctx.gpr[6] << 24u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(352)));
|
|
ctx.gpr[6] = (static_cast<std::uint32_t>(static_cast<std::int32_t>(ctx.gpr[6]) >> 24u));
|
|
aot_mem.aot_direct_store8(aot_gpr_4 + static_cast<std::uint32_t>(535), static_cast<std::uint8_t>(ctx.gpr[6]));
|
|
ctx.gpr[6] = (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>(535))))));
|
|
aot_fpr_14 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(84)));
|
|
aot_fpr_12 = std::bit_cast<float>(ctx.gpr[6]);
|
|
{ const float fs = aot_fpr_14; 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 = static_cast<float>(static_cast<std::int32_t>(std::bit_cast<std::uint32_t>(aot_fpr_12)));
|
|
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_08AE4610;
|
|
}
|
|
goto L_08AE4610;
|
|
L_08AE4610:
|
|
aot_fpr_12 = std::bit_cast<float>(ctx.fpu_float_to_word_ct<1u>(aot_fpr_13));
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_gpr_5 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_5 = (aot_gpr_5 << 24u);
|
|
aot_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(aot_gpr_5) >> 24u));
|
|
aot_mem.aot_direct_store8(aot_gpr_4 + static_cast<std::uint32_t>(535), static_cast<std::uint8_t>(aot_gpr_5));
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_run_words);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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>(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_08AE463C:
|
|
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_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE4664u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 69u, 0x08AE4664u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4664u) goto L_08AE4664;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4664:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE4670u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4670u) goto L_08AE4670;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE4670:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_4 = (aot_gpr_4 << 24u);
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(aot_gpr_4) >> 24u));
|
|
aot_mem.aot_direct_store8(ctx.gpr[2] + static_cast<std::uint32_t>(532), static_cast<std::uint8_t>(aot_gpr_4));
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE4698:
|
|
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_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE46C0u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 72u, 0x08AE46C0u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE46C0u) goto L_08AE46C0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE46C0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE46CCu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE46CCu) goto L_08AE46CC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE46CC:
|
|
aot_gpr_16 = (ctx.gpr[2] | 0u);
|
|
ctx.gpr[6] = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(533))))));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
{ const bool branch_taken = ctx.gpr[6] != aot_gpr_4;
|
|
aot_gpr_5 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE46E8;
|
|
}
|
|
goto L_08AE46E0;
|
|
}
|
|
L_08AE46E0:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_5 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_08AE4710;
|
|
}
|
|
goto L_08AE46E8;
|
|
}
|
|
L_08AE46E8:
|
|
ctx.gpr[7] = (0u | 18u);
|
|
{ const bool branch_taken = ctx.gpr[6] == ctx.gpr[7];
|
|
ctx.gpr[8] = (0u | 17u);
|
|
if (branch_taken) {
|
|
goto L_08AE46FC;
|
|
}
|
|
goto L_08AE46F4;
|
|
}
|
|
L_08AE46F4:
|
|
{ const bool branch_taken = ctx.gpr[6] != ctx.gpr[8];
|
|
if (branch_taken) {
|
|
goto L_08AE4710;
|
|
}
|
|
goto L_08AE46FC;
|
|
}
|
|
L_08AE46FC:
|
|
{ const bool branch_taken = aot_gpr_4 == ctx.gpr[7];
|
|
ctx.gpr[6] = (0u | 17u);
|
|
if (branch_taken) {
|
|
goto L_08AE470C;
|
|
}
|
|
goto L_08AE4704;
|
|
}
|
|
L_08AE4704:
|
|
{ const bool branch_taken = aot_gpr_4 != ctx.gpr[6];
|
|
if (branch_taken) {
|
|
goto L_08AE4710;
|
|
}
|
|
goto L_08AE470C;
|
|
}
|
|
L_08AE470C:
|
|
aot_gpr_5 = (0u | 1u);
|
|
goto L_08AE4710;
|
|
L_08AE4710:
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4744;
|
|
}
|
|
goto L_08AE4718;
|
|
}
|
|
L_08AE4718:
|
|
aot_gpr_4 = (aot_gpr_4 << 24u);
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(aot_gpr_4) >> 24u));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(533), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_5 = (0u | 10u);
|
|
{ const bool branch_taken = aot_gpr_4 == aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_08AE473C;
|
|
}
|
|
goto L_08AE4734;
|
|
}
|
|
L_08AE4734:
|
|
aot_gpr_31 = (0x08AE473Cu);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0207.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 83u, 0x08AE473Cu, 0x08B41694u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0207_entry(rt, ctx, 374u, aot_mem);
|
|
#else
|
|
recomp_unit_0207_entry(rt, ctx, 374u, 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, 374u, 0x08B41694u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE473Cu) goto L_08AE473C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE473C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7660)));
|
|
aot_mem.aot_direct_store32(aot_gpr_16 + static_cast<std::uint32_t>(504), aot_gpr_4);
|
|
goto L_08AE4744;
|
|
L_08AE4744:
|
|
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_16 + static_cast<std::uint32_t>(613))))));
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_gpr_4 = (aot_gpr_4 | 16u);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(613), static_cast<std::uint8_t>(aot_gpr_4));
|
|
{ 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_16 = aot_run_words[0];
|
|
aot_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_08AE4768:
|
|
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_16);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 6u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE4798u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 86u, 0x08AE4798u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4798u) goto L_08AE4798;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4798:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE47A4u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE47A4u) goto L_08AE47A4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE47A4:
|
|
{ std::uint32_t aot_run_words[4]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_17 + static_cast<std::uint32_t>(4), 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]);
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_run_words[3]);
|
|
}
|
|
aot_gpr_31 = (0x08AE47BCu);
|
|
aot_gpr_4 = (ctx.gpr[2] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0170.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 88u, 0x08AE47BCu, 0x08AAF8F4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0170_entry(rt, ctx, 788u, aot_mem);
|
|
#else
|
|
recomp_unit_0170_entry(rt, ctx, 788u, 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, 788u, 0x08AAF8F4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE47BCu) goto L_08AE47BC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE47BC:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE47CC;
|
|
}
|
|
goto L_08AE47C4;
|
|
}
|
|
L_08AE47C4:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_08AE47D0;
|
|
}
|
|
goto L_08AE47CC;
|
|
}
|
|
L_08AE47CC:
|
|
aot_gpr_4 = (0u | 0u);
|
|
goto L_08AE47D0;
|
|
L_08AE47D0:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE47F4;
|
|
}
|
|
goto L_08AE47EC;
|
|
}
|
|
L_08AE47EC:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE483C;
|
|
}
|
|
goto L_08AE47F4;
|
|
}
|
|
L_08AE47F4:
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[7] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_5 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[7]));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(ctx.gpr[6]) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4820;
|
|
}
|
|
goto L_08AE4814;
|
|
}
|
|
L_08AE4814:
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE483C;
|
|
}
|
|
goto L_08AE4820;
|
|
}
|
|
L_08AE4820:
|
|
aot_gpr_4 = (aot_gpr_4 | aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_5) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE483C;
|
|
}
|
|
goto L_08AE4838;
|
|
}
|
|
L_08AE4838:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE483C;
|
|
L_08AE483C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(20)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE486C;
|
|
}
|
|
goto L_08AE4848;
|
|
}
|
|
L_08AE4848:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(16)));
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_17 + static_cast<std::uint32_t>(4), 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_5 = (49864u << 16u);
|
|
aot_gpr_4 = (aot_gpr_16 + aot_gpr_4);
|
|
ctx.fpr[16] = std::bit_cast<float>(aot_gpr_5);
|
|
aot_gpr_31 = (0x08AE486Cu);
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(16)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0023.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 99u, 0x08AE486Cu, 0x088637CCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0023_entry(rt, ctx, 662u, aot_mem);
|
|
#else
|
|
recomp_unit_0023_entry(rt, ctx, 662u, 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, 662u, 0x088637CCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE486Cu) goto L_08AE486C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE486C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(ctx.gpr[28] + static_cast<std::uint32_t>(7728)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4878;
|
|
}
|
|
goto L_08AE4878;
|
|
}
|
|
L_08AE4878:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE4894:
|
|
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_16);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 8u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE48C4u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 102u, 0x08AE48C4u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE48C4u) goto L_08AE48C4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE48C4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE48D0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE48D0u) goto L_08AE48D0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE48D0:
|
|
{ std::uint32_t aot_run_words[6]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_17 + static_cast<std::uint32_t>(4), 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]);
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_run_words[3]);
|
|
ctx.fpr[16] = std::bit_cast<float>(aot_run_words[4]);
|
|
ctx.fpr[17] = std::bit_cast<float>(aot_run_words[5]);
|
|
}
|
|
aot_gpr_31 = (0x08AE48F0u);
|
|
aot_gpr_4 = (ctx.gpr[2] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0170.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 104u, 0x08AE48F0u, 0x08AAF984u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0170_entry(rt, ctx, 799u, aot_mem);
|
|
#else
|
|
recomp_unit_0170_entry(rt, ctx, 799u, 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, 799u, 0x08AAF984u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE48F0u) goto L_08AE48F0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE48F0:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4900;
|
|
}
|
|
goto L_08AE48F8;
|
|
}
|
|
L_08AE48F8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_08AE4904;
|
|
}
|
|
goto L_08AE4900;
|
|
}
|
|
L_08AE4900:
|
|
aot_gpr_4 = (0u | 0u);
|
|
goto L_08AE4904;
|
|
L_08AE4904:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4928;
|
|
}
|
|
goto L_08AE4920;
|
|
}
|
|
L_08AE4920:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE4970;
|
|
}
|
|
goto L_08AE4928;
|
|
}
|
|
L_08AE4928:
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[7] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_5 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[7]));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(ctx.gpr[6]) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4954;
|
|
}
|
|
goto L_08AE4948;
|
|
}
|
|
L_08AE4948:
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE4970;
|
|
}
|
|
goto L_08AE4954;
|
|
}
|
|
L_08AE4954:
|
|
aot_gpr_4 = (aot_gpr_4 | aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_5) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4970;
|
|
}
|
|
goto L_08AE496C;
|
|
}
|
|
L_08AE496C:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE4970;
|
|
L_08AE4970:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(28)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE49B0;
|
|
}
|
|
goto L_08AE497C;
|
|
}
|
|
L_08AE497C:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(12)));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(24)));
|
|
aot_gpr_4 = (16128u << 16u);
|
|
ctx.fpr[16] = aot_fpr_12 + aot_fpr_13;
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(16)));
|
|
aot_fpr_14 = std::bit_cast<float>(aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_16 + aot_gpr_5);
|
|
{ const float fs = ctx.fpr[16]; const float ft = aot_fpr_14; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) ctx.fpr[16] = std::bit_cast<float>(0x7FC00000u); else ctx.fpr[16] = fs * ft; }
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(8)));
|
|
aot_fpr_14 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(16)));
|
|
aot_gpr_31 = (0x08AE49B0u);
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(20)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0023.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 115u, 0x08AE49B0u, 0x088637CCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0023_entry(rt, ctx, 662u, aot_mem);
|
|
#else
|
|
recomp_unit_0023_entry(rt, ctx, 662u, 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, 662u, 0x088637CCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE49B0u) goto L_08AE49B0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE49B0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(ctx.gpr[28] + static_cast<std::uint32_t>(7728)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE49BC;
|
|
}
|
|
goto L_08AE49BC;
|
|
}
|
|
L_08AE49BC:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE49D8:
|
|
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_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE4A00u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 118u, 0x08AE4A00u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4A00u) goto L_08AE4A00;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4A00:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE4A0Cu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4A0Cu) goto L_08AE4A0C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE4A0C:
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4A40;
|
|
}
|
|
goto L_08AE4A18;
|
|
}
|
|
L_08AE4A18:
|
|
aot_gpr_31 = (0x08AE4A20u);
|
|
aot_gpr_4 = (aot_gpr_5 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0183.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 121u, 0x08AE4A20u, 0x08AE3E80u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0183_entry(rt, ctx, 1011u, aot_mem);
|
|
#else
|
|
recomp_unit_0183_entry(rt, ctx, 1011u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0183_entry, 183u, 1011u, 0x08AE3E80u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4A20u) goto L_08AE4A20;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4A20:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4A38;
|
|
}
|
|
goto L_08AE4A30;
|
|
}
|
|
L_08AE4A30:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[6] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_08AE4A50;
|
|
}
|
|
goto L_08AE4A38;
|
|
}
|
|
L_08AE4A38:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[6] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4A50;
|
|
}
|
|
goto L_08AE4A40;
|
|
}
|
|
L_08AE4A40:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
goto L_08AE4A50;
|
|
L_08AE4A50:
|
|
ctx.gpr[6] = (ctx.gpr[6] & 255u);
|
|
aot_gpr_5 = (ctx.gpr[6] ^ aot_gpr_5);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4A68;
|
|
}
|
|
goto L_08AE4A60;
|
|
}
|
|
L_08AE4A60:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_5));
|
|
if (branch_taken) {
|
|
goto L_08AE4AB0;
|
|
}
|
|
goto L_08AE4A68;
|
|
}
|
|
L_08AE4A68:
|
|
aot_gpr_4 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[7] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_4 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[7]));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(ctx.gpr[6]) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4A94;
|
|
}
|
|
goto L_08AE4A88;
|
|
}
|
|
L_08AE4A88:
|
|
aot_gpr_4 = (aot_gpr_5 & aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE4AB0;
|
|
}
|
|
goto L_08AE4A94;
|
|
}
|
|
L_08AE4A94:
|
|
aot_gpr_4 = (aot_gpr_5 | aot_gpr_4);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_5) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4AB0;
|
|
}
|
|
goto L_08AE4AAC;
|
|
}
|
|
L_08AE4AAC:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE4AB0;
|
|
L_08AE4AB0:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE4AC8:
|
|
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_16);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
ctx.gpr[18] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE4AF8u);
|
|
ctx.gpr[7] = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 133u, 0x08AE4AF8u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4AF8u) goto L_08AE4AF8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4AF8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE4B04u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4B04u) goto L_08AE4B04;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE4B04:
|
|
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[2] + static_cast<std::uint32_t>(86))))));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(4)));
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_08AE4B1C;
|
|
}
|
|
goto L_08AE4B14;
|
|
}
|
|
L_08AE4B14:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_08AE4B20;
|
|
}
|
|
goto L_08AE4B1C;
|
|
}
|
|
L_08AE4B1C:
|
|
aot_gpr_4 = (0u | 0u);
|
|
goto L_08AE4B20;
|
|
L_08AE4B20:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4B44;
|
|
}
|
|
goto L_08AE4B3C;
|
|
}
|
|
L_08AE4B3C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE4B8C;
|
|
}
|
|
goto L_08AE4B44;
|
|
}
|
|
L_08AE4B44:
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[7] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_5 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[7]));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(ctx.gpr[6]) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4B70;
|
|
}
|
|
goto L_08AE4B64;
|
|
}
|
|
L_08AE4B64:
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE4B8C;
|
|
}
|
|
goto L_08AE4B70;
|
|
}
|
|
L_08AE4B70:
|
|
aot_gpr_4 = (aot_gpr_4 | aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_5) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4B8C;
|
|
}
|
|
goto L_08AE4B88;
|
|
}
|
|
L_08AE4B88:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE4B8C;
|
|
L_08AE4B8C:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE4BA8:
|
|
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_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE4BC8u);
|
|
ctx.gpr[7] = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 145u, 0x08AE4BC8u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4BC8u) goto L_08AE4BC8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4BC8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE4BD4u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4BD4u) goto L_08AE4BD4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE4BD4:
|
|
aot_gpr_4 = (0u | 65535u);
|
|
aot_mem.aot_direct_store16(ctx.gpr[2] + static_cast<std::uint32_t>(558), static_cast<std::uint16_t>(aot_gpr_4));
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_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_08AE4BF0:
|
|
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_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE4C18u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 148u, 0x08AE4C18u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4C18u) goto L_08AE4C18;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4C18:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
aot_gpr_31 = (0x08AE4C24u);
|
|
aot_gpr_17 = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0090.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 149u, 0x08AE4C24u, 0x0896D734u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0090_entry(rt, ctx, 378u, aot_mem);
|
|
#else
|
|
recomp_unit_0090_entry(rt, ctx, 378u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0090_entry, 90u, 378u, 0x0896D734u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4C24u) goto L_08AE4C24;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4C24:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4C30;
|
|
}
|
|
goto L_08AE4C2C;
|
|
}
|
|
L_08AE4C2C:
|
|
aot_gpr_17 = (0u | 1u);
|
|
goto L_08AE4C30;
|
|
L_08AE4C30:
|
|
aot_gpr_4 = (0u < aot_gpr_17 ? 1u : 0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_17 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
aot_gpr_17 = (0u < aot_gpr_17 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4C5C;
|
|
}
|
|
goto L_08AE4C54;
|
|
}
|
|
L_08AE4C54:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_17));
|
|
if (branch_taken) {
|
|
goto L_08AE4CA4;
|
|
}
|
|
goto L_08AE4C5C;
|
|
}
|
|
L_08AE4C5C:
|
|
aot_gpr_4 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[6] = (aot_gpr_5 + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_4 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[6]));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
aot_gpr_5 = (static_cast<std::int32_t>(aot_gpr_5) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4C88;
|
|
}
|
|
goto L_08AE4C7C;
|
|
}
|
|
L_08AE4C7C:
|
|
aot_gpr_4 = (aot_gpr_17 & aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE4CA4;
|
|
}
|
|
goto L_08AE4C88;
|
|
}
|
|
L_08AE4C88:
|
|
aot_gpr_4 = (aot_gpr_17 | aot_gpr_4);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_5) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4CA4;
|
|
}
|
|
goto L_08AE4CA0;
|
|
}
|
|
L_08AE4CA0:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE4CA4;
|
|
L_08AE4CA4:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE4CBC:
|
|
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), aot_gpr_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
{ const std::uint32_t aot_run_words[4]{aot_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); }
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[19] = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
ctx.gpr[6] = (0u | 12u);
|
|
aot_gpr_31 = (0x08AE4CF8u);
|
|
ctx.gpr[7] = (ctx.gpr[19] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 159u, 0x08AE4CF8u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4CF8u) goto L_08AE4CF8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4CF8:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[19] + static_cast<std::uint32_t>(4)));
|
|
aot_fpr_14 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[19] + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[19] + static_cast<std::uint32_t>(20)));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(ctx.gpr[19] + static_cast<std::uint32_t>(24)));
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[19] + static_cast<std::uint32_t>(12)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[19] + static_cast<std::uint32_t>(16)));
|
|
{ std::uint32_t aot_run_words[5]{};
|
|
aot_mem.aot_direct_load32_block(ctx.gpr[19] + static_cast<std::uint32_t>(28), aot_run_words);
|
|
ctx.gpr[7] = aot_run_words[0];
|
|
ctx.gpr[8] = aot_run_words[1];
|
|
ctx.gpr[9] = aot_run_words[2];
|
|
ctx.gpr[10] = aot_run_words[3];
|
|
ctx.gpr[11] = aot_run_words[4];
|
|
}
|
|
ctx.gpr[7] = (ctx.gpr[7] & 255u);
|
|
ctx.gpr[8] = (ctx.gpr[8] & 255u);
|
|
ctx.gpr[9] = (ctx.gpr[9] & 255u);
|
|
ctx.gpr[10] = (ctx.gpr[10] & 65535u);
|
|
aot_gpr_31 = (0x08AE4D40u);
|
|
ctx.gpr[11] = (ctx.gpr[11] & 65535u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0186.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 160u, 0x08AE4D40u, 0x08AED448u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0186_entry(rt, ctx, 320u, aot_mem);
|
|
#else
|
|
recomp_unit_0186_entry(rt, ctx, 320u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0186_entry, 186u, 320u, 0x08AED448u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4D40u) goto L_08AE4D40;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4D40:
|
|
aot_mem.aot_direct_store32(ctx.gpr[18] + static_cast<std::uint32_t>(29704), ctx.gpr[2]);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
aot_gpr_31 = (0x08AE4D54u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08862890, 23u, 431u, 0x08862890u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], ctx.gpr[7], ctx.gpr[8], ctx.gpr[9], ctx.gpr[10], ctx.gpr[11], aot_gpr_16, aot_gpr_17, ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[28], 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, 431u, 0x08862890u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4D54u) goto L_08AE4D54;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE4D54:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE4D74:
|
|
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_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE4D9Cu);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 163u, 0x08AE4D9Cu, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4D9Cu) goto L_08AE4D9C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4D9C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
aot_gpr_4 = (aot_gpr_4 & 65535u);
|
|
aot_gpr_4 = (aot_gpr_4 & 65535u);
|
|
aot_gpr_4 = (aot_gpr_4 << 4u);
|
|
aot_gpr_5 = (aot_gpr_4 + aot_gpr_4);
|
|
aot_gpr_16 = (aot_gpr_4 + aot_gpr_5);
|
|
aot_gpr_4 = (2280u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(2592));
|
|
aot_gpr_16 = (aot_gpr_16 + aot_gpr_4);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4DDC;
|
|
}
|
|
goto L_08AE4DCC;
|
|
}
|
|
L_08AE4DCC:
|
|
aot_gpr_31 = (0x08AE4DD4u);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0186.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 165u, 0x08AE4DD4u, 0x08AED2F4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0186_entry(rt, ctx, 301u, aot_mem);
|
|
#else
|
|
recomp_unit_0186_entry(rt, ctx, 301u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0186_entry, 186u, 301u, 0x08AED2F4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4DD4u) goto L_08AE4DD4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4DD4:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4E08;
|
|
}
|
|
goto L_08AE4DDC;
|
|
}
|
|
L_08AE4DDC:
|
|
aot_gpr_5 = (static_cast<std::int32_t>(aot_gpr_4) < 101 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4DF8;
|
|
}
|
|
goto L_08AE4DE8;
|
|
}
|
|
L_08AE4DE8:
|
|
aot_gpr_31 = (0x08AE4DF0u);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0186.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 168u, 0x08AE4DF0u, 0x08AED308u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0186_entry(rt, ctx, 302u, aot_mem);
|
|
#else
|
|
recomp_unit_0186_entry(rt, ctx, 302u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0186_entry, 186u, 302u, 0x08AED308u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4DF0u) goto L_08AE4DF0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4DF0:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE4E08;
|
|
}
|
|
goto L_08AE4DF8;
|
|
}
|
|
L_08AE4DF8:
|
|
aot_gpr_17 = (aot_gpr_4 & 65535u);
|
|
aot_gpr_31 = (0x08AE4E04u);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0186.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 170u, 0x08AE4E04u, 0x08AED308u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0186_entry(rt, ctx, 302u, aot_mem);
|
|
#else
|
|
recomp_unit_0186_entry(rt, ctx, 302u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0186_entry, 186u, 302u, 0x08AED308u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4E04u) goto L_08AE4E04;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4E04:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(44), static_cast<std::uint16_t>(aot_gpr_17));
|
|
goto L_08AE4E08;
|
|
L_08AE4E08:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE4E20:
|
|
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), aot_gpr_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(20), aot_gpr_17);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(24), ctx.gpr[18]);
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
{ const std::uint32_t aot_run_words[3]{std::bit_cast<std::uint32_t>(ctx.fpr[20]), std::bit_cast<std::uint32_t>(aot_fpr_22), std::bit_cast<std::uint32_t>(ctx.fpr[24])};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_run_words); }
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(28), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE4E5Cu);
|
|
ctx.gpr[7] = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 173u, 0x08AE4E5Cu, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4E5Cu) goto L_08AE4E5C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4E5C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE4E68u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4E68u) goto L_08AE4E68;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE4E68:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[2] + static_cast<std::uint32_t>(16)));
|
|
ctx.fpr[20] = std::bit_cast<float>(0u);
|
|
aot_gpr_4 = (17204u << 16u);
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12) ^ 0x80000000u);
|
|
aot_gpr_5 = (17332u << 16u);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[2] + static_cast<std::uint32_t>(20)));
|
|
aot_fpr_22 = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((!(std::isnan(aot_fpr_12) || std::isnan(ctx.fpr[20])) && aot_fpr_12 == ctx.fpr[20])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
ctx.fpr[24] = std::bit_cast<float>(aot_gpr_5);
|
|
if (branch_taken) {
|
|
goto L_08AE4EAC;
|
|
}
|
|
goto L_08AE4E94;
|
|
}
|
|
L_08AE4E94:
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((!(std::isnan(aot_fpr_13) || std::isnan(ctx.fpr[20])) && aot_fpr_13 == ctx.fpr[20])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4EAC;
|
|
}
|
|
goto L_08AE4EA4;
|
|
}
|
|
L_08AE4EA4:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
{ const float fs = ctx.fpr[20]; const float ft = aot_fpr_22; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_22 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_22 = fs * ft; }
|
|
if (branch_taken) {
|
|
goto L_08AE4EB8;
|
|
}
|
|
goto L_08AE4EAC;
|
|
}
|
|
L_08AE4EAC:
|
|
aot_gpr_31 = (0x08AE4EB4u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0088.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 178u, 0x08AE4EB4u, 0x08964540u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0088_entry(rt, ctx, 28u, aot_mem);
|
|
#else
|
|
recomp_unit_0088_entry(rt, ctx, 28u, 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, 28u, 0x08964540u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4EB4u) goto L_08AE4EB4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4EB4:
|
|
{ const float fs = ctx.fpr[0]; const float ft = aot_fpr_22; if ((std::isinf(fs) && ft == 0.0f) || (std::isinf(ft) && fs == 0.0f)) aot_fpr_22 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_22 = fs * ft; }
|
|
goto L_08AE4EB8;
|
|
L_08AE4EB8:
|
|
aot_gpr_4 = (16457u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 | 4059u);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
aot_fpr_22 = aot_fpr_22 / aot_fpr_12;
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_22 < ctx.fpr[20])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4EDC;
|
|
}
|
|
goto L_08AE4ED8;
|
|
}
|
|
L_08AE4ED8:
|
|
aot_fpr_22 = aot_fpr_22 + ctx.fpr[24];
|
|
goto L_08AE4EDC;
|
|
L_08AE4EDC:
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_22 <= ctx.fpr[24])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE4EF0;
|
|
}
|
|
goto L_08AE4EEC;
|
|
}
|
|
L_08AE4EEC:
|
|
aot_fpr_22 = aot_fpr_22 - ctx.fpr[24];
|
|
goto L_08AE4EF0;
|
|
L_08AE4EF0:
|
|
aot_gpr_5 = (std::bit_cast<std::uint32_t>(aot_fpr_22));
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_mem.aot_direct_store32(ctx.gpr[18] + static_cast<std::uint32_t>(29704), aot_gpr_5);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
aot_gpr_31 = (0x08AE4F08u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08862890, 23u, 431u, 0x08862890u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], ctx.gpr[7], ctx.gpr[8], ctx.gpr[9], ctx.gpr[10], ctx.gpr[11], aot_gpr_16, aot_gpr_17, ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[28], 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, 431u, 0x08862890u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4F08u) goto L_08AE4F08;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE4F08:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
{ std::uint32_t aot_run_words[7]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_run_words);
|
|
ctx.fpr[20] = std::bit_cast<float>(aot_run_words[0]);
|
|
aot_fpr_22 = std::bit_cast<float>(aot_run_words[1]);
|
|
ctx.fpr[24] = std::bit_cast<float>(aot_run_words[2]);
|
|
aot_gpr_16 = aot_run_words[3];
|
|
aot_gpr_17 = aot_run_words[4];
|
|
ctx.gpr[18] = 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_08AE4F30:
|
|
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_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE4F58u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 186u, 0x08AE4F58u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4F58u) goto L_08AE4F58;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4F58:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE4F64u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4F64u) goto L_08AE4F64;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE4F64:
|
|
aot_gpr_4 = (16457u << 16u);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_4 = (aot_gpr_4 | 4059u);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_gpr_4);
|
|
aot_gpr_5 = (17204u << 16u);
|
|
{ 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_14 = std::bit_cast<float>(aot_gpr_5);
|
|
aot_fpr_12 = aot_fpr_12 / aot_fpr_14;
|
|
aot_gpr_31 = (0x08AE4F8Cu);
|
|
aot_gpr_4 = (ctx.gpr[2] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0170.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 188u, 0x08AE4F8Cu, 0x08AAF8ACu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0170_entry(rt, ctx, 785u, aot_mem);
|
|
#else
|
|
recomp_unit_0170_entry(rt, ctx, 785u, 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, 785u, 0x08AAF8ACu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4F8Cu) goto L_08AE4F8C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4F8C:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE4FA4:
|
|
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_16);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
ctx.gpr[18] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE4FD4u);
|
|
ctx.gpr[7] = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 190u, 0x08AE4FD4u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4FD4u) goto L_08AE4FD4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE4FD4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE4FE0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE4FE0u) goto L_08AE4FE0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE4FE0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(4)));
|
|
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)));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[2] + static_cast<std::uint32_t>(636)));
|
|
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_08AE5008;
|
|
}
|
|
goto L_08AE5000;
|
|
}
|
|
L_08AE5000:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_08AE500C;
|
|
}
|
|
goto L_08AE5008;
|
|
}
|
|
L_08AE5008:
|
|
aot_gpr_4 = (0u | 0u);
|
|
goto L_08AE500C;
|
|
L_08AE500C:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE5030;
|
|
}
|
|
goto L_08AE5028;
|
|
}
|
|
L_08AE5028:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE5078;
|
|
}
|
|
goto L_08AE5030;
|
|
}
|
|
L_08AE5030:
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[7] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_5 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[7]));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(ctx.gpr[6]) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE505C;
|
|
}
|
|
goto L_08AE5050;
|
|
}
|
|
L_08AE5050:
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE5078;
|
|
}
|
|
goto L_08AE505C;
|
|
}
|
|
L_08AE505C:
|
|
aot_gpr_4 = (aot_gpr_4 | aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_5) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE5078;
|
|
}
|
|
goto L_08AE5074;
|
|
}
|
|
L_08AE5074:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE5078;
|
|
L_08AE5078:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE5094:
|
|
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_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE50C0u);
|
|
ctx.gpr[7] = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 202u, 0x08AE50C0u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE50C0u) goto L_08AE50C0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE50C0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE50CCu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE50CCu) goto L_08AE50CC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE50CC:
|
|
aot_gpr_4 = (2239u << 16u);
|
|
aot_gpr_17 = (0u | 0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
ctx.gpr[6] = (aot_gpr_16 | 0u);
|
|
aot_gpr_31 = (0x08AE50E4u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(22192));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0023.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 204u, 0x08AE50E4u, 0x08861FE0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0023_entry(rt, ctx, 321u, aot_mem);
|
|
#else
|
|
recomp_unit_0023_entry(rt, ctx, 321u, 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, 321u, 0x08861FE0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE50E4u) goto L_08AE50E4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE50E4:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE50F0;
|
|
}
|
|
goto L_08AE50EC;
|
|
}
|
|
L_08AE50EC:
|
|
aot_gpr_17 = (0u | 1u);
|
|
goto L_08AE50F0;
|
|
L_08AE50F0:
|
|
aot_gpr_4 = (0u < aot_gpr_17 ? 1u : 0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_17 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
aot_gpr_17 = (0u < aot_gpr_17 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE511C;
|
|
}
|
|
goto L_08AE5114;
|
|
}
|
|
L_08AE5114:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_17));
|
|
if (branch_taken) {
|
|
goto L_08AE5164;
|
|
}
|
|
goto L_08AE511C;
|
|
}
|
|
L_08AE511C:
|
|
aot_gpr_4 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[6] = (aot_gpr_5 + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_4 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[6]));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
aot_gpr_5 = (static_cast<std::int32_t>(aot_gpr_5) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE5148;
|
|
}
|
|
goto L_08AE513C;
|
|
}
|
|
L_08AE513C:
|
|
aot_gpr_4 = (aot_gpr_17 & aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE5164;
|
|
}
|
|
goto L_08AE5148;
|
|
}
|
|
L_08AE5148:
|
|
aot_gpr_4 = (aot_gpr_17 | aot_gpr_4);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_5) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE5164;
|
|
}
|
|
goto L_08AE5160;
|
|
}
|
|
L_08AE5160:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE5164;
|
|
L_08AE5164:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE5180:
|
|
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_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE51A8u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 214u, 0x08AE51A8u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE51A8u) goto L_08AE51A8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE51A8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE51B4u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE51B4u) goto L_08AE51B4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE51B4:
|
|
aot_gpr_4 = (2239u << 16u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
ctx.gpr[6] = (aot_gpr_16 | 0u);
|
|
aot_gpr_31 = (0x08AE51C8u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(22192));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0023.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 216u, 0x08AE51C8u, 0x08861F44u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0023_entry(rt, ctx, 309u, aot_mem);
|
|
#else
|
|
recomp_unit_0023_entry(rt, ctx, 309u, 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, 309u, 0x08861F44u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE51C8u) goto L_08AE51C8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE51C8:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE51E0:
|
|
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_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5200u);
|
|
ctx.gpr[7] = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 218u, 0x08AE5200u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5200u) goto L_08AE5200;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5200:
|
|
aot_gpr_4 = (2239u << 16u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
aot_gpr_31 = (0x08AE5210u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(22192));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0023.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 219u, 0x08AE5210u, 0x08861FA0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0023_entry(rt, ctx, 316u, aot_mem);
|
|
#else
|
|
recomp_unit_0023_entry(rt, ctx, 316u, 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, 316u, 0x08861FA0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5210u) goto L_08AE5210;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5210:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_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_08AE5224:
|
|
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 = (0x08AE5234u);
|
|
ctx.gpr[6] = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 221u, 0x08AE5234u, 0x0886769Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 827u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 827u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 827u, 0x0886769Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5234u) goto L_08AE5234;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5234:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
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_08AE5244:
|
|
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>(8), aot_gpr_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_4);
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5268u);
|
|
ctx.gpr[7] = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 223u, 0x08AE5268u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5268u) goto L_08AE5268;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5268:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE5274u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5274u) goto L_08AE5274;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5274:
|
|
aot_gpr_4 = (0u | 0u);
|
|
aot_mem.aot_direct_store8(aot_gpr_29 + static_cast<std::uint32_t>(0), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_31 = (0x08AE5288u);
|
|
aot_gpr_4 = (ctx.gpr[2] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0023.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 225u, 0x08AE5288u, 0x08863D9Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0023_entry(rt, ctx, 761u, aot_mem);
|
|
#else
|
|
recomp_unit_0023_entry(rt, ctx, 761u, 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, 761u, 0x08863D9Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5288u) goto L_08AE5288;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5288:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
{ const bool branch_taken = ctx.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_08AE5298;
|
|
}
|
|
goto L_08AE5294;
|
|
}
|
|
L_08AE5294:
|
|
aot_gpr_5 = (0u | 1u);
|
|
goto L_08AE5298;
|
|
L_08AE5298:
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_5 = (aot_gpr_5 & 255u);
|
|
aot_gpr_5 = (aot_gpr_5 & 255u);
|
|
ctx.gpr[6] = (0u < ctx.gpr[6] ? 1u : 0u);
|
|
aot_gpr_5 = (aot_gpr_5 ^ ctx.gpr[6]);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = ctx.gpr[6] != 0u;
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE52C4;
|
|
}
|
|
goto L_08AE52BC;
|
|
}
|
|
L_08AE52BC:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_4 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_5));
|
|
if (branch_taken) {
|
|
goto L_08AE530C;
|
|
}
|
|
goto L_08AE52C4;
|
|
}
|
|
L_08AE52C4:
|
|
ctx.gpr[6] = (aot_gpr_4 + static_cast<std::uint32_t>(518));
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load16(ctx.gpr[6] + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[8] = (ctx.gpr[7] + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(ctx.gpr[6] + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[8]));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(521)));
|
|
ctx.gpr[7] = (static_cast<std::int32_t>(ctx.gpr[7]) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[7] == 0u;
|
|
ctx.gpr[6] = (0u < ctx.gpr[6] ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE52F0;
|
|
}
|
|
goto L_08AE52E4;
|
|
}
|
|
L_08AE52E4:
|
|
aot_gpr_5 = (aot_gpr_5 & ctx.gpr[6]);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_4 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_5));
|
|
if (branch_taken) {
|
|
goto L_08AE530C;
|
|
}
|
|
goto L_08AE52F0;
|
|
}
|
|
L_08AE52F0:
|
|
aot_gpr_5 = (aot_gpr_5 | ctx.gpr[6]);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(518)));
|
|
aot_mem.aot_direct_store8(aot_gpr_4 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_5));
|
|
aot_gpr_5 = (static_cast<std::int32_t>(ctx.gpr[6]) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE530C;
|
|
}
|
|
goto L_08AE5308;
|
|
}
|
|
L_08AE5308:
|
|
aot_mem.aot_direct_store16(aot_gpr_4 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE530C;
|
|
L_08AE530C:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_gpr_16 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(12)));
|
|
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_08AE5320:
|
|
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_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5348u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 235u, 0x08AE5348u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5348u) goto L_08AE5348;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5348:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE5354u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5354u) goto L_08AE5354;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5354:
|
|
aot_gpr_31 = (0x08AE535Cu);
|
|
aot_gpr_4 = (ctx.gpr[2] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 237u, 0x08AE535Cu, 0x0886417Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 24u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_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_0024_entry, 24u, 24u, 0x0886417Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE535Cu) goto L_08AE535C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE535C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(522)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE5384;
|
|
}
|
|
goto L_08AE5368;
|
|
}
|
|
L_08AE5368:
|
|
aot_gpr_4 = (2239u << 16u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
ctx.gpr[7] = (aot_gpr_16 | 0u);
|
|
ctx.gpr[8] = (0u | 0u);
|
|
aot_gpr_31 = (0x08AE5384u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(21784));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 239u, 0x08AE5384u, 0x0886565Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 331u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 331u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 331u, 0x0886565Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5384u) goto L_08AE5384;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5384:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE539C:
|
|
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_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE53C4u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 241u, 0x08AE53C4u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE53C4u) goto L_08AE53C4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE53C4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE53D0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE53D0u) goto L_08AE53D0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE53D0:
|
|
aot_gpr_4 = (2239u << 16u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
ctx.gpr[7] = (aot_gpr_16 | 0u);
|
|
ctx.gpr[8] = (0u | 0u);
|
|
aot_gpr_31 = (0x08AE53ECu);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(21784));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 243u, 0x08AE53ECu, 0x0886565Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 331u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 331u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 331u, 0x0886565Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE53ECu) goto L_08AE53EC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE53EC:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE5404:
|
|
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_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5434u);
|
|
ctx.gpr[7] = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 245u, 0x08AE5434u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5434u) goto L_08AE5434;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5434:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE5440u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5440u) goto L_08AE5440;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5440:
|
|
aot_gpr_31 = (0x08AE5448u);
|
|
aot_gpr_4 = (ctx.gpr[2] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0191.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 247u, 0x08AE5448u, 0x08B021B0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0191_entry(rt, ctx, 559u, aot_mem);
|
|
#else
|
|
recomp_unit_0191_entry(rt, ctx, 559u, 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, 559u, 0x08B021B0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5448u) goto L_08AE5448;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5448:
|
|
aot_mem.aot_direct_store32(ctx.gpr[18] + static_cast<std::uint32_t>(29704), ctx.gpr[2]);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
aot_gpr_31 = (0x08AE545Cu);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08862890, 23u, 431u, 0x08862890u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], ctx.gpr[7], ctx.gpr[8], ctx.gpr[9], ctx.gpr[10], ctx.gpr[11], aot_gpr_16, aot_gpr_17, ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[28], 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, 431u, 0x08862890u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE545Cu) goto L_08AE545C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE545C:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE5478:
|
|
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_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE54A8u);
|
|
ctx.gpr[7] = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 250u, 0x08AE54A8u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE54A8u) goto L_08AE54A8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE54A8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE54B4u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE54B4u) goto L_08AE54B4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE54B4:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(ctx.gpr[2] + static_cast<std::uint32_t>(565)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[18] + static_cast<std::uint32_t>(29704), aot_gpr_5);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
aot_gpr_31 = (0x08AE54CCu);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08862890, 23u, 431u, 0x08862890u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], ctx.gpr[7], ctx.gpr[8], ctx.gpr[9], ctx.gpr[10], ctx.gpr[11], aot_gpr_16, aot_gpr_17, ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[28], 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, 431u, 0x08862890u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE54CCu) goto L_08AE54CC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE54CC:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE54E8:
|
|
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_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5508u);
|
|
ctx.gpr[7] = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 254u, 0x08AE5508u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5508u) goto L_08AE5508;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5508:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_mem.aot_direct_store32(ctx.gpr[28] + static_cast<std::uint32_t>(5432), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_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_08AE5524:
|
|
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), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_gpr_16);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
ctx.gpr[18] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (0u | 2u);
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5554u);
|
|
ctx.gpr[7] = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 256u, 0x08AE5554u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5554u) goto L_08AE5554;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5554:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE5560u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5560u) goto L_08AE5560;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5560:
|
|
ctx.gpr[6] = (ctx.gpr[2] | 0u);
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[6] + static_cast<std::uint32_t>(236)));
|
|
{ const bool branch_taken = ctx.gpr[7] == 0u;
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[6] + static_cast<std::uint32_t>(352)));
|
|
if (branch_taken) {
|
|
goto L_08AE55AC;
|
|
}
|
|
goto L_08AE5574;
|
|
}
|
|
L_08AE5574:
|
|
aot_gpr_5 = (aot_gpr_5 | 1u);
|
|
aot_mem.aot_direct_store32(ctx.gpr[6] + static_cast<std::uint32_t>(236), aot_gpr_5);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(188)));
|
|
aot_gpr_5 = (16448u << 16u);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_gpr_5);
|
|
{ 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_5 = (16544u << 16u);
|
|
aot_fpr_14 = std::bit_cast<float>(aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[6] + static_cast<std::uint32_t>(852)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[6] + static_cast<std::uint32_t>(208), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(192)));
|
|
{ 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; }
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store32(ctx.gpr[6] + static_cast<std::uint32_t>(212), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
if (branch_taken) {
|
|
goto L_08AE55CC;
|
|
}
|
|
goto L_08AE55AC;
|
|
}
|
|
L_08AE55AC:
|
|
ctx.gpr[7] = (0u + static_cast<std::uint32_t>(-2));
|
|
aot_gpr_5 = (aot_gpr_5 & ctx.gpr[7]);
|
|
aot_mem.aot_direct_store32(ctx.gpr[6] + static_cast<std::uint32_t>(236), aot_gpr_5);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(188)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[6] + static_cast<std::uint32_t>(852)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[6] + static_cast<std::uint32_t>(208), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(192)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[6] + static_cast<std::uint32_t>(212), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
goto L_08AE55CC;
|
|
L_08AE55CC:
|
|
ctx.gpr[7] = (0u | 1u);
|
|
if (aot_gpr_5 == ctx.gpr[7]) {
|
|
aot_gpr_5 = (15363u << 16u);
|
|
goto L_08AE55E4;
|
|
}
|
|
goto L_08AE55D8;
|
|
L_08AE55D8:
|
|
{ const bool branch_taken = aot_gpr_5 != aot_gpr_16;
|
|
if (branch_taken) {
|
|
goto L_08AE5614;
|
|
}
|
|
goto L_08AE55E0;
|
|
}
|
|
L_08AE55E0:
|
|
aot_gpr_5 = (15363u << 16u);
|
|
goto L_08AE55E4;
|
|
L_08AE55E4:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[6] + static_cast<std::uint32_t>(208)));
|
|
aot_gpr_5 = (aot_gpr_5 | 4719u);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_gpr_5);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(176)));
|
|
{ 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_5 = (17096u << 16u);
|
|
aot_fpr_14 = std::bit_cast<float>(aot_gpr_5);
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fpr[15] = static_cast<float>(static_cast<std::int32_t>(std::bit_cast<std::uint32_t>(ctx.fpr[15])));
|
|
{ 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 / ctx.fpr[15];
|
|
aot_mem.aot_direct_store32(ctx.gpr[6] + static_cast<std::uint32_t>(344), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
goto L_08AE5614;
|
|
L_08AE5614:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE5630:
|
|
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_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5658u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 266u, 0x08AE5658u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5658u) goto L_08AE5658;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5658:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE5664u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5664u) goto L_08AE5664;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5664:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(ctx.gpr[2] + static_cast<std::uint32_t>(310)));
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE5678;
|
|
}
|
|
goto L_08AE5670;
|
|
}
|
|
L_08AE5670:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_08AE567C;
|
|
}
|
|
goto L_08AE5678;
|
|
}
|
|
L_08AE5678:
|
|
aot_gpr_4 = (0u | 0u);
|
|
goto L_08AE567C;
|
|
L_08AE567C:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE56A0;
|
|
}
|
|
goto L_08AE5698;
|
|
}
|
|
L_08AE5698:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE56E8;
|
|
}
|
|
goto L_08AE56A0;
|
|
}
|
|
L_08AE56A0:
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[7] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_5 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[7]));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(ctx.gpr[6]) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE56CC;
|
|
}
|
|
goto L_08AE56C0;
|
|
}
|
|
L_08AE56C0:
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE56E8;
|
|
}
|
|
goto L_08AE56CC;
|
|
}
|
|
L_08AE56CC:
|
|
aot_gpr_4 = (aot_gpr_4 | aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_5) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE56E8;
|
|
}
|
|
goto L_08AE56E4;
|
|
}
|
|
L_08AE56E4:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE56E8;
|
|
L_08AE56E8:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE5700:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(16), aot_run_words); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_17 = (2236u << 16u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_31 = (0x08AE5728u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 278u, 0x08AE5728u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5728u) goto L_08AE5728;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5728:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE5734u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5734u) goto L_08AE5734;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5734:
|
|
aot_gpr_4 = (ctx.gpr[2] + static_cast<std::uint32_t>(32));
|
|
{ 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); }
|
|
{ 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); }
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_4 = (49016u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 | 20972u);
|
|
aot_fpr_13 = 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_08AE5768;
|
|
}
|
|
goto L_08AE5760;
|
|
}
|
|
L_08AE5760:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_08AE576C;
|
|
}
|
|
goto L_08AE5768;
|
|
}
|
|
L_08AE5768:
|
|
aot_gpr_4 = (0u | 0u);
|
|
goto L_08AE576C;
|
|
L_08AE576C:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE5790;
|
|
}
|
|
goto L_08AE5788;
|
|
}
|
|
L_08AE5788:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE57E0;
|
|
}
|
|
goto L_08AE5790;
|
|
}
|
|
L_08AE5790:
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[7] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(ctx.gpr[6]) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_mem.aot_direct_store16(aot_gpr_5 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[7]));
|
|
if (branch_taken) {
|
|
goto L_08AE57BC;
|
|
}
|
|
goto L_08AE57A8;
|
|
}
|
|
L_08AE57A8:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE57E0;
|
|
}
|
|
goto L_08AE57BC;
|
|
}
|
|
L_08AE57BC:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 | aot_gpr_5);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[6]) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE57E0;
|
|
}
|
|
goto L_08AE57DC;
|
|
}
|
|
L_08AE57DC:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE57E0;
|
|
L_08AE57E0:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(16), aot_run_words);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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>(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_08AE57F8:
|
|
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_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5820u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 290u, 0x08AE5820u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5820u) goto L_08AE5820;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5820:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE582Cu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE582Cu) goto L_08AE582C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE582C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[2] + static_cast<std::uint32_t>(680), aot_gpr_4);
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE584C:
|
|
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_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE586Cu);
|
|
ctx.gpr[7] = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 293u, 0x08AE586Cu, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE586Cu) goto L_08AE586C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE586C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE5878u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5878u) goto L_08AE5878;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5878:
|
|
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[2] + static_cast<std::uint32_t>(615))))));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[2] + static_cast<std::uint32_t>(92)));
|
|
aot_gpr_4 = (aot_gpr_4 | 64u);
|
|
aot_mem.aot_direct_store8(ctx.gpr[2] + static_cast<std::uint32_t>(615), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_gpr_5 + static_cast<std::uint32_t>(328));
|
|
aot_gpr_5 = (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)));
|
|
aot_gpr_4 = (ctx.gpr[2] + aot_gpr_5);
|
|
aot_gpr_5 = (0u | 0u);
|
|
jump_target = ctx.gpr[7];
|
|
aot_gpr_31 = (0x08AE58A4u);
|
|
ctx.gpr[6] = (0u | 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 == 0x08AE58A4u) goto L_08AE58A4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE58A4:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_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_08AE58B8:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(16), aot_run_words); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_17 = (2236u << 16u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_31 = (0x08AE58E0u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 297u, 0x08AE58E0u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE58E0u) goto L_08AE58E0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE58E0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE58ECu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE58ECu) goto L_08AE58EC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE58EC:
|
|
aot_gpr_4 = (ctx.gpr[2] + static_cast<std::uint32_t>(32));
|
|
{ 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); }
|
|
{ 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); }
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(8)));
|
|
aot_fpr_13 = std::bit_cast<float>(0u);
|
|
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_08AE5918;
|
|
}
|
|
goto L_08AE5910;
|
|
}
|
|
L_08AE5910:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_08AE591C;
|
|
}
|
|
goto L_08AE5918;
|
|
}
|
|
L_08AE5918:
|
|
aot_gpr_4 = (0u | 0u);
|
|
goto L_08AE591C;
|
|
L_08AE591C:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE5940;
|
|
}
|
|
goto L_08AE5938;
|
|
}
|
|
L_08AE5938:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE5990;
|
|
}
|
|
goto L_08AE5940;
|
|
}
|
|
L_08AE5940:
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[7] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(ctx.gpr[6]) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_mem.aot_direct_store16(aot_gpr_5 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[7]));
|
|
if (branch_taken) {
|
|
goto L_08AE596C;
|
|
}
|
|
goto L_08AE5958;
|
|
}
|
|
L_08AE5958:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE5990;
|
|
}
|
|
goto L_08AE596C;
|
|
}
|
|
L_08AE596C:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 | aot_gpr_5);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(ctx.gpr[6]) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE5990;
|
|
}
|
|
goto L_08AE598C;
|
|
}
|
|
L_08AE598C:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE5990;
|
|
L_08AE5990:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(16), aot_run_words);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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>(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_08AE59A8:
|
|
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_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE59D0u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 309u, 0x08AE59D0u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE59D0u) goto L_08AE59D0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE59D0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE59DCu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE59DCu) goto L_08AE59DC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE59DC:
|
|
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[2] + static_cast<std::uint32_t>(1653))))));
|
|
aot_gpr_5 = (aot_gpr_5 & 7u);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
aot_gpr_4 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE59F0;
|
|
}
|
|
goto L_08AE59EC;
|
|
}
|
|
L_08AE59EC:
|
|
aot_gpr_4 = (0u | 1u);
|
|
goto L_08AE59F0;
|
|
L_08AE59F0:
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE5A1C;
|
|
}
|
|
goto L_08AE5A14;
|
|
}
|
|
L_08AE5A14:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE5A64;
|
|
}
|
|
goto L_08AE5A1C;
|
|
}
|
|
L_08AE5A1C:
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[7] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_5 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[7]));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(ctx.gpr[6]) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE5A48;
|
|
}
|
|
goto L_08AE5A3C;
|
|
}
|
|
L_08AE5A3C:
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE5A64;
|
|
}
|
|
goto L_08AE5A48;
|
|
}
|
|
L_08AE5A48:
|
|
aot_gpr_4 = (aot_gpr_4 | aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_5) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE5A64;
|
|
}
|
|
goto L_08AE5A60;
|
|
}
|
|
L_08AE5A60:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE5A64;
|
|
L_08AE5A64:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE5A7C:
|
|
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_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5AA4u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 320u, 0x08AE5AA4u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5AA4u) goto L_08AE5AA4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5AA4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE5AB0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5AB0u) goto L_08AE5AB0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5AB0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
aot_fpr_12 = static_cast<float>(static_cast<std::int32_t>(std::bit_cast<std::uint32_t>(aot_fpr_12)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[2] + static_cast<std::uint32_t>(636), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE5AD8:
|
|
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_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5B08u);
|
|
ctx.gpr[7] = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 323u, 0x08AE5B08u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5B08u) goto L_08AE5B08;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5B08:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE5B14u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5B14u) goto L_08AE5B14;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5B14:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[2] + static_cast<std::uint32_t>(636)));
|
|
aot_fpr_12 = std::bit_cast<float>(ctx.fpu_float_to_word_ct<1u>(aot_fpr_12));
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
ctx.gpr[7] = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_31 = (0x08AE5B34u);
|
|
aot_mem.aot_direct_store32(ctx.gpr[18] + static_cast<std::uint32_t>(29704), ctx.gpr[7]);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08862890, 23u, 431u, 0x08862890u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], ctx.gpr[7], ctx.gpr[8], ctx.gpr[9], ctx.gpr[10], ctx.gpr[11], aot_gpr_16, aot_gpr_17, ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[28], 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, 431u, 0x08862890u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5B34u) goto L_08AE5B34;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5B34:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE5B50:
|
|
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_16);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), ctx.gpr[18]);
|
|
ctx.gpr[18] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5B80u);
|
|
ctx.gpr[7] = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 327u, 0x08AE5B80u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5B80u) goto L_08AE5B80;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5B80:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE5B8Cu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5B8Cu) goto L_08AE5B8C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5B8C:
|
|
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[2] + static_cast<std::uint32_t>(1653))))));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_5 = (aot_gpr_5 & 7u);
|
|
{ const bool branch_taken = aot_gpr_5 != ctx.gpr[6];
|
|
aot_gpr_4 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE5BA4;
|
|
}
|
|
goto L_08AE5BA0;
|
|
}
|
|
L_08AE5BA0:
|
|
aot_gpr_4 = (0u | 1u);
|
|
goto L_08AE5BA4;
|
|
L_08AE5BA4:
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE5BD0;
|
|
}
|
|
goto L_08AE5BC8;
|
|
}
|
|
L_08AE5BC8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE5C18;
|
|
}
|
|
goto L_08AE5BD0;
|
|
}
|
|
L_08AE5BD0:
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[7] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_5 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[7]));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(ctx.gpr[6]) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE5BFC;
|
|
}
|
|
goto L_08AE5BF0;
|
|
}
|
|
L_08AE5BF0:
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE5C18;
|
|
}
|
|
goto L_08AE5BFC;
|
|
}
|
|
L_08AE5BFC:
|
|
aot_gpr_4 = (aot_gpr_4 | aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_5) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE5C18;
|
|
}
|
|
goto L_08AE5C14;
|
|
}
|
|
L_08AE5C14:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE5C18;
|
|
L_08AE5C18:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE5C34:
|
|
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>(276), aot_gpr_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(280), aot_gpr_17);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 3u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(284), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5C5Cu);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 338u, 0x08AE5C5Cu, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5C5Cu) goto L_08AE5C5C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5C5C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE5C68u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5C68u) goto L_08AE5C68;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5C68:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_4) < 256 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_gpr_16 = (ctx.gpr[2] | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE5C88;
|
|
}
|
|
goto L_08AE5C78;
|
|
}
|
|
L_08AE5C78:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_4) < 256 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE5C9C;
|
|
}
|
|
goto L_08AE5C88;
|
|
}
|
|
L_08AE5C88:
|
|
aot_gpr_5 = (2232u << 16u);
|
|
aot_gpr_4 = (aot_gpr_29 + static_cast<std::uint32_t>(4));
|
|
ctx.gpr[6] = (0u | 256u);
|
|
aot_gpr_31 = (0x08AE5C9Cu);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(16864));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0212_entry, 212u, 576u, 0x08B562D8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5C9Cu) goto L_08AE5C9C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5C9C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5840)));
|
|
if (aot_gpr_4 != 0u) {
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
goto L_08AE5CB8;
|
|
}
|
|
goto L_08AE5CA8;
|
|
L_08AE5CA8:
|
|
aot_gpr_31 = (0x08AE5CB0u);
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 333u, 0x08B656D8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5CB0u) goto L_08AE5CB0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5CB0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5840)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
goto L_08AE5CB8;
|
|
L_08AE5CB8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(8)));
|
|
ctx.gpr[6] = (aot_gpr_5 + aot_gpr_5);
|
|
aot_gpr_5 = (aot_gpr_5 + ctx.gpr[6]);
|
|
aot_gpr_4 = (aot_gpr_4 + aot_gpr_5);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(384));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(1)));
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(2)));
|
|
aot_gpr_4 = (aot_gpr_29 + static_cast<std::uint32_t>(260));
|
|
aot_gpr_31 = (0x08AE5CE4u);
|
|
ctx.gpr[8] = (0u | 255u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08A3550C, 140u, 317u, 0x08A3550Cu>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.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_0140_entry, 140u, 317u, 0x08A3550Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5CE4u) goto L_08AE5CE4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5CE4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(260)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_gpr_4);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(548), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_29 + static_cast<std::uint32_t>(1)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(549), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_29 + static_cast<std::uint32_t>(2)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(550), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_29 + static_cast<std::uint32_t>(3)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(551), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5840)));
|
|
if (aot_gpr_4 != 0u) {
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(8)));
|
|
goto L_08AE5D28;
|
|
}
|
|
goto L_08AE5D18;
|
|
L_08AE5D18:
|
|
aot_gpr_31 = (0x08AE5D20u);
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 333u, 0x08B656D8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5D20u) goto L_08AE5D20;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5D20:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5840)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(8)));
|
|
goto L_08AE5D28;
|
|
L_08AE5D28:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(8)));
|
|
ctx.gpr[6] = (aot_gpr_5 + aot_gpr_5);
|
|
aot_gpr_5 = (aot_gpr_5 + ctx.gpr[6]);
|
|
aot_gpr_4 = (aot_gpr_4 + aot_gpr_5);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(384));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(1)));
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(2)));
|
|
aot_gpr_4 = (aot_gpr_29 + static_cast<std::uint32_t>(268));
|
|
aot_gpr_31 = (0x08AE5D54u);
|
|
ctx.gpr[8] = (0u | 255u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08A3550C, 140u, 317u, 0x08A3550Cu>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.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_0140_entry, 140u, 317u, 0x08A3550Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5D54u) goto L_08AE5D54;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5D54:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(268)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_gpr_4);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(552), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_29 + static_cast<std::uint32_t>(1)));
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(553), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_29 + static_cast<std::uint32_t>(2)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(554), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_29 + static_cast<std::uint32_t>(3)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(555), static_cast<std::uint8_t>(aot_gpr_4));
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(276), aot_run_words);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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>(288));
|
|
// 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_08AE5D94:
|
|
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_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5DBCu);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 352u, 0x08AE5DBCu, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5DBCu) goto L_08AE5DBC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5DBC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE5DC8u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5DC8u) goto L_08AE5DC8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5DC8:
|
|
aot_gpr_16 = (ctx.gpr[2] | 0u);
|
|
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_16 + static_cast<std::uint32_t>(1653))))));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
ctx.gpr[6] = (0u + static_cast<std::uint32_t>(-8));
|
|
aot_gpr_5 = (aot_gpr_5 & 255u);
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[6]);
|
|
aot_gpr_5 = (aot_gpr_5 & 7u);
|
|
aot_gpr_4 = (aot_gpr_4 | aot_gpr_5);
|
|
aot_gpr_31 = (0x08AE5DF0u);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(1653), static_cast<std::uint8_t>(aot_gpr_4));
|
|
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 == 0x08AE5DF0u) goto L_08AE5DF0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5DF0:
|
|
aot_mem.aot_direct_store32(aot_gpr_16 + static_cast<std::uint32_t>(1656), ctx.gpr[2]);
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE5E0C:
|
|
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_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5E34u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 356u, 0x08AE5E34u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5E34u) goto L_08AE5E34;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5E34:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE5E40u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5E40u) goto L_08AE5E40;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5E40:
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
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_5 + static_cast<std::uint32_t>(616))))));
|
|
if (branch_taken) {
|
|
goto L_08AE5E60;
|
|
}
|
|
goto L_08AE5E50;
|
|
}
|
|
L_08AE5E50:
|
|
ctx.gpr[6] = (0u + static_cast<std::uint32_t>(-2));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[6]);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(616), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE5E68;
|
|
}
|
|
goto L_08AE5E60;
|
|
}
|
|
L_08AE5E60:
|
|
aot_gpr_4 = (aot_gpr_4 | 1u);
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(616), static_cast<std::uint8_t>(aot_gpr_4));
|
|
goto L_08AE5E68;
|
|
L_08AE5E68:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE5E80:
|
|
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_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5EA8u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 362u, 0x08AE5EA8u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5EA8u) goto L_08AE5EA8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5EA8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE5EB4u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5EB4u) goto L_08AE5EB4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5EB4:
|
|
aot_gpr_17 = (0u | 0u);
|
|
aot_gpr_31 = (0x08AE5EC0u);
|
|
aot_gpr_4 = (ctx.gpr[2] | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B01E00, 191u, 504u, 0x08B01E00u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0191_entry, 191u, 504u, 0x08B01E00u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5EC0u) goto L_08AE5EC0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5EC0:
|
|
aot_gpr_4 = (0u | 4u);
|
|
{ const bool branch_taken = ctx.gpr[2] != aot_gpr_4;
|
|
if (branch_taken) {
|
|
goto L_08AE5ED0;
|
|
}
|
|
goto L_08AE5ECC;
|
|
}
|
|
L_08AE5ECC:
|
|
aot_gpr_17 = (0u | 1u);
|
|
goto L_08AE5ED0;
|
|
L_08AE5ED0:
|
|
aot_gpr_4 = (0u < aot_gpr_17 ? 1u : 0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_17 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
aot_gpr_17 = (0u < aot_gpr_17 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE5EFC;
|
|
}
|
|
goto L_08AE5EF4;
|
|
}
|
|
L_08AE5EF4:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_17));
|
|
if (branch_taken) {
|
|
goto L_08AE5F44;
|
|
}
|
|
goto L_08AE5EFC;
|
|
}
|
|
L_08AE5EFC:
|
|
aot_gpr_4 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[6] = (aot_gpr_5 + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_4 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[6]));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
aot_gpr_5 = (static_cast<std::int32_t>(aot_gpr_5) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE5F28;
|
|
}
|
|
goto L_08AE5F1C;
|
|
}
|
|
L_08AE5F1C:
|
|
aot_gpr_4 = (aot_gpr_17 & aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE5F44;
|
|
}
|
|
goto L_08AE5F28;
|
|
}
|
|
L_08AE5F28:
|
|
aot_gpr_4 = (aot_gpr_17 | aot_gpr_4);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_5) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE5F44;
|
|
}
|
|
goto L_08AE5F40;
|
|
}
|
|
L_08AE5F40:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE5F44;
|
|
L_08AE5F44:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE5F5C:
|
|
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_16);
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE5F84u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 374u, 0x08AE5F84u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5F84u) goto L_08AE5F84;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE5F84:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE5F90u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE5F90u) goto L_08AE5F90;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE5F90:
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(72)));
|
|
if (branch_taken) {
|
|
goto L_08AE5FB0;
|
|
}
|
|
goto L_08AE5FA0;
|
|
}
|
|
L_08AE5FA0:
|
|
ctx.gpr[6] = (16384u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 | ctx.gpr[6]);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
if (branch_taken) {
|
|
goto L_08AE5FC0;
|
|
}
|
|
goto L_08AE5FB0;
|
|
}
|
|
L_08AE5FB0:
|
|
ctx.gpr[6] = (49152u << 16u);
|
|
ctx.gpr[6] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[6]);
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
goto L_08AE5FC0;
|
|
L_08AE5FC0:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE5FD8:
|
|
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), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_gpr_16);
|
|
aot_gpr_16 = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 6u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE6000u);
|
|
ctx.gpr[7] = (aot_gpr_16 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 380u, 0x08AE6000u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6000u) goto L_08AE6000;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6000:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE600Cu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE600Cu) goto L_08AE600C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE600C:
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(72)));
|
|
if (branch_taken) {
|
|
goto L_08AE6030;
|
|
}
|
|
goto L_08AE601C;
|
|
}
|
|
L_08AE601C:
|
|
ctx.gpr[6] = (1024u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 | ctx.gpr[6]);
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(8)));
|
|
if (branch_taken) {
|
|
goto L_08AE6044;
|
|
}
|
|
goto L_08AE6030;
|
|
}
|
|
L_08AE6030:
|
|
ctx.gpr[6] = (64512u << 16u);
|
|
ctx.gpr[6] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[6]);
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(8)));
|
|
goto L_08AE6044;
|
|
L_08AE6044:
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE6060;
|
|
}
|
|
goto L_08AE604C;
|
|
}
|
|
L_08AE604C:
|
|
ctx.gpr[6] = (2048u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 | ctx.gpr[6]);
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(12)));
|
|
if (branch_taken) {
|
|
goto L_08AE6074;
|
|
}
|
|
goto L_08AE6060;
|
|
}
|
|
L_08AE6060:
|
|
ctx.gpr[6] = (63488u << 16u);
|
|
ctx.gpr[6] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[6]);
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(12)));
|
|
goto L_08AE6074;
|
|
L_08AE6074:
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE6090;
|
|
}
|
|
goto L_08AE607C;
|
|
}
|
|
L_08AE607C:
|
|
ctx.gpr[6] = (4u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 | ctx.gpr[6]);
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(16)));
|
|
if (branch_taken) {
|
|
goto L_08AE60A4;
|
|
}
|
|
goto L_08AE6090;
|
|
}
|
|
L_08AE6090:
|
|
ctx.gpr[6] = (65532u << 16u);
|
|
ctx.gpr[6] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[6]);
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(16)));
|
|
goto L_08AE60A4;
|
|
L_08AE60A4:
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE60C0;
|
|
}
|
|
goto L_08AE60AC;
|
|
}
|
|
L_08AE60AC:
|
|
ctx.gpr[6] = (4096u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 | ctx.gpr[6]);
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_16 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(20)));
|
|
if (branch_taken) {
|
|
goto L_08AE60D4;
|
|
}
|
|
goto L_08AE60C0;
|
|
}
|
|
L_08AE60C0:
|
|
ctx.gpr[6] = (61440u << 16u);
|
|
ctx.gpr[6] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[6]);
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
aot_gpr_16 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(20)));
|
|
goto L_08AE60D4;
|
|
L_08AE60D4:
|
|
{ const bool branch_taken = aot_gpr_16 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE60EC;
|
|
}
|
|
goto L_08AE60DC;
|
|
}
|
|
L_08AE60DC:
|
|
ctx.gpr[6] = (8192u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 | ctx.gpr[6]);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
if (branch_taken) {
|
|
goto L_08AE60FC;
|
|
}
|
|
goto L_08AE60EC;
|
|
}
|
|
L_08AE60EC:
|
|
ctx.gpr[6] = (57344u << 16u);
|
|
ctx.gpr[6] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[6]);
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
goto L_08AE60FC;
|
|
L_08AE60FC:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE6114:
|
|
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_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_17);
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_gpr_31);
|
|
aot_gpr_31 = (0x08AE613Cu);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 398u, 0x08AE613Cu, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE613Cu) goto L_08AE613C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE613C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6148u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6148u) goto L_08AE6148;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6148:
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
aot_gpr_4 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE6168;
|
|
}
|
|
goto L_08AE6154;
|
|
}
|
|
L_08AE6154:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(236)));
|
|
aot_gpr_5 = (aot_gpr_5 & 256u);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE6168;
|
|
}
|
|
goto L_08AE6164;
|
|
}
|
|
L_08AE6164:
|
|
aot_gpr_4 = (0u | 1u);
|
|
goto L_08AE6168;
|
|
L_08AE6168:
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE6194;
|
|
}
|
|
goto L_08AE618C;
|
|
}
|
|
L_08AE618C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE61DC;
|
|
}
|
|
goto L_08AE6194;
|
|
}
|
|
L_08AE6194:
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[7] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_5 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[7]));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(ctx.gpr[6]) < 9 ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE61C0;
|
|
}
|
|
goto L_08AE61B4;
|
|
}
|
|
L_08AE61B4:
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE61DC;
|
|
}
|
|
goto L_08AE61C0;
|
|
}
|
|
L_08AE61C0:
|
|
aot_gpr_4 = (aot_gpr_4 | aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_5) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE61DC;
|
|
}
|
|
goto L_08AE61D8;
|
|
}
|
|
L_08AE61D8:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE61DC;
|
|
L_08AE61DC:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE61F4:
|
|
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), aot_gpr_16);
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
{ const std::uint32_t aot_run_words[3]{std::bit_cast<std::uint32_t>(ctx.fpr[20]), std::bit_cast<std::uint32_t>(aot_fpr_22), std::bit_cast<std::uint32_t>(ctx.fpr[24])};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(84), aot_run_words); }
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_17, ctx.gpr[18], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(100), aot_run_words); }
|
|
aot_gpr_17 = (2236u << 16u);
|
|
ctx.gpr[18] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
ctx.gpr[6] = (0u | 4u);
|
|
aot_gpr_31 = (0x08AE6234u);
|
|
ctx.gpr[7] = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 410u, 0x08AE6234u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6234u) goto L_08AE6234;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6234:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6240u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6240u) goto L_08AE6240;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6240:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(ctx.gpr[18] + static_cast<std::uint32_t>(4), aot_run_words);
|
|
aot_fpr_22 = std::bit_cast<float>(aot_run_words[0]);
|
|
ctx.fpr[20] = std::bit_cast<float>(aot_run_words[1]);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_run_words[2]);
|
|
}
|
|
aot_gpr_4 = (49864u << 16u);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((!(std::isnan(aot_fpr_12) || std::isnan(aot_fpr_13)) && aot_fpr_12 == aot_fpr_13)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
aot_gpr_16 = (ctx.gpr[2] | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE627C;
|
|
}
|
|
goto L_08AE6264;
|
|
}
|
|
L_08AE6264:
|
|
aot_gpr_4 = (50042u << 16u);
|
|
aot_fpr_13 = 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_08AE628C;
|
|
}
|
|
goto L_08AE627C;
|
|
}
|
|
L_08AE627C:
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_22));
|
|
aot_gpr_31 = (0x08AE6288u);
|
|
aot_fpr_13 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[20]));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0035.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 414u, 0x08AE6288u, 0x088933E8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0035_entry(rt, ctx, 514u, aot_mem);
|
|
#else
|
|
recomp_unit_0035_entry(rt, ctx, 514u, 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, 514u, 0x088933E8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6288u) goto L_08AE6288;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6288:
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[0]));
|
|
goto L_08AE628C;
|
|
L_08AE628C:
|
|
ctx.fpr[24] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_31 = (0x08AE6298u);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0179.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 416u, 0x08AE6298u, 0x08AD0AE4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0179_entry(rt, ctx, 160u, aot_mem);
|
|
#else
|
|
recomp_unit_0179_entry(rt, ctx, 160u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0179_entry, 179u, 160u, 0x08AD0AE4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6298u) goto L_08AE6298;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6298:
|
|
aot_fpr_13 = ctx.fpr[24] + ctx.fpr[0];
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(32), std::bit_cast<std::uint32_t>(aot_fpr_22));
|
|
aot_gpr_4 = (15395u << 16u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(36), std::bit_cast<std::uint32_t>(ctx.fpr[20]));
|
|
aot_gpr_4 = (aot_gpr_4 | 55051u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(40), std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
aot_fpr_12 = 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(aot_gpr_16 + static_cast<std::uint32_t>(533))))));
|
|
aot_gpr_5 = (static_cast<std::int32_t>(aot_gpr_4) < 12 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_4) < 14 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE6308;
|
|
}
|
|
goto L_08AE62C4;
|
|
}
|
|
L_08AE62C4:
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE6308;
|
|
}
|
|
goto L_08AE62CC;
|
|
}
|
|
L_08AE62CC:
|
|
aot_gpr_4 = (aot_gpr_16 + static_cast<std::uint32_t>(448));
|
|
{ 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 = (aot_gpr_29 + static_cast<std::uint32_t>(32));
|
|
{ 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>();
|
|
aot_gpr_4 = (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_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); }
|
|
ctx.execute_vfpu_vdot_ct<28u, 0u, 0u, 3u>();
|
|
aot_gpr_4 = (ctx.vfpu_scalar_bits_ct<28u>());
|
|
aot_fpr_14 = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_14 < aot_fpr_12)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE6338;
|
|
}
|
|
goto L_08AE6308;
|
|
}
|
|
L_08AE6308:
|
|
{ const std::uint32_t aot_run_words[3]{std::bit_cast<std::uint32_t>(aot_fpr_22), std::bit_cast<std::uint32_t>(ctx.fpr[20]), std::bit_cast<std::uint32_t>(aot_fpr_13)};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (aot_gpr_29 | 0u);
|
|
aot_gpr_31 = (0x08AE6324u);
|
|
ctx.gpr[6] = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0207.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 420u, 0x08AE6324u, 0x08B4196Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0207_entry(rt, ctx, 391u, aot_mem);
|
|
#else
|
|
recomp_unit_0207_entry(rt, ctx, 391u, 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, 391u, 0x08B4196Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6324u) goto L_08AE6324;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6324:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE6340;
|
|
}
|
|
goto L_08AE632C;
|
|
}
|
|
L_08AE632C:
|
|
aot_gpr_4 = (0u | 13u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(533), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE6348;
|
|
}
|
|
goto L_08AE6338;
|
|
}
|
|
L_08AE6338:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[2] = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE6398;
|
|
}
|
|
goto L_08AE6340;
|
|
}
|
|
L_08AE6340:
|
|
aot_gpr_4 = (0u | 12u);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(533), static_cast<std::uint8_t>(aot_gpr_4));
|
|
goto L_08AE6348;
|
|
L_08AE6348:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-497));
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
aot_gpr_4 = (aot_gpr_4 | 48u);
|
|
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_16 + static_cast<std::uint32_t>(613))))));
|
|
aot_mem.aot_direct_store32(aot_gpr_16 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_5 | 16u);
|
|
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_16 + static_cast<std::uint32_t>(535))))));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(613), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (0u | 1u);
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(aot_gpr_4) < static_cast<std::int32_t>(aot_gpr_5) ? 1u : 0u);
|
|
if (ctx.gpr[6] != 0u) {
|
|
aot_gpr_4 = (aot_gpr_5 | 0u);
|
|
goto L_08AE637C;
|
|
}
|
|
goto L_08AE637C;
|
|
L_08AE637C:
|
|
aot_gpr_4 = (aot_gpr_4 << 24u);
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(aot_gpr_4) >> 24u));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(535), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7660)));
|
|
ctx.gpr[2] = (0u | 0u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store32(aot_gpr_16 + static_cast<std::uint32_t>(504), aot_gpr_4);
|
|
if (branch_taken) {
|
|
goto L_08AE6398;
|
|
}
|
|
goto L_08AE6398;
|
|
}
|
|
L_08AE6398:
|
|
{ std::uint32_t aot_run_words[7]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(84), aot_run_words);
|
|
ctx.fpr[20] = std::bit_cast<float>(aot_run_words[0]);
|
|
aot_fpr_22 = std::bit_cast<float>(aot_run_words[1]);
|
|
ctx.fpr[24] = std::bit_cast<float>(aot_run_words[2]);
|
|
aot_gpr_16 = aot_run_words[3];
|
|
aot_gpr_17 = aot_run_words[4];
|
|
ctx.gpr[18] = 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>(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_08AE63BC:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-64));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(48), aot_run_words); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_17 = (2236u << 16u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_31 = (0x08AE63E4u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 428u, 0x08AE63E4u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE63E4u) goto L_08AE63E4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE63E4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE63F0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE63F0u) goto L_08AE63F0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE63F0:
|
|
aot_gpr_4 = (0u | 0u);
|
|
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[2] + static_cast<std::uint32_t>(86))))));
|
|
aot_gpr_5 = (aot_gpr_5 << 2u);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(24)));
|
|
aot_gpr_5 = (ctx.gpr[6] + aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(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>(20)));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(16), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(4)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(20), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(8)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(24), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_5 = (aot_gpr_29 + static_cast<std::uint32_t>(16));
|
|
{ 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); }
|
|
{ const std::uint32_t vfpu_address = ctx.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<4u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[2] + 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[2] + 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[2] + static_cast<std::uint32_t>(48);
|
|
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, 1u, 3u, 3u>();
|
|
ctx.execute_vfpu_vec3_ct<0u, 0u, 7u, 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); }
|
|
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[2] + static_cast<std::uint32_t>(86))))));
|
|
aot_gpr_5 = (aot_gpr_5 << 2u);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(24)));
|
|
aot_gpr_5 = (ctx.gpr[6] + aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(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>(20)));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(12)));
|
|
{ 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<12u, 4u>(vfpu_value); }
|
|
aot_gpr_5 = (2246u << 16u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(1840));
|
|
{ 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<36u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_5 + 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<37u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_5 + 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<38u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = aot_gpr_5 + static_cast<std::uint32_t>(48);
|
|
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<39u, 4u>(vfpu_value); }
|
|
aot_gpr_5 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
ctx.set_vfpu_scalar_bits_ct<0u>(aot_gpr_5);
|
|
ctx.execute_vfpu_vtfm_ct<14u, 36u, 12u, 4u, 3u>();
|
|
ctx.vfpu_ctrl[1u] = 0x00000000u;
|
|
ctx.execute_vfpu_vcmp_ct<14u, 0u, 4u, 3u>();
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(0));
|
|
{ const bool branch_taken = ((ctx.vfpu_ctrl[3] >> 5u) & 1u) == 0u;
|
|
// vflush: architectural no-op that retains VFPU prefixes
|
|
if (branch_taken) {
|
|
goto L_08AE64A8;
|
|
}
|
|
goto L_08AE64A0;
|
|
}
|
|
L_08AE64A0:
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(1));
|
|
aot_gpr_5 = (aot_gpr_5 & 255u);
|
|
goto L_08AE64A8;
|
|
L_08AE64A8:
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE64B4;
|
|
}
|
|
goto L_08AE64B0;
|
|
}
|
|
L_08AE64B0:
|
|
aot_gpr_4 = (0u | 1u);
|
|
goto L_08AE64B4;
|
|
L_08AE64B4:
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE64E0;
|
|
}
|
|
goto L_08AE64D8;
|
|
}
|
|
L_08AE64D8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE6530;
|
|
}
|
|
goto L_08AE64E0;
|
|
}
|
|
L_08AE64E0:
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[7] = (static_cast<std::int32_t>(ctx.gpr[6]) < 9 ? 1u : 0u);
|
|
ctx.gpr[6] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
{ const bool branch_taken = ctx.gpr[7] == 0u;
|
|
aot_mem.aot_direct_store16(aot_gpr_5 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[6]));
|
|
if (branch_taken) {
|
|
goto L_08AE650C;
|
|
}
|
|
goto L_08AE64F8;
|
|
}
|
|
L_08AE64F8:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE6530;
|
|
}
|
|
goto L_08AE650C;
|
|
}
|
|
L_08AE650C:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 | aot_gpr_5);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_4) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE6530;
|
|
}
|
|
goto L_08AE652C;
|
|
}
|
|
L_08AE652C:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE6530;
|
|
L_08AE6530:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(48), aot_run_words);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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>(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_08AE6548:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
{ const std::uint32_t aot_run_words[5]{std::bit_cast<std::uint32_t>(ctx.fpr[20]), std::bit_cast<std::uint32_t>(aot_fpr_22), aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 4u);
|
|
aot_gpr_31 = (0x08AE6578u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 441u, 0x08AE6578u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6578u) goto L_08AE6578;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6578:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6584u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6584u) goto L_08AE6584;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6584:
|
|
aot_gpr_16 = (ctx.gpr[2] | 0u);
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_17 + static_cast<std::uint32_t>(4), aot_run_words);
|
|
aot_fpr_22 = std::bit_cast<float>(aot_run_words[0]);
|
|
ctx.fpr[20] = std::bit_cast<float>(aot_run_words[1]);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_run_words[2]);
|
|
}
|
|
aot_gpr_4 = (49864u << 16u);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((!(std::isnan(aot_fpr_12) || std::isnan(aot_fpr_13)) && aot_fpr_12 == aot_fpr_13)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = ((ctx.fcr31 & 0x00800000u) != 0u);
|
|
aot_gpr_4 = (50042u << 16u);
|
|
if (branch_taken) {
|
|
goto L_08AE65C0;
|
|
}
|
|
goto L_08AE65AC;
|
|
}
|
|
L_08AE65AC:
|
|
aot_fpr_13 = 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_08AE65D8;
|
|
}
|
|
goto L_08AE65C0;
|
|
}
|
|
L_08AE65C0:
|
|
aot_fpr_14 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_4 = (aot_gpr_29 + static_cast<std::uint32_t>(8));
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_22));
|
|
aot_fpr_13 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[20]));
|
|
aot_gpr_31 = (0x08AE65D8u);
|
|
aot_gpr_5 = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0189.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 445u, 0x08AE65D8u, 0x08AF8668u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0189_entry(rt, ctx, 115u, aot_mem);
|
|
#else
|
|
recomp_unit_0189_entry(rt, ctx, 115u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0189_entry, 189u, 115u, 0x08AF8668u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE65D8u) goto L_08AE65D8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE65D8:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_4 = (0u | 14u);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(533), static_cast<std::uint8_t>(aot_gpr_4));
|
|
{ const std::uint32_t aot_run_words[3]{std::bit_cast<std::uint32_t>(aot_fpr_22), std::bit_cast<std::uint32_t>(ctx.fpr[20]), std::bit_cast<std::uint32_t>(aot_fpr_12)};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_16 + static_cast<std::uint32_t>(448), aot_run_words); }
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-497));
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
aot_gpr_4 = (aot_gpr_4 | 48u);
|
|
aot_mem.aot_direct_store32(aot_gpr_16 + static_cast<std::uint32_t>(72), 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_16 + static_cast<std::uint32_t>(613))))));
|
|
aot_gpr_4 = (aot_gpr_4 | 16u);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(613), static_cast<std::uint8_t>(aot_gpr_4));
|
|
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_16 + static_cast<std::uint32_t>(535))))));
|
|
aot_gpr_4 = (0u | 1u);
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(aot_gpr_4) < static_cast<std::int32_t>(aot_gpr_5) ? 1u : 0u);
|
|
if (ctx.gpr[6] != 0u) {
|
|
aot_gpr_4 = (aot_gpr_5 | 0u);
|
|
goto L_08AE6624;
|
|
}
|
|
goto L_08AE6624;
|
|
L_08AE6624:
|
|
aot_gpr_4 = (aot_gpr_4 << 24u);
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(aot_gpr_4) >> 24u));
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(535), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(7660)));
|
|
aot_mem.aot_direct_store32(aot_gpr_16 + static_cast<std::uint32_t>(504), aot_gpr_4);
|
|
ctx.gpr[2] = (0u | 0u);
|
|
{ std::uint32_t aot_run_words[5]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(12), aot_run_words);
|
|
ctx.fpr[20] = std::bit_cast<float>(aot_run_words[0]);
|
|
aot_fpr_22 = std::bit_cast<float>(aot_run_words[1]);
|
|
aot_gpr_16 = aot_run_words[2];
|
|
aot_gpr_17 = 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_08AE6658:
|
|
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_16);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
ctx.gpr[7] = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_31 = (0x08AE6678u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 448u, 0x08AE6678u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6678u) goto L_08AE6678;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6678:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6684u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6684u) goto L_08AE6684;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6684:
|
|
aot_gpr_4 = (0u | 0u);
|
|
aot_mem.aot_direct_store8(ctx.gpr[2] + static_cast<std::uint32_t>(533), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[2] + static_cast<std::uint32_t>(72)));
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-497));
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
aot_gpr_4 = (aot_gpr_4 | 48u);
|
|
aot_mem.aot_direct_store32(ctx.gpr[2] + static_cast<std::uint32_t>(72), 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[2] + static_cast<std::uint32_t>(613))))));
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-17));
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
aot_mem.aot_direct_store8(ctx.gpr[2] + static_cast<std::uint32_t>(613), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (0u | 0u);
|
|
aot_mem.aot_direct_store8(ctx.gpr[2] + static_cast<std::uint32_t>(535), static_cast<std::uint8_t>(aot_gpr_4));
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_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_08AE66CC:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE66F4u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 451u, 0x08AE66F4u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE66F4u) goto L_08AE66F4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE66F4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6700u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6700u) goto L_08AE6700;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6700:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
aot_fpr_12 = std::bit_cast<float>(ctx.fpu_float_to_word_ct<1u>(aot_fpr_12));
|
|
aot_gpr_4 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_gpr_4 = (aot_gpr_4 << 24u);
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(aot_gpr_4) >> 24u));
|
|
aot_mem.aot_direct_store8(ctx.gpr[2] + static_cast<std::uint32_t>(535), static_cast<std::uint8_t>(aot_gpr_4));
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE6730:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
{ const std::uint32_t aot_run_words[4]{aot_gpr_16, aot_gpr_17, ctx.gpr[18], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_run_words); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
ctx.gpr[18] = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_17 = (2236u << 16u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x08AE6760u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 454u, 0x08AE6760u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6760u) goto L_08AE6760;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6760:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE676Cu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE676Cu) goto L_08AE676C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE676C:
|
|
aot_gpr_4 = (ctx.gpr[2] + static_cast<std::uint32_t>(320));
|
|
{ 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); }
|
|
ctx.execute_vfpu_vdot_ct<28u, 0u, 0u, 3u>();
|
|
ctx.execute_vfpu_unary_ct<28u, 28u, 1u, 22u>();
|
|
aot_gpr_5 = (ctx.vfpu_scalar_bits_ct<28u>());
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_5);
|
|
aot_gpr_5 = (16968u << 16u);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_gpr_5);
|
|
{ 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 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[2] + 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_14 = std::bit_cast<float>(aot_gpr_4);
|
|
aot_fpr_13 = std::bit_cast<float>(0u);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_14 < aot_fpr_13)) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE67C0;
|
|
}
|
|
goto L_08AE67BC;
|
|
}
|
|
L_08AE67BC:
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12) ^ 0x80000000u);
|
|
goto L_08AE67C0;
|
|
L_08AE67C0:
|
|
aot_gpr_4 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_mem.aot_direct_store32(aot_gpr_17 + static_cast<std::uint32_t>(29704), aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x08AE67D8u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08862890, 23u, 431u, 0x08862890u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], ctx.gpr[7], ctx.gpr[8], ctx.gpr[9], ctx.gpr[10], ctx.gpr[11], aot_gpr_16, aot_gpr_17, ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[28], 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, 431u, 0x08862890u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE67D8u) goto L_08AE67D8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE67D8:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
{ std::uint32_t aot_run_words[4]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_run_words);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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>(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_08AE67F4:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
{ const std::uint32_t aot_run_words[4]{aot_gpr_16, aot_gpr_17, ctx.gpr[18], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_run_words); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
ctx.gpr[7] = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
aot_gpr_31 = (0x08AE6824u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 460u, 0x08AE6824u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6824u) goto L_08AE6824;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6824:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6830u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6830u) goto L_08AE6830;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6830:
|
|
aot_gpr_4 = (ctx.gpr[2] + static_cast<std::uint32_t>(16));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
{ 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)) aot_fpr_14 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_14 = fs * ft; }
|
|
{ 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_13 = aot_fpr_14 + aot_fpr_13;
|
|
aot_fpr_13 = std::sqrt(aot_fpr_13);
|
|
aot_fpr_12 = aot_fpr_12 / aot_fpr_13;
|
|
aot_gpr_4 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_mem.aot_direct_store32(ctx.gpr[18] + static_cast<std::uint32_t>(29704), aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
aot_gpr_31 = (0x08AE6868u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08862890, 23u, 431u, 0x08862890u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], ctx.gpr[7], ctx.gpr[8], ctx.gpr[9], ctx.gpr[10], ctx.gpr[11], aot_gpr_16, aot_gpr_17, ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[28], 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, 431u, 0x08862890u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6868u) goto L_08AE6868;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6868:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
{ 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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>(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_08AE6884:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
{ const std::uint32_t aot_run_words[4]{aot_gpr_16, aot_gpr_17, ctx.gpr[18], aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_run_words); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
ctx.gpr[7] = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
aot_gpr_31 = (0x08AE68B4u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 464u, 0x08AE68B4u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE68B4u) goto L_08AE68B4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE68B4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE68C0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE68C0u) goto L_08AE68C0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE68C0:
|
|
aot_gpr_4 = (ctx.gpr[2] + static_cast<std::uint32_t>(16));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(4)));
|
|
{ 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)) aot_fpr_12 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_12 = fs * ft; }
|
|
{ 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_14 = std::bit_cast<float>(0x7FC00000u); else aot_fpr_14 = fs * ft; }
|
|
aot_fpr_12 = aot_fpr_12 + aot_fpr_14;
|
|
aot_fpr_12 = std::sqrt(aot_fpr_12);
|
|
aot_fpr_12 = aot_fpr_13 / aot_fpr_12;
|
|
aot_gpr_4 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_mem.aot_direct_store32(ctx.gpr[18] + static_cast<std::uint32_t>(29704), aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
aot_gpr_31 = (0x08AE68F8u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08862890, 23u, 431u, 0x08862890u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], ctx.gpr[7], ctx.gpr[8], ctx.gpr[9], ctx.gpr[10], ctx.gpr[11], aot_gpr_16, aot_gpr_17, ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[28], 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, 431u, 0x08862890u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE68F8u) goto L_08AE68F8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE68F8:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
{ 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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>(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_08AE6914:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[4]{aot_gpr_16, aot_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); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_17 = (2236u << 16u);
|
|
ctx.gpr[18] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE6944u);
|
|
ctx.gpr[7] = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 468u, 0x08AE6944u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6944u) goto L_08AE6944;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6944:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6950u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6950u) goto L_08AE6950;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6950:
|
|
aot_gpr_4 = (ctx.gpr[2] | 0u);
|
|
aot_gpr_17 = (0u | 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_gpr_5 = (aot_gpr_4 | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE69A8;
|
|
}
|
|
goto L_08AE6960;
|
|
}
|
|
L_08AE6960:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(4)));
|
|
ctx.gpr[6] = (0u | 49u);
|
|
{ const bool branch_taken = aot_gpr_4 == ctx.gpr[6];
|
|
ctx.gpr[18] = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int8_t>(aot_mem.aot_direct_load8(aot_gpr_5 + static_cast<std::uint32_t>(91))))));
|
|
if (branch_taken) {
|
|
goto L_08AE697C;
|
|
}
|
|
goto L_08AE6970;
|
|
}
|
|
L_08AE6970:
|
|
aot_gpr_5 = (0u | 50u);
|
|
{ const bool branch_taken = aot_gpr_4 != aot_gpr_5;
|
|
if (branch_taken) {
|
|
goto L_08AE699C;
|
|
}
|
|
goto L_08AE697C;
|
|
}
|
|
L_08AE697C:
|
|
ctx.gpr[6] = (aot_gpr_4 | 0u);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_31 = (0x08AE698Cu);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0023.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 473u, 0x08AE698Cu, 0x08862E80u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0023_entry(rt, ctx, 518u, aot_mem);
|
|
#else
|
|
recomp_unit_0023_entry(rt, ctx, 518u, 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, 518u, 0x08862E80u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE698Cu) goto L_08AE698C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE698C:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE69A8;
|
|
}
|
|
goto L_08AE6994;
|
|
}
|
|
L_08AE6994:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_17 = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_08AE69A8;
|
|
}
|
|
goto L_08AE699C;
|
|
}
|
|
L_08AE699C:
|
|
{ const bool branch_taken = ctx.gpr[18] != aot_gpr_4;
|
|
if (branch_taken) {
|
|
goto L_08AE69A8;
|
|
}
|
|
goto L_08AE69A4;
|
|
}
|
|
L_08AE69A4:
|
|
aot_gpr_17 = (0u | 1u);
|
|
goto L_08AE69A8;
|
|
L_08AE69A8:
|
|
aot_gpr_4 = (0u < aot_gpr_17 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_17 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
aot_gpr_17 = (0u < aot_gpr_17 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE69D4;
|
|
}
|
|
goto L_08AE69CC;
|
|
}
|
|
L_08AE69CC:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_17));
|
|
if (branch_taken) {
|
|
goto L_08AE6A1C;
|
|
}
|
|
goto L_08AE69D4;
|
|
}
|
|
L_08AE69D4:
|
|
aot_gpr_4 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(aot_gpr_5) < 9 ? 1u : 0u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_4 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(aot_gpr_5));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE6A00;
|
|
}
|
|
goto L_08AE69F4;
|
|
}
|
|
L_08AE69F4:
|
|
aot_gpr_4 = (aot_gpr_17 & aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE6A1C;
|
|
}
|
|
goto L_08AE6A00;
|
|
}
|
|
L_08AE6A00:
|
|
aot_gpr_4 = (aot_gpr_17 | aot_gpr_4);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_4) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE6A1C;
|
|
}
|
|
goto L_08AE6A18;
|
|
}
|
|
L_08AE6A18:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE6A1C;
|
|
L_08AE6A1C:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE6A38:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE6A60u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 485u, 0x08AE6A60u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6A60u) goto L_08AE6A60;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6A60:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6A6Cu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6A6Cu) goto L_08AE6A6C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6A6C:
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
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_5 + static_cast<std::uint32_t>(1060))))));
|
|
if (branch_taken) {
|
|
goto L_08AE6A88;
|
|
}
|
|
goto L_08AE6A7C;
|
|
}
|
|
L_08AE6A7C:
|
|
aot_gpr_4 = (aot_gpr_4 | 4u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(1060), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE6A94;
|
|
}
|
|
goto L_08AE6A88;
|
|
}
|
|
L_08AE6A88:
|
|
ctx.gpr[6] = (0u + static_cast<std::uint32_t>(-5));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[6]);
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(1060), static_cast<std::uint8_t>(aot_gpr_4));
|
|
goto L_08AE6A94;
|
|
L_08AE6A94:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE6AAC:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-48));
|
|
{ const std::uint32_t aot_run_words[10]{aot_gpr_16, aot_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>(8), aot_run_words); }
|
|
ctx.gpr[22] = (aot_gpr_4 | 0u);
|
|
aot_gpr_16 = (ctx.gpr[22] + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[30] = (2236u << 16u);
|
|
ctx.gpr[18] = (ctx.gpr[30] + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_16 | 0u);
|
|
ctx.gpr[6] = (0u | 5u);
|
|
aot_gpr_31 = (0x08AE6AF8u);
|
|
ctx.gpr[7] = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 491u, 0x08AE6AF8u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6AF8u) goto L_08AE6AF8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6AF8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_17 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(8)));
|
|
ctx.gpr[20] = (0u + static_cast<std::uint32_t>(-1));
|
|
ctx.gpr[23] = (0u | 1u);
|
|
aot_gpr_4 = (2239u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(21784));
|
|
ctx.gpr[21] = (aot_gpr_17 + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_5 = (aot_gpr_17 << 5u);
|
|
ctx.gpr[19] = (0u + aot_gpr_5);
|
|
aot_gpr_5 = (aot_gpr_5 << 6u);
|
|
ctx.gpr[19] = (ctx.gpr[19] + aot_gpr_5);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_gpr_4);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_16);
|
|
aot_gpr_4 = (aot_gpr_17 | 0u);
|
|
goto L_08AE6B30;
|
|
L_08AE6B30:
|
|
aot_gpr_17 = (ctx.gpr[21] | 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
ctx.gpr[19] = (ctx.gpr[19] + static_cast<std::uint32_t>(-2080));
|
|
if (branch_taken) {
|
|
goto L_08AE6C64;
|
|
}
|
|
goto L_08AE6B3C;
|
|
}
|
|
L_08AE6B3C:
|
|
aot_gpr_4 = (0u + static_cast<std::uint32_t>(-1));
|
|
{ const bool branch_taken = ctx.gpr[20] != aot_gpr_4;
|
|
if (branch_taken) {
|
|
goto L_08AE6C64;
|
|
}
|
|
goto L_08AE6B48;
|
|
}
|
|
L_08AE6B48:
|
|
{ const bool branch_taken = static_cast<std::int32_t>(aot_gpr_17) < 0;
|
|
ctx.gpr[21] = (aot_gpr_17 + static_cast<std::uint32_t>(-1));
|
|
if (branch_taken) {
|
|
goto L_08AE6B64;
|
|
}
|
|
goto L_08AE6B50;
|
|
}
|
|
L_08AE6B50:
|
|
aot_gpr_16 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_17) < static_cast<std::int32_t>(aot_gpr_4) ? 1u : 0u);
|
|
if (aot_gpr_4 != 0u) {
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(4)));
|
|
goto L_08AE6B6C;
|
|
}
|
|
goto L_08AE6B64;
|
|
L_08AE6B64:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_16 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE6B8C;
|
|
}
|
|
goto L_08AE6B6C;
|
|
}
|
|
L_08AE6B6C:
|
|
aot_gpr_4 = (aot_gpr_4 + aot_gpr_17);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_4 = (aot_gpr_4 & 128u);
|
|
if (aot_gpr_4 == 0u) {
|
|
aot_gpr_16 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(0)));
|
|
goto L_08AE6B88;
|
|
}
|
|
goto L_08AE6B80;
|
|
L_08AE6B80:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_16 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE6B8C;
|
|
}
|
|
goto L_08AE6B88;
|
|
}
|
|
L_08AE6B88:
|
|
aot_gpr_16 = (aot_gpr_16 + ctx.gpr[19]);
|
|
goto L_08AE6B8C;
|
|
L_08AE6B8C:
|
|
{ const bool branch_taken = aot_gpr_16 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE6C5C;
|
|
}
|
|
goto L_08AE6B94;
|
|
}
|
|
L_08AE6B94:
|
|
aot_gpr_31 = (0x08AE6B9Cu);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B01E00, 191u, 504u, 0x08B01E00u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0191_entry, 191u, 504u, 0x08B01E00u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6B9Cu) goto L_08AE6B9C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6B9C:
|
|
{ const bool branch_taken = ctx.gpr[2] == ctx.gpr[23];
|
|
if (branch_taken) {
|
|
goto L_08AE6BB8;
|
|
}
|
|
goto L_08AE6BA4;
|
|
}
|
|
L_08AE6BA4:
|
|
aot_gpr_31 = (0x08AE6BACu);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08B01E00, 191u, 504u, 0x08B01E00u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], aot_gpr_31); AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_resident_scheduler_fallback<&recomp_unit_0191_entry, 191u, 504u, 0x08B01E00u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6BACu) goto L_08AE6BAC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6BAC:
|
|
aot_gpr_4 = (0u | 2u);
|
|
{ const bool branch_taken = ctx.gpr[2] != aot_gpr_4;
|
|
if (branch_taken) {
|
|
goto L_08AE6C5C;
|
|
}
|
|
goto L_08AE6BB8;
|
|
}
|
|
L_08AE6BB8:
|
|
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_16 + static_cast<std::uint32_t>(613))))));
|
|
aot_gpr_4 = (aot_gpr_4 & 1u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE6C5C;
|
|
}
|
|
goto L_08AE6BC8;
|
|
}
|
|
L_08AE6BC8:
|
|
aot_gpr_5 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(static_cast<std::int16_t>(aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(86))))));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(16)));
|
|
if (aot_gpr_5 == aot_gpr_4) {
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(612)));
|
|
goto L_08AE6BE4;
|
|
}
|
|
goto L_08AE6BD8;
|
|
L_08AE6BD8:
|
|
{ const bool branch_taken = static_cast<std::int32_t>(aot_gpr_4) >= 0;
|
|
if (branch_taken) {
|
|
goto L_08AE6C5C;
|
|
}
|
|
goto L_08AE6BE0;
|
|
}
|
|
L_08AE6BE0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(612)));
|
|
goto L_08AE6BE4;
|
|
L_08AE6BE4:
|
|
{ const bool branch_taken = aot_gpr_4 != ctx.gpr[23];
|
|
if (branch_taken) {
|
|
goto L_08AE6C5C;
|
|
}
|
|
goto L_08AE6BEC;
|
|
}
|
|
L_08AE6BEC:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[30] + static_cast<std::uint32_t>(29704)));
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(ctx.gpr[18] + static_cast<std::uint32_t>(4), aot_run_words);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_run_words[0]);
|
|
aot_fpr_14 = std::bit_cast<float>(aot_run_words[1]);
|
|
ctx.fpr[15] = std::bit_cast<float>(aot_run_words[2]);
|
|
}
|
|
aot_gpr_31 = (0x08AE6C04u);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0170.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 511u, 0x08AE6C04u, 0x08AAF8F4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0170_entry(rt, ctx, 788u, aot_mem);
|
|
#else
|
|
recomp_unit_0170_entry(rt, ctx, 788u, 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, 788u, 0x08AAF8F4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6C04u) goto L_08AE6C04;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6C04:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE6C5C;
|
|
}
|
|
goto L_08AE6C0C;
|
|
}
|
|
L_08AE6C0C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6C18u);
|
|
aot_gpr_5 = (aot_gpr_16 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0218.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 513u, 0x08AE6C18u, 0x08B6CC28u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0218_entry(rt, ctx, 139u, aot_mem);
|
|
#else
|
|
recomp_unit_0218_entry(rt, ctx, 139u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0218_entry, 218u, 139u, 0x08B6CC28u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6C18u) goto L_08AE6C18;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6C18:
|
|
aot_gpr_4 = (0u | 2u);
|
|
ctx.gpr[20] = (ctx.gpr[2] | 0u);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(612), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5444)));
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(1));
|
|
aot_mem.aot_direct_store32(ctx.gpr[28] + static_cast<std::uint32_t>(5444), aot_gpr_4);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5436)));
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store32(ctx.gpr[28] + static_cast<std::uint32_t>(5436), aot_gpr_4);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(ctx.gpr[22] + static_cast<std::uint32_t>(522)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE6C5C;
|
|
}
|
|
goto L_08AE6C48;
|
|
}
|
|
L_08AE6C48:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(0)));
|
|
aot_gpr_5 = (ctx.gpr[20] | 0u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
aot_gpr_31 = (0x08AE6C5Cu);
|
|
ctx.gpr[7] = (ctx.gpr[22] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0023.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 515u, 0x08AE6C5Cu, 0x08861C90u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0023_entry(rt, ctx, 275u, aot_mem);
|
|
#else
|
|
recomp_unit_0023_entry(rt, ctx, 275u, 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, 275u, 0x08861C90u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6C5Cu) goto L_08AE6C5C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6C5C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_4 = (aot_gpr_17 | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE6B30;
|
|
}
|
|
goto L_08AE6C64;
|
|
}
|
|
L_08AE6C64:
|
|
aot_mem.aot_direct_store32(ctx.gpr[30] + static_cast<std::uint32_t>(29704), ctx.gpr[20]);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_4 = (ctx.gpr[22] | 0u);
|
|
aot_gpr_31 = (0x08AE6C78u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08862890, 23u, 431u, 0x08862890u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], ctx.gpr[7], ctx.gpr[8], ctx.gpr[9], ctx.gpr[10], ctx.gpr[11], aot_gpr_16, aot_gpr_17, ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[28], 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, 431u, 0x08862890u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6C78u) goto L_08AE6C78;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6C78:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
{ std::uint32_t aot_run_words[10]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(8), aot_run_words);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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>(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_08AE6CAC:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE6CD4u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 519u, 0x08AE6CD4u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6CD4u) goto L_08AE6CD4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6CD4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6CE0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6CE0u) goto L_08AE6CE0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6CE0:
|
|
aot_gpr_16 = (ctx.gpr[2] | 0u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6CF0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6CF0u) goto L_08AE6CF0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6CF0:
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_31 = (0x08AE6CFCu);
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0194.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 522u, 0x08AE6CFCu, 0x08B0E3F0u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0194_entry(rt, ctx, 552u, aot_mem);
|
|
#else
|
|
recomp_unit_0194_entry(rt, ctx, 552u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0194_entry, 194u, 552u, 0x08B0E3F0u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6CFCu) goto L_08AE6CFC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6CFC:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE6D14:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE6D3Cu);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 524u, 0x08AE6D3Cu, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6D3Cu) goto L_08AE6D3C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6D3C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6D48u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6D48u) goto L_08AE6D48;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6D48:
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
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_5 + static_cast<std::uint32_t>(1653))))));
|
|
if (branch_taken) {
|
|
goto L_08AE6D64;
|
|
}
|
|
goto L_08AE6D58;
|
|
}
|
|
L_08AE6D58:
|
|
aot_gpr_4 = (aot_gpr_4 | 32u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(1653), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE6D70;
|
|
}
|
|
goto L_08AE6D64;
|
|
}
|
|
L_08AE6D64:
|
|
ctx.gpr[6] = (0u + static_cast<std::uint32_t>(-33));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[6]);
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(1653), static_cast<std::uint8_t>(aot_gpr_4));
|
|
goto L_08AE6D70;
|
|
L_08AE6D70:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE6D88:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE6DB0u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 530u, 0x08AE6DB0u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6DB0u) goto L_08AE6DB0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6DB0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6DBCu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6DBCu) goto L_08AE6DBC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6DBC:
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(72)));
|
|
if (branch_taken) {
|
|
goto L_08AE6DDC;
|
|
}
|
|
goto L_08AE6DCC;
|
|
}
|
|
L_08AE6DCC:
|
|
ctx.gpr[6] = (8u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 | ctx.gpr[6]);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
if (branch_taken) {
|
|
goto L_08AE6DEC;
|
|
}
|
|
goto L_08AE6DDC;
|
|
}
|
|
L_08AE6DDC:
|
|
ctx.gpr[6] = (65528u << 16u);
|
|
ctx.gpr[6] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[6]);
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
goto L_08AE6DEC;
|
|
L_08AE6DEC:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE6E04:
|
|
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_16);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
ctx.gpr[7] = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_31 = (0x08AE6E24u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 536u, 0x08AE6E24u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6E24u) goto L_08AE6E24;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6E24:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
aot_gpr_4 = (ctx.gpr[28] + static_cast<std::uint32_t>(7768));
|
|
if (branch_taken) {
|
|
goto L_08AE6E40;
|
|
}
|
|
goto L_08AE6E30;
|
|
}
|
|
L_08AE6E30:
|
|
aot_gpr_31 = (0x08AE6E38u);
|
|
aot_gpr_5 = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0128.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 538u, 0x08AE6E38u, 0x08A063CCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0128_entry(rt, ctx, 565u, aot_mem);
|
|
#else
|
|
recomp_unit_0128_entry(rt, ctx, 565u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0128_entry, 128u, 565u, 0x08A063CCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6E38u) goto L_08AE6E38;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6E38:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE6E48;
|
|
}
|
|
goto L_08AE6E40;
|
|
}
|
|
L_08AE6E40:
|
|
aot_gpr_31 = (0x08AE6E48u);
|
|
aot_gpr_5 = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0128.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 540u, 0x08AE6E48u, 0x08A063CCu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0128_entry(rt, ctx, 565u, aot_mem);
|
|
#else
|
|
recomp_unit_0128_entry(rt, ctx, 565u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0128_entry, 128u, 565u, 0x08A063CCu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6E48u) goto L_08AE6E48;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6E48:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_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_08AE6E5C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE6E84u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 542u, 0x08AE6E84u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6E84u) goto L_08AE6E84;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6E84:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6E90u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6E90u) goto L_08AE6E90;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6E90:
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
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_5 + static_cast<std::uint32_t>(618))))));
|
|
if (branch_taken) {
|
|
goto L_08AE6EAC;
|
|
}
|
|
goto L_08AE6EA0;
|
|
}
|
|
L_08AE6EA0:
|
|
aot_gpr_4 = (aot_gpr_4 | 32u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(618), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE6EB8;
|
|
}
|
|
goto L_08AE6EAC;
|
|
}
|
|
L_08AE6EAC:
|
|
ctx.gpr[6] = (0u + static_cast<std::uint32_t>(-33));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[6]);
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(618), static_cast<std::uint8_t>(aot_gpr_4));
|
|
goto L_08AE6EB8;
|
|
L_08AE6EB8:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE6ED0:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_16 = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE6EF8u);
|
|
ctx.gpr[7] = (aot_gpr_16 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 548u, 0x08AE6EF8u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6EF8u) goto L_08AE6EF8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6EF8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6F04u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6F04u) goto L_08AE6F04;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6F04:
|
|
aot_gpr_4 = (ctx.gpr[2] | 0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(852)));
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE6F3C;
|
|
}
|
|
goto L_08AE6F14;
|
|
}
|
|
L_08AE6F14:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(4)));
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
aot_gpr_16 = (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>(618))))));
|
|
if (branch_taken) {
|
|
goto L_08AE6F2C;
|
|
}
|
|
goto L_08AE6F20;
|
|
}
|
|
L_08AE6F20:
|
|
aot_gpr_5 = (aot_gpr_16 | 2u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_4 + static_cast<std::uint32_t>(618), static_cast<std::uint8_t>(aot_gpr_5));
|
|
if (branch_taken) {
|
|
goto L_08AE6F6C;
|
|
}
|
|
goto L_08AE6F2C;
|
|
}
|
|
L_08AE6F2C:
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-3));
|
|
aot_gpr_5 = (aot_gpr_16 & aot_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_4 + static_cast<std::uint32_t>(618), static_cast<std::uint8_t>(aot_gpr_5));
|
|
if (branch_taken) {
|
|
goto L_08AE6F6C;
|
|
}
|
|
goto L_08AE6F3C;
|
|
}
|
|
L_08AE6F3C:
|
|
ctx.gpr[6] = (0u | 6u);
|
|
{ const bool branch_taken = aot_gpr_5 != ctx.gpr[6];
|
|
if (branch_taken) {
|
|
goto L_08AE6F6C;
|
|
}
|
|
goto L_08AE6F48;
|
|
}
|
|
L_08AE6F48:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(4)));
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
aot_gpr_16 = (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>(618))))));
|
|
if (branch_taken) {
|
|
goto L_08AE6F60;
|
|
}
|
|
goto L_08AE6F54;
|
|
}
|
|
L_08AE6F54:
|
|
aot_gpr_5 = (aot_gpr_16 | 2u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_4 + static_cast<std::uint32_t>(618), static_cast<std::uint8_t>(aot_gpr_5));
|
|
if (branch_taken) {
|
|
goto L_08AE6F6C;
|
|
}
|
|
goto L_08AE6F60;
|
|
}
|
|
L_08AE6F60:
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-3));
|
|
aot_gpr_5 = (aot_gpr_16 & aot_gpr_5);
|
|
aot_mem.aot_direct_store8(aot_gpr_4 + static_cast<std::uint32_t>(618), static_cast<std::uint8_t>(aot_gpr_5));
|
|
goto L_08AE6F6C;
|
|
L_08AE6F6C:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE6F84:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-96));
|
|
{ const std::uint32_t aot_run_words[4]{std::bit_cast<std::uint32_t>(ctx.fpr[20]), aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(80), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 3u);
|
|
aot_gpr_31 = (0x08AE6FB0u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 559u, 0x08AE6FB0u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6FB0u) goto L_08AE6FB0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE6FB0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE6FBCu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE6FBCu) goto L_08AE6FBC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE6FBC:
|
|
aot_gpr_16 = (ctx.gpr[2] | 0u);
|
|
aot_gpr_4 = (aot_gpr_16 + 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<0u, 4u>(vfpu_value); }
|
|
aot_gpr_4 = (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_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_17 + static_cast<std::uint32_t>(4)));
|
|
aot_fpr_13 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(8)));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(16), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(20), std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
ctx.fpr[20] = std::bit_cast<float>(0u);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(24), std::bit_cast<std::uint32_t>(ctx.fpr[20]));
|
|
{ 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 = (aot_gpr_29 + 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_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_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 = (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_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>(48)));
|
|
aot_gpr_31 = (0x08AE7014u);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(52)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0088.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 561u, 0x08AE7014u, 0x08964540u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0088_entry(rt, ctx, 28u, aot_mem);
|
|
#else
|
|
recomp_unit_0088_entry(rt, ctx, 28u, 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, 28u, 0x08964540u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7014u) goto L_08AE7014;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7014:
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[0]));
|
|
aot_gpr_4 = (16585u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 | 4059u);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_gpr_4);
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_12 < ctx.fpr[20])) ? 0x00800000u : 0u);
|
|
if (((ctx.fcr31 & 0x00800000u) != 0u)) {
|
|
aot_fpr_12 = aot_fpr_12 + aot_fpr_13;
|
|
goto L_08AE7034;
|
|
}
|
|
goto L_08AE7034;
|
|
L_08AE7034:
|
|
aot_gpr_4 = (16329u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 | 4059u);
|
|
aot_fpr_14 = std::bit_cast<float>(aot_gpr_4);
|
|
aot_fpr_12 = aot_fpr_12 + aot_fpr_14;
|
|
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_08AE7058;
|
|
}
|
|
goto L_08AE7054;
|
|
}
|
|
L_08AE7054:
|
|
aot_fpr_12 = aot_fpr_12 - aot_fpr_13;
|
|
goto L_08AE7058;
|
|
L_08AE7058:
|
|
aot_gpr_31 = (0x08AE7060u);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0170.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 565u, 0x08AE7060u, 0x08AAF8ACu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0170_entry(rt, ctx, 785u, aot_mem);
|
|
#else
|
|
recomp_unit_0170_entry(rt, ctx, 785u, 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, 785u, 0x08AAF8ACu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7060u) goto L_08AE7060;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7060:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
{ std::uint32_t aot_run_words[4]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(80), aot_run_words);
|
|
ctx.fpr[20] = std::bit_cast<float>(aot_run_words[0]);
|
|
aot_gpr_16 = aot_run_words[1];
|
|
aot_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>(96));
|
|
// 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_08AE707C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE70A4u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 567u, 0x08AE70A4u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE70A4u) goto L_08AE70A4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE70A4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE70B0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE70B0u) goto L_08AE70B0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE70B0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[2] + static_cast<std::uint32_t>(72)));
|
|
ctx.gpr[6] = (0u + static_cast<std::uint32_t>(-497));
|
|
aot_gpr_5 = (aot_gpr_5 & ctx.gpr[6]);
|
|
aot_gpr_4 = (aot_gpr_4 & 31u);
|
|
aot_gpr_4 = (aot_gpr_4 << 4u);
|
|
aot_gpr_4 = (aot_gpr_5 | aot_gpr_4);
|
|
aot_mem.aot_direct_store32(ctx.gpr[2] + static_cast<std::uint32_t>(72), aot_gpr_4);
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE70E8:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE7110u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 570u, 0x08AE7110u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7110u) goto L_08AE7110;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7110:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE711Cu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE711Cu) goto L_08AE711C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE711C:
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
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_5 + static_cast<std::uint32_t>(615))))));
|
|
if (branch_taken) {
|
|
goto L_08AE7138;
|
|
}
|
|
goto L_08AE712C;
|
|
}
|
|
L_08AE712C:
|
|
aot_gpr_4 = (aot_gpr_4 | 1u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(615), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE7144;
|
|
}
|
|
goto L_08AE7138;
|
|
}
|
|
L_08AE7138:
|
|
ctx.gpr[6] = (0u + static_cast<std::uint32_t>(-2));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[6]);
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(615), static_cast<std::uint8_t>(aot_gpr_4));
|
|
goto L_08AE7144;
|
|
L_08AE7144:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE715C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 6u);
|
|
aot_gpr_31 = (0x08AE7184u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 576u, 0x08AE7184u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7184u) goto L_08AE7184;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7184:
|
|
ctx.fpr[0] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
ctx.fpr[19] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[0]));
|
|
ctx.fpr[18] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
ctx.fpr[17] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[18]));
|
|
ctx.fpr[16] = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(8)));
|
|
ctx.fpr[15] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[16]));
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_17 + static_cast<std::uint32_t>(12), aot_run_words);
|
|
aot_fpr_14 = std::bit_cast<float>(aot_run_words[0]);
|
|
aot_fpr_13 = std::bit_cast<float>(aot_run_words[1]);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_run_words[2]);
|
|
}
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_14 < ctx.fpr[19])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE71C0;
|
|
}
|
|
goto L_08AE71B8;
|
|
}
|
|
L_08AE71B8:
|
|
ctx.fpr[19] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
aot_fpr_14 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[0]));
|
|
goto L_08AE71C0;
|
|
L_08AE71C0:
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_13 < ctx.fpr[18])) ? 0x00800000u : 0u);
|
|
{ const bool branch_taken = !((ctx.fcr31 & 0x00800000u) != 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE71D8;
|
|
}
|
|
goto L_08AE71D0;
|
|
}
|
|
L_08AE71D0:
|
|
ctx.fpr[17] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
aot_fpr_13 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[18]));
|
|
goto L_08AE71D8;
|
|
L_08AE71D8:
|
|
ctx.fcr31 = (ctx.fcr31 & ~0x00800000u) | (((aot_fpr_12 < ctx.fpr[16])) ? 0x00800000u : 0u);
|
|
if (!((ctx.fcr31 & 0x00800000u) != 0u)) {
|
|
ctx.fpr[16] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
goto L_08AE71F4;
|
|
}
|
|
goto L_08AE71E8;
|
|
L_08AE71E8:
|
|
ctx.fpr[15] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[16]));
|
|
ctx.fpr[16] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_14));
|
|
goto L_08AE71F4;
|
|
L_08AE71F4:
|
|
ctx.fpr[18] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_13));
|
|
aot_fpr_13 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[17]));
|
|
ctx.fpr[17] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_fpr_12 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[19]));
|
|
aot_fpr_14 = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[15]));
|
|
ctx.fpr[15] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[16]));
|
|
aot_gpr_31 = (0x08AE7214u);
|
|
ctx.fpr[16] = std::bit_cast<float>(std::bit_cast<std::uint32_t>(ctx.fpr[18]));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0036.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 583u, 0x08AE7214u, 0x08894898u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0036_entry(rt, ctx, 108u, aot_mem);
|
|
#else
|
|
recomp_unit_0036_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_0036_entry, 36u, 108u, 0x08894898u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7214u) goto L_08AE7214;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7214:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE722C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_17 = (2236u << 16u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_31 = (0x08AE7254u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 585u, 0x08AE7254u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7254u) goto L_08AE7254;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7254:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7260u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7260u) goto L_08AE7260;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7260:
|
|
aot_gpr_4 = (0u | 0u);
|
|
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[2] + static_cast<std::uint32_t>(615))))));
|
|
aot_gpr_5 = (aot_gpr_5 & 2u);
|
|
{ const bool branch_taken = aot_gpr_5 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE7278;
|
|
}
|
|
goto L_08AE7274;
|
|
}
|
|
L_08AE7274:
|
|
aot_gpr_4 = (0u | 1u);
|
|
goto L_08AE7278;
|
|
L_08AE7278:
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_5 != 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE72A4;
|
|
}
|
|
goto L_08AE729C;
|
|
}
|
|
L_08AE729C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE72EC;
|
|
}
|
|
goto L_08AE72A4;
|
|
}
|
|
L_08AE72A4:
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_5 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[7] = (static_cast<std::int32_t>(ctx.gpr[6]) < 9 ? 1u : 0u);
|
|
ctx.gpr[6] = (ctx.gpr[6] + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_5 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(ctx.gpr[6]));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
{ const bool branch_taken = ctx.gpr[7] == 0u;
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE72D0;
|
|
}
|
|
goto L_08AE72C4;
|
|
}
|
|
L_08AE72C4:
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_5);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE72EC;
|
|
}
|
|
goto L_08AE72D0;
|
|
}
|
|
L_08AE72D0:
|
|
aot_gpr_4 = (aot_gpr_4 | aot_gpr_5);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_4) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE72EC;
|
|
}
|
|
goto L_08AE72E8;
|
|
}
|
|
L_08AE72E8:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE72EC;
|
|
L_08AE72EC:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE7304:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[4]{aot_gpr_16, aot_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); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_17 = (2236u << 16u);
|
|
ctx.gpr[18] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 3u);
|
|
aot_gpr_31 = (0x08AE7334u);
|
|
ctx.gpr[7] = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 596u, 0x08AE7334u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7334u) goto L_08AE7334;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7334:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7340u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7340u) goto L_08AE7340;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7340:
|
|
aot_gpr_4 = (2239u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(22240));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(4)));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(8)));
|
|
aot_gpr_31 = (0x08AE735Cu);
|
|
ctx.gpr[7] = (aot_gpr_16 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0023.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 598u, 0x08AE735Cu, 0x0886221Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0023_entry(rt, ctx, 344u, aot_mem);
|
|
#else
|
|
recomp_unit_0023_entry(rt, ctx, 344u, 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, 344u, 0x0886221Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE735Cu) goto L_08AE735C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE735C:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE7378:
|
|
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_16);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
ctx.gpr[7] = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_31 = (0x08AE7398u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 600u, 0x08AE7398u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7398u) goto L_08AE7398;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7398:
|
|
aot_gpr_4 = (2239u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(22240));
|
|
aot_gpr_31 = (0x08AE73A8u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0023.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 601u, 0x08AE73A8u, 0x088622F4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0023_entry(rt, ctx, 354u, aot_mem);
|
|
#else
|
|
recomp_unit_0023_entry(rt, ctx, 354u, 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, 354u, 0x088622F4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE73A8u) goto L_08AE73A8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE73A8:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_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_08AE73BC:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[4]{aot_gpr_16, aot_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); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
ctx.gpr[7] = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_31 = (0x08AE73E8u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 603u, 0x08AE73E8u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE73E8u) goto L_08AE73E8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE73E8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE73F4u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE73F4u) goto L_08AE73F4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE73F4:
|
|
aot_gpr_17 = (0u | 0u);
|
|
aot_gpr_4 = (2239u << 16u);
|
|
aot_gpr_4 = (aot_gpr_4 + static_cast<std::uint32_t>(22240));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
aot_gpr_31 = (0x08AE740Cu);
|
|
ctx.gpr[6] = (aot_gpr_16 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0023.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 605u, 0x08AE740Cu, 0x08862374u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0023_entry(rt, ctx, 359u, aot_mem);
|
|
#else
|
|
recomp_unit_0023_entry(rt, ctx, 359u, 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, 359u, 0x08862374u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE740Cu) goto L_08AE740C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE740C:
|
|
{ const bool branch_taken = ctx.gpr[2] == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE7418;
|
|
}
|
|
goto L_08AE7414;
|
|
}
|
|
L_08AE7414:
|
|
aot_gpr_17 = (0u | 1u);
|
|
goto L_08AE7418;
|
|
L_08AE7418:
|
|
aot_gpr_4 = (0u < aot_gpr_17 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_17 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
aot_gpr_17 = (0u < aot_gpr_17 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE7444;
|
|
}
|
|
goto L_08AE743C;
|
|
}
|
|
L_08AE743C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_17));
|
|
if (branch_taken) {
|
|
goto L_08AE748C;
|
|
}
|
|
goto L_08AE7444;
|
|
}
|
|
L_08AE7444:
|
|
aot_gpr_4 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(aot_gpr_5) < 9 ? 1u : 0u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_4 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(aot_gpr_5));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE7470;
|
|
}
|
|
goto L_08AE7464;
|
|
}
|
|
L_08AE7464:
|
|
aot_gpr_4 = (aot_gpr_17 & aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE748C;
|
|
}
|
|
goto L_08AE7470;
|
|
}
|
|
L_08AE7470:
|
|
aot_gpr_4 = (aot_gpr_17 | aot_gpr_4);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_4) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE748C;
|
|
}
|
|
goto L_08AE7488;
|
|
}
|
|
L_08AE7488:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE748C;
|
|
L_08AE748C:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE74A8:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE74D0u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 615u, 0x08AE74D0u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE74D0u) goto L_08AE74D0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE74D0:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE74DCu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE74DCu) goto L_08AE74DC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE74DC:
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
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_5 + static_cast<std::uint32_t>(1653))))));
|
|
if (branch_taken) {
|
|
goto L_08AE74F8;
|
|
}
|
|
goto L_08AE74EC;
|
|
}
|
|
L_08AE74EC:
|
|
aot_gpr_4 = (aot_gpr_4 | 64u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(1653), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE7504;
|
|
}
|
|
goto L_08AE74F8;
|
|
}
|
|
L_08AE74F8:
|
|
ctx.gpr[6] = (0u + static_cast<std::uint32_t>(-65));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[6]);
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(1653), static_cast<std::uint8_t>(aot_gpr_4));
|
|
goto L_08AE7504;
|
|
L_08AE7504:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE751C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[4]{aot_gpr_16, aot_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); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
ctx.gpr[7] = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
aot_gpr_31 = (0x08AE754Cu);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 621u, 0x08AE754Cu, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE754Cu) goto L_08AE754C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE754C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7558u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7558u) goto L_08AE7558;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7558:
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
aot_gpr_31 = (0x08AE7568u);
|
|
ctx.gpr[6] = (0u | 2u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08862890, 23u, 431u, 0x08862890u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], ctx.gpr[7], ctx.gpr[8], ctx.gpr[9], ctx.gpr[10], ctx.gpr[11], aot_gpr_16, aot_gpr_17, ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[28], 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, 431u, 0x08862890u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7568u) goto L_08AE7568;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7568:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE7584:
|
|
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), aot_gpr_16);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(20), aot_gpr_31);
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
ctx.gpr[7] = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_31 = (0x08AE75A4u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 625u, 0x08AE75A4u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE75A4u) goto L_08AE75A4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE75A4:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE75C0;
|
|
}
|
|
goto L_08AE75B0;
|
|
}
|
|
L_08AE75B0:
|
|
aot_gpr_31 = (0x08AE75B8u);
|
|
aot_gpr_4 = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0036.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 627u, 0x08AE75B8u, 0x08894CA4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0036_entry(rt, ctx, 165u, aot_mem);
|
|
#else
|
|
recomp_unit_0036_entry(rt, ctx, 165u, 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, 165u, 0x08894CA4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE75B8u) goto L_08AE75B8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE75B8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE75E0;
|
|
}
|
|
goto L_08AE75C0;
|
|
}
|
|
L_08AE75C0:
|
|
aot_gpr_31 = (0x08AE75C8u);
|
|
aot_gpr_4 = (0u | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0036.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 629u, 0x08AE75C8u, 0x08894CA4u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0036_entry(rt, ctx, 165u, aot_mem);
|
|
#else
|
|
recomp_unit_0036_entry(rt, ctx, 165u, 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, 165u, 0x08894CA4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE75C8u) goto L_08AE75C8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE75C8:
|
|
aot_gpr_31 = (0x08AE75D0u);
|
|
aot_gpr_4 = (aot_gpr_29 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0087.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 630u, 0x08AE75D0u, 0x08960154u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0087_entry(rt, ctx, 16u, aot_mem);
|
|
#else
|
|
recomp_unit_0087_entry(rt, ctx, 16u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0087_entry, 87u, 16u, 0x08960154u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE75D0u) goto L_08AE75D0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE75D0:
|
|
aot_gpr_4 = (17786u << 16u);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_gpr_4);
|
|
aot_gpr_31 = (0x08AE75E0u);
|
|
aot_gpr_4 = (aot_gpr_29 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0036.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 631u, 0x08AE75E0u, 0x08894D40u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0036_entry(rt, ctx, 177u, aot_mem);
|
|
#else
|
|
recomp_unit_0036_entry(rt, ctx, 177u, 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, 177u, 0x08894D40u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE75E0u) goto L_08AE75E0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE75E0:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_gpr_16 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(16)));
|
|
aot_gpr_31 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(20)));
|
|
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_08AE75F4:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[4]{aot_gpr_16, aot_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); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
ctx.gpr[18] = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE7620u);
|
|
ctx.gpr[7] = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 633u, 0x08AE7620u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7620u) goto L_08AE7620;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7620:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE762Cu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE762Cu) goto L_08AE762C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE762C:
|
|
aot_gpr_17 = (ctx.gpr[2] | 0u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(4)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_gpr_16 = (0u + static_cast<std::uint32_t>(-65));
|
|
if (branch_taken) {
|
|
goto L_08AE7650;
|
|
}
|
|
goto L_08AE763C;
|
|
}
|
|
L_08AE763C:
|
|
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_17 + static_cast<std::uint32_t>(615))))));
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_16);
|
|
aot_gpr_4 = (aot_gpr_4 | 64u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_17 + static_cast<std::uint32_t>(615), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE7664;
|
|
}
|
|
goto L_08AE7650;
|
|
}
|
|
L_08AE7650:
|
|
aot_gpr_31 = (0x08AE7658u);
|
|
aot_gpr_4 = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0191.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 637u, 0x08AE7658u, 0x08B01C90u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0191_entry(rt, ctx, 479u, aot_mem);
|
|
#else
|
|
recomp_unit_0191_entry(rt, ctx, 479u, 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, 479u, 0x08B01C90u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7658u) goto L_08AE7658;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7658:
|
|
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_17 + static_cast<std::uint32_t>(615))))));
|
|
aot_gpr_4 = (aot_gpr_4 & aot_gpr_16);
|
|
aot_mem.aot_direct_store8(aot_gpr_17 + static_cast<std::uint32_t>(615), static_cast<std::uint8_t>(aot_gpr_4));
|
|
goto L_08AE7664;
|
|
L_08AE7664:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE7680:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-96));
|
|
{ const std::uint32_t aot_run_words[5]{aot_gpr_16, aot_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>(64), aot_run_words); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
ctx.gpr[19] = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
ctx.gpr[6] = (0u | 4u);
|
|
aot_gpr_31 = (0x08AE76B8u);
|
|
ctx.gpr[7] = (ctx.gpr[19] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 640u, 0x08AE76B8u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE76B8u) goto L_08AE76B8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE76B8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE76C4u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE76C4u) goto L_08AE76C4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE76C4:
|
|
{ std::uint32_t aot_run_words[3]{};
|
|
aot_mem.aot_direct_load32_block(ctx.gpr[19] + static_cast<std::uint32_t>(4), 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]);
|
|
}
|
|
{ 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>(aot_fpr_14)};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_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 = (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 = 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 = ctx.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<4u, 4u>(vfpu_value); }
|
|
{ const std::uint32_t vfpu_address = ctx.gpr[2] + 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[2] + 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 = 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<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 = 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 = (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_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_31 = (0x08AE7714u);
|
|
aot_gpr_5 = (ctx.gpr[2] + static_cast<std::uint32_t>(48));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_compact_generated_leaf<&vcs_compact_leaf_08A931B8, 163u, 0x08A931B8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7714u) goto L_08AE7714;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7714:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(32)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[18] + static_cast<std::uint32_t>(29704), aot_gpr_4);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(36)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[19] + static_cast<std::uint32_t>(4), aot_gpr_4);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_29 + static_cast<std::uint32_t>(40)));
|
|
aot_mem.aot_direct_store32(ctx.gpr[19] + static_cast<std::uint32_t>(8), aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
aot_gpr_31 = (0x08AE773Cu);
|
|
ctx.gpr[6] = (0u | 3u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08862890, 23u, 431u, 0x08862890u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], ctx.gpr[7], ctx.gpr[8], ctx.gpr[9], ctx.gpr[10], ctx.gpr[11], aot_gpr_16, aot_gpr_17, ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[28], 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, 431u, 0x08862890u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE773Cu) goto L_08AE773C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE773C:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
{ std::uint32_t aot_run_words[5]{};
|
|
aot_mem.aot_direct_load32_block(aot_gpr_29 + static_cast<std::uint32_t>(64), aot_run_words);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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>(96));
|
|
// 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_08AE775C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_17 = (2236u << 16u);
|
|
aot_gpr_16 = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE7784u);
|
|
ctx.gpr[7] = (aot_gpr_16 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 645u, 0x08AE7784u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7784u) goto L_08AE7784;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7784:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5896)));
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE7798;
|
|
}
|
|
goto L_08AE7790;
|
|
}
|
|
L_08AE7790:
|
|
aot_gpr_31 = (0x08AE7798u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0217.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 647u, 0x08AE7798u, 0x08B68290u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0217_entry(rt, ctx, 34u, aot_mem);
|
|
#else
|
|
recomp_unit_0217_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_0217_entry, 217u, 34u, 0x08B68290u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7798u) goto L_08AE7798;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7798:
|
|
aot_gpr_31 = (0x08AE77A0u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(5896)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0044_entry, 44u, 278u, 0x088B5BECu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE77A0u) goto L_08AE77A0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE77A0:
|
|
{ const bool branch_taken = ctx.gpr[2] != 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE77BC;
|
|
}
|
|
goto L_08AE77A8;
|
|
}
|
|
L_08AE77A8:
|
|
aot_gpr_4 = (ctx.gpr[28] + static_cast<std::uint32_t>(7768));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
aot_gpr_5 = (aot_gpr_5 & 255u);
|
|
aot_gpr_31 = (0x08AE77BCu);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(4)));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0128.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 650u, 0x08AE77BCu, 0x08A067B8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0128_entry(rt, ctx, 629u, aot_mem);
|
|
#else
|
|
recomp_unit_0128_entry(rt, ctx, 629u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0128_entry, 128u, 629u, 0x08A067B8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE77BCu) goto L_08AE77BC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE77BC:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE77D4:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE77FCu);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 652u, 0x08AE77FCu, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE77FCu) goto L_08AE77FC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE77FC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7808u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7808u) goto L_08AE7808;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7808:
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_5 + static_cast<std::uint32_t>(852)));
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE7824;
|
|
}
|
|
goto L_08AE781C;
|
|
}
|
|
L_08AE781C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(1708), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
if (branch_taken) {
|
|
goto L_08AE783C;
|
|
}
|
|
goto L_08AE7824;
|
|
}
|
|
L_08AE7824:
|
|
ctx.gpr[6] = (0u | 6u);
|
|
{ const bool branch_taken = aot_gpr_4 != ctx.gpr[6];
|
|
if (branch_taken) {
|
|
goto L_08AE7838;
|
|
}
|
|
goto L_08AE7830;
|
|
}
|
|
L_08AE7830:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(1352), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
if (branch_taken) {
|
|
goto L_08AE783C;
|
|
}
|
|
goto L_08AE7838;
|
|
}
|
|
L_08AE7838:
|
|
aot_mem.aot_direct_store32(aot_gpr_5 + static_cast<std::uint32_t>(1708), std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
goto L_08AE783C;
|
|
L_08AE783C:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE7854:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE787Cu);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 660u, 0x08AE787Cu, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE787Cu) goto L_08AE787C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE787C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7888u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7888u) goto L_08AE7888;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7888:
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(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_5 + static_cast<std::uint32_t>(538))))));
|
|
ctx.gpr[7] = (0u + static_cast<std::uint32_t>(-5));
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[7]);
|
|
if (branch_taken) {
|
|
goto L_08AE78AC;
|
|
}
|
|
goto L_08AE78A0;
|
|
}
|
|
L_08AE78A0:
|
|
aot_gpr_4 = (aot_gpr_4 | 4u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(538), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE78B0;
|
|
}
|
|
goto L_08AE78AC;
|
|
}
|
|
L_08AE78AC:
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(538), static_cast<std::uint8_t>(aot_gpr_4));
|
|
goto L_08AE78B0;
|
|
L_08AE78B0:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE78C8:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[4]{aot_gpr_16, aot_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); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_17 = (2236u << 16u);
|
|
ctx.gpr[18] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE78F8u);
|
|
ctx.gpr[7] = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 666u, 0x08AE78F8u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE78F8u) goto L_08AE78F8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE78F8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7904u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7904u) goto L_08AE7904;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7904:
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
aot_gpr_17 = (0u | 0u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(4)));
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load8(aot_gpr_5 + static_cast<std::uint32_t>(565)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(aot_gpr_4) < static_cast<std::int32_t>(ctx.gpr[6]) ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
ctx.gpr[6] = (aot_gpr_4 | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE7938;
|
|
}
|
|
goto L_08AE7920;
|
|
}
|
|
L_08AE7920:
|
|
aot_gpr_4 = (aot_gpr_5 | 0u);
|
|
aot_gpr_31 = (0x08AE792Cu);
|
|
aot_gpr_5 = (ctx.gpr[6] | 0u);
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_compact_generated_leaf<&vcs_compact_leaf_08AFEF7C, 190u, 0x08AFEF7Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE792Cu) goto L_08AE792C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE792C:
|
|
{ const bool branch_taken = ctx.gpr[2] != 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE7938;
|
|
}
|
|
goto L_08AE7934;
|
|
}
|
|
L_08AE7934:
|
|
aot_gpr_17 = (0u | 1u);
|
|
goto L_08AE7938;
|
|
L_08AE7938:
|
|
aot_gpr_4 = (0u < aot_gpr_17 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_17 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
aot_gpr_17 = (0u < aot_gpr_17 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE7964;
|
|
}
|
|
goto L_08AE795C;
|
|
}
|
|
L_08AE795C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_17));
|
|
if (branch_taken) {
|
|
goto L_08AE79AC;
|
|
}
|
|
goto L_08AE7964;
|
|
}
|
|
L_08AE7964:
|
|
aot_gpr_4 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(aot_gpr_5) < 9 ? 1u : 0u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_4 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(aot_gpr_5));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE7990;
|
|
}
|
|
goto L_08AE7984;
|
|
}
|
|
L_08AE7984:
|
|
aot_gpr_4 = (aot_gpr_17 & aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE79AC;
|
|
}
|
|
goto L_08AE7990;
|
|
}
|
|
L_08AE7990:
|
|
aot_gpr_4 = (aot_gpr_17 | aot_gpr_4);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_4) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE79AC;
|
|
}
|
|
goto L_08AE79A8;
|
|
}
|
|
L_08AE79A8:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE79AC;
|
|
L_08AE79AC:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE79C8:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[4]{aot_gpr_16, aot_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); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
ctx.gpr[18] = (2236u << 16u);
|
|
ctx.gpr[7] = (ctx.gpr[18] + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
aot_gpr_31 = (0x08AE79F8u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 679u, 0x08AE79F8u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE79F8u) goto L_08AE79F8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE79F8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7A04u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7A04u) goto L_08AE7A04;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7A04:
|
|
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[2] + static_cast<std::uint32_t>(86))))));
|
|
aot_mem.aot_direct_store32(ctx.gpr[18] + static_cast<std::uint32_t>(29704), aot_gpr_4);
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
aot_gpr_31 = (0x08AE7A1Cu);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08862890, 23u, 431u, 0x08862890u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], ctx.gpr[7], ctx.gpr[8], ctx.gpr[9], ctx.gpr[10], ctx.gpr[11], aot_gpr_16, aot_gpr_17, ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[28], 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, 431u, 0x08862890u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7A1Cu) goto L_08AE7A1C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7A1C:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE7A38:
|
|
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_16);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
ctx.gpr[7] = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_31 = (0x08AE7A58u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 683u, 0x08AE7A58u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7A58u) goto L_08AE7A58;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7A58:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7A64u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7A64u) goto L_08AE7A64;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7A64:
|
|
aot_gpr_31 = (0x08AE7A6Cu);
|
|
aot_gpr_4 = (ctx.gpr[2] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0194.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 685u, 0x08AE7A6Cu, 0x08B0E0ECu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0194_entry(rt, ctx, 502u, aot_mem);
|
|
#else
|
|
recomp_unit_0194_entry(rt, ctx, 502u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0194_entry, 194u, 502u, 0x08B0E0ECu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7A6Cu) goto L_08AE7A6C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7A6C:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_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_08AE7A80:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE7AA8u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 687u, 0x08AE7AA8u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7AA8u) goto L_08AE7AA8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7AA8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7AB4u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7AB4u) goto L_08AE7AB4;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7AB4:
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(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_5 + static_cast<std::uint32_t>(538))))));
|
|
ctx.gpr[7] = (0u + static_cast<std::uint32_t>(-9));
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[7]);
|
|
if (branch_taken) {
|
|
goto L_08AE7AD4;
|
|
}
|
|
goto L_08AE7ACC;
|
|
}
|
|
L_08AE7ACC:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(538), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE7ADC;
|
|
}
|
|
goto L_08AE7AD4;
|
|
}
|
|
L_08AE7AD4:
|
|
aot_gpr_4 = (aot_gpr_4 | 8u);
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(538), static_cast<std::uint8_t>(aot_gpr_4));
|
|
goto L_08AE7ADC;
|
|
L_08AE7ADC:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE7AF4:
|
|
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_16);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
ctx.gpr[7] = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_31 = (0x08AE7B14u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 693u, 0x08AE7B14u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7B14u) goto L_08AE7B14;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7B14:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7B20u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7B20u) goto L_08AE7B20;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7B20:
|
|
aot_gpr_4 = (ctx.gpr[2] | 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE7B34;
|
|
}
|
|
goto L_08AE7B2C;
|
|
}
|
|
L_08AE7B2C:
|
|
aot_gpr_5 = (0u + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store8(aot_gpr_4 + static_cast<std::uint32_t>(91), static_cast<std::uint8_t>(aot_gpr_5));
|
|
goto L_08AE7B34;
|
|
L_08AE7B34:
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_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_08AE7B48:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[4]{aot_gpr_16, aot_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); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
ctx.gpr[18] = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_17 = (2236u << 16u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x08AE7B78u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 698u, 0x08AE7B78u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7B78u) goto L_08AE7B78;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7B78:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7B84u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7B84u) goto L_08AE7B84;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7B84:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[2] + static_cast<std::uint32_t>(900)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
aot_gpr_5 = (aot_gpr_4 | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE7BA0;
|
|
}
|
|
goto L_08AE7B90;
|
|
}
|
|
L_08AE7B90:
|
|
aot_gpr_31 = (0x08AE7B98u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15976)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 775u, 0x08B67368u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7B98u) goto L_08AE7B98;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7B98:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store32(aot_gpr_17 + static_cast<std::uint32_t>(29704), ctx.gpr[2]);
|
|
if (branch_taken) {
|
|
goto L_08AE7BA8;
|
|
}
|
|
goto L_08AE7BA0;
|
|
}
|
|
L_08AE7BA0:
|
|
aot_gpr_4 = (0u + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store32(aot_gpr_17 + static_cast<std::uint32_t>(29704), aot_gpr_4);
|
|
goto L_08AE7BA8;
|
|
L_08AE7BA8:
|
|
aot_gpr_4 = (aot_gpr_16 | 0u);
|
|
aot_gpr_5 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x08AE7BB8u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
if (([&]() { /*PSPRECOMP_RESIDENT_SCHED_SAFE*/ if (rt.resident_generated_leaf_fast_allowed()) return rt.invoke_resident_generated_leaf<&vcs_resident_region_08862890, 23u, 431u, 0x08862890u>(ctx, &aot_mem, ctx.pc, ctx.gpr[2], aot_gpr_4, aot_gpr_5, ctx.gpr[6], ctx.gpr[7], ctx.gpr[8], ctx.gpr[9], ctx.gpr[10], ctx.gpr[11], aot_gpr_16, aot_gpr_17, ctx.gpr[18], ctx.gpr[19], ctx.gpr[20], ctx.gpr[21], ctx.gpr[28], 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, 431u, 0x08862890u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7BB8u) goto L_08AE7BB8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7BB8:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE7BD4:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 3u);
|
|
aot_gpr_31 = (0x08AE7BFCu);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 706u, 0x08AE7BFCu, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7BFCu) goto L_08AE7BFC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7BFC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7C08u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7C08u) goto L_08AE7C08;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7C08:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
aot_gpr_4 = (aot_gpr_4 << 24u);
|
|
aot_gpr_4 = (static_cast<std::uint32_t>(static_cast<std::int32_t>(aot_gpr_4) >> 24u));
|
|
aot_mem.aot_direct_store8(ctx.gpr[2] + static_cast<std::uint32_t>(534), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(8)));
|
|
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);
|
|
aot_mem.aot_direct_store32(ctx.gpr[2] + static_cast<std::uint32_t>(512), aot_gpr_4);
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE7C40:
|
|
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_16);
|
|
aot_mem.aot_direct_store32(aot_gpr_29 + static_cast<std::uint32_t>(4), aot_gpr_31);
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
ctx.gpr[7] = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_31 = (0x08AE7C60u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 709u, 0x08AE7C60u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7C60u) goto L_08AE7C60;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7C60:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
aot_fpr_12 = std::bit_cast<float>(ctx.fpu_float_to_word_ct<1u>(aot_fpr_12));
|
|
aot_gpr_4 = (std::bit_cast<std::uint32_t>(aot_fpr_12));
|
|
aot_mem.aot_direct_store16(ctx.gpr[28] + static_cast<std::uint32_t>(-13364), static_cast<std::uint16_t>(aot_gpr_4));
|
|
ctx.gpr[2] = (0u | 0u);
|
|
aot_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_08AE7C84:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE7CACu);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 711u, 0x08AE7CACu, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7CACu) goto L_08AE7CAC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7CAC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7CB8u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7CB8u) goto L_08AE7CB8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7CB8:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
aot_mem.aot_direct_store16(ctx.gpr[2] + static_cast<std::uint32_t>(560), static_cast<std::uint16_t>(aot_gpr_4));
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE7CD8:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[3]{aot_gpr_16, aot_gpr_17, aot_gpr_31};
|
|
aot_mem.aot_direct_store32_block(aot_gpr_29 + static_cast<std::uint32_t>(0), aot_run_words); }
|
|
aot_gpr_5 = (aot_gpr_4 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_16 = (2236u << 16u);
|
|
aot_gpr_17 = (aot_gpr_16 + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE7D00u);
|
|
ctx.gpr[7] = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 714u, 0x08AE7D00u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7D00u) goto L_08AE7D00;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7D00:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7D0Cu);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_16 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7D0Cu) goto L_08AE7D0C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7D0C:
|
|
aot_gpr_5 = (ctx.gpr[2] | 0u);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(4)));
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
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_5 + static_cast<std::uint32_t>(1653))))));
|
|
if (branch_taken) {
|
|
goto L_08AE7D28;
|
|
}
|
|
goto L_08AE7D1C;
|
|
}
|
|
L_08AE7D1C:
|
|
aot_gpr_4 = (aot_gpr_4 | 128u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(1653), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE7D34;
|
|
}
|
|
goto L_08AE7D28;
|
|
}
|
|
L_08AE7D28:
|
|
ctx.gpr[6] = (0u + static_cast<std::uint32_t>(-129));
|
|
aot_gpr_4 = (aot_gpr_4 & ctx.gpr[6]);
|
|
aot_mem.aot_direct_store8(aot_gpr_5 + static_cast<std::uint32_t>(1653), static_cast<std::uint8_t>(aot_gpr_4));
|
|
goto L_08AE7D34;
|
|
L_08AE7D34:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE7D4C:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-16));
|
|
{ const std::uint32_t aot_run_words[4]{aot_gpr_16, aot_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); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_17 = (2236u << 16u);
|
|
ctx.gpr[7] = (aot_gpr_17 + static_cast<std::uint32_t>(29704));
|
|
aot_gpr_31 = (0x08AE7D78u);
|
|
ctx.gpr[6] = (0u | 1u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 720u, 0x08AE7D78u, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7D78u) goto L_08AE7D78;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7D78:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7D84u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(aot_gpr_17 + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7D84u) goto L_08AE7D84;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7D84:
|
|
ctx.gpr[18] = (ctx.gpr[2] | 0u);
|
|
aot_gpr_17 = (0u | 0u);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(596)));
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE7D9C;
|
|
}
|
|
goto L_08AE7D98;
|
|
}
|
|
L_08AE7D98:
|
|
aot_gpr_17 = (0u | 1u);
|
|
goto L_08AE7D9C;
|
|
L_08AE7D9C:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(852)));
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE7DC0;
|
|
}
|
|
goto L_08AE7DA8;
|
|
}
|
|
L_08AE7DA8:
|
|
aot_gpr_31 = (0x08AE7DB0u);
|
|
aot_gpr_4 = (ctx.gpr[18] + static_cast<std::uint32_t>(944));
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0194.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 725u, 0x08AE7DB0u, 0x08B0D970u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0194_entry(rt, ctx, 387u, aot_mem);
|
|
#else
|
|
recomp_unit_0194_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_0194_entry, 194u, 387u, 0x08B0D970u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7DB0u) goto L_08AE7DB0;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7DB0:
|
|
aot_gpr_4 = (ctx.gpr[2] < static_cast<std::uint32_t>(225) ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE7DC0;
|
|
}
|
|
goto L_08AE7DBC;
|
|
}
|
|
L_08AE7DBC:
|
|
aot_gpr_17 = (0u | 1u);
|
|
goto L_08AE7DC0;
|
|
L_08AE7DC0:
|
|
aot_fpr_12 = std::bit_cast<float>(aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(636)));
|
|
aot_gpr_4 = (17274u << 16u);
|
|
aot_fpr_13 = 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_08AE7DE0;
|
|
}
|
|
goto L_08AE7DDC;
|
|
}
|
|
L_08AE7DDC:
|
|
aot_gpr_17 = (0u | 1u);
|
|
goto L_08AE7DE0;
|
|
L_08AE7DE0:
|
|
aot_gpr_4 = (0u < aot_gpr_17 ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
aot_gpr_17 = (aot_gpr_4 ^ aot_gpr_5);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
aot_gpr_17 = (0u < aot_gpr_17 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE7E0C;
|
|
}
|
|
goto L_08AE7E04;
|
|
}
|
|
L_08AE7E04:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_17));
|
|
if (branch_taken) {
|
|
goto L_08AE7E54;
|
|
}
|
|
goto L_08AE7E0C;
|
|
}
|
|
L_08AE7E0C:
|
|
aot_gpr_4 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(aot_gpr_5) < 9 ? 1u : 0u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_4 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(aot_gpr_5));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
{ const bool branch_taken = ctx.gpr[6] == 0u;
|
|
aot_gpr_4 = (0u < aot_gpr_4 ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE7E38;
|
|
}
|
|
goto L_08AE7E2C;
|
|
}
|
|
L_08AE7E2C:
|
|
aot_gpr_4 = (aot_gpr_17 & aot_gpr_4);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
if (branch_taken) {
|
|
goto L_08AE7E54;
|
|
}
|
|
goto L_08AE7E38;
|
|
}
|
|
L_08AE7E38:
|
|
aot_gpr_4 = (aot_gpr_17 | aot_gpr_4);
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(aot_gpr_4));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
aot_gpr_4 = (static_cast<std::int32_t>(aot_gpr_4) < 21 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE7E54;
|
|
}
|
|
goto L_08AE7E50;
|
|
}
|
|
L_08AE7E50:
|
|
aot_mem.aot_direct_store16(aot_gpr_16 + static_cast<std::uint32_t>(518), static_cast<std::uint16_t>(0u));
|
|
goto L_08AE7E54;
|
|
L_08AE7E54:
|
|
ctx.gpr[2] = (0u | 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);
|
|
aot_gpr_16 = aot_run_words[0];
|
|
aot_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_08AE7E70:
|
|
aot_gpr_29 = (aot_gpr_29 + static_cast<std::uint32_t>(-32));
|
|
{ const std::uint32_t aot_run_words[6]{aot_gpr_16, aot_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>(0), aot_run_words); }
|
|
aot_gpr_16 = (aot_gpr_4 | 0u);
|
|
aot_gpr_5 = (aot_gpr_16 + static_cast<std::uint32_t>(16));
|
|
aot_gpr_17 = (0u | 2u);
|
|
ctx.gpr[19] = (2236u << 16u);
|
|
ctx.gpr[18] = (ctx.gpr[19] + static_cast<std::uint32_t>(29704));
|
|
ctx.gpr[6] = (0u | 2u);
|
|
aot_gpr_31 = (0x08AE7EACu);
|
|
ctx.gpr[7] = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0024.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 737u, 0x08AE7EACu, 0x0886589Cu)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0024_entry(rt, ctx, 371u, aot_mem);
|
|
#else
|
|
recomp_unit_0024_entry(rt, ctx, 371u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0024_entry, 24u, 371u, 0x0886589Cu>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7EACu) goto L_08AE7EAC;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7EAC:
|
|
aot_gpr_4 = (aot_mem.aot_direct_load32(ctx.gpr[28] + static_cast<std::uint32_t>(-15972)));
|
|
aot_gpr_31 = (0x08AE7EB8u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[19] + static_cast<std::uint32_t>(29704)));
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_direct<&recomp_unit_0216_entry, 216u, 438u, 0x08B65CC4u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7EB8u) goto L_08AE7EB8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
L_08AE7EB8:
|
|
aot_gpr_4 = (ctx.gpr[2] | 0u);
|
|
ctx.gpr[19] = (0u | 0u);
|
|
ctx.gpr[7] = (aot_mem.aot_direct_load32(aot_gpr_4 + static_cast<std::uint32_t>(852)));
|
|
ctx.gpr[8] = (0u | 6u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load32(ctx.gpr[18] + static_cast<std::uint32_t>(4)));
|
|
ctx.gpr[6] = (0u | 4u);
|
|
{ const bool branch_taken = ctx.gpr[7] != ctx.gpr[8];
|
|
ctx.gpr[20] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_08AE7F64;
|
|
}
|
|
goto L_08AE7ED8;
|
|
}
|
|
L_08AE7ED8:
|
|
{ const bool branch_taken = aot_gpr_5 != ctx.gpr[6];
|
|
if (branch_taken) {
|
|
goto L_08AE7F1C;
|
|
}
|
|
goto L_08AE7EE0;
|
|
}
|
|
L_08AE7EE0:
|
|
ctx.gpr[7] = (0u | 0u);
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
goto L_08AE7EF0;
|
|
L_08AE7EF0:
|
|
ctx.gpr[8] = (aot_gpr_4 + ctx.gpr[7]);
|
|
ctx.gpr[8] = (aot_mem.aot_direct_load8(ctx.gpr[8] + static_cast<std::uint32_t>(1076)));
|
|
{ const bool branch_taken = ctx.gpr[8] != ctx.gpr[20];
|
|
if (branch_taken) {
|
|
goto L_08AE7F04;
|
|
}
|
|
goto L_08AE7F00;
|
|
}
|
|
L_08AE7F00:
|
|
ctx.gpr[19] = (ctx.gpr[20] | 0u);
|
|
goto L_08AE7F04;
|
|
L_08AE7F04:
|
|
ctx.gpr[7] = (ctx.gpr[7] + static_cast<std::uint32_t>(1));
|
|
ctx.gpr[8] = (ctx.gpr[7] < static_cast<std::uint32_t>(2) ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[8] != 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE7EF0;
|
|
}
|
|
goto L_08AE7F14;
|
|
}
|
|
L_08AE7F14:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE7FC8;
|
|
}
|
|
goto L_08AE7F1C;
|
|
}
|
|
L_08AE7F1C:
|
|
{ const bool branch_taken = aot_gpr_5 != aot_gpr_17;
|
|
if (branch_taken) {
|
|
goto L_08AE7F30;
|
|
}
|
|
goto L_08AE7F24;
|
|
}
|
|
L_08AE7F24:
|
|
aot_mem.aot_direct_store32(ctx.gpr[18] + static_cast<std::uint32_t>(4), 0u);
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_5 = (0u | 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE7F44;
|
|
}
|
|
goto L_08AE7F30;
|
|
}
|
|
L_08AE7F30:
|
|
ctx.gpr[6] = (0u | 3u);
|
|
{ const bool branch_taken = aot_gpr_5 != ctx.gpr[6];
|
|
if (branch_taken) {
|
|
goto L_08AE7F44;
|
|
}
|
|
goto L_08AE7F3C;
|
|
}
|
|
L_08AE7F3C:
|
|
aot_mem.aot_direct_store32(ctx.gpr[18] + static_cast<std::uint32_t>(4), ctx.gpr[20]);
|
|
aot_gpr_5 = (ctx.gpr[20] | 0u);
|
|
goto L_08AE7F44;
|
|
L_08AE7F44:
|
|
aot_gpr_4 = (aot_gpr_4 + aot_gpr_5);
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_4 + static_cast<std::uint32_t>(1076)));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != ctx.gpr[20];
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
if (branch_taken) {
|
|
goto L_08AE7FC8;
|
|
}
|
|
goto L_08AE7F5C;
|
|
}
|
|
L_08AE7F5C:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[19] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_08AE7FC8;
|
|
}
|
|
goto L_08AE7F64;
|
|
}
|
|
L_08AE7F64:
|
|
{ const bool branch_taken = aot_gpr_5 != ctx.gpr[6];
|
|
ctx.gpr[18] = (aot_gpr_4 + static_cast<std::uint32_t>(944));
|
|
if (branch_taken) {
|
|
goto L_08AE7FA0;
|
|
}
|
|
goto L_08AE7F6C;
|
|
}
|
|
L_08AE7F6C:
|
|
aot_gpr_17 = (0u | 0u);
|
|
goto L_08AE7F70;
|
|
L_08AE7F70:
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
aot_gpr_31 = (0x08AE7F7Cu);
|
|
aot_gpr_5 = (aot_gpr_17 | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0194.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 754u, 0x08AE7F7Cu, 0x08B0D8F8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0194_entry(rt, ctx, 376u, aot_mem);
|
|
#else
|
|
recomp_unit_0194_entry(rt, ctx, 376u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0194_entry, 194u, 376u, 0x08B0D8F8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7F7Cu) goto L_08AE7F7C;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7F7C:
|
|
{ const bool branch_taken = ctx.gpr[2] != ctx.gpr[20];
|
|
if (branch_taken) {
|
|
goto L_08AE7F88;
|
|
}
|
|
goto L_08AE7F84;
|
|
}
|
|
L_08AE7F84:
|
|
ctx.gpr[19] = (ctx.gpr[20] | 0u);
|
|
goto L_08AE7F88;
|
|
L_08AE7F88:
|
|
aot_gpr_17 = (aot_gpr_17 + static_cast<std::uint32_t>(1));
|
|
aot_gpr_4 = (aot_gpr_17 < static_cast<std::uint32_t>(4) ? 1u : 0u);
|
|
{ const bool branch_taken = aot_gpr_4 != 0u;
|
|
if (branch_taken) {
|
|
goto L_08AE7F70;
|
|
}
|
|
goto L_08AE7F98;
|
|
}
|
|
L_08AE7F98:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
if (branch_taken) {
|
|
goto L_08AE7FC0;
|
|
}
|
|
goto L_08AE7FA0;
|
|
}
|
|
L_08AE7FA0:
|
|
aot_gpr_31 = (0x08AE7FA8u);
|
|
aot_gpr_4 = (ctx.gpr[18] | 0u);
|
|
// PSPRECOMP_V814_LINKED_CALL: non-recursive generated call 0184->0194.
|
|
#if defined(PSPRECOMP_AOT_PRODUCTION_FASTPATHS)
|
|
AOT_REGCACHE_SYNC_OUT();
|
|
if (rt.prepare_aot_linked_call(ctx, &recomp_unit_0184_entry, 759u, 0x08AE7FA8u, 0x08B0D8F8u)) {
|
|
#if defined(__clang__)
|
|
[[clang::musttail]] return recomp_unit_0194_entry(rt, ctx, 376u, aot_mem);
|
|
#else
|
|
recomp_unit_0194_entry(rt, ctx, 376u, aot_mem); return;
|
|
#endif
|
|
}
|
|
return;
|
|
#else
|
|
if (([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0194_entry, 194u, 376u, 0x08B0D8F8u>(ctx, &aot_mem)); if (aot_regcache_same_) AOT_REGCACHE_SYNC_IN(); else aot_regcache_valid = false; return aot_regcache_same_; }()) && ctx.pc == 0x08AE7FA8u) goto L_08AE7FA8;
|
|
AOT_REGCACHE_SYNC_OUT(); return;
|
|
#endif
|
|
L_08AE7FA8:
|
|
aot_gpr_5 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(524)));
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
{ const bool branch_taken = ctx.gpr[2] != ctx.gpr[20];
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
if (branch_taken) {
|
|
goto L_08AE7FC8;
|
|
}
|
|
goto L_08AE7FB8;
|
|
}
|
|
L_08AE7FB8:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
ctx.gpr[19] = (0u | 1u);
|
|
if (branch_taken) {
|
|
goto L_08AE7FC8;
|
|
}
|
|
goto L_08AE7FC0;
|
|
}
|
|
L_08AE7FC0:
|
|
aot_gpr_5 = (0u < aot_gpr_5 ? 1u : 0u);
|
|
ctx.gpr[6] = (aot_mem.aot_direct_load16(aot_gpr_16 + static_cast<std::uint32_t>(518)));
|
|
goto L_08AE7FC8;
|
|
L_08AE7FC8:
|
|
aot_gpr_4 = (0u < ctx.gpr[19] ? 1u : 0u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
aot_gpr_4 = (aot_gpr_4 & 255u);
|
|
ctx.gpr[19] = (aot_gpr_4 ^ aot_gpr_5);
|
|
{ const bool branch_taken = ctx.gpr[6] != 0u;
|
|
ctx.gpr[19] = (0u < ctx.gpr[19] ? 1u : 0u);
|
|
if (branch_taken) {
|
|
goto L_08AE7FE8;
|
|
}
|
|
goto L_08AE7FE0;
|
|
}
|
|
L_08AE7FE0:
|
|
{ const bool branch_taken = 0u == 0u;
|
|
aot_mem.aot_direct_store8(aot_gpr_16 + static_cast<std::uint32_t>(521), static_cast<std::uint8_t>(ctx.gpr[19]));
|
|
if (branch_taken) {
|
|
(void)([&]() { AOT_REGCACHE_SYNC_OUT(); const bool aot_regcache_same_ = (rt.invoke_chained_trusted_direct<&recomp_unit_0185_entry, 185u, 5u, 0x08AE8030u>(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_08AE7FE8;
|
|
}
|
|
L_08AE7FE8:
|
|
aot_gpr_4 = (aot_gpr_16 + static_cast<std::uint32_t>(518));
|
|
aot_gpr_5 = (aot_mem.aot_direct_load16(aot_gpr_4 + static_cast<std::uint32_t>(0)));
|
|
ctx.gpr[6] = (static_cast<std::int32_t>(aot_gpr_5) < 9 ? 1u : 0u);
|
|
aot_gpr_5 = (aot_gpr_5 + static_cast<std::uint32_t>(-1));
|
|
aot_mem.aot_direct_store16(aot_gpr_4 + static_cast<std::uint32_t>(0), static_cast<std::uint16_t>(aot_gpr_5));
|
|
aot_gpr_4 = (aot_mem.aot_direct_load8(aot_gpr_16 + static_cast<std::uint32_t>(521)));
|
|
ctx.pc = 0x08AE8000u; AOT_REGCACHE_SYNC_OUT(); return;
|
|
}
|
|
|
|
#undef AOT_REGCACHE_SYNC_IN
|
|
#undef AOT_REGCACHE_SYNC_OUT
|
|
|
|
void recomp_unit_0184(Runtime &rt, AllegrexContext &ctx) {
|
|
auto aot_mem = rt.memory().aot_fast_view();
|
|
recomp_unit_0184_entry(rt, ctx, 0u, aot_mem);
|
|
}
|
|
|
|
void register_generated_unit_184(Runtime &runtime) {
|
|
runtime.register_generated_unit(184u, 0x08AE4000u, 16384u, &recomp_unit_0184, &recomp_unit_0184_entry);
|
|
// PSPRECOMP_V812_COMPACT_REGISTRATION: same entry set, looped once in Runtime instead of source-expanded calls.
|
|
runtime.register_generated_entry_mask(0x08AE4000u, &recomp_unit_0184, "recomp_unit_0184",
|
|
kEntryMasks_recomp_unit_0184, 64u);
|
|
}
|
|
} // namespace psprecomp
|