// clang-format off //--------------------------MIPS2C--------------------- #include "game/mips2c/mips2c_private.h" #include "game/kernel/jak1/kscheme.h" using namespace jak1; namespace Mips2C::jak1 { namespace generic_tie_dma_to_spad_sync { struct Cache { void* fake_scratchpad_data; // *fake-scratchpad-data* } cache; u64 execute(void* ctxt) { auto* c = (ExecutionContext*)ctxt; // nop // sll r0, r0, 0 get_fake_spad_addr(at, cache.fake_scratchpad_data, 0, c);// lui at, 28672 c->ori(a2, r0, 65535); // ori a2, r0, 65535 c->lui(v1, 4096); // lui v1, 4096 // nop // sll r0, r0, 0 c->ori(v1, v1, 54272); // ori v1, v1, 54272 // SPR TO c->and_(a2, a1, a2); // and a2, a1, a2 /* block_1: c->lw(a3, 0, v1); // lw a3, 0(v1) // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 c->andi(a3, a3, 256); // andi a3, a3, 256 // nop // sll r0, r0, 0 bc = c->sgpr64(a3) == 0; // beq a3, r0, L90 // nop // sll r0, r0, 0 if (bc) {goto block_3;} // branch non-likely // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 c->daddiu(a1, a1, 1); // daddiu a1, a1, 1 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 //beq r0, r0, L89 // beq r0, r0, L89 // nop // sll r0, r0, 0 goto block_1; // branch always */ c->addiu(a3, r0, 324); // addiu a3, r0, 324 // c->sw(a2, 128, v1); // sw a2, 128(v1) u32 sadr = c->sgpr64(a2); // c->sw(a0, 48, v1); // sw a0, 48(v1) u32 tadr = c->sgpr64(a0); // c->sw(r0, 32, v1); // sw r0, 32(v1) // Unknown instr: sync.l // c->sw(a3, 0, v1); // sw a3, 0(v1) // same and hack as generic merc. spad_to_dma_blerc_chain(cache.fake_scratchpad_data, sadr & 0x3fff, tadr); /* block_4: c->lw(a0, 0, v1); // lw a0, 0(v1) // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 c->andi(a0, a0, 256); // andi a0, a0, 256 // nop // sll r0, r0, 0 bc = c->sgpr64(a0) == 0; // beq a0, r0, L92 // nop // sll r0, r0, 0 if (bc) {goto block_6;} // branch non-likely // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 c->daddiu(a1, a1, 1); // daddiu a1, a1, 1 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 //beq r0, r0, L91 // beq r0, r0, L91 // nop // sll r0, r0, 0 goto block_4; // branch always */ c->gprs[v0].du64[0] = 0; // or v0, r0, r0 //jr ra // jr ra c->daddu(sp, sp, r0); // daddu sp, sp, r0 goto end_of_function; // return // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 end_of_function: return c->gprs[v0].du64[0]; } void link() { cache.fake_scratchpad_data = intern_from_c("*fake-scratchpad-data*").c(); gLinkedFunctionTable.reg("generic-tie-dma-to-spad-sync", execute, 128); } } // namespace generic_tie_dma_to_spad_sync } // namespace Mips2C //--------------------------MIPS2C--------------------- #include "game/mips2c/mips2c_private.h" namespace Mips2C::jak1 { namespace generic_prepare_dma_double { extern u64 execute(void* ctxt); } namespace generic_envmap_dproc { extern u64 execute(void* ctxt); } namespace generic_interp_dproc { extern u64 execute(void* ctxt); } namespace generic_no_light_dproc { extern u64 execute(void* ctxt); } namespace generic_tie_convert { struct Cache { void* fake_scratchpad_data; // *fake-scratchpad-data* } cache; u16 vis[16]; u8 vu0_data_mem[1024 * 4]; void sq_buffer(Mask mask, const Vf& data, u32 qw) { ASSERT(qw * 16 < sizeof(vu0_data_mem)); for (int i = 0; i < 4; i++) { if ((u64)mask & (1 << i)) { memcpy(vu0_data_mem + qw * 16 + i * 4, data.data + i, 4); } } } void lq_buffer(Mask mask, Vf& data, u32 qw) { ASSERT(qw * 16 < sizeof(vu0_data_mem)); for (int i = 0; i < 4; i++) { if ((u64)mask & (1 << i)) { memcpy(data.data + i, vu0_data_mem + qw * 16 + i * 4, 4); } } } void vcallms_104() { // iaddi vi02, vi00, 0x0 | nop 104 vis[vi02] = 0; // iadd vi03, vi02, vi08 | nop 105 vis[vi03] = vis[vi02] + vis[vi08]; // iaddiu vi03, vi03, 0x10 | nop 106 vis[vi03] = vis[vi03] + 0x10; /* 16 */ // iadd vi01, vi03, vi09 | nop 107 vis[vi01] = vis[vi03] + vis[vi09]; // iadd vi01, vi01, vi09 | nop 108 vis[vi01] = vis[vi01] + vis[vi09]; // iaddiu vi01, vi01, 0x10 | nop 109 vis[vi01] = vis[vi01] + 0x10; /* 16 */ // iaddi vi10, vi00, 0x0 | nop 110 vis[vi10] = 0; // ior vi11, vi03, vi00 | nop 111 vis[vi11] = vis[vi03]; // ior vi12, vi01, vi00 | nop :e 112 vis[vi12] = vis[vi01]; // iadd vi13, vi01, vi08 | nop 113 vis[vi13] = vis[vi01] + vis[vi08]; } void vcallms_114(ExecutionContext* c) { // nop | itof12.xyzw vf09, vf05 114 c->vfs[vf09].vf.itof12(Mask::xyzw, c->vf_src(vf05).vf); // nop | itof12.xyzw vf10, vf06 115 c->vfs[vf10].vf.itof12(Mask::xyzw, c->vf_src(vf06).vf); // nop | itof12.xyzw vf11, vf07 116 c->vfs[vf11].vf.itof12(Mask::xyzw, c->vf_src(vf07).vf); // nop | itof12.xyzw vf12, vf08 117 c->vfs[vf12].vf.itof12(Mask::xyzw, c->vf_src(vf08).vf); // sqi.xyzw vf09, vi01 | nop 118 sq_buffer(Mask::xyzw, c->vf_src(vf09).vf, vis[vi01]++); // sqi.xyzw vf10, vi01 | nop 119 sq_buffer(Mask::xyzw, c->vf_src(vf10).vf, vis[vi01]++); // sqi.xyzw vf11, vi01 | nop :e 120 sq_buffer(Mask::xyzw, c->vf_src(vf11).vf, vis[vi01]++); // sqi.xyzw vf12, vi01 | nop 121 sq_buffer(Mask::xyzw, c->vf_src(vf12).vf, vis[vi01]++); } void vcallms_122(ExecutionContext* c) { // mr32.w vf17, vf13 | itof0.xyz vf09, vf01 122 c->vfs[vf09].vf.itof0(Mask::xyz, c->vf_src(vf01).vf); c->vfs[vf17].vf.mr32(Mask::w, c->vf_src(vf13).vf); // mr32.w vf18, vf14 | itof0.xyz vf10, vf02 123 c->vfs[vf10].vf.itof0(Mask::xyz, c->vf_src(vf02).vf); c->vfs[vf18].vf.mr32(Mask::w, c->vf_src(vf14).vf); // mr32.w vf19, vf15 | itof0.xyz vf11, vf03 124 c->vfs[vf11].vf.itof0(Mask::xyz, c->vf_src(vf03).vf); c->vfs[vf19].vf.mr32(Mask::w, c->vf_src(vf15).vf); // mr32.w vf20, vf16 | itof0.xyz vf12, vf04 125 c->vfs[vf12].vf.itof0(Mask::xyz, c->vf_src(vf04).vf); c->vfs[vf20].vf.mr32(Mask::w, c->vf_src(vf16).vf); // move.w vf09, vf17 | nop 126 c->vfs[vf09].vf.move(Mask::w, c->vf_src(vf17).vf); // move.w vf10, vf18 | nop 127 c->vfs[vf10].vf.move(Mask::w, c->vf_src(vf18).vf); // move.w vf11, vf19 | nop 128 c->vfs[vf11].vf.move(Mask::w, c->vf_src(vf19).vf); // move.w vf12, vf20 | nop 129 c->vfs[vf12].vf.move(Mask::w, c->vf_src(vf20).vf); // sqi.xyzw vf09, vi02 | nop 130 sq_buffer(Mask::xyzw, c->vf_src(vf09).vf, vis[vi02]++); // sqi.xyzw vf10, vi02 | nop 131 sq_buffer(Mask::xyzw, c->vf_src(vf10).vf, vis[vi02]++); // sqi.xyzw vf11, vi02 | nop :e 132 sq_buffer(Mask::xyzw, c->vf_src(vf11).vf, vis[vi02]++); // sqi.xyzw vf12, vi02 | nop 133 sq_buffer(Mask::xyzw, c->vf_src(vf12).vf, vis[vi02]++); } void vcallms_134(ExecutionContext* c) { // mr32.w vf17, vf13 | itof0.xyz vf09, vf01 134 c->vfs[vf09].vf.itof0(Mask::xyz, c->vf_src(vf01).vf); c->vfs[vf17].vf.mr32(Mask::w, c->vf_src(vf13).vf); // mr32.w vf18, vf14 | itof0.xyz vf10, vf02 135 c->vfs[vf10].vf.itof0(Mask::xyz, c->vf_src(vf02).vf); c->vfs[vf18].vf.mr32(Mask::w, c->vf_src(vf14).vf); // nop | itof0.xyz vf11, vf03 136 c->vfs[vf11].vf.itof0(Mask::xyz, c->vf_src(vf03).vf); // nop | nop 137 // move.w vf09, vf17 | nop 138 c->vfs[vf09].vf.move(Mask::w, c->vf_src(vf17).vf); // move.w vf10, vf18 | nop 139 c->vfs[vf10].vf.move(Mask::w, c->vf_src(vf18).vf); // nop | nop 140 // iaddi vi03, vi03, 0x2 | nop 141 vis[vi03] = vis[vi03] + 2; // sqi.xyzw vf09, vi02 | nop 142 sq_buffer(Mask::xyzw, c->vf_src(vf09).vf, vis[vi02]++); // sq.xyzw vf10, -2(vi03) | nop :e 143 sq_buffer(Mask::xyzw, c->vf_src(vf10).vf, vis[vi03] + -2); // sq.xyzw vf11, -1(vi03) | nop 144 sq_buffer(Mask::xyzw, c->vf_src(vf11).vf, vis[vi03] + -1); } void vcallms_145(ExecutionContext* c) { // mr32.w vf17, vf13 | itof0.xyz vf09, vf01 145 c->vfs[vf09].vf.itof0(Mask::xyz, c->vf_src(vf01).vf); c->vfs[vf17].vf.mr32(Mask::w, c->vf_src(vf13).vf); // mr32.w vf18, vf14 | itof0.xyz vf10, vf02 146 c->vfs[vf10].vf.itof0(Mask::xyz, c->vf_src(vf02).vf); c->vfs[vf18].vf.mr32(Mask::w, c->vf_src(vf14).vf); // mr32.w vf19, vf15 | itof0.xyz vf11, vf03 147 c->vfs[vf11].vf.itof0(Mask::xyz, c->vf_src(vf03).vf); c->vfs[vf19].vf.mr32(Mask::w, c->vf_src(vf15).vf); // nop | itof0.xyz vf12, vf04 148 c->vfs[vf12].vf.itof0(Mask::xyz, c->vf_src(vf04).vf); // move.w vf09, vf17 | nop 149 c->vfs[vf09].vf.move(Mask::w, c->vf_src(vf17).vf); // move.w vf10, vf18 | nop 150 c->vfs[vf10].vf.move(Mask::w, c->vf_src(vf18).vf); // move.w vf11, vf19 | nop 151 c->vfs[vf11].vf.move(Mask::w, c->vf_src(vf19).vf); // iaddi vi03, vi03, 0x2 | nop 152 vis[vi03] = vis[vi03] + 2; // sqi.xyzw vf09, vi02 | nop 153 sq_buffer(Mask::xyzw, c->vf_src(vf09).vf, vis[vi02]++); // sqi.xyzw vf10, vi02 | nop 154 sq_buffer(Mask::xyzw, c->vf_src(vf10).vf, vis[vi02]++); // sq.xyzw vf11, -2(vi03) | nop :e 155 sq_buffer(Mask::xyzw, c->vf_src(vf11).vf, vis[vi03] + -2); // sq.xyzw vf12, -1(vi03) | nop 156 sq_buffer(Mask::xyzw, c->vf_src(vf12).vf, vis[vi03] + -1); } void vcallms_157(ExecutionContext* c) { // mr32.w vf17, vf13 | itof0.xyz vf09, vf01 157 c->vfs[vf09].vf.itof0(Mask::xyz, c->vf_src(vf01).vf); c->vfs[vf17].vf.mr32(Mask::w, c->vf_src(vf13).vf); // mr32.w vf18, vf14 | itof0.xyz vf10, vf02 158 c->vfs[vf10].vf.itof0(Mask::xyz, c->vf_src(vf02).vf); c->vfs[vf18].vf.mr32(Mask::w, c->vf_src(vf14).vf); // mr32.w vf19, vf15 | itof0.xyz vf11, vf03 159 c->vfs[vf11].vf.itof0(Mask::xyz, c->vf_src(vf03).vf); c->vfs[vf19].vf.mr32(Mask::w, c->vf_src(vf15).vf); // nop | nop 160 // move.w vf09, vf17 | nop 161 c->vfs[vf09].vf.move(Mask::w, c->vf_src(vf17).vf); // move.w vf10, vf18 | nop 162 c->vfs[vf10].vf.move(Mask::w, c->vf_src(vf18).vf); // move.w vf11, vf19 | nop 163 c->vfs[vf11].vf.move(Mask::w, c->vf_src(vf19).vf); // nop | nop 164 // sqi.xyzw vf09, vi02 | nop 165 sq_buffer(Mask::xyzw, c->vf_src(vf09).vf, vis[vi02]++); // sqi.xyzw vf10, vi02 | nop :e 166 sq_buffer(Mask::xyzw, c->vf_src(vf10).vf, vis[vi02]++); // sqi.xyzw vf11, vi02 | nop 167 sq_buffer(Mask::xyzw, c->vf_src(vf11).vf, vis[vi02]++); } void vcallms_168(ExecutionContext* c) { // mr32.w vf17, vf13 | itof0.xyz vf09, vf01 168 c->vfs[vf09].vf.itof0(Mask::xyz, c->vf_src(vf01).vf); c->vfs[vf17].vf.mr32(Mask::w, c->vf_src(vf13).vf); // mr32.w vf19, vf14 | itof0.xyz vf10, vf02 169 c->vfs[vf10].vf.itof0(Mask::xyz, c->vf_src(vf02).vf); c->vfs[vf19].vf.mr32(Mask::w, c->vf_src(vf14).vf); // nop | itof0.xyz vf11, vf03 170 c->vfs[vf11].vf.itof0(Mask::xyz, c->vf_src(vf03).vf); // iaddi vi03, vi03, 0x4 | itof0.xyz vf12, vf04 171 c->vfs[vf12].vf.itof0(Mask::xyz, c->vf_src(vf04).vf); vis[vi03] = vis[vi03] + 4; // move.w vf09, vf17 | nop 172 c->vfs[vf09].vf.move(Mask::w, c->vf_src(vf17).vf); // move.w vf11, vf19 | nop 173 c->vfs[vf11].vf.move(Mask::w, c->vf_src(vf19).vf); // sq.xyz vf10, -3(vi03) | nop 174 sq_buffer(Mask::xyz, c->vf_src(vf10).vf, vis[vi03] + -3); // sq.xyz vf12, -1(vi03) | nop 175 sq_buffer(Mask::xyz, c->vf_src(vf12).vf, vis[vi03] + -1); // sq.xyzw vf09, -4(vi03) | nop :e 176 sq_buffer(Mask::xyzw, c->vf_src(vf09).vf, vis[vi03] + -4); // sq.xyzw vf11, -2(vi03) | nop 177 sq_buffer(Mask::xyzw, c->vf_src(vf11).vf, vis[vi03] + -2); } void vcallms_183(ExecutionContext* c); void vcallms_178(ExecutionContext* c) { // ior vi02, vi10, vi00 | nop 178 vis[vi02] = vis[vi10]; // ior vi01, vi12, vi00 | nop 179 vis[vi01] = vis[vi12]; // lqi.xyzw vf05, vi02 | nop 180 lq_buffer(Mask::xyzw, c->vfs[vf05].vf, vis[vi02]++); // nop | nop 181 // nop | nop 182 vcallms_183(c); } void vcallms_183(ExecutionContext* c) { // lqi.xyzw vf09, vi01 | mulaw.xyzw ACC, vf04, vf00 183 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf04).vf, c->vf_src(vf00).vf.w()); lq_buffer(Mask::xyzw, c->vfs[vf09].vf, vis[vi01]++); // move.xyzw vf19, vf21 | maddax.xyzw ACC, vf01, vf05 184 c->acc.vf.madda(Mask::xyzw, c->vfs[vf01].vf, c->vfs[vf05].vf.x()); c->vfs[vf19].vf.move(Mask::xyzw, c->vf_src(vf21).vf); // move.xyzw vf16, vf22 | madday.xyzw ACC, vf02, vf05 185 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf05].vf.y()); c->vfs[vf16].vf.move(Mask::xyzw, c->vf_src(vf22).vf); // move.xyzw vf20, vf23 | maddz.xyz vf13, vf03, vf05 186 c->acc.vf.madd(Mask::xyz, c->vfs[vf13].vf, c->vf_src(vf03).vf, c->vf_src(vf05).vf.z()); c->vfs[vf20].vf.move(Mask::xyzw, c->vf_src(vf23).vf); // lqi.xyzw vf06, vi02 | mulax.xyzw ACC, vf01, vf09 187 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf01).vf, c->vf_src(vf09).vf.x()); lq_buffer(Mask::xyzw, c->vfs[vf06].vf, vis[vi02]++); // move.xyzw vf15, vf24 | madday.xyzw ACC, vf02, vf09 188 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf09].vf.y()); c->vfs[vf15].vf.move(Mask::xyzw, c->vf_src(vf24).vf); // nop | maddz.xyzw vf17, vf03, vf09 189 c->acc.vf.madd(Mask::xyzw, c->vfs[vf17].vf, c->vf_src(vf03).vf, c->vf_src(vf09).vf.z()); // lqi.xyzw vf10, vi01 | mulaw.xyzw ACC, vf04, vf00 190 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf04).vf, c->vf_src(vf00).vf.w()); lq_buffer(Mask::xyzw, c->vfs[vf10].vf, vis[vi01]++); // move.w vf13, vf05 | maddax.xyzw ACC, vf01, vf06 191 c->acc.vf.madda(Mask::xyzw, c->vfs[vf01].vf, c->vfs[vf06].vf.x()); c->vfs[vf13].vf.move(Mask::w, c->vf_src(vf05).vf); // nop | madday.xyzw ACC, vf02, vf06 192 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf06].vf.y()); // nop | maddz.xyz vf14, vf03, vf06 193 c->acc.vf.madd(Mask::xyz, c->vfs[vf14].vf, c->vf_src(vf03).vf, c->vf_src(vf06).vf.z()); // lqi.xyzw vf07, vi02 | mulax.xyzw ACC, vf01, vf10 194 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf01).vf, c->vf_src(vf10).vf.x()); lq_buffer(Mask::xyzw, c->vfs[vf07].vf, vis[vi02]++); // nop | madday.xyzw ACC, vf02, vf10 195 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf10].vf.y()); // nop | maddz.xyzw vf18, vf03, vf10 196 c->acc.vf.madd(Mask::xyzw, c->vfs[vf18].vf, c->vf_src(vf03).vf, c->vf_src(vf10).vf.z()); // lqi.xyzw vf11, vi01 | mulaw.xyzw ACC, vf04, vf00 197 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf04).vf, c->vf_src(vf00).vf.w()); lq_buffer(Mask::xyzw, c->vfs[vf11].vf, vis[vi01]++); // move.w vf14, vf06 | maddax.xyzw ACC, vf01, vf07 198 c->acc.vf.madda(Mask::xyzw, c->vfs[vf01].vf, c->vfs[vf07].vf.x()); c->vfs[vf14].vf.move(Mask::w, c->vf_src(vf06).vf); // nop | madday.xyzw ACC, vf02, vf07 199 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf07].vf.y()); // nop | maddz.xyz vf24, vf03, vf07 200 c->acc.vf.madd(Mask::xyz, c->vfs[vf24].vf, c->vf_src(vf03).vf, c->vf_src(vf07).vf.z()); // lqi.xyzw vf08, vi02 | mulax.xyzw ACC, vf01, vf11 201 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf01).vf, c->vf_src(vf11).vf.x()); lq_buffer(Mask::xyzw, c->vfs[vf08].vf, vis[vi02]++); // nop | madday.xyzw ACC, vf02, vf11 202 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf11].vf.y()); // nop | maddz.xyzw vf21, vf03, vf11 203 c->acc.vf.madd(Mask::xyzw, c->vfs[vf21].vf, c->vf_src(vf03).vf, c->vf_src(vf11).vf.z()); // lqi.xyzw vf12, vi01 | mulaw.xyzw ACC, vf04, vf00 204 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf04).vf, c->vf_src(vf00).vf.w()); lq_buffer(Mask::xyzw, c->vfs[vf12].vf, vis[vi01]++); // move.w vf24, vf07 | maddax.xyzw ACC, vf01, vf08 205 c->acc.vf.madda(Mask::xyzw, c->vfs[vf01].vf, c->vfs[vf08].vf.x()); c->vfs[vf24].vf.move(Mask::w, c->vf_src(vf07).vf); // nop | madday.xyzw ACC, vf02, vf08 206 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf08].vf.y()); // nop | maddz.xyz vf22, vf03, vf08 207 c->acc.vf.madd(Mask::xyz, c->vfs[vf22].vf, c->vf_src(vf03).vf, c->vf_src(vf08).vf.z()); // lqi.xyzw vf05, vi02 | mulax.xyzw ACC, vf01, vf12 208 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf01).vf, c->vf_src(vf12).vf.x()); lq_buffer(Mask::xyzw, c->vfs[vf05].vf, vis[vi02]++); // move.w vf22, vf08 | madday.xyzw ACC, vf02, vf12 :e 209 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf12].vf.y()); c->vfs[vf22].vf.move(Mask::w, c->vf_src(vf08).vf); // nop | maddz.xyzw vf23, vf03, vf12 210 c->acc.vf.madd(Mask::xyzw, c->vfs[vf23].vf, c->vf_src(vf03).vf, c->vf_src(vf12).vf.z()); } void vcallms_211(ExecutionContext* c) { // move.xyzw vf19, vf21 | nop 211 c->vfs[vf19].vf.move(Mask::xyzw, c->vf_src(vf21).vf); // move.xyzw vf16, vf22 | nop 212 c->vfs[vf16].vf.move(Mask::xyzw, c->vf_src(vf22).vf); // move.xyzw vf20, vf23 | nop :e 213 c->vfs[vf20].vf.move(Mask::xyzw, c->vf_src(vf23).vf); // move.xyzw vf15, vf24 | nop 214 c->vfs[vf15].vf.move(Mask::xyzw, c->vf_src(vf24).vf); } void vcallms_221(ExecutionContext* c); void vcallms_215(ExecutionContext* c) { // ior vi03, vi11, vi00 | nop 215 vis[vi03] = vis[vi11]; // ior vi01, vi13, vi00 | nop 216 vis[vi01] = vis[vi13]; // lqi.xyzw vf05, vi03 | nop 217 lq_buffer(Mask::xyzw, c->vfs[vf05].vf, vis[vi03]++); // lqi.xyzw vf25, vi03 | nop 218 lq_buffer(Mask::xyzw, c->vfs[vf25].vf, vis[vi03]++); // lqi.xyzw vf09, vi01 | nop 219 lq_buffer(Mask::xyzw, c->vfs[vf09].vf, vis[vi01]++); // nop | nop 220 vcallms_221(c); } void vcallms_221(ExecutionContext* c) { // move.xyzw vf16, vf21 | mulax.xyz ACC, vf05, vf29 221 c->acc.vf.mula(Mask::xyz, c->vf_src(vf05).vf, c->vf_src(vf29).vf.x()); c->vfs[vf16].vf.move(Mask::xyzw, c->vf_src(vf21).vf); // nop | maddw.xyz vf30, vf25, vf00 222 c->acc.vf.madd(Mask::xyz, c->vfs[vf30].vf, c->vf_src(vf25).vf, c->vf_src(vf00).vf.w()); // nop | mulax.xyzw ACC, vf01, vf09 223 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf01).vf, c->vf_src(vf09).vf.x()); // nop | madday.xyzw ACC, vf02, vf09 224 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf09].vf.y()); // move.w vf13, vf05 | maddz.xyz vf17, vf03, vf09 225 c->acc.vf.madd(Mask::xyz, c->vfs[vf17].vf, c->vf_src(vf03).vf, c->vf_src(vf09).vf.z()); c->vfs[vf13].vf.move(Mask::w, c->vf_src(vf05).vf); // lqi.xyzw vf06, vi03 | mulaw.xyzw ACC, vf04, vf00 226 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf04).vf, c->vf_src(vf00).vf.w()); lq_buffer(Mask::xyzw, c->vfs[vf06].vf, vis[vi03]++); // lqi.xyzw vf26, vi03 | maddax.xyzw ACC, vf01, vf30 227 c->acc.vf.madda(Mask::xyzw, c->vfs[vf01].vf, c->vfs[vf30].vf.x()); lq_buffer(Mask::xyzw, c->vfs[vf26].vf, vis[vi03]++); // lqi.xyzw vf10, vi01 | madday.xyzw ACC, vf02, vf30 228 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf30].vf.y()); lq_buffer(Mask::xyzw, c->vfs[vf10].vf, vis[vi01]++); // nop | maddz.xyz vf13, vf03, vf30 229 c->acc.vf.madd(Mask::xyz, c->vfs[vf13].vf, c->vf_src(vf03).vf, c->vf_src(vf30).vf.z()); // nop | mulax.xyz ACC, vf06, vf29 230 c->acc.vf.mula(Mask::xyz, c->vf_src(vf06).vf, c->vf_src(vf29).vf.x()); // nop | maddw.xyz vf30, vf26, vf00 231 c->acc.vf.madd(Mask::xyz, c->vfs[vf30].vf, c->vf_src(vf26).vf, c->vf_src(vf00).vf.w()); // nop | mulax.xyzw ACC, vf01, vf10 232 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf01).vf, c->vf_src(vf10).vf.x()); // nop | madday.xyzw ACC, vf02, vf10 233 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf10].vf.y()); // move.w vf14, vf06 | maddz.xyz vf18, vf03, vf10 234 c->acc.vf.madd(Mask::xyz, c->vfs[vf18].vf, c->vf_src(vf03).vf, c->vf_src(vf10).vf.z()); c->vfs[vf14].vf.move(Mask::w, c->vf_src(vf06).vf); // lqi.xyzw vf07, vi03 | mulaw.xyzw ACC, vf04, vf00 235 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf04).vf, c->vf_src(vf00).vf.w()); lq_buffer(Mask::xyzw, c->vfs[vf07].vf, vis[vi03]++); // lqi.xyzw vf27, vi03 | maddax.xyzw ACC, vf01, vf30 236 c->acc.vf.madda(Mask::xyzw, c->vfs[vf01].vf, c->vfs[vf30].vf.x()); lq_buffer(Mask::xyzw, c->vfs[vf27].vf, vis[vi03]++); // lqi.xyzw vf11, vi01 | madday.xyzw ACC, vf02, vf30 237 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf30].vf.y()); lq_buffer(Mask::xyzw, c->vfs[vf11].vf, vis[vi01]++); // nop | maddz.xyz vf14, vf03, vf30 238 c->acc.vf.madd(Mask::xyz, c->vfs[vf14].vf, c->vf_src(vf03).vf, c->vf_src(vf30).vf.z()); // nop | mulax.xyz ACC, vf07, vf29 239 c->acc.vf.mula(Mask::xyz, c->vf_src(vf07).vf, c->vf_src(vf29).vf.x()); // nop | maddw.xyz vf30, vf27, vf00 240 c->acc.vf.madd(Mask::xyz, c->vfs[vf30].vf, c->vf_src(vf27).vf, c->vf_src(vf00).vf.w()); // nop | mulax.xyzw ACC, vf01, vf11 241 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf01).vf, c->vf_src(vf11).vf.x()); // nop | madday.xyzw ACC, vf02, vf11 242 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf11].vf.y()); // move.w vf15, vf07 | maddz.xyz vf19, vf03, vf11 243 c->acc.vf.madd(Mask::xyz, c->vfs[vf19].vf, c->vf_src(vf03).vf, c->vf_src(vf11).vf.z()); c->vfs[vf15].vf.move(Mask::w, c->vf_src(vf07).vf); // lqi.xyzw vf08, vi03 | mulaw.xyzw ACC, vf04, vf00 244 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf04).vf, c->vf_src(vf00).vf.w()); lq_buffer(Mask::xyzw, c->vfs[vf08].vf, vis[vi03]++); // lqi.xyzw vf28, vi03 | maddax.xyzw ACC, vf01, vf30 245 c->acc.vf.madda(Mask::xyzw, c->vfs[vf01].vf, c->vfs[vf30].vf.x()); lq_buffer(Mask::xyzw, c->vfs[vf28].vf, vis[vi03]++); // lqi.xyzw vf12, vi01 | madday.xyzw ACC, vf02, vf30 246 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf30].vf.y()); lq_buffer(Mask::xyzw, c->vfs[vf12].vf, vis[vi01]++); // nop | maddz.xyz vf15, vf03, vf30 247 c->acc.vf.madd(Mask::xyz, c->vfs[vf15].vf, c->vf_src(vf03).vf, c->vf_src(vf30).vf.z()); // nop | mulax.xyz ACC, vf08, vf29 248 c->acc.vf.mula(Mask::xyz, c->vf_src(vf08).vf, c->vf_src(vf29).vf.x()); // nop | maddw.xyz vf30, vf28, vf00 249 c->acc.vf.madd(Mask::xyz, c->vfs[vf30].vf, c->vf_src(vf28).vf, c->vf_src(vf00).vf.w()); // nop | mulax.xyzw ACC, vf01, vf12 250 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf01).vf, c->vf_src(vf12).vf.x()); // nop | madday.xyzw ACC, vf02, vf12 251 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf12].vf.y()); // move.w vf21, vf08 | maddz.xyz vf20, vf03, vf12 252 c->acc.vf.madd(Mask::xyz, c->vfs[vf20].vf, c->vf_src(vf03).vf, c->vf_src(vf12).vf.z()); c->vfs[vf21].vf.move(Mask::w, c->vf_src(vf08).vf); // lqi.xyzw vf05, vi03 | mulaw.xyzw ACC, vf04, vf00 253 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf04).vf, c->vf_src(vf00).vf.w()); lq_buffer(Mask::xyzw, c->vfs[vf05].vf, vis[vi03]++); // lqi.xyzw vf25, vi03 | maddax.xyzw ACC, vf01, vf30 254 c->acc.vf.madda(Mask::xyzw, c->vfs[vf01].vf, c->vfs[vf30].vf.x()); lq_buffer(Mask::xyzw, c->vfs[vf25].vf, vis[vi03]++); // lqi.xyzw vf09, vi01 | madday.xyzw ACC, vf02, vf30 :e 255 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf30].vf.y()); lq_buffer(Mask::xyzw, c->vfs[vf09].vf, vis[vi01]++); // nop | maddz.xyz vf21, vf03, vf30 256 c->acc.vf.madd(Mask::xyz, c->vfs[vf21].vf, c->vf_src(vf03).vf, c->vf_src(vf30).vf.z()); } void vcallms_257(ExecutionContext* c) { // move.xyzw vf16, vf21 | nop :e 257 c->vfs[vf16].vf.move(Mask::xyzw, c->vf_src(vf21).vf); // nop | nop 258 } void vcallms_264(ExecutionContext* c); void vcallms_259(ExecutionContext* c) { // ior vi01, vi13, vi00 | nop 259 vis[vi01] = vis[vi13]; // lqi.xyzw vf09, vi01 | nop 260 lq_buffer(Mask::xyzw, c->vfs[vf09].vf, vis[vi01]++); // ior vi03, vi11, vi00 | nop 261 vis[vi03] = vis[vi11]; // lq.xyzw vf05, 1(vi03) | nop 262 lq_buffer(Mask::xyzw, c->vfs[vf05].vf, vis[vi03] + 1); // iaddi vi03, vi03, 0x2 | nop 263 vis[vi03] = vis[vi03] + 2; vcallms_264(c); } void vcallms_264(ExecutionContext* c) { // move.xyzw vf15, vf21 | mulax.xyzw ACC, vf01, vf09 264 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf01).vf, c->vf_src(vf09).vf.x()); c->vfs[vf15].vf.move(Mask::xyzw, c->vf_src(vf21).vf); // move.xyzw vf20, vf22 | madday.xyzw ACC, vf02, vf09 265 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf09].vf.y()); c->vfs[vf20].vf.move(Mask::xyzw, c->vf_src(vf22).vf); // lq.w vf13, -2(vi03) | maddz.xyz vf17, vf03, vf09 266 c->acc.vf.madd(Mask::xyz, c->vfs[vf17].vf, c->vf_src(vf03).vf, c->vf_src(vf09).vf.z()); lq_buffer(Mask::w, c->vfs[vf13].vf, vis[vi03] + -2); // lqi.xyzw vf10, vi01 | mulaw.xyzw ACC, vf04, vf00 267 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf04).vf, c->vf_src(vf00).vf.w()); lq_buffer(Mask::xyzw, c->vfs[vf10].vf, vis[vi01]++); // move.xyzw vf16, vf23 | maddax.xyzw ACC, vf01, vf05 268 c->acc.vf.madda(Mask::xyzw, c->vfs[vf01].vf, c->vfs[vf05].vf.x()); c->vfs[vf16].vf.move(Mask::xyzw, c->vf_src(vf23).vf); // lq.xyzw vf06, 1(vi03) | madday.xyzw ACC, vf02, vf05 269 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf05].vf.y()); lq_buffer(Mask::xyzw, c->vfs[vf06].vf, vis[vi03] + 1); // iaddi vi03, vi03, 0x2 | maddz.xyz vf13, vf03, vf05 270 c->acc.vf.madd(Mask::xyz, c->vfs[vf13].vf, c->vf_src(vf03).vf, c->vf_src(vf05).vf.z()); vis[vi03] = vis[vi03] + 2; // nop | mulax.xyzw ACC, vf01, vf10 271 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf01).vf, c->vf_src(vf10).vf.x()); // nop | madday.xyzw ACC, vf02, vf10 272 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf10].vf.y()); // lq.w vf14, -2(vi03) | maddz.xyz vf18, vf03, vf10 273 c->acc.vf.madd(Mask::xyz, c->vfs[vf18].vf, c->vf_src(vf03).vf, c->vf_src(vf10).vf.z()); lq_buffer(Mask::w, c->vfs[vf14].vf, vis[vi03] + -2); // lqi.xyzw vf11, vi01 | mulaw.xyzw ACC, vf04, vf00 274 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf04).vf, c->vf_src(vf00).vf.w()); lq_buffer(Mask::xyzw, c->vfs[vf11].vf, vis[vi01]++); // nop | maddax.xyzw ACC, vf01, vf06 275 c->acc.vf.madda(Mask::xyzw, c->vfs[vf01].vf, c->vfs[vf06].vf.x()); // lq.xyzw vf07, 1(vi03) | madday.xyzw ACC, vf02, vf06 276 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf06].vf.y()); lq_buffer(Mask::xyzw, c->vfs[vf07].vf, vis[vi03] + 1); // iaddi vi03, vi03, 0x2 | maddz.xyz vf14, vf03, vf06 277 c->acc.vf.madd(Mask::xyz, c->vfs[vf14].vf, c->vf_src(vf03).vf, c->vf_src(vf06).vf.z()); vis[vi03] = vis[vi03] + 2; // nop | mulax.xyzw ACC, vf01, vf11 278 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf01).vf, c->vf_src(vf11).vf.x()); // nop | madday.xyzw ACC, vf02, vf11 279 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf11].vf.y()); // lq.w vf21, -2(vi03) | maddz.xyz vf19, vf03, vf11 280 c->acc.vf.madd(Mask::xyz, c->vfs[vf19].vf, c->vf_src(vf03).vf, c->vf_src(vf11).vf.z()); lq_buffer(Mask::w, c->vfs[vf21].vf, vis[vi03] + -2); // lqi.xyzw vf12, vi01 | mulaw.xyzw ACC, vf04, vf00 281 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf04).vf, c->vf_src(vf00).vf.w()); lq_buffer(Mask::xyzw, c->vfs[vf12].vf, vis[vi01]++); // nop | maddax.xyzw ACC, vf01, vf07 282 c->acc.vf.madda(Mask::xyzw, c->vfs[vf01].vf, c->vfs[vf07].vf.x()); // lq.xyzw vf08, 1(vi03) | madday.xyzw ACC, vf02, vf07 283 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf07].vf.y()); lq_buffer(Mask::xyzw, c->vfs[vf08].vf, vis[vi03] + 1); // iaddi vi03, vi03, 0x2 | maddz.xyz vf21, vf03, vf07 284 c->acc.vf.madd(Mask::xyz, c->vfs[vf21].vf, c->vf_src(vf03).vf, c->vf_src(vf07).vf.z()); vis[vi03] = vis[vi03] + 2; // nop | mulax.xyzw ACC, vf01, vf12 285 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf01).vf, c->vf_src(vf12).vf.x()); // nop | madday.xyzw ACC, vf02, vf12 286 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf12].vf.y()); // lq.w vf23, -2(vi03) | maddz.xyz vf22, vf03, vf12 287 c->acc.vf.madd(Mask::xyz, c->vfs[vf22].vf, c->vf_src(vf03).vf, c->vf_src(vf12).vf.z()); lq_buffer(Mask::w, c->vfs[vf23].vf, vis[vi03] + -2); // lqi.xyzw vf09, vi01 | mulaw.xyzw ACC, vf04, vf00 288 c->acc.vf.mula(Mask::xyzw, c->vf_src(vf04).vf, c->vf_src(vf00).vf.w()); lq_buffer(Mask::xyzw, c->vfs[vf09].vf, vis[vi01]++); // nop | maddax.xyzw ACC, vf01, vf08 289 c->acc.vf.madda(Mask::xyzw, c->vfs[vf01].vf, c->vfs[vf08].vf.x()); // lq.xyzw vf05, 1(vi03) | madday.xyzw ACC, vf02, vf08 :e 290 c->acc.vf.madda(Mask::xyzw, c->vfs[vf02].vf, c->vfs[vf08].vf.y()); lq_buffer(Mask::xyzw, c->vfs[vf05].vf, vis[vi03] + 1); // iaddi vi03, vi03, 0x2 | maddz.xyz vf23, vf03, vf08 291 c->acc.vf.madd(Mask::xyz, c->vfs[vf23].vf, c->vf_src(vf03).vf, c->vf_src(vf08).vf.z()); vis[vi03] = vis[vi03] + 2; } void vcallms_292(ExecutionContext* c) { // move.xyzw vf15, vf21 | nop 292 c->vfs[vf15].vf.move(Mask::xyzw, c->vf_src(vf21).vf); // move.xyzw vf20, vf22 | nop :e 293 c->vfs[vf20].vf.move(Mask::xyzw, c->vf_src(vf22).vf); // move.xyzw vf16, vf23 | nop 294 c->vfs[vf16].vf.move(Mask::xyzw, c->vf_src(vf23).vf); } u64 execute(void* ctxt) { auto* c = (ExecutionContext*)ctxt; bool bc = false; get_fake_spad_addr(at, cache.fake_scratchpad_data, 0, c);// lui at, 28672 [[maybe_unused]] u32 call_addr = 0; u32 madr, sadr, qwc; c->daddiu(sp, sp, -128); // daddiu sp, sp, -128 c->sd(ra, 384, at); // sd ra, 384(at) c->sq(s0, 400, at); // sq s0, 400(at) c->sq(s1, 416, at); // sq s1, 416(at) c->sq(s2, 432, at); // sq s2, 432(at) c->sq(s3, 448, at); // sq s3, 448(at) c->sq(s4, 464, at); // sq s4, 464(at) c->sq(s5, 480, at); // sq s5, 480(at) c->sq(gp, 496, at); // sq gp, 496(at) block_1: c->lui(v1, 4096); // lui v1, 4096 get_fake_spad_addr(at, cache.fake_scratchpad_data, 0, c);// lui at, 28672 c->ori(v1, v1, 54272); // ori v1, v1, 54272 // nop // sll r0, r0, 0 /* block_2: c->lw(a0, 0, v1); // lw a0, 0(v1) // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 c->andi(a0, a0, 256); // andi a0, a0, 256 // nop // sll r0, r0, 0 bc = c->sgpr64(a0) == 0; // beq a0, r0, L11 // nop // sll r0, r0, 0 if (bc) {goto block_4;} // branch non-likely // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 c->daddiu(gp, gp, 1); // daddiu gp, gp, 1 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 //beq r0, r0, L10 // beq r0, r0, L10 // nop // sll r0, r0, 0 goto block_2; // branch always */ // nop // sll r0, r0, 0 c->lw(v1, 724, at); // lw v1, 724(at) // nop // sll r0, r0, 0 c->lw(a2, 728, at); // lw a2, 728(at) c->dsubu(a0, v1, r0); // dsubu a0, v1, r0 c->lw(a1, 732, at); // lw a1, 732(at) bc = c->sgpr64(a0) != 0; // bne a0, r0, L15 c->daddiu(a0, at, 640); // daddiu a0, at, 640 if (bc) {goto block_13;} // branch non-likely c->addiu(t0, a1, 16); // addiu t0, a1, 16 c->lhu(a3, 0, a1); // lhu a3, 0(a1) c->sll(t2, a3, 4); // sll t2, a3, 4 c->lw(t1, 8, a1); // lw t1, 8(a1) c->addiu(a2, at, 7632); // addiu a2, at, 7632 c->addu(a1, t0, t2); // addu a1, t0, t2 // nop // sll r0, r0, 0 c->lq(t2, 0, t1); // lq t2, 0(t1) // nop // sll r0, r0, 0 c->lq(t3, 16, t1); // lq t3, 16(t1) // nop // sll r0, r0, 0 c->lq(t4, 32, t1); // lq t4, 32(t1) // nop // sll r0, r0, 0 c->lq(t5, 48, t1); // lq t5, 48(t1) // nop // sll r0, r0, 0 c->lq(t1, 64, t1); // lq t1, 64(t1) // nop // sll r0, r0, 0 c->sq(t2, 12064, at); // sq t2, 12064(at) // nop // sll r0, r0, 0 c->sq(t3, 12080, at); // sq t3, 12080(at) // nop // sll r0, r0, 0 c->sq(t4, 12096, at); // sq t4, 12096(at) // nop // sll r0, r0, 0 c->sq(t5, 12112, at); // sq t5, 12112(at) // nop // sll r0, r0, 0 c->sq(t1, 12128, at); // sq t1, 12128(at) c->mov64(t1, a2); // or t1, a2, r0 // nop // sll r0, r0, 0 c->daddiu(t2, a3, -4); // daddiu t2, a3, -4 c->mov64(t1, t1); // or t1, t1, r0 bc = ((s64)c->sgpr64(t2)) < 0; // bltz t2, L13 c->mov64(t0, t0); // or t0, t0, r0 if (bc) {goto block_7;} // branch non-likely block_6: // nop // sll r0, r0, 0 c->lq(t5, 0, t0); // lq t5, 0(t0) // nop // sll r0, r0, 0 c->lq(t2, 16, t0); // lq t2, 16(t0) c->daddiu(a3, a3, -4); // daddiu a3, a3, -4 c->lq(t3, 32, t0); // lq t3, 32(t0) c->daddiu(t1, t1, 64); // daddiu t1, t1, 64 c->lq(t4, 48, t0); // lq t4, 48(t0) c->daddiu(t0, t0, 64); // daddiu t0, t0, 64 c->sq(t5, -64, t1); // sq t5, -64(t1) c->daddiu(t5, a3, -4); // daddiu t5, a3, -4 c->sq(t2, -48, t1); // sq t2, -48(t1) // nop // sll r0, r0, 0 c->sq(t3, -32, t1); // sq t3, -32(t1) bc = ((s64)c->sgpr64(t5)) >= 0; // bgez t5, L12 c->sq(t4, -16, t1); // sq t4, -16(t1) if (bc) {goto block_6;} // branch non-likely block_7: bc = c->sgpr64(a3) == 0; // beq a3, r0, L14 c->lq(t2, 0, t0); // lq t2, 0(t0) if (bc) {goto block_12;} // branch non-likely c->daddiu(t0, t0, 16); // daddiu t0, t0, 16 c->daddiu(t1, t1, 16); // daddiu t1, t1, 16 c->daddiu(a3, a3, -1); // daddiu a3, a3, -1 c->sq(t2, -16, t1); // sq t2, -16(t1) bc = c->sgpr64(a3) == 0; // beq a3, r0, L14 c->lq(t2, 0, t0); // lq t2, 0(t0) if (bc) {goto block_12;} // branch non-likely c->daddiu(t0, t0, 16); // daddiu t0, t0, 16 c->daddiu(t1, t1, 16); // daddiu t1, t1, 16 c->daddiu(a3, a3, -1); // daddiu a3, a3, -1 c->sq(t2, -16, t1); // sq t2, -16(t1) bc = c->sgpr64(a3) == 0; // beq a3, r0, L14 c->lq(t2, 0, t0); // lq t2, 0(t0) if (bc) {goto block_12;} // branch non-likely c->daddiu(t0, t0, 16); // daddiu t0, t0, 16 c->daddiu(t1, t1, 16); // daddiu t1, t1, 16 c->daddiu(a3, a3, -1); // daddiu a3, a3, -1 c->sq(t2, -16, t1); // sq t2, -16(t1) bc = c->sgpr64(a3) == 0; // beq a3, r0, L14 c->lq(t2, 0, t0); // lq t2, 0(t0) if (bc) {goto block_12;} // branch non-likely c->daddiu(t0, t0, 16); // daddiu t0, t0, 16 c->daddiu(t0, t1, 16); // daddiu t0, t1, 16 c->daddiu(a3, a3, -1); // daddiu a3, a3, -1 c->sq(t2, -16, t0); // sq t2, -16(t0) block_12: c->gprs[a3].du64[0] = 0; // or a3, r0, r0 //beq r0, r0, L16 // beq r0, r0, L16 c->sw(a2, 640, at); // sw a2, 640(at) goto block_15; // branch always block_13: c->daddiu(a3, v1, -1); // daddiu a3, v1, -1 // nop // sll r0, r0, 0 bc = c->sgpr64(a3) != 0; // bne a3, r0, L17 c->mov64(t2, a2); // or t2, a2, r0 if (bc) {goto block_16;} // branch non-likely // nop // sll r0, r0, 0 c->daddiu(a1, a1, 528); // daddiu a1, a1, 528 // nop // sll r0, r0, 0 block_15: c->addiu(a2, a1, 16); // addiu a2, a1, 16 c->lhu(a3, 0, a1); // lhu a3, 0(a1) c->sll(t0, a3, 4); // sll t0, a3, 4 c->lwu(t1, 28, a2); // lwu t1, 28(a2) c->sll(t2, t1, 2); // sll t2, t1, 2 c->lwu(a3, 12, a1); // lwu a3, 12(a1) c->addu(t1, t2, t1); // addu t1, t2, t1 c->lwu(a1, 8, a1); // lwu a1, 8(a1) c->addu(t0, a2, t0); // addu t0, a2, t0 c->sw(a3, 48, a0); // sw a3, 48(a0) c->sll(a3, t1, 4); // sll a3, t1, 4 c->sw(a1, 52, a0); // sw a1, 52(a0) c->daddiu(a1, t0, 16); // daddiu a1, t0, 16 c->lhu(t0, 0, t0); // lhu t0, 0(t0) c->daddu(a3, a2, a3); // daddu a3, a2, a3 c->sw(a2, 4, a0); // sw a2, 4(a0) c->sll(a2, t0, 4); // sll a2, t0, 4 c->sw(a3, 8, a0); // sw a3, 8(a0) c->daddu(a2, a1, a2); // daddu a2, a1, a2 c->sw(a1, 12, a0); // sw a1, 12(a0) c->daddiu(a1, a2, 16); // daddiu a1, a2, 16 c->lhu(a2, 0, a2); // lhu a2, 0(a2) c->sll(t2, a2, 4); // sll t2, a2, 4 c->lhu(a2, 14, a1); // lhu a2, 14(a1) c->daddiu(a3, a1, 32); // daddiu a3, a1, 32 c->lhu(t0, 10, a1); // lhu t0, 10(a1) c->daddu(t0, t0, a1); // daddu t0, t0, a1 c->lhu(t1, 12, a1); // lhu t1, 12(a1) c->daddu(t1, t1, a1); // daddu t1, t1, a1 c->lhu(t3, 0, a1); // lhu t3, 0(a1) c->daddu(t2, a1, t2); // daddu t2, a1, t2 c->sw(a1, 16, a0); // sw a1, 16(a0) c->daddiu(t2, t2, 16); // daddiu t2, t2, 16 c->sw(a3, 20, a0); // sw a3, 20(a0) c->daddu(a1, a2, a1); // daddu a1, a2, a1 c->sw(t1, 28, a0); // sw t1, 28(a0) // nop // sll r0, r0, 0 c->sw(a1, 32, a0); // sw a1, 32(a0) //beq r0, r0, L17 // beq r0, r0, L17 c->sw(t0, 24, a0); // sw t0, 24(a0) goto block_16; // branch always block_16: c->daddiu(a1, t2, 16); // daddiu a1, t2, 16 c->lwu(a3, 12, t2); // lwu a3, 12(t2) c->daddiu(a2, a1, 112); // daddiu a2, a1, 112 c->sw(a3, 44, a0); // sw a3, 44(a0) // nop // sll r0, r0, 0 c->lhu(a3, -16, a2); // lhu a3, -16(a2) // nop // sll r0, r0, 0 c->sw(a1, 36, a0); // sw a1, 36(a0) // nop // sll r0, r0, 0 c->sw(a2, 40, a0); // sw a2, 40(a0) // nop // sll r0, r0, 0 c->sw(v1, 56, a0); // sw v1, 56(a0) // nop // sll r0, r0, 0 c->lw(v1, 744, at); // lw v1, 744(at) // nop // sll r0, r0, 0 c->lw(a0, 76, at); // lw a0, 76(at) c->dsubu(v1, a0, v1); // dsubu v1, a0, v1 // nop // sll r0, r0, 0 bc = ((s64)c->sgpr64(v1)) >= 0; // bgez v1, L51 // nop // sll r0, r0, 0 if (bc) {goto block_70;} // branch non-likely get_fake_spad_addr(at, cache.fake_scratchpad_data, 0, c);// lui at, 28672 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 c->lw(v1, 684, at); // lw v1, 684(at) c->lui(a1, 1); // lui a1, 1 c->lw(a0, 688, at); // lw a0, 688(at) c->dsubu(a1, v1, a1); // dsubu a1, v1, a1 c->lw(a2, 692, at); // lw a2, 692(at) bc = ((s64)c->sgpr64(a1)) > 0; // bgtz a1, L19 c->lw(a1, 728, at); // lw a1, 728(at) if (bc) {goto block_23;} // branch non-likely bc = c->sgpr64(a2) != 0; // bne a2, r0, L18 c->lw(v1, 732, at); // lw v1, 732(at) if (bc) {goto block_21;} // branch non-likely c->xori(a1, v1, 3248); // xori a1, v1, 3248 c->mov64(v1, a0); // or v1, a0, r0 c->daddiu(a3, a1, 2880); // daddiu a3, a1, 2880 c->sw(a1, 732, at); // sw a1, 732(at) c->xori(a2, a3, 7264); // xori a2, a3, 7264 c->sw(a3, 728, at); // sw a3, 728(at) c->addiu(a3, r0, 0); // addiu a3, r0, 0 c->daddu(a1, a1, r0); // daddu a1, a1, r0 c->andi(a2, a2, 65535); // andi a2, a2, 65535 c->sw(a3, 724, at); // sw a3, 724(at) bc = c->sgpr64(a0) != 0; // bne a0, r0, L20 c->sw(a2, 736, at); // sw a2, 736(at) if (bc) {goto block_24;} // branch non-likely c->addiu(v1, r0, 1); // addiu v1, r0, 1 // nop // sll r0, r0, 0 //beq r0, r0, L21 // beq r0, r0, L21 c->sw(v1, 740, at); // sw v1, 740(at) goto block_25; // branch always block_21: c->xori(a1, v1, 3248); // xori a1, v1, 3248 c->mov64(v1, a0); // or v1, a0, r0 c->daddiu(a3, a1, 2880); // daddiu a3, a1, 2880 c->sw(a1, 732, at); // sw a1, 732(at) c->xori(a2, a3, 7264); // xori a2, a3, 7264 c->sw(a3, 728, at); // sw a3, 728(at) c->addiu(a3, r0, 1); // addiu a3, r0, 1 c->daddiu(a1, a1, 528); // daddiu a1, a1, 528 c->andi(a2, a2, 65535); // andi a2, a2, 65535 c->sw(a3, 724, at); // sw a3, 724(at) bc = c->sgpr64(a0) != 0; // bne a0, r0, L20 c->sw(a2, 736, at); // sw a2, 736(at) if (bc) {goto block_24;} // branch non-likely c->addiu(v1, r0, 1); // addiu v1, r0, 1 // nop // sll r0, r0, 0 //beq r0, r0, L21 // beq r0, r0, L21 c->sw(v1, 740, at); // sw v1, 740(at) goto block_25; // branch always block_23: c->mov64(v1, v1); // or v1, v1, r0 c->lw(a2, 736, at); // lw a2, 736(at) c->addiu(a0, r0, 2); // addiu a0, r0, 2 // nop // sll r0, r0, 0 c->xor_(a1, a1, a2); // xor a1, a1, a2 c->sw(a0, 724, at); // sw a0, 724(at) //beq r0, r0, L20 // beq r0, r0, L20 c->sw(a1, 728, at); // sw a1, 728(at) goto block_24; // branch always block_24: get_fake_spad_addr(at, cache.fake_scratchpad_data, 0, c);// lui at, 28672 c->ori(a2, r0, 65535); // ori a2, r0, 65535 c->lui(a0, 4096); // lui a0, 4096 // nop // sll r0, r0, 0 c->ori(a0, a0, 54272); // ori a0, a0, 54272 c->and_(a1, a1, a2); // and a1, a1, a2 c->addiu(a2, r0, 324); // addiu a2, r0, 324 { // spr to sadr = c->sgpr64(a1); u32 tadr = c->sgpr64(v1); spad_to_dma_blerc_chain(cache.fake_scratchpad_data, sadr & 0x3fff, tadr); } // c->sw(a1, 128, a0); // sw a1, 128(a0) // c->sw(v1, 48, a0); // sw v1, 48(a0) // c->sw(r0, 32, a0); // sw r0, 32(a0) // c->sw(a2, 0, a0); // sw a2, 0(a0) block_25: // nop // sll r0, r0, 0 c->gprs[v1].du64[0] = 0; // or v1, r0, r0 get_fake_spad_addr(at, cache.fake_scratchpad_data, 0, c);// lui at, 28672 c->daddiu(t2, at, 640); // daddiu t2, at, 640 c->lw(a0, 716, at); // lw a0, 716(at) // nop // sll r0, r0, 0 c->lw(a1, 56, t2); // lw a1, 56(t2) // nop // sll r0, r0, 0 c->lw(v1, 4, t2); // lw v1, 4(t2) // nop // sll r0, r0, 0 c->lw(v1, 8, t2); // lw v1, 8(t2) // nop // sll r0, r0, 0 c->lw(t3, 12, t2); // lw t3, 12(t2) // nop // sll r0, r0, 0 c->lw(t1, 16, t2); // lw t1, 16(t2) // nop // sll r0, r0, 0 c->lw(v1, 32, t2); // lw v1, 32(t2) // nop // sll r0, r0, 0 c->lw(t5, 20, t2); // lw t5, 20(t2) // nop // sll r0, r0, 0 c->lw(t6, 24, t2); // lw t6, 24(t2) // nop // sll r0, r0, 0 c->lw(t4, 28, t2); // lw t4, 28(t2) // nop // sll r0, r0, 0 c->lw(a3, 36, t2); // lw a3, 36(t2) // nop // sll r0, r0, 0 c->lw(v1, 40, t2); // lw v1, 40(t2) // nop // sll r0, r0, 0 c->lw(t0, 0, t2); // lw t0, 0(t2) // nop // sll r0, r0, 0 c->lhu(a2, 20, t1); // lhu a2, 20(t1) // nop // sll r0, r0, 0 c->lhu(t8, 18, t1); // lhu t8, 18(t1) c->daddiu(a2, a1, -2); // daddiu a2, a1, -2 c->lbu(a1, 2, t1); // lbu a1, 2(t1) bc = c->sgpr64(a2) == 0; // beq a2, r0, L38 c->lbu(a2, 3, t1); // lbu a2, 3(t1) if (bc) {goto block_52;} // branch non-likely c->daddu(t7, t8, t8); // daddu t7, t8, t8 c->addiu(t9, r0, -16); // addiu t9, r0, -16 c->daddiu(ra, t7, 15); // daddiu ra, t7, 15 c->daddiu(t7, a0, 32); // daddiu t7, a0, 32 c->and_(t9, ra, t9); // and t9, ra, t9 c->lq(ra, 16, t1); // lq ra, 16(t1) c->daddu(t9, t7, t9); // daddu t9, t7, t9 c->sq(ra, 16, a0); // sq ra, 16(a0) c->dsll(ra, t8, 5); // dsll ra, t8, 5 c->sw(t7, 0, a0); // sw t7, 0(a0) c->daddu(ra, t9, ra); // daddu ra, t9, ra c->sw(t9, 4, a0); // sw t9, 4(a0) c->daddiu(t8, t8, 7); // daddiu t8, t8, 7 c->sw(ra, 8, a0); // sw ra, 8(a0) c->dsra(t9, t8, 3); // dsra t9, t8, 3 // nop // sll r0, r0, 0 c->addiu(t8, r0, 2); // addiu t8, r0, 2 // nop // sll r0, r0, 0 c->mult3(s3, t8, t9); // mult3 s3, t8, t9 c->mov64(ra, t6); // or ra, t6, r0 c->mov64(t6, t8); // or t6, t8, r0 c->mov64(t7, t7); // or t7, t7, r0 c->addiu(t8, r0, 513); // addiu t8, r0, 513 c->addiu(t9, r0, 257); // addiu t9, r0, 257 c->dsll(s1, t8, 18); // dsll s1, t8, 18 c->dsll(s2, t9, 16); // dsll s2, t9, 16 c->or_(t8, t8, s1); // or t8, t8, s1 c->or_(t9, t9, s2); // or t9, t9, s2 c->dsll32(s1, t8, 4); // dsll32 s1, t8, 4 c->dsll32(s2, t9, 0); // dsll32 s2, t9, 0 c->or_(t8, t8, s1); // or t8, t8, s1 c->or_(t9, t9, s2); // or t9, t9, s2 c->pcpyld(t8, t8, t8); // pcpyld t8, t8, t8 c->mfc1(r0, f31); // mfc1 r0, f31 c->pcpyld(t9, t9, t9); // pcpyld t9, t9, t9 c->mfc1(r0, f31); // mfc1 r0, f31 c->daddu(s3, s3, ra); // daddu s3, s3, ra c->mfc1(r0, f31); // mfc1 r0, f31 c->lhu(s2, 0, ra); // lhu s2, 0(ra) c->daddu(ra, ra, t6); // daddu ra, ra, t6 // nop // sll r0, r0, 0 c->mov64(t5, t5); // or t5, t5, r0 // nop // sll r0, r0, 0 c->pextlb(s2, s2, s2); // pextlb s2, s2, s2 //beq r0, r0, L23 // beq r0, r0, L23 c->pextlb(s1, s2, s2); // pextlb s1, s2, s2 goto block_28; // branch always block_27: c->daddiu(t5, t5, 16); // daddiu t5, t5, 16 // nop // sll r0, r0, 0 c->daddu(ra, ra, t6); // daddu ra, ra, t6 c->daddiu(t7, t7, 32); // daddiu t7, t7, 32 c->pextlb(s1, s1, s1); // pextlb s1, s1, s1 c->sq(s2, -16, t7); // sq s2, -16(t7) block_28: c->pextlb(s2, s1, s1); // pextlb s2, s1, s1 c->mfc1(r0, f31); // mfc1 r0, f31 c->pand(s2, s2, t8); // pand s2, s2, t8 c->mfc1(r0, f31); // mfc1 r0, f31 c->pceqb(s1, s2, t8); // pceqb s1, s2, t8 c->lq(s2, 0, t5); // lq s2, 0(t5) c->pand(v0, s1, t9); // pand v0, s1, t9 c->mfc1(r0, f31); // mfc1 r0, f31 c->pextlb(s1, v0, s2); // pextlb s1, v0, s2 c->lhu(s0, 0, ra); // lhu s0, 0(ra) c->pextub(s2, v0, s2); // pextub s2, v0, s2 c->sq(s1, 0, t7); // sq s1, 0(t7) bc = c->sgpr64(ra) != c->sgpr64(s3); // bne ra, s3, L22 c->pextlb(s1, s0, s0); // pextlb s1, s0, s0 if (bc) {goto block_27;} // branch non-likely // nop // sll r0, r0, 0 c->sq(s2, 16, t7); // sq s2, 16(t7) c->gprs[t5].du64[0] = 0; // or t5, r0, r0 bc = c->sgpr64(a2) == 0; // beq a2, r0, L24 // nop // sll r0, r0, 0 if (bc) {goto block_31;} // branch non-likely c->daddiu(t6, a2, 7); // daddiu t6, a2, 7 c->daddiu(t5, at, 700); // daddiu t5, at, 700 // nop // sll r0, r0, 0 c->lw(t2, 32, t2); // lw t2, 32(t2) c->sra(t6, t6, 3); // sra t6, t6, 3 c->sh(r0, 0, t5); // sh r0, 0(t5) // nop // sll r0, r0, 0 c->sh(a1, 4, t5); // sh a1, 4(t5) // nop // sll r0, r0, 0 c->sh(a2, 2, t5); // sh a2, 2(t5) // nop // sll r0, r0, 0 c->sw(t2, 8, t5); // sw t2, 8(t5) // nop // sll r0, r0, 0 c->sw(t5, 80, at); // sw t5, 80(at) //beq r0, r0, L25 // beq r0, r0, L25 // nop // sll r0, r0, 0 goto block_32; // branch always block_31: // nop // sll r0, r0, 0 c->sw(r0, 80, at); // sw r0, 80(at) // nop // sll r0, r0, 0 block_32: c->daddu(t5, a1, a2); // daddu t5, a1, a2 c->mov64(t2, t4); // or t2, t4, r0 c->daddiu(t4, t5, 3); // daddiu t4, t5, 3 vis[vi09] = c->gpr_src(a2).du16[0]; // ctc2.i vi9, a2 c->sra(t5, t4, 2); // sra t5, t4, 2 c->lq(t4, 0, t2); // lq t4, 0(t2) c->sll(t5, t5, 4); // sll t5, t5, 4 c->daddiu(t2, t2, 16); // daddiu t2, t2, 16 c->pextub(t7, t4, r0); // pextub t7, t4, r0 vis[vi08] = c->gpr_src(a1).du16[0]; // ctc2.i vi8, a1 c->pextlb(t6, t4, r0); // pextlb t6, t4, r0 vis[vi09] = c->gpr_src(a2).du16[0]; // ctc2.i vi9, a2 c->daddu(t4, t2, t5); // daddu t4, t2, t5 // Unknown instr: vcallms 104 vcallms_104(); block_33: c->pextuh(t5, t7, r0); // pextuh t5, t7, r0 c->mfc1(r0, f31); // mfc1 r0, f31 c->pextlh(t7, t7, r0); // pextlh t7, t7, r0 c->mfc1(r0, f31); // mfc1 r0, f31 c->pextuh(t8, t6, r0); // pextuh t8, t6, r0 c->mfc1(r0, f31); // mfc1 r0, f31 c->pextlh(t6, t6, r0); // pextlh t6, t6, r0 c->mfc1(r0, f31); // mfc1 r0, f31 c->psraw(t9, t6, 19); // psraw t9, t6, 19 c->lq(t6, 0, t2); // lq t6, 0(t2) c->psraw(t8, t8, 19); // psraw t8, t8, 19 c->mov128_vf_gpr(vf5, t9); // qmtc2.ni vf5, t9 c->psraw(t7, t7, 19); // psraw t7, t7, 19 c->mov128_vf_gpr(vf6, t8); // qmtc2.ni vf6, t8 c->psraw(t5, t5, 19); // psraw t5, t5, 19 c->mov128_vf_gpr(vf7, t7); // qmtc2.ni vf7, t7 c->pextub(t7, t6, r0); // pextub t7, t6, r0 c->mov128_vf_gpr(vf8, t5); // qmtc2.ni vf8, t5 c->pextlb(t6, t6, r0); // pextlb t6, t6, r0 c->mfc1(r0, f31); // mfc1 r0, f31 // nop // sll r0, r0, 0 // Unknown instr: vcallms 114 vcallms_114(c); bc = c->sgpr64(t2) != c->sgpr64(t4); // bne t2, t4, L26 c->daddiu(t2, t2, 16); // daddiu t2, t2, 16 if (bc) {goto block_33;} // branch non-likely // nop // sll r0, r0, 0 c->mov64(t2, t3); // or t2, t3, r0 bc = c->sgpr64(a1) == 0; // beq a1, r0, L34 c->daddiu(t4, a1, -4); // daddiu t4, a1, -4 if (bc) {goto block_48;} // branch non-likely bc = ((s64)c->sgpr64(t4)) <= 0; // blez t4, L29 // nop // sll r0, r0, 0 if (bc) {goto block_39;} // branch non-likely c->mov64(t2, t3); // or t2, t3, r0 c->ld(t5, 0, t3); // ld t5, 0(t3) c->daddiu(t4, a1, -8); // daddiu t4, a1, -8 c->ld(t6, 16, t3); // ld t6, 16(t3) c->pextlh(t7, t5, r0); // pextlh t7, t5, r0 c->ld(t5, 32, t3); // ld t5, 32(t3) c->pextlh(ra, t6, r0); // pextlh ra, t6, r0 c->ld(t6, 48, t3); // ld t6, 48(t3) c->pextlh(t8, t5, r0); // pextlh t8, t5, r0 c->lwu(t5, 8, t3); // lwu t5, 8(t3) c->pextlh(t9, t6, r0); // pextlh t9, t6, r0 c->lwu(t6, 24, t3); // lwu t6, 24(t3) c->psraw(s3, t7, 10); // psraw s3, t7, 10 c->lwu(t7, 40, t3); // lwu t7, 40(t3) c->psraw(ra, ra, 10); // psraw ra, ra, 10 c->lwu(t3, 56, t3); // lwu t3, 56(t3) c->psraw(t8, t8, 10); // psraw t8, t8, 10 c->mov128_vf_gpr(vf1, s3); // qmtc2.ni vf1, s3 c->psraw(t9, t9, 10); // psraw t9, t9, 10 c->mov128_vf_gpr(vf2, ra); // qmtc2.ni vf2, ra c->daddiu(t2, t2, 64); // daddiu t2, t2, 64 c->mov128_vf_gpr(vf3, t8); // qmtc2.ni vf3, t8 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf4, t9); // qmtc2.ni vf4, t9 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf13, t5); // qmtc2.ni vf13, t5 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf14, t6); // qmtc2.ni vf14, t6 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf15, t7); // qmtc2.ni vf15, t7 bc = ((s64)c->sgpr64(t4)) <= 0; // blez t4, L28 c->mov128_vf_gpr(vf16, t3); // qmtc2.ni vf16, t3 if (bc) {goto block_38;} // branch non-likely block_37: // Unknown instr: vcallms 122 vcallms_122(c); c->ld(t3, 0, t2); // ld t3, 0(t2) c->daddiu(t4, t4, -4); // daddiu t4, t4, -4 c->ld(t5, 16, t2); // ld t5, 16(t2) c->pextlh(t8, t3, r0); // pextlh t8, t3, r0 c->ld(t3, 32, t2); // ld t3, 32(t2) c->pextlh(t9, t5, r0); // pextlh t9, t5, r0 c->ld(t5, 48, t2); // ld t5, 48(t2) c->pextlh(t6, t3, r0); // pextlh t6, t3, r0 c->lwu(t3, 8, t2); // lwu t3, 8(t2) c->pextlh(t7, t5, r0); // pextlh t7, t5, r0 c->lwu(t5, 24, t2); // lwu t5, 24(t2) c->psraw(ra, t8, 10); // psraw ra, t8, 10 c->lwu(t8, 40, t2); // lwu t8, 40(t2) c->psraw(t9, t9, 10); // psraw t9, t9, 10 c->lwu(s3, 56, t2); // lwu s3, 56(t2) c->psraw(t6, t6, 10); // psraw t6, t6, 10 c->mov128_vf_gpr(vf1, ra); // qmtc2.ni vf1, ra c->psraw(t7, t7, 10); // psraw t7, t7, 10 c->mov128_vf_gpr(vf2, t9); // qmtc2.ni vf2, t9 c->daddiu(t2, t2, 64); // daddiu t2, t2, 64 c->mov128_vf_gpr(vf3, t6); // qmtc2.ni vf3, t6 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf4, t7); // qmtc2.ni vf4, t7 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf13, t3); // qmtc2.ni vf13, t3 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf14, t5); // qmtc2.ni vf14, t5 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf15, t8); // qmtc2.ni vf15, t8 bc = ((s64)c->sgpr64(t4)) > 0; // bgtz t4, L27 c->mov128_vf_gpr(vf16, s3); // qmtc2.ni vf16, s3 if (bc) {goto block_37;} // branch non-likely block_38: // Unknown instr: vcallms 122 vcallms_122(c); // nop // sll r0, r0, 0 block_39: bc = c->sgpr64(a2) == 0; // beq a2, r0, L33 c->andi(t3, a1, 3); // andi t3, a1, 3 if (bc) {goto block_47;} // branch non-likely bc = c->sgpr64(t3) == 0; // beq t3, r0, L33 c->daddiu(t3, t3, -1); // daddiu t3, t3, -1 if (bc) {goto block_47;} // branch non-likely bc = c->sgpr64(t3) == 0; // beq t3, r0, L30 c->daddiu(t3, t3, -1); // daddiu t3, t3, -1 if (bc) {goto block_44;} // branch non-likely bc = c->sgpr64(t3) == 0; // beq t3, r0, L31 c->daddiu(t3, t3, -1); // daddiu t3, t3, -1 if (bc) {goto block_45;} // branch non-likely //beq r0, r0, L32 // beq r0, r0, L32 // nop // sll r0, r0, 0 goto block_46; // branch always block_44: // nop // sll r0, r0, 0 c->ld(t3, 0, t2); // ld t3, 0(t2) // nop // sll r0, r0, 0 c->ld(t4, 16, t2); // ld t4, 16(t2) c->pextlh(t3, t3, r0); // pextlh t3, t3, r0 c->ld(t6, 24, t2); // ld t6, 24(t2) c->pextlh(t4, t4, r0); // pextlh t4, t4, r0 c->lwu(t5, 8, t2); // lwu t5, 8(t2) c->pextlh(t6, t6, r0); // pextlh t6, t6, r0 c->lwu(t7, 32, t2); // lwu t7, 32(t2) // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 c->psraw(t3, t3, 10); // psraw t3, t3, 10 c->mov128_vf_gpr(vf13, t5); // qmtc2.ni vf13, t5 c->psraw(t4, t4, 10); // psraw t4, t4, 10 c->mov128_vf_gpr(vf14, t7); // qmtc2.ni vf14, t7 c->psraw(t5, t6, 10); // psraw t5, t6, 10 c->mov128_vf_gpr(vf1, t3); // qmtc2.ni vf1, t3 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf2, t4); // qmtc2.ni vf2, t4 c->daddiu(t2, t2, 40); // daddiu t2, t2, 40 c->mov128_vf_gpr(vf3, t5); // qmtc2.ni vf3, t5 //beq r0, r0, L34 // beq r0, r0, L34 // Unknown instr: vcallms 134 vcallms_134(c); goto block_48; // branch always block_45: // nop // sll r0, r0, 0 c->ld(t4, 0, t2); // ld t4, 0(t2) // nop // sll r0, r0, 0 c->ld(t3, 16, t2); // ld t3, 16(t2) c->pextlh(t8, t4, r0); // pextlh t8, t4, r0 c->ld(t5, 32, t2); // ld t5, 32(t2) c->pextlh(t4, t3, r0); // pextlh t4, t3, r0 c->ld(t3, 40, t2); // ld t3, 40(t2) c->pextlh(t5, t5, r0); // pextlh t5, t5, r0 c->lwu(t6, 8, t2); // lwu t6, 8(t2) c->pextlh(t7, t3, r0); // pextlh t7, t3, r0 c->lwu(t3, 24, t2); // lwu t3, 24(t2) c->psraw(t9, t8, 10); // psraw t9, t8, 10 c->lwu(t8, 48, t2); // lwu t8, 48(t2) c->psraw(t4, t4, 10); // psraw t4, t4, 10 c->mov128_vf_gpr(vf13, t6); // qmtc2.ni vf13, t6 c->psraw(t5, t5, 10); // psraw t5, t5, 10 c->mov128_vf_gpr(vf1, t9); // qmtc2.ni vf1, t9 c->psraw(t6, t7, 10); // psraw t6, t7, 10 c->mov128_vf_gpr(vf2, t4); // qmtc2.ni vf2, t4 c->daddiu(t2, t2, 56); // daddiu t2, t2, 56 c->mov128_vf_gpr(vf3, t5); // qmtc2.ni vf3, t5 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf4, t6); // qmtc2.ni vf4, t6 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf14, t3); // qmtc2.ni vf14, t3 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf15, t8); // qmtc2.ni vf15, t8 //beq r0, r0, L34 // beq r0, r0, L34 // Unknown instr: vcallms 145 vcallms_145(c); goto block_48; // branch always block_46: // nop // sll r0, r0, 0 c->ld(t4, 0, t2); // ld t4, 0(t2) // nop // sll r0, r0, 0 c->ld(t3, 16, t2); // ld t3, 16(t2) c->pextlh(t7, t4, r0); // pextlh t7, t4, r0 c->ld(t4, 32, t2); // ld t4, 32(t2) c->pextlh(t5, t3, r0); // pextlh t5, t3, r0 c->lwu(t3, 8, t2); // lwu t3, 8(t2) c->pextlh(t6, t4, r0); // pextlh t6, t4, r0 c->lwu(t4, 24, t2); // lwu t4, 24(t2) c->psraw(t7, t7, 10); // psraw t7, t7, 10 c->lwu(t8, 40, t2); // lwu t8, 40(t2) c->psraw(t5, t5, 10); // psraw t5, t5, 10 c->mov128_vf_gpr(vf13, t3); // qmtc2.ni vf13, t3 c->psraw(t3, t6, 10); // psraw t3, t6, 10 c->mov128_vf_gpr(vf1, t7); // qmtc2.ni vf1, t7 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf2, t5); // qmtc2.ni vf2, t5 c->daddiu(t2, t2, 48); // daddiu t2, t2, 48 c->mov128_vf_gpr(vf3, t3); // qmtc2.ni vf3, t3 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf14, t4); // qmtc2.ni vf14, t4 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf15, t8); // qmtc2.ni vf15, t8 //beq r0, r0, L34 // beq r0, r0, L34 // Unknown instr: vcallms 157 vcallms_157(c); goto block_48; // branch always block_47: // nop // sll r0, r0, 0 c->ld(t3, 0, t2); // ld t3, 0(t2) // nop // sll r0, r0, 0 c->ld(t4, 16, t2); // ld t4, 16(t2) c->pextlh(t7, t3, r0); // pextlh t7, t3, r0 c->ld(t3, 32, t2); // ld t3, 32(t2) c->pextlh(t8, t4, r0); // pextlh t8, t4, r0 c->ld(t4, 48, t2); // ld t4, 48(t2) c->pextlh(t5, t3, r0); // pextlh t5, t3, r0 c->lwu(t3, 8, t2); // lwu t3, 8(t2) c->pextlh(t6, t4, r0); // pextlh t6, t4, r0 c->lwu(t4, 24, t2); // lwu t4, 24(t2) c->psraw(t9, t7, 10); // psraw t9, t7, 10 c->lwu(t7, 40, t2); // lwu t7, 40(t2) c->psraw(t8, t8, 10); // psraw t8, t8, 10 c->lwu(ra, 56, t2); // lwu ra, 56(t2) c->psraw(t5, t5, 10); // psraw t5, t5, 10 c->mov128_vf_gpr(vf1, t9); // qmtc2.ni vf1, t9 c->psraw(t6, t6, 10); // psraw t6, t6, 10 c->mov128_vf_gpr(vf2, t8); // qmtc2.ni vf2, t8 c->daddiu(t2, t2, 64); // daddiu t2, t2, 64 c->mov128_vf_gpr(vf3, t5); // qmtc2.ni vf3, t5 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf4, t6); // qmtc2.ni vf4, t6 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf13, t3); // qmtc2.ni vf13, t3 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf14, t4); // qmtc2.ni vf14, t4 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf15, t7); // qmtc2.ni vf15, t7 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf16, ra); // qmtc2.ni vf16, ra bc = c->sgpr64(a2) == 0; // beq a2, r0, L37 // Unknown instr: vcallms 122 vcallms_122(c); if (bc) {goto block_51;} // branch non-likely block_48: // nop // sll r0, r0, 0 c->ld(t4, 0, t2); // ld t4, 0(t2) c->daddiu(t3, a2, -2); // daddiu t3, a2, -2 c->ld(t5, 8, t2); // ld t5, 8(t2) c->pextlh(t4, t4, r0); // pextlh t4, t4, r0 c->ld(t6, 24, t2); // ld t6, 24(t2) c->pextlh(t5, t5, r0); // pextlh t5, t5, r0 c->ld(t7, 32, t2); // ld t7, 32(t2) c->pextlh(t6, t6, r0); // pextlh t6, t6, r0 c->lwu(t8, 16, t2); // lwu t8, 16(t2) c->pextlh(t7, t7, r0); // pextlh t7, t7, r0 c->lwu(t9, 40, t2); // lwu t9, 40(t2) c->psraw(t4, t4, 10); // psraw t4, t4, 10 c->mov128_vf_gpr(vf13, t8); // qmtc2.ni vf13, t8 c->psraw(t5, t5, 10); // psraw t5, t5, 10 c->mov128_vf_gpr(vf14, t9); // qmtc2.ni vf14, t9 c->psraw(t6, t6, 10); // psraw t6, t6, 10 c->mov128_vf_gpr(vf1, t4); // qmtc2.ni vf1, t4 c->psraw(t4, t7, 10); // psraw t4, t7, 10 c->mov128_vf_gpr(vf2, t5); // qmtc2.ni vf2, t5 c->daddiu(t2, t2, 48); // daddiu t2, t2, 48 c->mov128_vf_gpr(vf3, t6); // qmtc2.ni vf3, t6 bc = ((s64)c->sgpr64(t3)) <= 0; // blez t3, L36 c->mov128_vf_gpr(vf4, t4); // qmtc2.ni vf4, t4 if (bc) {goto block_50;} // branch non-likely block_49: // Unknown instr: vcallms 168 vcallms_168(c); c->ld(t4, 0, t2); // ld t4, 0(t2) c->daddiu(t3, t3, -2); // daddiu t3, t3, -2 c->ld(t5, 8, t2); // ld t5, 8(t2) c->pextlh(t4, t4, r0); // pextlh t4, t4, r0 c->ld(t6, 24, t2); // ld t6, 24(t2) c->pextlh(t5, t5, r0); // pextlh t5, t5, r0 c->ld(t7, 32, t2); // ld t7, 32(t2) c->pextlh(t6, t6, r0); // pextlh t6, t6, r0 c->lwu(t8, 16, t2); // lwu t8, 16(t2) c->pextlh(t7, t7, r0); // pextlh t7, t7, r0 c->lwu(t9, 40, t2); // lwu t9, 40(t2) c->psraw(t4, t4, 10); // psraw t4, t4, 10 c->mov128_vf_gpr(vf13, t8); // qmtc2.ni vf13, t8 c->psraw(t5, t5, 10); // psraw t5, t5, 10 c->mov128_vf_gpr(vf14, t9); // qmtc2.ni vf14, t9 c->psraw(t6, t6, 10); // psraw t6, t6, 10 c->mov128_vf_gpr(vf1, t4); // qmtc2.ni vf1, t4 c->psraw(t4, t7, 10); // psraw t4, t7, 10 c->mov128_vf_gpr(vf2, t5); // qmtc2.ni vf2, t5 c->daddiu(t2, t2, 48); // daddiu t2, t2, 48 c->mov128_vf_gpr(vf3, t6); // qmtc2.ni vf3, t6 bc = ((s64)c->sgpr64(t3)) > 0; // bgtz t3, L35 c->mov128_vf_gpr(vf4, t4); // qmtc2.ni vf4, t4 if (bc) {goto block_49;} // branch non-likely block_50: // Unknown instr: vcallms 168 vcallms_168(c); // nop // sll r0, r0, 0 block_51: // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 block_52: c->mov64(t3, a1); // or t3, a1, r0 c->lw(t6, 80, a3); // lw t6, 80(a3) c->mov64(t4, v1); // or t4, v1, r0 c->lw(t1, 4, t1); // lw t1, 4(t1) c->daddiu(t5, at, 12048); // daddiu t5, at, 12048 c->sw(t6, 92, at); // sw t6, 92(at) c->pextlb(t2, r0, t1); // pextlb t2, r0, t1 c->lq(t1, 0, a3); // lq t1, 0(a3) c->pextlh(t7, t6, t6); // pextlh t7, t6, t6 c->lq(t6, 16, a3); // lq t6, 16(a3) c->pextlh(t8, t7, t7); // pextlh t8, t7, t7 c->lq(t7, 32, a3); // lq t7, 32(a3) c->pmulth(r0, t2, t8); // pmulth r0, t2, t8 c->lq(t2, 48, a3); // lq t2, 48(a3) // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf1, t1); // qmtc2.ni vf1, t1 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf2, t6); // qmtc2.ni vf2, t6 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf3, t7); // qmtc2.ni vf3, t7 // nop // sll r0, r0, 0 c->mov128_vf_gpr(vf4, t2); // qmtc2.ni vf4, t2 // Unknown instr: vcallms 178 vcallms_178(c); c->mov64(t1, t0); // or t1, t0, r0 c->pextlw(t2, t1, t1); // pextlw t2, t1, t1 c->lw(t1, 4, a0); // lw t1, 4(a0) c->pcpyld(t2, t2, t2); // pcpyld t2, t2, t2 c->lw(t8, 96, at); // lw t8, 96(at) c->pmfhl_lh(t7); // pmfhl.lh t7 c->lw(t6, 84, a3); // lw t6, 84(a3) c->pextlb(t8, r0, t8); // pextlb t8, r0, t8 c->mfc1(r0, f31); // mfc1 r0, f31 c->psrlh(t7, t7, 7); // psrlh t7, t7, 7 c->mfc1(r0, f31); // mfc1 r0, f31 c->pmulth(r0, t7, t8); // pmulth r0, t7, t8 c->mfc1(r0, f31); // mfc1 r0, f31 bc = c->sgpr64(t6) != 0; // bne t6, r0, L39 c->mfc1(r0, f31); // mfc1 r0, f31 if (bc) {goto block_54;} // branch non-likely // nop // sll r0, r0, 0 c->addiu(t6, r0, 8); // addiu t6, r0, 8 //beq r0, r0, L40 // beq r0, r0, L40 c->sh(t6, 11984, at); // sh t6, 11984(at) goto block_55; // branch always block_54: // nop // sll r0, r0, 0 c->addiu(t6, r0, 6); // addiu t6, r0, 6 // nop // sll r0, r0, 0 c->sh(t6, 11984, at); // sh t6, 11984(at) block_55: c->pmfhl_lh(t6); // pmfhl.lh t6 c->mfc1(r0, f31); // mfc1 r0, f31 // nop // sll r0, r0, 0 c->mfc1(r0, f31); // mfc1 r0, f31 c->psrlh(t6, t6, 7); // psrlh t6, t6, 7 c->mfc1(r0, f31); // mfc1 r0, f31 c->ppacb(t6, r0, t6); // ppacb t6, r0, t6 c->mfc1(r0, f31); // mfc1 r0, f31 // nop // sll r0, r0, 0 c->lw(t7, 0, t4); // lw t7, 0(t4) c->daddiu(t4, t4, 4); // daddiu t4, t4, 4 c->sw(t6, 0, t5); // sw t6, 0(t5) c->pextlb(t7, r0, t7); // pextlb t7, r0, t7 c->sw(t6, 4, t5); // sw t6, 4(t5) c->pextlh(t7, r0, t7); // pextlh t7, r0, t7 c->sw(t6, 8, t5); // sw t6, 8(t5) c->psllw(t7, t7, 2); // psllw t7, t7, 2 c->sw(t6, 12, t5); // sw t6, 12(t5) c->paddw(t9, t7, t2); // paddw t9, t7, t2 c->mfc1(r0, f31); // mfc1 r0, f31 c->dsrl32(s3, t9, 0); // dsrl32 s3, t9, 0 c->mov128_gpr_vf(t7, vf17); // qmfc2.ni t7, vf17 c->pcpyud(t5, t9, r0); // pcpyud t5, t9, r0 c->mfc1(r0, f31); // mfc1 r0, f31 c->dsrl32(t6, t5, 0); // dsrl32 t6, t5, 0 c->mov128_gpr_vf(ra, vf13); // qmfc2.ni ra, vf13 // nop // sll r0, r0, 0 c->mfc1(r0, f31); // mfc1 r0, f31 // nop // sll r0, r0, 0 c->mfc1(r0, f31); // mfc1 r0, f31 // nop // sll r0, r0, 0 c->mfc1(r0, f31); // mfc1 r0, f31 // nop // sll r0, r0, 0 c->mfc1(r0, f31); // mfc1 r0, f31 // nop // sll r0, r0, 0 c->mfc1(r0, f31); // mfc1 r0, f31 // nop // sll r0, r0, 0 c->mfc1(r0, f31); // mfc1 r0, f31 // nop // sll r0, r0, 0 c->mov128_gpr_vf(t8, vf14); // qmfc2.ni t8, vf14 // nop // sll r0, r0, 0 c->lwu(t9, 0, t9); // lwu t9, 0(t9) // nop // sll r0, r0, 0 c->lwu(s3, 0, s3); // lwu s3, 0(s3) // nop // sll r0, r0, 0 c->lwu(t5, 0, t5); // lwu t5, 0(t5) // nop // sll r0, r0, 0 c->mov128_gpr_vf(s0, vf18); // qmfc2.ni s0, vf18 // nop // sll r0, r0, 0 c->lwu(t6, 0, t6); // lwu t6, 0(t6) // nop // sll r0, r0, 0 c->sq(ra, 0, t1); // sq ra, 0(t1) c->daddiu(t3, t3, -4); // daddiu t3, t3, -4 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 bc = ((s64)c->sgpr64(t3)) <= 0; // blez t3, L42 // nop // sll r0, r0, 0 if (bc) {goto block_57;} // branch non-likely block_56: // Unknown instr: vcallms 183 vcallms_183(c); c->sq(t7, 16, t1); // sq t7, 16(t1) // nop // sll r0, r0, 0 c->sw(t9, 28, t1); // sw t9, 28(t1) // nop // sll r0, r0, 0 c->sq(t8, 32, t1); // sq t8, 32(t1) // nop // sll r0, r0, 0 c->sq(s0, 48, t1); // sq s0, 48(t1) // nop // sll r0, r0, 0 c->sw(s3, 60, t1); // sw s3, 60(t1) // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 c->mfc1(r0, f31); // mfc1 r0, f31 // nop // sll r0, r0, 0 c->lw(t8, 0, t4); // lw t8, 0(t4) c->daddiu(t4, t4, 4); // daddiu t4, t4, 4 c->mov128_gpr_vf(t7, vf19); // qmfc2.ni t7, vf19 c->pextlb(t9, r0, t8); // pextlb t9, r0, t8 c->mov128_gpr_vf(t8, vf20); // qmfc2.ni t8, vf20 c->pextlh(t9, r0, t9); // pextlh t9, r0, t9 c->mov128_gpr_vf(s3, vf15); // qmfc2.ni s3, vf15 c->psllw(ra, t9, 2); // psllw ra, t9, 2 c->mov128_gpr_vf(t9, vf16); // qmfc2.ni t9, vf16 c->paddw(s0, ra, t2); // paddw s0, ra, t2 c->sq(t7, 80, t1); // sq t7, 80(t1) c->dsrl32(v0, s0, 0); // dsrl32 v0, s0, 0 c->mov128_gpr_vf(t7, vf17); // qmfc2.ni t7, vf17 c->pcpyud(ra, s0, r0); // pcpyud ra, s0, r0 c->sq(s3, 64, t1); // sq s3, 64(t1) c->dsrl32(s2, ra, 0); // dsrl32 s2, ra, 0 c->mov128_gpr_vf(s1, vf13); // qmfc2.ni s1, vf13 // nop // sll r0, r0, 0 c->sq(t8, 112, t1); // sq t8, 112(t1) // nop // sll r0, r0, 0 c->sw(t5, 92, t1); // sw t5, 92(t1) // nop // sll r0, r0, 0 c->sw(t6, 124, t1); // sw t6, 124(t1) // nop // sll r0, r0, 0 c->sq(t9, 96, t1); // sq t9, 96(t1) // nop // sll r0, r0, 0 c->lwu(t9, 0, s0); // lwu t9, 0(s0) // nop // sll r0, r0, 0 c->lwu(s3, 0, v0); // lwu s3, 0(v0) // nop // sll r0, r0, 0 c->mov128_gpr_vf(t8, vf14); // qmfc2.ni t8, vf14 c->daddiu(t1, t1, 128); // daddiu t1, t1, 128 c->mov128_gpr_vf(s0, vf18); // qmfc2.ni s0, vf18 c->daddiu(t3, t3, -4); // daddiu t3, t3, -4 c->lwu(t5, 0, ra); // lwu t5, 0(ra) // nop // sll r0, r0, 0 c->sq(s1, 0, t1); // sq s1, 0(t1) bc = ((s64)c->sgpr64(t3)) > 0; // bgtz t3, L41 c->lwu(t6, 0, s2); // lwu t6, 0(s2) if (bc) {goto block_56;} // branch non-likely block_57: // Unknown instr: vcallms 211 vcallms_211(c); c->sq(t7, 16, t1); // sq t7, 16(t1) // nop // sll r0, r0, 0 c->sw(t9, 28, t1); // sw t9, 28(t1) // nop // sll r0, r0, 0 c->sq(t8, 32, t1); // sq t8, 32(t1) // nop // sll r0, r0, 0 c->sq(s0, 48, t1); // sq s0, 48(t1) // nop // sll r0, r0, 0 c->sw(s3, 60, t1); // sw s3, 60(t1) // nop // sll r0, r0, 0 // nop // vnop // nop // sll r0, r0, 0 c->sqc2(vf19, 80, t1); // sqc2 vf19, 80(t1) // nop // sll r0, r0, 0 c->sqc2(vf15, 64, t1); // sqc2 vf15, 64(t1) // nop // sll r0, r0, 0 c->sqc2(vf16, 96, t1); // sqc2 vf16, 96(t1) // nop // sll r0, r0, 0 c->sqc2(vf20, 112, t1); // sqc2 vf20, 112(t1) // nop // sll r0, r0, 0 c->sw(t5, 92, t1); // sw t5, 92(t1) // nop // sll r0, r0, 0 c->sw(t6, 124, t1); // sw t6, 124(t1) bc = c->sgpr64(a2) == 0; // beq a2, r0, L48 // nop // sll r0, r0, 0 if (bc) {goto block_65;} // branch non-likely c->mov64(t1, t0); // or t1, t0, r0 c->lqc2(vf29, 64, a3); // lqc2 vf29, 64(a3) c->mov64(t0, v1); // or t0, v1, r0 c->lwc1(f0, 72, a3); // lwc1 f0, 72(a3) c->daddiu(t0, a1, 3); // daddiu t0, a1, 3 c->lwc1(f2, 76, a3); // lwc1 f2, 76(a3) c->addiu(a3, r0, -4); // addiu a3, r0, -4 // nop // sll r0, r0, 0 c->cvtws(f0, f0); // cvt.w.s f0, f0 c->and_(a3, t0, a3); // and a3, t0, a3 c->cvtws(f2, f2); // cvt.w.s f2, f2 c->lw(t2, 4, a0); // lw t2, 4(a0) c->mfc1(a0, f0); // mfc1 a0, f0 c->mov64(t0, a2); // or t0, a2, r0 c->mfc1(t3, f2); // mfc1 t3, f2 c->dsll(a2, a1, 5); // dsll a2, a1, 5 c->dsra(a1, t3, 1); // dsra a1, t3, 1 c->daddu(a3, v1, a3); // daddu a3, v1, a3 bc = c->sgpr64(a1) == 0; // beq a1, r0, L45 c->daddu(a2, t2, a2); // daddu a2, t2, a2 if (bc) {goto block_62;} // branch non-likely c->pcpyh(v1, a0); // pcpyh v1, a0 c->mfc1(r0, f31); // mfc1 r0, f31 c->pcpyld(v1, v1, v1); // pcpyld v1, v1, v1 c->sh(v1, 712, at); // sh v1, 712(at) c->pcpyh(a0, a1); // pcpyh a0, a1 c->sh(a0, 714, at); // sh a0, 714(at) c->pcpyld(a0, a0, a0); // pcpyld a0, a0, a0 c->ldr(s5, 0, a3); // ldr s5, 0(a3) c->pextlw(a1, t1, t1); // pextlw a1, t1, t1 c->ldl(s5, 7, a3); // ldl s5, 7(a3) c->pcpyld(a1, a1, a1); // pcpyld a1, a1, a1 c->ldr(s4, 8, a3); // ldr s4, 8(a3) c->pextlb(t2, r0, s5); // pextlb t2, r0, s5 c->ldl(s4, 15, a3); // ldl s4, 15(a3) c->pextuh(t1, r0, t2); // pextuh t1, r0, t2 c->mfc1(r0, f31); // mfc1 r0, f31 c->pextlh(t3, r0, t2); // pextlh t3, r0, t2 c->mfc1(r0, f31); // mfc1 r0, f31 c->pextlb(t4, r0, s4); // pextlb t4, r0, s4 c->mfc1(r0, f31); // mfc1 r0, f31 c->pextuh(t2, r0, t4); // pextuh t2, r0, t4 c->mfc1(r0, f31); // mfc1 r0, f31 c->pextlh(t5, r0, t4); // pextlh t5, r0, t4 c->mfc1(r0, f31); // mfc1 r0, f31 c->psllw(t3, t3, 2); // psllw t3, t3, 2 c->mfc1(r0, f31); // mfc1 r0, f31 c->psllw(t4, t1, 2); // psllw t4, t1, 2 // Unknown instr: vcallms 215 vcallms_215(c); c->psllw(t6, t5, 2); // psllw t6, t5, 2 c->mfc1(r0, f31); // mfc1 r0, f31 c->psllw(t5, t2, 2); // psllw t5, t2, 2 c->mfc1(r0, f31); // mfc1 r0, f31 c->paddw(t1, t3, a1); // paddw t1, t3, a1 c->mfc1(r0, f31); // mfc1 r0, f31 c->paddw(t4, t4, a1); // paddw t4, t4, a1 c->lwu(t3, 0, t1); // lwu t3, 0(t1) c->paddw(t2, t6, a1); // paddw t2, t6, a1 c->lwu(t9, 0, t4); // lwu t9, 0(t4) c->paddw(t5, t5, a1); // paddw t5, t5, a1 c->mfc1(r0, f31); // mfc1 r0, f31 c->dsrl32(s4, t1, 0); // dsrl32 s4, t1, 0 c->mfc1(r0, f31); // mfc1 r0, f31 c->dsrl32(s3, t4, 0); // dsrl32 s3, t4, 0 c->mfc1(r0, f31); // mfc1 r0, f31 c->dsrl32(ra, t2, 0); // dsrl32 ra, t2, 0 c->daddiu(a2, a2, -128); // daddiu a2, a2, -128 c->dsrl32(t8, t5, 0); // dsrl32 t8, t5, 0 c->daddiu(a3, a3, 16); // daddiu a3, a3, 16 c->pcpyud(t7, t1, r0); // pcpyud t7, t1, r0 c->lwu(s5, 0, t2); // lwu s5, 0(t2) c->pcpyud(t6, t4, r0); // pcpyud t6, t4, r0 c->lwu(s2, 0, t5); // lwu s2, 0(t5) c->pcpyud(t4, t2, r0); // pcpyud t4, t2, r0 c->lwu(s4, 0, s4); // lwu s4, 0(s4) c->pcpyud(t5, t5, r0); // pcpyud t5, t5, r0 c->lwu(s3, 0, s3); // lwu s3, 0(s3) c->pextlw(t9, t9, t3); // pextlw t9, t9, t3 c->lwu(ra, 0, ra); // lwu ra, 0(ra) c->pextlw(t3, s2, s5); // pextlw t3, s2, s5 c->lwu(s2, 0, t8); // lwu s2, 0(t8) c->pextlw(s5, s3, s4); // pextlw s5, s3, s4 c->lwu(t8, 0, t7); // lwu t8, 0(t7) c->pextlw(t7, s2, ra); // pextlw t7, s2, ra c->lwu(ra, 0, t6); // lwu ra, 0(t6) c->pextlb(t6, r0, t9); // pextlb t6, r0, t9 c->lwu(t9, 0, t4); // lwu t9, 0(t4) c->pextlb(t4, r0, s5); // pextlb t4, r0, s5 c->lwu(s5, 0, t5); // lwu s5, 0(t5) c->pextlw(ra, ra, t8); // pextlw ra, ra, t8 c->mov128_gpr_vf(t5, vf17); // qmfc2.ni t5, vf17 c->pextlw(t8, s5, t9); // pextlw t8, s5, t9 c->mfc1(r0, f31); // mfc1 r0, f31 c->pextlb(t9, r0, ra); // pextlb t9, r0, ra c->mfc1(r0, f31); // mfc1 r0, f31 c->paddh(t9, t4, t9); // paddh t9, t4, t9 c->mov128_gpr_vf(t4, vf13); // qmfc2.ni t4, vf13 c->pmulth(r0, t9, a0); // pmulth r0, t9, a0 c->mfc1(r0, f31); // mfc1 r0, f31 c->pextlb(t3, r0, t3); // pextlb t3, r0, t3 c->sq(t5, 144, a2); // sq t5, 144(a2) c->pmaddh(r0, t6, v1); // pmaddh r0, t6, v1 c->sq(t4, 128, a2); // sq t4, 128(a2) c->pextlb(t5, r0, t7); // pextlb t5, r0, t7 c->ldr(t1, 0, a3); // ldr t1, 0(a3) c->pextlb(t7, r0, t8); // pextlb t7, r0, t8 c->ldl(t1, 7, a3); // ldl t1, 7(a3) c->pmfhl_lh(t6); // pmfhl.lh t6 c->mov128_gpr_vf(t4, vf18); // qmfc2.ni t4, vf18 c->paddh(t5, t5, t7); // paddh t5, t5, t7 c->ldr(t2, 8, a3); // ldr t2, 8(a3) c->psrlh(t6, t6, 8); // psrlh t6, t6, 8 c->ldl(t2, 15, a3); // ldl t2, 15(a3) c->ppacb(t6, r0, t6); // ppacb t6, r0, t6 c->sq(t4, 176, a2); // sq t4, 176(a2) c->dsrl32(t4, t6, 0); // dsrl32 t4, t6, 0 c->daddiu(t0, t0, -4); // daddiu t0, t0, -4 c->pmulth(r0, t5, a0); // pmulth r0, t5, a0 c->mov128_gpr_vf(t5, vf14); // qmfc2.ni t5, vf14 c->pextlb(t1, r0, t1); // pextlb t1, r0, t1 c->sw(t6, 156, a2); // sw t6, 156(a2) c->pmaddh(r0, t3, v1); // pmaddh r0, t3, v1 c->sw(t4, 188, a2); // sw t4, 188(a2) c->pextlb(t3, r0, t2); // pextlb t3, r0, t2 c->sq(t5, 160, a2); // sq t5, 160(a2) c->pextuh(t2, r0, t1); // pextuh t2, r0, t1 c->mfc1(r0, f31); // mfc1 r0, f31 c->pmfhl_lh(t6); // pmfhl.lh t6 c->mov128_gpr_vf(t5, vf19); // qmfc2.ni t5, vf19 c->pextlh(t4, r0, t1); // pextlh t4, r0, t1 c->mfc1(r0, f31); // mfc1 r0, f31 c->psrlh(t1, t6, 8); // psrlh t1, t6, 8 c->mfc1(r0, f31); // mfc1 r0, f31 c->ppacb(t6, r0, t1); // ppacb t6, r0, t1 c->sq(t5, 208, a2); // sq t5, 208(a2) c->dsrl32(t1, t6, 0); // dsrl32 t1, t6, 0 c->sw(t6, 220, a2); // sw t6, 220(a2) c->pextuh(t5, r0, t3); // pextuh t5, r0, t3 c->mov128_gpr_vf(t6, vf15); // qmfc2.ni t6, vf15 c->pextlh(t7, r0, t3); // pextlh t7, r0, t3 c->mfc1(r0, f31); // mfc1 r0, f31 c->psllw(t3, t4, 2); // psllw t3, t4, 2 c->sq(t6, 192, a2); // sq t6, 192(a2) c->psllw(t4, t2, 2); // psllw t4, t2, 2 c->mfc1(r0, f31); // mfc1 r0, f31 c->psllw(t6, t7, 2); // psllw t6, t7, 2 c->mfc1(r0, f31); // mfc1 r0, f31 c->psllw(t5, t5, 2); // psllw t5, t5, 2 c->mfc1(r0, f31); // mfc1 r0, f31 c->paddw(s5, t3, a1); // paddw s5, t3, a1 c->mov128_gpr_vf(t2, vf20); // qmfc2.ni t2, vf20 c->paddw(t4, t4, a1); // paddw t4, t4, a1 c->lwu(t3, 0, s5); // lwu t3, 0(s5) c->paddw(s4, t6, a1); // paddw s4, t6, a1 c->lwu(t9, 0, t4); // lwu t9, 0(t4) bc = ((s64)c->sgpr64(t0)) <= 0; // blez t0, L44 c->paddw(t5, t5, a1); // paddw t5, t5, a1 if (bc) {goto block_61;} // branch non-likely block_60: c->dsrl32(s3, s5, 0); // dsrl32 s3, s5, 0 // Unknown instr: vcallms 221 vcallms_221(c); c->dsrl32(s0, t4, 0); // dsrl32 s0, t4, 0 c->dsrl32(s2, s4, 0); // dsrl32 s2, s4, 0 c->dsrl32(t8, t5, 0); // dsrl32 t8, t5, 0 c->daddiu(a2, a2, 128); // daddiu a2, a2, 128 c->pcpyud(t7, s5, r0); // pcpyud t7, s5, r0 c->lwu(ra, 0, s4); // lwu ra, 0(s4) c->pcpyud(t6, t4, r0); // pcpyud t6, t4, r0 c->lwu(s1, 0, t5); // lwu s1, 0(t5) c->pcpyud(t4, s4, r0); // pcpyud t4, s4, r0 c->lwu(s3, 0, s3); // lwu s3, 0(s3) c->pcpyud(t5, t5, r0); // pcpyud t5, t5, r0 c->lwu(s0, 0, s0); // lwu s0, 0(s0) c->pextlw(t9, t9, t3); // pextlw t9, t9, t3 c->lwu(s2, 0, s2); // lwu s2, 0(s2) c->pextlw(t3, s1, ra); // pextlw t3, s1, ra c->lwu(s1, 0, t8); // lwu s1, 0(t8) c->pextlw(ra, s0, s3); // pextlw ra, s0, s3 c->lwu(t8, 0, t7); // lwu t8, 0(t7) c->pextlw(t7, s1, s2); // pextlw t7, s1, s2 c->lwu(s3, 0, t6); // lwu s3, 0(t6) c->pextlb(t6, r0, t9); // pextlb t6, r0, t9 c->lwu(t9, 0, t4); // lwu t9, 0(t4) c->pextlb(t4, r0, ra); // pextlb t4, r0, ra c->lwu(t5, 0, t5); // lwu t5, 0(t5) c->pextlw(t8, s3, t8); // pextlw t8, s3, t8 c->sq(t2, 112, a2); // sq t2, 112(a2) c->pextlw(t2, t5, t9); // pextlw t2, t5, t9 c->mov128_gpr_vf(t5, vf17); // qmfc2.ni t5, vf17 c->pextlb(t8, r0, t8); // pextlb t8, r0, t8 c->sw(t1, 124, a2); // sw t1, 124(a2) c->paddh(t1, t4, t8); // paddh t1, t4, t8 c->mfc1(r0, f31); // mfc1 r0, f31 c->pmulth(r0, t1, a0); // pmulth r0, t1, a0 c->mov128_gpr_vf(t4, vf13); // qmfc2.ni t4, vf13 c->pextlb(t1, r0, t3); // pextlb t1, r0, t3 c->sq(t5, 144, a2); // sq t5, 144(a2) c->pmaddh(r0, t6, v1); // pmaddh r0, t6, v1 c->ldr(s5, 16, a3); // ldr s5, 16(a3) c->pextlb(t3, r0, t7); // pextlb t3, r0, t7 c->sq(t4, 128, a2); // sq t4, 128(a2) c->pextlb(t2, r0, t2); // pextlb t2, r0, t2 c->ldl(s5, 23, a3); // ldl s5, 23(a3) c->pmfhl_lh(t4); // pmfhl.lh t4 c->ldr(s4, 24, a3); // ldr s4, 24(a3) c->paddh(t2, t3, t2); // paddh t2, t3, t2 c->mov128_gpr_vf(t5, vf18); // qmfc2.ni t5, vf18 c->psrlh(t3, t4, 8); // psrlh t3, t4, 8 c->ldl(s4, 31, a3); // ldl s4, 31(a3) c->ppacb(t3, r0, t3); // ppacb t3, r0, t3 c->sq(t5, 176, a2); // sq t5, 176(a2) c->dsrl32(t5, t3, 0); // dsrl32 t5, t3, 0 c->daddiu(t0, t0, -4); // daddiu t0, t0, -4 c->pmulth(r0, t2, a0); // pmulth r0, t2, a0 c->mfc1(r0, f31); // mfc1 r0, f31 c->pextlb(t4, r0, s5); // pextlb t4, r0, s5 c->mov128_gpr_vf(t6, vf14); // qmfc2.ni t6, vf14 c->pmaddh(r0, t1, v1); // pmaddh r0, t1, v1 c->sw(t3, 156, a2); // sw t3, 156(a2) c->pextlb(t3, r0, s4); // pextlb t3, r0, s4 c->sw(t5, 188, a2); // sw t5, 188(a2) c->pextuh(t2, r0, t4); // pextuh t2, r0, t4 c->sq(t6, 160, a2); // sq t6, 160(a2) c->pmfhl_lh(t6); // pmfhl.lh t6 c->mov128_gpr_vf(t1, vf16); // qmfc2.ni t1, vf16 c->pextlh(t4, r0, t4); // pextlh t4, r0, t4 c->mov128_gpr_vf(t5, vf19); // qmfc2.ni t5, vf19 c->psrlh(t6, t6, 8); // psrlh t6, t6, 8 c->sq(t1, 96, a2); // sq t1, 96(a2) c->ppacb(t6, r0, t6); // ppacb t6, r0, t6 c->sq(t5, 208, a2); // sq t5, 208(a2) c->dsrl32(t1, t6, 0); // dsrl32 t1, t6, 0 c->daddiu(a3, a3, 16); // daddiu a3, a3, 16 c->pextuh(t5, r0, t3); // pextuh t5, r0, t3 c->mfc1(r0, f31); // mfc1 r0, f31 c->pextlh(t7, r0, t3); // pextlh t7, r0, t3 c->mov128_gpr_vf(t8, vf15); // qmfc2.ni t8, vf15 c->psllw(t3, t4, 2); // psllw t3, t4, 2 c->sw(t6, 220, a2); // sw t6, 220(a2) c->psllw(t4, t2, 2); // psllw t4, t2, 2 c->sq(t8, 192, a2); // sq t8, 192(a2) c->psllw(t6, t7, 2); // psllw t6, t7, 2 c->mfc1(r0, f31); // mfc1 r0, f31 c->psllw(t5, t5, 2); // psllw t5, t5, 2 c->mfc1(r0, f31); // mfc1 r0, f31 c->paddw(s5, t3, a1); // paddw s5, t3, a1 c->mov128_gpr_vf(t2, vf20); // qmfc2.ni t2, vf20 c->paddw(t4, t4, a1); // paddw t4, t4, a1 c->lwu(t3, 0, s5); // lwu t3, 0(s5) c->paddw(s4, t6, a1); // paddw s4, t6, a1 c->lwu(t9, 0, t4); // lwu t9, 0(t4) bc = ((s64)c->sgpr64(t0)) > 0; // bgtz t0, L43 c->paddw(t5, t5, a1); // paddw t5, t5, a1 if (bc) {goto block_60;} // branch non-likely block_61: // nop // sll r0, r0, 0 // Unknown instr: vcallms 257 vcallms_257(c); // nop // sll r0, r0, 0 c->sq(t2, 240, a2); // sq t2, 240(a2) // nop // sll r0, r0, 0 c->mov128_gpr_vf(v1, vf16); // qmfc2.i v1, vf16 // nop // sll r0, r0, 0 c->sw(t1, 252, a2); // sw t1, 252(a2) //beq r0, r0, L48 // beq r0, r0, L48 c->sq(v1, 224, a2); // sq v1, 224(a2) goto block_65; // branch always block_62: // Unknown instr: vcallms 259 vcallms_259(c); // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 c->sh(a0, 712, at); // sh a0, 712(at) // nop // sll r0, r0, 0 c->sh(a1, 714, at); // sh a1, 714(at) // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 c->lbu(v1, 0, a3); // lbu v1, 0(a3) // nop // sll r0, r0, 0 c->lbu(a0, 4, a3); // lbu a0, 4(a3) // nop // sll r0, r0, 0 c->lbu(a1, 8, a3); // lbu a1, 8(a3) c->dsll(v1, v1, 2); // dsll v1, v1, 2 c->lbu(t2, 12, a3); // lbu t2, 12(a3) c->dsll(a0, a0, 2); // dsll a0, a0, 2 // nop // sll r0, r0, 0 c->dsll(t3, a1, 2); // dsll t3, a1, 2 // nop // sll r0, r0, 0 c->dsll(t4, t2, 2); // dsll t4, t2, 2 c->mov128_gpr_vf(t2, vf17); // qmfc2.i t2, vf17 c->daddu(s5, v1, t1); // daddu s5, v1, t1 c->daddiu(v1, a3, 16); // daddiu v1, a3, 16 c->daddu(a1, a0, t1); // daddu a1, a0, t1 // nop // sll r0, r0, 0 c->daddu(s4, t3, t1); // daddu s4, t3, t1 // nop // sll r0, r0, 0 c->daddu(a0, t4, t1); // daddu a0, t4, t1 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 c->mov128_gpr_vf(t7, vf13); // qmfc2.ni t7, vf13 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 c->mov128_gpr_vf(a3, vf18); // qmfc2.ni a3, vf18 // nop // sll r0, r0, 0 c->lwu(t6, 0, s5); // lwu t6, 0(s5) // nop // sll r0, r0, 0 c->lwu(t3, 0, a1); // lwu t3, 0(a1) // nop // sll r0, r0, 0 c->lwu(t4, 0, s4); // lwu t4, 0(s4) // nop // sll r0, r0, 0 c->mov128_gpr_vf(t5, vf14); // qmfc2.ni t5, vf14 // nop // sll r0, r0, 0 c->lwu(a0, 0, a0); // lwu a0, 0(a0) c->daddiu(a1, t0, -4); // daddiu a1, t0, -4 c->sq(t7, 0, a2); // sq t7, 0(a2) // nop // sll r0, r0, 0 c->mov128_gpr_vf(t0, vf19); // qmfc2.ni t0, vf19 // nop // sll r0, r0, 0 c->sq(t2, 16, a2); // sq t2, 16(a2) // nop // sll r0, r0, 0 c->sw(t6, 28, a2); // sw t6, 28(a2) bc = ((s64)c->sgpr64(a1)) <= 0; // blez a1, L47 c->sq(a3, 48, a2); // sq a3, 48(a2) if (bc) {goto block_64;} // branch non-likely block_63: // Unknown instr: vcallms 264 vcallms_264(c); c->sw(t3, 60, a2); // sw t3, 60(a2) // nop // sll r0, r0, 0 c->sq(t5, 32, a2); // sq t5, 32(a2) // nop // sll r0, r0, 0 c->sq(t0, 80, a2); // sq t0, 80(a2) // nop // sll r0, r0, 0 c->sw(t4, 92, a2); // sw t4, 92(a2) // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 c->lbu(a3, 0, v1); // lbu a3, 0(v1) // nop // sll r0, r0, 0 c->lbu(t0, 4, v1); // lbu t0, 4(v1) // nop // sll r0, r0, 0 c->lbu(t2, 8, v1); // lbu t2, 8(v1) c->dsll(t3, a3, 2); // dsll t3, a3, 2 c->lbu(a3, 12, v1); // lbu a3, 12(v1) c->dsll(t6, t0, 2); // dsll t6, t0, 2 c->mov128_gpr_vf(t0, vf15); // qmfc2.i t0, vf15 c->dsll(t4, t2, 2); // dsll t4, t2, 2 c->mov128_gpr_vf(t2, vf20); // qmfc2.ni t2, vf20 c->dsll(t5, a3, 2); // dsll t5, a3, 2 c->mov128_gpr_vf(a3, vf17); // qmfc2.ni a3, vf17 c->daddu(s5, t3, t1); // daddu s5, t3, t1 c->daddiu(v1, v1, 16); // daddiu v1, v1, 16 c->daddu(t3, t6, t1); // daddu t3, t6, t1 c->mov128_gpr_vf(t6, vf16); // qmfc2.ni t6, vf16 c->daddu(s4, t4, t1); // daddu s4, t4, t1 c->sq(t0, 64, a2); // sq t0, 64(a2) c->daddu(t0, t5, t1); // daddu t0, t5, t1 c->sq(t2, 112, a2); // sq t2, 112(a2) // nop // sll r0, r0, 0 c->mov128_gpr_vf(t2, vf13); // qmfc2.ni t2, vf13 // nop // sll r0, r0, 0 c->sw(a0, 124, a2); // sw a0, 124(a2) // nop // sll r0, r0, 0 c->sq(t6, 96, a2); // sq t6, 96(a2) // nop // sll r0, r0, 0 c->mov128_gpr_vf(t6, vf18); // qmfc2.ni t6, vf18 // nop // sll r0, r0, 0 c->lwu(t7, 0, s5); // lwu t7, 0(s5) // nop // sll r0, r0, 0 c->lwu(t3, 0, t3); // lwu t3, 0(t3) // nop // sll r0, r0, 0 c->lwu(t4, 0, s4); // lwu t4, 0(s4) // nop // sll r0, r0, 0 c->mov128_gpr_vf(t5, vf14); // qmfc2.ni t5, vf14 c->daddiu(a2, a2, 128); // daddiu a2, a2, 128 c->lwu(a0, 0, t0); // lwu a0, 0(t0) c->daddiu(a1, a1, -4); // daddiu a1, a1, -4 c->sq(t2, 0, a2); // sq t2, 0(a2) // nop // sll r0, r0, 0 c->mov128_gpr_vf(t0, vf19); // qmfc2.ni t0, vf19 // nop // sll r0, r0, 0 c->sq(a3, 16, a2); // sq a3, 16(a2) // nop // sll r0, r0, 0 c->sw(t7, 28, a2); // sw t7, 28(a2) bc = ((s64)c->sgpr64(a1)) > 0; // bgtz a1, L46 c->sq(t6, 48, a2); // sq t6, 48(a2) if (bc) {goto block_63;} // branch non-likely block_64: // nop // sll r0, r0, 0 // Unknown instr: vcallms 292 vcallms_292(c); // nop // sll r0, r0, 0 c->sw(t3, 60, a2); // sw t3, 60(a2) // nop // sll r0, r0, 0 c->sq(t5, 32, a2); // sq t5, 32(a2) // nop // sll r0, r0, 0 c->sq(t0, 80, a2); // sq t0, 80(a2) // nop // sll r0, r0, 0 c->sw(t4, 92, a2); // sw t4, 92(a2) // nop // sll r0, r0, 0 c->mov128_gpr_vf(v1, vf15); // qmfc2.i v1, vf15 // nop // sll r0, r0, 0 c->mov128_gpr_vf(a1, vf20); // qmfc2.ni a1, vf20 // nop // sll r0, r0, 0 c->mov128_gpr_vf(a3, vf16); // qmfc2.ni a3, vf16 // nop // sll r0, r0, 0 c->sq(v1, 64, a2); // sq v1, 64(a2) // nop // sll r0, r0, 0 c->sq(a1, 112, a2); // sq a1, 112(a2) // nop // sll r0, r0, 0 c->sw(a0, 124, a2); // sw a0, 124(a2) // nop // sll r0, r0, 0 c->sq(a3, 96, a2); // sq a3, 96(a2) block_65: c->gprs[v1].du64[0] = 0; // or v1, r0, r0 c->lw(v1, 644, at); // lw v1, 644(at) c->lw(a0, 716, at); // lw a0, 716(at) c->daddiu(a1, at, 12064); // daddiu a1, at, 12064 c->sw(v1, 64, at); // sw v1, 64(at) c->sw(a0, 60, at); // sw a0, 60(at) c->sw(a1, 68, at); // sw a1, 68(at) c->sw(r0, 72, at); // sw r0, 72(at) c->lw(v1, 748, at); // lw v1, 748(at) call_addr = c->gprs[v1].du32[0]; // function call: // Unknown instr: sllv v0, ra, r0 // c->jalr(call_addr); // jalr ra, v1 generic_prepare_dma_double::execute(c); c->lw(v1, 752, at); // lw v1, 752(at) call_addr = c->gprs[v1].du32[0]; // function call: // Unknown instr: sllv v0, ra, r0 // c->jalr(call_addr); // jalr ra, v1 generic_envmap_dproc::execute(c); c->lw(v1, 756, at); // lw v1, 756(at) call_addr = c->gprs[v1].du32[0]; // function call: // Unknown instr: sllv v0, ra, r0 // c->jalr(call_addr); // jalr ra, v1 generic_interp_dproc::execute(c); c->lw(v1, 760, at); // lw v1, 760(at) call_addr = c->gprs[v1].du32[0]; // function call: // Unknown instr: sllv v0, ra, r0 // c->jalr(call_addr); // jalr ra, v1 generic_no_light_dproc::execute(c); c->lw(v1, 40, at); // lw v1, 40(at) c->lw(a0, 56, at); // lw a0, 56(at) c->mov64(a3, v1); // or a3, v1, r0 // nop // sll r0, r0, 0 get_fake_spad_addr(at, cache.fake_scratchpad_data, 0, c);// lui at, 28672 c->lui(a2, 4096); // lui a2, 4096 c->lwu(a1, 76, at); // lwu a1, 76(at) c->ori(a2, a2, 53248); // ori a2, a2, 53248 // c->lw(t1, 0, a2); // lw t1, 0(a2) // nop // sll r0, r0, 0 c->daddiu(t0, at, 108); // daddiu t0, at, 108 c->andi(a3, a3, 16383); // andi a3, a3, 16383 c->andi(t1, t1, 256); // andi t1, t1, 256 // nop // sll r0, r0, 0 bc = true; // c->sgpr64(t1) == 0; // beq t1, r0, L50 // nop // sll r0, r0, 0 if (bc) {goto block_69;} // branch non-likely c->mov64(t1, a2); // or t1, a2, r0 // nop // sll r0, r0, 0 block_67: c->lw(t2, 0, t0); // lw t2, 0(t0) // nop // sll r0, r0, 0 c->lw(t3, 0, t1); // lw t3, 0(t1) // nop // sll r0, r0, 0 c->andi(t3, t3, 256); // andi t3, t3, 256 c->daddiu(t2, t2, 1); // daddiu t2, t2, 1 bc = c->sgpr64(t3) != 0; // bne t3, r0, L49 c->sw(t2, 0, t0); // sw t2, 0(t0) if (bc) {goto block_67;} // branch non-likely c->gprs[t0].du64[0] = 0; // or t0, r0, r0 block_69: c->dsll(t0, a0, 4); // dsll t0, a0, 4 // c->sw(a3, 128, a2); // sw a3, 128(a2) sadr = c->sgpr64(a3); // nop // sll r0, r0, 0 // c->sw(a1, 16, a2); // sw a1, 16(a2) madr = c->sgpr64(a1); c->addiu(a3, r0, 256); // addiu a3, r0, 256 // c->sw(a0, 32, a2); // sw a0, 32(a2) qwc = c->sgpr64(a0); c->daddu(a0, a1, t0); // daddu a0, a1, t0 // c->sw(a3, 0, a2); // sw a3, 0(a2) spad_from_dma_no_sadr_off(cache.fake_scratchpad_data, madr, sadr, qwc); // nop // sll r0, r0, 0 c->sw(a0, 76, at); // sw a0, 76(at) c->gprs[a0].du64[0] = 0; // or a0, r0, r0 c->xori(v1, v1, 4608); // xori v1, v1, 4608 c->sw(v1, 40, at); // sw v1, 40(at) // nop // sll r0, r0, 0 c->lw(v1, 740, at); // lw v1, 740(at) // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 bc = c->sgpr64(v1) == 0; // beq v1, r0, L9 // nop // sll r0, r0, 0 if (bc) {goto block_1;} // branch non-likely block_70: c->gprs[v0].du64[0] = 0; // or v0, r0, r0 c->ld(ra, 384, at); // ld ra, 384(at) c->lq(gp, 496, at); // lq gp, 496(at) c->lq(s5, 480, at); // lq s5, 480(at) c->lq(s4, 464, at); // lq s4, 464(at) c->lq(s3, 448, at); // lq s3, 448(at) c->lq(s2, 432, at); // lq s2, 432(at) c->lq(s1, 416, at); // lq s1, 416(at) c->lq(s0, 400, at); // lq s0, 400(at) //jr ra // jr ra c->daddiu(sp, sp, 128); // daddiu sp, sp, 128 goto end_of_function; // return // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 // nop // sll r0, r0, 0 end_of_function: return c->gprs[v0].du64[0]; } void link() { cache.fake_scratchpad_data = intern_from_c("*fake-scratchpad-data*").c(); gLinkedFunctionTable.reg("generic-tie-convert", execute, 256); } } // namespace generic_tie_convert } // namespace Mips2C