mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 11:26:18 -04:00
1623 lines
91 KiB
C++
1623 lines
91 KiB
C++
//--------------------------MIPS2C---------------------
|
|
// clang-format off
|
|
#include "game/mips2c/mips2c_private.h"
|
|
#include "game/kernel/jak1/kscheme.h"
|
|
using namespace jak1;
|
|
namespace Mips2C::jak1 {
|
|
namespace draw_string {
|
|
struct Cache {
|
|
void* font_work; // *font-work*
|
|
void* font12_table; // *font12-table*
|
|
void* font24_table; // *font24-table*
|
|
void* math_camera; // *math-camera*
|
|
void* video_parms; // *video-parms*
|
|
} cache;
|
|
|
|
u64 execute(void* ctxt) {
|
|
auto* c = (ExecutionContext*)ctxt;
|
|
bool bc = false; c->load_symbol(v1, cache.math_camera); // lw v1, *math-camera*(s7)
|
|
c->lqc2(vf26, 732, v1); // lqc2 vf26, 732(v1)
|
|
c->lqc2(vf27, 732, v1); // lqc2 vf27, 732(v1)
|
|
c->vadd_bc(DEST::xy, BC::w, vf26, vf26, vf0); // vaddw.xy vf26, vf26, vf0
|
|
c->vadd_bc(DEST::x, BC::w, vf26, vf26, vf0); // vaddw.x vf26, vf26, vf0
|
|
c->lw(v1, 72, a2); // lw v1, 72(a2)
|
|
c->lqc2(vf25, 44, a2); // lqc2 vf25, 44(a2)
|
|
c->lqc2(vf23, 12, a2); // lqc2 vf23, 12(a2)
|
|
c->lqc2(vf24, 12, a2); // lqc2 vf24, 12(a2)
|
|
c->lqc2(vf28, 0, v1); // lqc2 vf28, 0(v1)
|
|
c->lqc2(vf29, 16, v1); // lqc2 vf29, 16(v1)
|
|
c->lqc2(vf30, 32, v1); // lqc2 vf30, 32(v1)
|
|
c->lqc2(vf31, 48, v1); // lqc2 vf31, 48(v1)
|
|
c->load_symbol(v1, cache.video_parms); // lw v1, *video-parms*(s7)
|
|
c->mov64(v1, v1); // or v1, v1, r0
|
|
c->lqc2(vf1, 64, v1); // lqc2 vf1, 64(v1)
|
|
c->vmul(DEST::xy, vf25, vf25, vf1); // vmul.xy vf25, vf25, vf1
|
|
c->vmul(DEST::xy, vf23, vf23, vf1); // vmul.xy vf23, vf23, vf1
|
|
c->vmul(DEST::xy, vf24, vf24, vf1); // vmul.xy vf24, vf24, vf1
|
|
c->load_symbol(v1, cache.font_work); // lw v1, *font-work*(s7)
|
|
c->mov64(v1, v1); // or v1, v1, r0
|
|
c->sw(a1, 3024, v1); // sw a1, 3024(v1)
|
|
c->lw(a1, 4, a1); // lw a1, 4(a1)
|
|
c->sw(a0, 3028, v1); // sw a0, 3028(v1)
|
|
c->lw(t2, 68, a2); // lw t2, 68(a2)
|
|
c->vmove(DEST::xyzw, vf1, vf0); // vmove.xyzw vf1, vf0
|
|
c->vmove(DEST::xyzw, vf2, vf0); // vmove.xyzw vf2, vf0
|
|
c->vmove(DEST::xyzw, vf3, vf0); // vmove.xyzw vf3, vf0
|
|
c->vmove(DEST::xyzw, vf4, vf0); // vmove.xyzw vf4, vf0
|
|
c->sw(t2, 3032, v1); // sw t2, 3032(v1)
|
|
c->lqc2(vf16, 240, v1); // lqc2 vf16, 240(v1)
|
|
c->lqc2(vf17, 256, v1); // lqc2 vf17, 256(v1)
|
|
c->lqc2(vf18, 272, v1); // lqc2 vf18, 272(v1)
|
|
c->andi(a3, t2, 32); // andi a3, t2, 32
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(a3) != 0; // bne a3, r0, L22
|
|
c->load_symbol(a3, cache.font12_table); // lw a3, *font12-table*(s7)
|
|
if (bc) {goto block_2;} // branch non-likely
|
|
|
|
c->mov64(a3, a3); // or a3, a3, r0
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf13, 144, v1); // lqc2 vf13, 144(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 160, v1); // lqc2 vf14, 160(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 176, v1); // lqc2 vf15, 176(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t0, 80, v1); // lq t0, 80(v1)
|
|
//beq r0, r0, L23 // beq r0, r0, L23
|
|
c->lq(t1, 96, v1); // lq t1, 96(v1)
|
|
goto block_3; // branch always
|
|
|
|
|
|
block_2:
|
|
// nop // sll r0, r0, 0
|
|
c->load_symbol(a3, cache.font24_table); // lw a3, *font24-table*(s7)
|
|
c->mov64(a3, a3); // or a3, a3, r0
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf13, 192, v1); // lqc2 vf13, 192(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 208, v1); // lqc2 vf14, 208(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 224, v1); // lqc2 vf15, 224(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t0, 112, v1); // lq t0, 112(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t1, 128, v1); // lq t1, 128(v1)
|
|
|
|
block_3:
|
|
c->lw(t3, 60, a2); // lw t3, 60(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sw(t3, 3008, v1); // sw t3, 3008(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sll(t3, t3, 4); // sll t3, t3, 4
|
|
// nop // sll r0, r0, 0
|
|
c->daddu(t4, t3, v1); // daddu t4, t3, v1
|
|
// nop // sll r0, r0, 0
|
|
// nop // sll r0, r0, 0
|
|
c->lwu(t3, 1984, t4); // lwu t3, 1984(t4)
|
|
// nop // sll r0, r0, 0
|
|
c->lwu(t5, 1988, t4); // lwu t5, 1988(t4)
|
|
c->pextlb(t6, r0, t3); // pextlb t6, r0, t3
|
|
c->lwu(t3, 1992, t4); // lwu t3, 1992(t4)
|
|
c->pextlh(t6, r0, t6); // pextlh t6, r0, t6
|
|
c->lwu(t4, 1996, t4); // lwu t4, 1996(t4)
|
|
c->pextlb(t5, r0, t5); // pextlb t5, r0, t5
|
|
c->sq(t6, 432, v1); // sq t6, 432(v1)
|
|
c->pextlh(t5, r0, t5); // pextlh t5, r0, t5
|
|
c->sq(t6, 816, v1); // sq t6, 816(v1)
|
|
c->pextlb(t3, r0, t3); // pextlb t3, r0, t3
|
|
c->sq(t5, 448, v1); // sq t5, 448(v1)
|
|
c->pextlh(t3, r0, t3); // pextlh t3, r0, t3
|
|
c->sq(t5, 832, v1); // sq t5, 832(v1)
|
|
c->pextlb(t4, r0, t4); // pextlb t4, r0, t4
|
|
c->sq(t3, 464, v1); // sq t3, 464(v1)
|
|
c->pextlh(t4, r0, t4); // pextlh t4, r0, t4
|
|
c->sq(t3, 848, v1); // sq t3, 848(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t4, 480, v1); // sq t4, 480(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t4, 864, v1); // sq t4, 864(v1)
|
|
c->mov64(t3, v1); // or t3, v1, r0
|
|
// nop // sll r0, r0, 0
|
|
|
|
block_4:
|
|
c->lbu(t4, 4, a0); // lbu t4, 4(a0)
|
|
c->daddiu(a0, a0, 1); // daddiu a0, a0, 1
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L47
|
|
c->daddiu(t5, t4, -1); // daddiu t5, t4, -1
|
|
if (bc) {goto block_67;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L39
|
|
c->daddiu(t5, t4, -126); // daddiu t5, t4, -126
|
|
if (bc) {goto block_54;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) != 0; // bne t5, r0, L40
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_55;} // branch non-likely
|
|
|
|
c->lbu(t4, 4, a0); // lbu t4, 4(a0)
|
|
c->daddiu(a0, a0, 1); // daddiu a0, a0, 1
|
|
c->addiu(t5, r0, 0); // addiu t5, r0, 0
|
|
c->addiu(t6, r0, 0); // addiu t6, r0, 0
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L47
|
|
c->daddiu(t7, t4, -43); // daddiu t7, t4, -43
|
|
if (bc) {goto block_67;} // branch non-likely
|
|
|
|
c->movz(t5, t4, t7); // movz t5, t4, t7
|
|
c->daddiu(t7, t4, -45); // daddiu t7, t4, -45
|
|
c->movz(t5, t4, t7); // movz t5, t4, t7
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t5) != 0; // bne t5, r0, L25
|
|
c->daddiu(t7, t4, -121); // daddiu t7, t4, -121
|
|
if (bc) {goto block_15;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L37
|
|
c->daddiu(t6, t4, -89); // daddiu t6, t4, -89
|
|
if (bc) {goto block_52;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L37
|
|
c->daddiu(t6, t4, -122); // daddiu t6, t4, -122
|
|
if (bc) {goto block_52;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L38
|
|
c->daddiu(t6, t4, -90); // daddiu t6, t4, -90
|
|
if (bc) {goto block_53;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L38
|
|
c->daddiu(t6, t4, -48); // daddiu t6, t4, -48
|
|
if (bc) {goto block_53;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t6)) < 0; // bltz t6, L40
|
|
c->daddiu(t6, t4, -57); // daddiu t6, t4, -57
|
|
if (bc) {goto block_55;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t6)) > 0; // bgtz t6, L40
|
|
c->daddiu(t6, t4, -48); // daddiu t6, t4, -48
|
|
if (bc) {goto block_55;} // branch non-likely
|
|
|
|
|
|
block_15:
|
|
c->lbu(t4, 4, a0); // lbu t4, 4(a0)
|
|
c->daddiu(a0, a0, 1); // daddiu a0, a0, 1
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L47
|
|
c->daddiu(t7, t4, -110); // daddiu t7, t4, -110
|
|
if (bc) {goto block_67;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L26
|
|
c->daddiu(t7, t4, -78); // daddiu t7, t4, -78
|
|
if (bc) {goto block_33;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L26
|
|
c->daddiu(t7, t4, -108); // daddiu t7, t4, -108
|
|
if (bc) {goto block_33;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L24
|
|
c->daddiu(t7, t4, -76); // daddiu t7, t4, -76
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L24
|
|
c->daddiu(t7, t4, -119); // daddiu t7, t4, -119
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L24
|
|
c->daddiu(t7, t4, -87); // daddiu t7, t4, -87
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L24
|
|
c->daddiu(t7, t4, -107); // daddiu t7, t4, -107
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L28
|
|
c->daddiu(t7, t4, -75); // daddiu t7, t4, -75
|
|
if (bc) {goto block_36;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L28
|
|
c->daddiu(t7, t4, -106); // daddiu t7, t4, -106
|
|
if (bc) {goto block_36;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L29
|
|
c->daddiu(t7, t4, -74); // daddiu t7, t4, -74
|
|
if (bc) {goto block_38;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L29
|
|
c->daddiu(t7, t4, -104); // daddiu t7, t4, -104
|
|
if (bc) {goto block_38;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L31
|
|
c->daddiu(t7, t4, -72); // daddiu t7, t4, -72
|
|
if (bc) {goto block_42;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L31
|
|
c->daddiu(t7, t4, -118); // daddiu t7, t4, -118
|
|
if (bc) {goto block_42;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L34
|
|
c->daddiu(t7, t4, -86); // daddiu t7, t4, -86
|
|
if (bc) {goto block_47;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L34
|
|
c->daddiu(t7, t4, -48); // daddiu t7, t4, -48
|
|
if (bc) {goto block_47;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t7)) < 0; // bltz t7, L40
|
|
c->daddiu(t8, t4, -57); // daddiu t8, t4, -57
|
|
if (bc) {goto block_55;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t8)) > 0; // bgtz t8, L40
|
|
c->sll(t8, t6, 2); // sll t8, t6, 2
|
|
if (bc) {goto block_55;} // branch non-likely
|
|
|
|
c->daddu(t4, t6, t8); // daddu t4, t6, t8
|
|
// nop // sll r0, r0, 0
|
|
c->sll(t4, t4, 1); // sll t4, t4, 1
|
|
// nop // sll r0, r0, 0
|
|
//beq r0, r0, L25 // beq r0, r0, L25
|
|
c->daddu(t6, t4, t7); // daddu t6, t4, t7
|
|
goto block_15; // branch always
|
|
|
|
|
|
block_33:
|
|
bc = c->sgpr64(t6) != 0; // bne t6, r0, L27
|
|
c->addiu(t0, r0, -33); // addiu t0, r0, -33
|
|
if (bc) {goto block_35;} // branch non-likely
|
|
|
|
c->load_symbol(a3, cache.font12_table); // lw a3, *font12-table*(s7)
|
|
c->mov64(a3, a3); // or a3, a3, r0
|
|
c->lqc2(vf13, 144, v1); // lqc2 vf13, 144(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 160, v1); // lqc2 vf14, 160(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 176, v1); // lqc2 vf15, 176(v1)
|
|
c->and_(t2, t2, t0); // and t2, t2, t0
|
|
c->lq(t0, 80, v1); // lq t0, 80(v1)
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->lq(t1, 96, v1); // lq t1, 96(v1)
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_35:
|
|
// nop // sll r0, r0, 0
|
|
c->load_symbol(a3, cache.font24_table); // lw a3, *font24-table*(s7)
|
|
c->mov64(a3, a3); // or a3, a3, r0
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf13, 192, v1); // lqc2 vf13, 192(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 208, v1); // lqc2 vf14, 208(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 224, v1); // lqc2 vf15, 224(v1)
|
|
c->ori(t2, t2, 32); // ori t2, t2, 32
|
|
c->lq(t0, 112, v1); // lq t0, 112(v1)
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->lq(t1, 128, v1); // lq t1, 128(v1)
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_36:
|
|
c->addiu(t4, r0, -3); // addiu t4, r0, -3
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L24
|
|
c->and_(t2, t2, t4); // and t2, t2, t4
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->ori(t2, t2, 2); // ori t2, t2, 2
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_38:
|
|
c->addiu(t4, r0, -21); // addiu t4, r0, -21
|
|
c->daddiu(t5, t6, -2); // daddiu t5, t6, -2
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L24
|
|
c->and_(t2, t2, t4); // and t2, t2, t4
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L30
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_41;} // branch non-likely
|
|
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->ori(t2, t2, 16); // ori t2, t2, 16
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_41:
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->ori(t2, t2, 4); // ori t2, t2, 4
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_42:
|
|
c->mov128_vf_gpr(vf1, t6); // qmtc2.i vf1, t6
|
|
c->daddiu(t4, t5, -45); // daddiu t4, t5, -45
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L33
|
|
c->vitof0(DEST::xyzw, vf1, vf1); // vitof0.xyzw vf1, vf1
|
|
if (bc) {goto block_46;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L32
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_45;} // branch non-likely
|
|
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf23, vf1); // vaddx.x vf23, vf23, vf1
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_45:
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->vsub_bc(DEST::x, BC::x, vf23, vf23, vf1); // vsubx.x vf23, vf23, vf1
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_46:
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf1); // vaddx.x vf23, vf0, vf1
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_47:
|
|
c->mov128_vf_gpr(vf1, t6); // qmtc2.i vf1, t6
|
|
c->daddiu(t4, t5, -45); // daddiu t4, t5, -45
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L36
|
|
c->vitof0(DEST::xyzw, vf1, vf1); // vitof0.xyzw vf1, vf1
|
|
if (bc) {goto block_51;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L35
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_50;} // branch non-likely
|
|
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->vadd_bc(DEST::y, BC::x, vf23, vf23, vf1); // vaddx.y vf23, vf23, vf1
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_50:
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->vsub_bc(DEST::y, BC::x, vf23, vf23, vf1); // vsubx.y vf23, vf23, vf1
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_51:
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->vadd_bc(DEST::y, BC::x, vf23, vf0, vf1); // vaddx.y vf23, vf0, vf1
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_52:
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->sqc2(vf23, 288, v1); // sqc2 vf23, 288(v1)
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_53:
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->lqc2(vf23, 288, v1); // lqc2 vf23, 288(v1)
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_54:
|
|
c->lbu(t4, 4, a0); // lbu t4, 4(a0)
|
|
c->daddiu(a0, a0, 1); // daddiu a0, a0, 1
|
|
c->vadd(DEST::xyz, vf4, vf23, vf15); // vadd.xyz vf4, vf23, vf15
|
|
c->andi(t4, t4, 127); // andi t4, t4, 127
|
|
c->vsub(DEST::xyzw, vf1, vf25, vf23); // vsub.xyzw vf1, vf25, vf23
|
|
c->daddiu(t4, t4, 255); // daddiu t4, t4, 255
|
|
//beq r0, r0, L44 // beq r0, r0, L44
|
|
c->sll(t5, t4, 4); // sll t5, t4, 4
|
|
goto block_62; // branch always
|
|
|
|
|
|
block_55:
|
|
c->vadd(DEST::xyz, vf4, vf23, vf15); // vadd.xyz vf4, vf23, vf15
|
|
c->sll(t5, t4, 4); // sll t5, t4, 4
|
|
c->vsub(DEST::xyzw, vf1, vf25, vf23); // vsub.xyzw vf1, vf25, vf23
|
|
c->daddiu(t6, t4, -10); // daddiu t6, t4, -10
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L41
|
|
c->daddiu(t4, t4, -13); // daddiu t4, t4, -13
|
|
if (bc) {goto block_57;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) != 0; // bne t4, r0, L44
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_62;} // branch non-likely
|
|
|
|
|
|
block_57:
|
|
c->vsub(DEST::xyzw, vf1, vf23, vf24); // vsub.xyzw vf1, vf23, vf24
|
|
c->andi(t4, t2, 16); // andi t4, t2, 16
|
|
bc = c->sgpr64(t4) != 0; // bne t4, r0, L42
|
|
c->andi(t4, t2, 4); // andi t4, t2, 4
|
|
if (bc) {goto block_60;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) != 0; // bne t4, r0, L43
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_61;} // branch non-likely
|
|
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf24); // vaddx.x vf23, vf0, vf24
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf23, 944, t3); // sqc2 vf23, 944(t3)
|
|
c->vadd_bc(DEST::y, BC::w, vf23, vf23, vf15); // vaddw.y vf23, vf23, vf15
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->daddiu(t3, t3, 16); // daddiu t3, t3, 16
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_60:
|
|
c->vsub(DEST::x, vf23, vf24, vf1); // vsub.x vf23, vf24, vf1
|
|
c->sqc2(vf23, 944, t3); // sqc2 vf23, 944(t3)
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf24); // vaddx.x vf23, vf0, vf24
|
|
c->vadd_bc(DEST::y, BC::w, vf23, vf23, vf15); // vaddw.y vf23, vf23, vf15
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->daddiu(t3, t3, 16); // daddiu t3, t3, 16
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_61:
|
|
c->vmul_bc(DEST::x, BC::w, vf1, vf1, vf16); // vmulw.x vf1, vf1, vf16
|
|
// nop // sll r0, r0, 0
|
|
c->vsub(DEST::x, vf23, vf24, vf1); // vsub.x vf23, vf24, vf1
|
|
c->sqc2(vf23, 944, t3); // sqc2 vf23, 944(t3)
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf24); // vaddx.x vf23, vf0, vf24
|
|
c->vadd_bc(DEST::y, BC::w, vf23, vf23, vf15); // vaddw.y vf23, vf23, vf15
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
c->daddiu(t3, t3, 16); // daddiu t3, t3, 16
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_62:
|
|
c->addu(t4, t5, a3); // addu t4, t5, a3
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf5, -256, t4); // lqc2 vf5, -256(t4)
|
|
c->mov128_gpr_vf(t4, vf1); // qmfc2.i t4, vf1
|
|
bc = ((s64)c->sgpr64(t4)) < 0; // bltz t4, L47
|
|
c->sra(t4, t4, 31); // sra t4, t4, 31
|
|
if (bc) {goto block_67;} // branch non-likely
|
|
|
|
c->vmul(DEST::xyzw, vf19, vf5, vf13); // vmul.xyzw vf19, vf5, vf13
|
|
c->andi(t4, t2, 2); // andi t4, t2, 2
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L45
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_65;} // branch non-likely
|
|
|
|
//beq r0, r0, L46 // beq r0, r0, L46
|
|
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf19); // vaddw.x vf23, vf23, vf19
|
|
goto block_66; // branch always
|
|
|
|
|
|
block_65:
|
|
// nop // sll r0, r0, 0
|
|
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf14); // vaddw.x vf23, vf23, vf14
|
|
|
|
block_66:
|
|
//beq r0, r0, L24 // beq r0, r0, L24
|
|
// nop // sll r0, r0, 0
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_67:
|
|
c->vsub(DEST::xyzw, vf1, vf23, vf24); // vsub.xyzw vf1, vf23, vf24
|
|
c->andi(a0, t2, 16); // andi a0, t2, 16
|
|
bc = c->sgpr64(a0) != 0; // bne a0, r0, L48
|
|
c->andi(a0, t2, 4); // andi a0, t2, 4
|
|
if (bc) {goto block_70;} // branch non-likely
|
|
|
|
bc = c->sgpr64(a0) != 0; // bne a0, r0, L49
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_71;} // branch non-likely
|
|
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf24); // vaddx.x vf23, vf0, vf24
|
|
// nop // sll r0, r0, 0
|
|
//beq r0, r0, L50 // beq r0, r0, L50
|
|
c->sqc2(vf23, 944, t3); // sqc2 vf23, 944(t3)
|
|
goto block_72; // branch always
|
|
|
|
|
|
block_70:
|
|
c->vsub(DEST::x, vf23, vf24, vf1); // vsub.x vf23, vf24, vf1
|
|
// nop // sll r0, r0, 0
|
|
//beq r0, r0, L50 // beq r0, r0, L50
|
|
c->sqc2(vf23, 944, t3); // sqc2 vf23, 944(t3)
|
|
goto block_72; // branch always
|
|
|
|
|
|
block_71:
|
|
c->vmul_bc(DEST::x, BC::w, vf1, vf1, vf16); // vmulw.x vf1, vf1, vf16
|
|
// nop // sll r0, r0, 0
|
|
c->vsub(DEST::x, vf23, vf24, vf1); // vsub.x vf23, vf24, vf1
|
|
c->sqc2(vf23, 944, t3); // sqc2 vf23, 944(t3)
|
|
|
|
block_72:
|
|
c->lw(a0, 3032, v1); // lw a0, 3032(v1)
|
|
c->mov64(t2, v1); // or t2, v1, r0
|
|
c->lw(t3, 3028, v1); // lw t3, 3028(v1)
|
|
c->lqc2(vf23, 944, t2); // lqc2 vf23, 944(t2)
|
|
|
|
block_73:
|
|
c->lbu(t4, 4, t3); // lbu t4, 4(t3)
|
|
c->daddiu(t3, t3, 1); // daddiu t3, t3, 1
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L71
|
|
c->daddiu(t5, t4, -1); // daddiu t5, t4, -1
|
|
if (bc) {goto block_131;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L65
|
|
c->daddiu(t5, t4, -126); // daddiu t5, t4, -126
|
|
if (bc) {goto block_121;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) != 0; // bne t5, r0, L66
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_122;} // branch non-likely
|
|
|
|
c->lbu(t4, 4, t3); // lbu t4, 4(t3)
|
|
c->daddiu(t3, t3, 1); // daddiu t3, t3, 1
|
|
c->addiu(t5, r0, 0); // addiu t5, r0, 0
|
|
c->addiu(t6, r0, 0); // addiu t6, r0, 0
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L71
|
|
c->daddiu(t7, t4, -43); // daddiu t7, t4, -43
|
|
if (bc) {goto block_131;} // branch non-likely
|
|
|
|
c->movz(t5, t4, t7); // movz t5, t4, t7
|
|
c->daddiu(t7, t4, -45); // daddiu t7, t4, -45
|
|
c->movz(t5, t4, t7); // movz t5, t4, t7
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t5) != 0; // bne t5, r0, L52
|
|
c->daddiu(t7, t4, -121); // daddiu t7, t4, -121
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L63
|
|
c->daddiu(t6, t4, -89); // daddiu t6, t4, -89
|
|
if (bc) {goto block_119;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L63
|
|
c->daddiu(t6, t4, -122); // daddiu t6, t4, -122
|
|
if (bc) {goto block_119;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L64
|
|
c->daddiu(t6, t4, -90); // daddiu t6, t4, -90
|
|
if (bc) {goto block_120;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L64
|
|
c->daddiu(t6, t4, -48); // daddiu t6, t4, -48
|
|
if (bc) {goto block_120;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t6)) < 0; // bltz t6, L66
|
|
c->daddiu(t6, t4, -57); // daddiu t6, t4, -57
|
|
if (bc) {goto block_122;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t6)) > 0; // bgtz t6, L66
|
|
c->daddiu(t6, t4, -48); // daddiu t6, t4, -48
|
|
if (bc) {goto block_122;} // branch non-likely
|
|
|
|
|
|
block_84:
|
|
c->lbu(t4, 4, t3); // lbu t4, 4(t3)
|
|
c->daddiu(t3, t3, 1); // daddiu t3, t3, 1
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L71
|
|
c->daddiu(t7, t4, -110); // daddiu t7, t4, -110
|
|
if (bc) {goto block_131;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L53
|
|
c->daddiu(t7, t4, -78); // daddiu t7, t4, -78
|
|
if (bc) {goto block_102;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L53
|
|
c->daddiu(t7, t4, -108); // daddiu t7, t4, -108
|
|
if (bc) {goto block_102;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L51
|
|
c->daddiu(t7, t4, -76); // daddiu t7, t4, -76
|
|
if (bc) {goto block_73;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L51
|
|
c->daddiu(t7, t4, -119); // daddiu t7, t4, -119
|
|
if (bc) {goto block_73;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L55
|
|
c->daddiu(t7, t4, -87); // daddiu t7, t4, -87
|
|
if (bc) {goto block_105;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L55
|
|
c->daddiu(t7, t4, -107); // daddiu t7, t4, -107
|
|
if (bc) {goto block_105;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L56
|
|
c->daddiu(t7, t4, -75); // daddiu t7, t4, -75
|
|
if (bc) {goto block_107;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L56
|
|
c->daddiu(t7, t4, -106); // daddiu t7, t4, -106
|
|
if (bc) {goto block_107;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L51
|
|
c->daddiu(t7, t4, -74); // daddiu t7, t4, -74
|
|
if (bc) {goto block_73;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L51
|
|
c->daddiu(t7, t4, -104); // daddiu t7, t4, -104
|
|
if (bc) {goto block_73;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L57
|
|
c->daddiu(t7, t4, -72); // daddiu t7, t4, -72
|
|
if (bc) {goto block_109;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L57
|
|
c->daddiu(t7, t4, -118); // daddiu t7, t4, -118
|
|
if (bc) {goto block_109;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L60
|
|
c->daddiu(t7, t4, -86); // daddiu t7, t4, -86
|
|
if (bc) {goto block_114;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L60
|
|
c->daddiu(t7, t4, -48); // daddiu t7, t4, -48
|
|
if (bc) {goto block_114;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t7)) < 0; // bltz t7, L66
|
|
c->daddiu(t8, t4, -57); // daddiu t8, t4, -57
|
|
if (bc) {goto block_122;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t8)) > 0; // bgtz t8, L66
|
|
c->sll(t8, t6, 2); // sll t8, t6, 2
|
|
if (bc) {goto block_122;} // branch non-likely
|
|
|
|
c->daddu(t4, t6, t8); // daddu t4, t6, t8
|
|
// nop // sll r0, r0, 0
|
|
c->sll(t4, t4, 1); // sll t4, t4, 1
|
|
// nop // sll r0, r0, 0
|
|
//beq r0, r0, L52 // beq r0, r0, L52
|
|
c->daddu(t6, t4, t7); // daddu t6, t4, t7
|
|
goto block_84; // branch always
|
|
|
|
|
|
block_102:
|
|
bc = c->sgpr64(t6) != 0; // bne t6, r0, L54
|
|
c->load_symbol(a3, cache.font12_table); // lw a3, *font12-table*(s7)
|
|
if (bc) {goto block_104;} // branch non-likely
|
|
|
|
c->mov64(a3, a3); // or a3, a3, r0
|
|
c->addiu(t0, r0, -33); // addiu t0, r0, -33
|
|
c->lqc2(vf13, 144, v1); // lqc2 vf13, 144(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 160, v1); // lqc2 vf14, 160(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 176, v1); // lqc2 vf15, 176(v1)
|
|
c->and_(a0, a0, t0); // and a0, a0, t0
|
|
c->lq(t0, 80, v1); // lq t0, 80(v1)
|
|
//beq r0, r0, L51 // beq r0, r0, L51
|
|
c->lq(t1, 96, v1); // lq t1, 96(v1)
|
|
goto block_73; // branch always
|
|
|
|
|
|
block_104:
|
|
// nop // sll r0, r0, 0
|
|
c->load_symbol(a3, cache.font24_table); // lw a3, *font24-table*(s7)
|
|
c->mov64(a3, a3); // or a3, a3, r0
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf13, 192, v1); // lqc2 vf13, 192(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 208, v1); // lqc2 vf14, 208(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 224, v1); // lqc2 vf15, 224(v1)
|
|
c->ori(a0, a0, 32); // ori a0, a0, 32
|
|
c->lq(t0, 112, v1); // lq t0, 112(v1)
|
|
//beq r0, r0, L51 // beq r0, r0, L51
|
|
c->lq(t1, 128, v1); // lq t1, 128(v1)
|
|
goto block_73; // branch always
|
|
|
|
|
|
block_105:
|
|
c->addiu(t4, r0, -2); // addiu t4, r0, -2
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L51
|
|
c->and_(a0, a0, t4); // and a0, a0, t4
|
|
if (bc) {goto block_73;} // branch non-likely
|
|
|
|
//beq r0, r0, L51 // beq r0, r0, L51
|
|
c->ori(a0, a0, 1); // ori a0, a0, 1
|
|
goto block_73; // branch always
|
|
|
|
|
|
block_107:
|
|
c->addiu(t4, r0, -3); // addiu t4, r0, -3
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L51
|
|
c->and_(a0, a0, t4); // and a0, a0, t4
|
|
if (bc) {goto block_73;} // branch non-likely
|
|
|
|
//beq r0, r0, L51 // beq r0, r0, L51
|
|
c->ori(a0, a0, 2); // ori a0, a0, 2
|
|
goto block_73; // branch always
|
|
|
|
|
|
block_109:
|
|
c->mov128_vf_gpr(vf1, t6); // qmtc2.i vf1, t6
|
|
c->daddiu(t4, t5, -45); // daddiu t4, t5, -45
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L59
|
|
c->vitof0(DEST::xyzw, vf1, vf1); // vitof0.xyzw vf1, vf1
|
|
if (bc) {goto block_113;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L58
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_112;} // branch non-likely
|
|
|
|
//beq r0, r0, L51 // beq r0, r0, L51
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf23, vf1); // vaddx.x vf23, vf23, vf1
|
|
goto block_73; // branch always
|
|
|
|
|
|
block_112:
|
|
//beq r0, r0, L51 // beq r0, r0, L51
|
|
c->vsub_bc(DEST::x, BC::x, vf23, vf23, vf1); // vsubx.x vf23, vf23, vf1
|
|
goto block_73; // branch always
|
|
|
|
|
|
block_113:
|
|
//beq r0, r0, L51 // beq r0, r0, L51
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf1); // vaddx.x vf23, vf0, vf1
|
|
goto block_73; // branch always
|
|
|
|
|
|
block_114:
|
|
c->mov128_vf_gpr(vf1, t6); // qmtc2.i vf1, t6
|
|
c->daddiu(t4, t5, -45); // daddiu t4, t5, -45
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L62
|
|
c->vitof0(DEST::xyzw, vf1, vf1); // vitof0.xyzw vf1, vf1
|
|
if (bc) {goto block_118;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L61
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_117;} // branch non-likely
|
|
|
|
//beq r0, r0, L51 // beq r0, r0, L51
|
|
c->vadd_bc(DEST::y, BC::x, vf23, vf23, vf1); // vaddx.y vf23, vf23, vf1
|
|
goto block_73; // branch always
|
|
|
|
|
|
block_117:
|
|
//beq r0, r0, L51 // beq r0, r0, L51
|
|
c->vsub_bc(DEST::y, BC::x, vf23, vf23, vf1); // vsubx.y vf23, vf23, vf1
|
|
goto block_73; // branch always
|
|
|
|
|
|
block_118:
|
|
//beq r0, r0, L51 // beq r0, r0, L51
|
|
c->vadd_bc(DEST::y, BC::x, vf23, vf0, vf1); // vaddx.y vf23, vf0, vf1
|
|
goto block_73; // branch always
|
|
|
|
|
|
block_119:
|
|
//beq r0, r0, L51 // beq r0, r0, L51
|
|
c->sqc2(vf23, 288, v1); // sqc2 vf23, 288(v1)
|
|
goto block_73; // branch always
|
|
|
|
|
|
block_120:
|
|
//beq r0, r0, L51 // beq r0, r0, L51
|
|
c->lqc2(vf23, 288, v1); // lqc2 vf23, 288(v1)
|
|
goto block_73; // branch always
|
|
|
|
|
|
block_121:
|
|
c->lbu(t4, 4, t3); // lbu t4, 4(t3)
|
|
c->daddiu(t3, t3, 1); // daddiu t3, t3, 1
|
|
c->vadd(DEST::xyz, vf4, vf23, vf15); // vadd.xyz vf4, vf23, vf15
|
|
c->andi(t5, t4, 127); // andi t5, t4, 127
|
|
c->vsub(DEST::xyzw, vf1, vf25, vf23); // vsub.xyzw vf1, vf25, vf23
|
|
c->daddiu(t5, t5, 255); // daddiu t5, t5, 255
|
|
//beq r0, r0, L68 // beq r0, r0, L68
|
|
c->sll(t5, t5, 4); // sll t5, t5, 4
|
|
goto block_125; // branch always
|
|
|
|
|
|
block_122:
|
|
c->vadd(DEST::xyz, vf4, vf23, vf15); // vadd.xyz vf4, vf23, vf15
|
|
c->sll(t5, t4, 4); // sll t5, t4, 4
|
|
c->vsub(DEST::xyzw, vf1, vf25, vf23); // vsub.xyzw vf1, vf25, vf23
|
|
c->daddiu(t6, t4, -10); // daddiu t6, t4, -10
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L67
|
|
c->daddiu(t6, t4, -13); // daddiu t6, t4, -13
|
|
if (bc) {goto block_124;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t6) != 0; // bne t6, r0, L68
|
|
c->andi(t6, a0, 1); // andi t6, a0, 1
|
|
if (bc) {goto block_125;} // branch non-likely
|
|
|
|
|
|
block_124:
|
|
c->daddiu(t2, t2, 16); // daddiu t2, t2, 16
|
|
// nop // sll r0, r0, 0
|
|
//beq r0, r0, L51 // beq r0, r0, L51
|
|
c->lqc2(vf23, 944, t2); // lqc2 vf23, 944(t2)
|
|
goto block_73; // branch always
|
|
|
|
|
|
block_125:
|
|
c->addu(t5, t5, a3); // addu t5, t5, a3
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf5, -256, t5); // lqc2 vf5, -256(t5)
|
|
c->mov128_gpr_vf(t5, vf1); // qmfc2.i t5, vf1
|
|
bc = ((s64)c->sgpr64(t5)) < 0; // bltz t5, L71
|
|
c->vadd(DEST::xyz, vf6, vf5, vf16); // vadd.xyz vf6, vf5, vf16
|
|
if (bc) {goto block_131;} // branch non-likely
|
|
|
|
c->sra(t5, t5, 31); // sra t5, t5, 31
|
|
c->vadd(DEST::xyz, vf7, vf5, vf17); // vadd.xyz vf7, vf5, vf17
|
|
bc = ((s64)c->sgpr64(t5)) < 0; // bltz t5, L51
|
|
c->vadd(DEST::xyz, vf8, vf5, vf18); // vadd.xyz vf8, vf5, vf18
|
|
if (bc) {goto block_73;} // branch non-likely
|
|
|
|
c->vadd(DEST::xyz, vf1, vf23, vf0); // vadd.xyz vf1, vf23, vf0
|
|
// nop // sll r0, r0, 0
|
|
c->vadd(DEST::xyz, vf2, vf23, vf13); // vadd.xyz vf2, vf23, vf13
|
|
c->sqc2(vf5, 496, v1); // sqc2 vf5, 496(v1)
|
|
c->vadd(DEST::xyz, vf3, vf23, vf14); // vadd.xyz vf3, vf23, vf14
|
|
c->sqc2(vf6, 512, v1); // sqc2 vf6, 512(v1)
|
|
c->vmul(DEST::xyzw, vf19, vf5, vf13); // vmul.xyzw vf19, vf5, vf13
|
|
c->sqc2(vf7, 528, v1); // sqc2 vf7, 528(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf8, 544, v1); // sqc2 vf8, 544(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf1, 368, v1); // sqc2 vf1, 368(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf2, 384, v1); // sqc2 vf2, 384(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf3, 400, v1); // sqc2 vf3, 400(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf4, 416, v1); // sqc2 vf4, 416(v1)
|
|
c->lqc2(vf1, 368, v1); // lqc2 vf1, 368(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf2, 384, v1); // lqc2 vf2, 384(v1)
|
|
c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0); // vmulaw.xyzw acc, vf31, vf0
|
|
c->lqc2(vf3, 400, v1); // lqc2 vf3, 400(v1)
|
|
c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf1); // vmaddax.xyzw acc, vf28, vf1
|
|
c->lqc2(vf4, 416, v1); // lqc2 vf4, 416(v1)
|
|
c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf1); // vmadday.xyzw acc, vf29, vf1
|
|
// nop // sll r0, r0, 0
|
|
c->vmadd_bc(DEST::xyzw, BC::z, vf1, vf30, vf1); // vmaddz.xyzw vf1, vf30, vf1
|
|
// nop // sll r0, r0, 0
|
|
c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0); // vmulaw.xyzw acc, vf31, vf0
|
|
// nop // sll r0, r0, 0
|
|
c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf2); // vmaddax.xyzw acc, vf28, vf2
|
|
// nop // sll r0, r0, 0
|
|
c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf2); // vmadday.xyzw acc, vf29, vf2
|
|
// nop // sll r0, r0, 0
|
|
c->vmadd_bc(DEST::xyzw, BC::z, vf2, vf30, vf2); // vmaddz.xyzw vf2, vf30, vf2
|
|
// nop // sll r0, r0, 0
|
|
c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0); // vmulaw.xyzw acc, vf31, vf0
|
|
// nop // sll r0, r0, 0
|
|
c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf3); // vmaddax.xyzw acc, vf28, vf3
|
|
// nop // sll r0, r0, 0
|
|
c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf3); // vmadday.xyzw acc, vf29, vf3
|
|
// nop // sll r0, r0, 0
|
|
c->vmadd_bc(DEST::xyzw, BC::z, vf3, vf30, vf3); // vmaddz.xyzw vf3, vf30, vf3
|
|
// nop // sll r0, r0, 0
|
|
c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0); // vmulaw.xyzw acc, vf31, vf0
|
|
// nop // sll r0, r0, 0
|
|
c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf4); // vmaddax.xyzw acc, vf28, vf4
|
|
// nop // sll r0, r0, 0
|
|
c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf4); // vmadday.xyzw acc, vf29, vf4
|
|
// nop // sll r0, r0, 0
|
|
c->vmadd_bc(DEST::xyzw, BC::z, vf4, vf30, vf4); // vmaddz.xyzw vf4, vf30, vf4
|
|
c->vdiv(vf25, BC::z, vf1, BC::w); // vdiv Q, vf25.z, vf1.w
|
|
c->lq(t5, 32, v1); // lq t5, 32(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t6, 48, v1); // lq t6, 48(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t5, 0, a1); // sq t5, 0(a1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t6, 16, a1); // sq t6, 16(a1)
|
|
c->lqc2(vf5, 496, v1); // lqc2 vf5, 496(v1)
|
|
c->mov128_gpr_gpr(t5, t0); // por t5, t0, r0
|
|
c->lqc2(vf6, 512, v1); // lqc2 vf6, 512(v1)
|
|
c->andi(t4, t4, 128); // andi t4, t4, 128
|
|
c->lqc2(vf7, 528, v1); // lqc2 vf7, 528(v1)
|
|
c->movn(t5, t1, t4); // movn t5, t1, t4
|
|
c->vmulq(DEST::xyz, vf1, vf1); // vmulq.xyz vf1, vf1, Q
|
|
c->sq(t5, 32, a1); // sq t5, 32(a1)
|
|
c->vmulq(DEST::xyz, vf5, vf5); // vmulq.xyz vf5, vf5, Q
|
|
// nop // sll r0, r0, 0
|
|
// nop // vnop
|
|
// nop // sll r0, r0, 0
|
|
// nop // vnop
|
|
// nop // sll r0, r0, 0
|
|
c->vdiv(vf25, BC::z, vf2, BC::w); // vdiv Q, vf25.z, vf2.w
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf8, 544, v1); // lqc2 vf8, 544(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->vadd(DEST::xyzw, vf1, vf1, vf26); // vadd.xyzw vf1, vf1, vf26
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf9, 1968, v1); // lqc2 vf9, 1968(v1)
|
|
// 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->vftoi4(DEST::xyzw, vf1, vf1); // vftoi4.xyzw vf1, vf1
|
|
// nop // sll r0, r0, 0
|
|
c->vmulq(DEST::xyz, vf2, vf2); // vmulq.xyz vf2, vf2, Q
|
|
// nop // sll r0, r0, 0
|
|
c->vmulq(DEST::xyz, vf6, vf6); // vmulq.xyz vf6, vf6, Q
|
|
c->sqc2(vf5, 48, a1); // sqc2 vf5, 48(a1)
|
|
// nop // vnop
|
|
// nop // sll r0, r0, 0
|
|
// nop // vnop
|
|
// nop // sll r0, r0, 0
|
|
c->vdiv(vf25, BC::z, vf3, BC::w); // vdiv Q, vf25.z, vf3.w
|
|
c->sqc2(vf9, 64, a1); // sqc2 vf9, 64(a1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf1, 80, a1); // sqc2 vf1, 80(a1)
|
|
c->vadd(DEST::xyzw, vf2, vf2, vf26); // vadd.xyzw vf2, vf2, vf26
|
|
// 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->vftoi4(DEST::xyzw, vf2, vf2); // vftoi4.xyzw vf2, vf2
|
|
// nop // sll r0, r0, 0
|
|
c->vmulq(DEST::xyz, vf3, vf3); // vmulq.xyz vf3, vf3, Q
|
|
// nop // sll r0, r0, 0
|
|
c->vmulq(DEST::xyz, vf7, vf7); // vmulq.xyz vf7, vf7, Q
|
|
c->sqc2(vf6, 96, a1); // sqc2 vf6, 96(a1)
|
|
// nop // vnop
|
|
// nop // sll r0, r0, 0
|
|
// nop // vnop
|
|
// nop // sll r0, r0, 0
|
|
c->vdiv(vf25, BC::z, vf4, BC::w); // vdiv Q, vf25.z, vf4.w
|
|
c->sqc2(vf9, 112, a1); // sqc2 vf9, 112(a1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf2, 128, a1); // sqc2 vf2, 128(a1)
|
|
c->vadd(DEST::xyzw, vf3, vf3, vf26); // vadd.xyzw vf3, vf3, vf26
|
|
// 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->vftoi4(DEST::xyzw, vf3, vf3); // vftoi4.xyzw vf3, vf3
|
|
// nop // sll r0, r0, 0
|
|
c->vmulq(DEST::xyz, vf4, vf4); // vmulq.xyz vf4, vf4, Q
|
|
// nop // sll r0, r0, 0
|
|
c->vmulq(DEST::xyz, vf8, vf8); // vmulq.xyz vf8, vf8, Q
|
|
c->sqc2(vf7, 144, a1); // sqc2 vf7, 144(a1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf9, 160, a1); // sqc2 vf9, 160(a1)
|
|
c->vadd(DEST::xyzw, vf4, vf4, vf26); // vadd.xyzw vf4, vf4, vf26
|
|
c->sqc2(vf3, 176, a1); // sqc2 vf3, 176(a1)
|
|
c->andi(t4, a0, 2); // andi t4, a0, 2
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L69
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_129;} // branch non-likely
|
|
|
|
//beq r0, r0, L70 // beq r0, r0, L70
|
|
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf19); // vaddw.x vf23, vf23, vf19
|
|
goto block_130; // branch always
|
|
|
|
|
|
block_129:
|
|
// nop // sll r0, r0, 0
|
|
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf14); // vaddw.x vf23, vf23, vf14
|
|
|
|
block_130:
|
|
c->vftoi4(DEST::xyzw, vf4, vf4); // vftoi4.xyzw vf4, vf4
|
|
// nop // sll r0, r0, 0
|
|
// nop // sll r0, r0, 0
|
|
// nop // sll r0, r0, 0
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf8, 192, a1); // sqc2 vf8, 192(a1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf9, 208, a1); // sqc2 vf9, 208(a1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf4, 224, a1); // sqc2 vf4, 224(a1)
|
|
//beq r0, r0, L51 // beq r0, r0, L51
|
|
c->daddiu(a1, a1, 240); // daddiu a1, a1, 240
|
|
goto block_73; // branch always
|
|
|
|
|
|
block_131:
|
|
c->lw(a0, 3032, v1); // lw a0, 3032(v1)
|
|
c->mov64(t2, v1); // or t2, v1, r0
|
|
c->lw(t3, 3028, v1); // lw t3, 3028(v1)
|
|
c->lqc2(vf23, 944, t2); // lqc2 vf23, 944(t2)
|
|
|
|
block_132:
|
|
c->lbu(t4, 4, t3); // lbu t4, 4(t3)
|
|
c->daddiu(t3, t3, 1); // daddiu t3, t3, 1
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L92
|
|
c->daddiu(t5, t4, -1); // daddiu t5, t4, -1
|
|
if (bc) {goto block_189;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L86
|
|
c->daddiu(t5, t4, -126); // daddiu t5, t4, -126
|
|
if (bc) {goto block_179;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) != 0; // bne t5, r0, L87
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_180;} // branch non-likely
|
|
|
|
c->lbu(t4, 4, t3); // lbu t4, 4(t3)
|
|
c->daddiu(t3, t3, 1); // daddiu t3, t3, 1
|
|
c->addiu(t5, r0, 0); // addiu t5, r0, 0
|
|
c->addiu(t6, r0, 0); // addiu t6, r0, 0
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L92
|
|
c->daddiu(t7, t4, -43); // daddiu t7, t4, -43
|
|
if (bc) {goto block_189;} // branch non-likely
|
|
|
|
c->movz(t5, t4, t7); // movz t5, t4, t7
|
|
c->daddiu(t7, t4, -45); // daddiu t7, t4, -45
|
|
c->movz(t5, t4, t7); // movz t5, t4, t7
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t5) != 0; // bne t5, r0, L73
|
|
c->daddiu(t7, t4, -121); // daddiu t7, t4, -121
|
|
if (bc) {goto block_143;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L84
|
|
c->daddiu(t6, t4, -89); // daddiu t6, t4, -89
|
|
if (bc) {goto block_177;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L84
|
|
c->daddiu(t6, t4, -122); // daddiu t6, t4, -122
|
|
if (bc) {goto block_177;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L85
|
|
c->daddiu(t6, t4, -90); // daddiu t6, t4, -90
|
|
if (bc) {goto block_178;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L85
|
|
c->daddiu(t6, t4, -48); // daddiu t6, t4, -48
|
|
if (bc) {goto block_178;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t6)) < 0; // bltz t6, L87
|
|
c->daddiu(t6, t4, -57); // daddiu t6, t4, -57
|
|
if (bc) {goto block_180;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t6)) > 0; // bgtz t6, L87
|
|
c->daddiu(t6, t4, -48); // daddiu t6, t4, -48
|
|
if (bc) {goto block_180;} // branch non-likely
|
|
|
|
|
|
block_143:
|
|
c->lbu(t4, 4, t3); // lbu t4, 4(t3)
|
|
c->daddiu(t3, t3, 1); // daddiu t3, t3, 1
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L92
|
|
c->daddiu(t7, t4, -110); // daddiu t7, t4, -110
|
|
if (bc) {goto block_189;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L74
|
|
c->daddiu(t7, t4, -78); // daddiu t7, t4, -78
|
|
if (bc) {goto block_161;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L74
|
|
c->daddiu(t7, t4, -108); // daddiu t7, t4, -108
|
|
if (bc) {goto block_161;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L76
|
|
c->daddiu(t7, t4, -76); // daddiu t7, t4, -76
|
|
if (bc) {goto block_164;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L76
|
|
c->daddiu(t7, t4, -119); // daddiu t7, t4, -119
|
|
if (bc) {goto block_164;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L72
|
|
c->daddiu(t7, t4, -87); // daddiu t7, t4, -87
|
|
if (bc) {goto block_132;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L72
|
|
c->daddiu(t7, t4, -107); // daddiu t7, t4, -107
|
|
if (bc) {goto block_132;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L77
|
|
c->daddiu(t7, t4, -75); // daddiu t7, t4, -75
|
|
if (bc) {goto block_165;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L77
|
|
c->daddiu(t7, t4, -106); // daddiu t7, t4, -106
|
|
if (bc) {goto block_165;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L72
|
|
c->daddiu(t7, t4, -74); // daddiu t7, t4, -74
|
|
if (bc) {goto block_132;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L72
|
|
c->daddiu(t7, t4, -104); // daddiu t7, t4, -104
|
|
if (bc) {goto block_132;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L78
|
|
c->daddiu(t7, t4, -72); // daddiu t7, t4, -72
|
|
if (bc) {goto block_167;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L78
|
|
c->daddiu(t7, t4, -118); // daddiu t7, t4, -118
|
|
if (bc) {goto block_167;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L81
|
|
c->daddiu(t7, t4, -86); // daddiu t7, t4, -86
|
|
if (bc) {goto block_172;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t7) == 0; // beq t7, r0, L81
|
|
c->daddiu(t7, t4, -48); // daddiu t7, t4, -48
|
|
if (bc) {goto block_172;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t7)) < 0; // bltz t7, L87
|
|
c->daddiu(t8, t4, -57); // daddiu t8, t4, -57
|
|
if (bc) {goto block_180;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t8)) > 0; // bgtz t8, L87
|
|
c->sll(t8, t6, 2); // sll t8, t6, 2
|
|
if (bc) {goto block_180;} // branch non-likely
|
|
|
|
c->daddu(t4, t6, t8); // daddu t4, t6, t8
|
|
// nop // sll r0, r0, 0
|
|
c->sll(t4, t4, 1); // sll t4, t4, 1
|
|
// nop // sll r0, r0, 0
|
|
//beq r0, r0, L73 // beq r0, r0, L73
|
|
c->daddu(t6, t4, t7); // daddu t6, t4, t7
|
|
goto block_143; // branch always
|
|
|
|
|
|
block_161:
|
|
bc = c->sgpr64(t6) != 0; // bne t6, r0, L75
|
|
c->load_symbol(a3, cache.font12_table); // lw a3, *font12-table*(s7)
|
|
if (bc) {goto block_163;} // branch non-likely
|
|
|
|
c->mov64(a3, a3); // or a3, a3, r0
|
|
c->addiu(t0, r0, -33); // addiu t0, r0, -33
|
|
c->lqc2(vf13, 144, v1); // lqc2 vf13, 144(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 160, v1); // lqc2 vf14, 160(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 176, v1); // lqc2 vf15, 176(v1)
|
|
c->and_(a0, a0, t0); // and a0, a0, t0
|
|
c->lq(t0, 80, v1); // lq t0, 80(v1)
|
|
//beq r0, r0, L72 // beq r0, r0, L72
|
|
c->lq(t1, 96, v1); // lq t1, 96(v1)
|
|
goto block_132; // branch always
|
|
|
|
|
|
block_163:
|
|
// nop // sll r0, r0, 0
|
|
c->load_symbol(a3, cache.font24_table); // lw a3, *font24-table*(s7)
|
|
c->mov64(a3, a3); // or a3, a3, r0
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf13, 192, v1); // lqc2 vf13, 192(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 208, v1); // lqc2 vf14, 208(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 224, v1); // lqc2 vf15, 224(v1)
|
|
c->ori(a0, a0, 32); // ori a0, a0, 32
|
|
c->lq(t0, 112, v1); // lq t0, 112(v1)
|
|
//beq r0, r0, L72 // beq r0, r0, L72
|
|
c->lq(t1, 128, v1); // lq t1, 128(v1)
|
|
goto block_132; // branch always
|
|
|
|
|
|
block_164:
|
|
// nop // sll r0, r0, 0
|
|
c->sw(t6, 3008, v1); // sw t6, 3008(v1)
|
|
c->sll(t4, t6, 4); // sll t4, t6, 4
|
|
c->lq(t5, 432, v1); // lq t5, 432(v1)
|
|
c->daddu(t4, t4, v1); // daddu t4, t4, v1
|
|
c->lq(t6, 448, v1); // lq t6, 448(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t5, 624, v1); // sq t5, 624(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t6, 640, v1); // sq t6, 640(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t5, 464, v1); // lq t5, 464(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t6, 480, v1); // lq t6, 480(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t5, 656, v1); // sq t5, 656(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t6, 672, v1); // sq t6, 672(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lwu(t6, 1984, t4); // lwu t6, 1984(t4)
|
|
// nop // sll r0, r0, 0
|
|
c->lwu(t5, 1988, t4); // lwu t5, 1988(t4)
|
|
c->pextlb(t6, r0, t6); // pextlb t6, r0, t6
|
|
c->mfc1(r0, f31); // mfc1 r0, f31
|
|
c->pextlh(t6, r0, t6); // pextlh t6, r0, t6
|
|
c->mfc1(r0, f31); // mfc1 r0, f31
|
|
c->pextlb(t5, r0, t5); // pextlb t5, r0, t5
|
|
c->sq(t6, 432, v1); // sq t6, 432(v1)
|
|
c->pextlh(t5, r0, t5); // pextlh t5, r0, t5
|
|
c->sq(t6, 816, v1); // sq t6, 816(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t5, 448, v1); // sq t5, 448(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t5, 832, v1); // sq t5, 832(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lwu(t5, 1992, t4); // lwu t5, 1992(t4)
|
|
// nop // sll r0, r0, 0
|
|
c->lwu(t4, 1996, t4); // lwu t4, 1996(t4)
|
|
c->pextlb(t5, r0, t5); // pextlb t5, r0, t5
|
|
c->mfc1(r0, f31); // mfc1 r0, f31
|
|
c->pextlh(t5, r0, t5); // pextlh t5, r0, t5
|
|
c->mfc1(r0, f31); // mfc1 r0, f31
|
|
c->pextlb(t4, r0, t4); // pextlb t4, r0, t4
|
|
c->sq(t5, 464, v1); // sq t5, 464(v1)
|
|
c->pextlh(t4, r0, t4); // pextlh t4, r0, t4
|
|
c->sq(t5, 848, v1); // sq t5, 848(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t4, 480, v1); // sq t4, 480(v1)
|
|
//beq r0, r0, L72 // beq r0, r0, L72
|
|
c->sq(t4, 864, v1); // sq t4, 864(v1)
|
|
goto block_132; // branch always
|
|
|
|
|
|
block_165:
|
|
c->addiu(t4, r0, -3); // addiu t4, r0, -3
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L72
|
|
c->and_(a0, a0, t4); // and a0, a0, t4
|
|
if (bc) {goto block_132;} // branch non-likely
|
|
|
|
//beq r0, r0, L72 // beq r0, r0, L72
|
|
c->ori(a0, a0, 2); // ori a0, a0, 2
|
|
goto block_132; // branch always
|
|
|
|
|
|
block_167:
|
|
c->mov128_vf_gpr(vf1, t6); // qmtc2.i vf1, t6
|
|
c->daddiu(t4, t5, -45); // daddiu t4, t5, -45
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L80
|
|
c->vitof0(DEST::xyzw, vf1, vf1); // vitof0.xyzw vf1, vf1
|
|
if (bc) {goto block_171;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L79
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_170;} // branch non-likely
|
|
|
|
//beq r0, r0, L72 // beq r0, r0, L72
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf23, vf1); // vaddx.x vf23, vf23, vf1
|
|
goto block_132; // branch always
|
|
|
|
|
|
block_170:
|
|
//beq r0, r0, L72 // beq r0, r0, L72
|
|
c->vsub_bc(DEST::x, BC::x, vf23, vf23, vf1); // vsubx.x vf23, vf23, vf1
|
|
goto block_132; // branch always
|
|
|
|
|
|
block_171:
|
|
//beq r0, r0, L72 // beq r0, r0, L72
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf1); // vaddx.x vf23, vf0, vf1
|
|
goto block_132; // branch always
|
|
|
|
|
|
block_172:
|
|
c->mov128_vf_gpr(vf1, t6); // qmtc2.i vf1, t6
|
|
c->daddiu(t4, t5, -45); // daddiu t4, t5, -45
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L83
|
|
c->vitof0(DEST::xyzw, vf1, vf1); // vitof0.xyzw vf1, vf1
|
|
if (bc) {goto block_176;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L82
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_175;} // branch non-likely
|
|
|
|
//beq r0, r0, L72 // beq r0, r0, L72
|
|
c->vadd_bc(DEST::y, BC::x, vf23, vf23, vf1); // vaddx.y vf23, vf23, vf1
|
|
goto block_132; // branch always
|
|
|
|
|
|
block_175:
|
|
//beq r0, r0, L72 // beq r0, r0, L72
|
|
c->vsub_bc(DEST::y, BC::x, vf23, vf23, vf1); // vsubx.y vf23, vf23, vf1
|
|
goto block_132; // branch always
|
|
|
|
|
|
block_176:
|
|
//beq r0, r0, L72 // beq r0, r0, L72
|
|
c->vadd_bc(DEST::y, BC::x, vf23, vf0, vf1); // vaddx.y vf23, vf0, vf1
|
|
goto block_132; // branch always
|
|
|
|
|
|
block_177:
|
|
// nop // sll r0, r0, 0
|
|
c->lw(t4, 3008, v1); // lw t4, 3008(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf9, 432, v1); // lqc2 vf9, 432(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf10, 448, v1); // lqc2 vf10, 448(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf11, 464, v1); // lqc2 vf11, 464(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf12, 480, v1); // lqc2 vf12, 480(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sw(t4, 3016, v1); // sw t4, 3016(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf9, 304, v1); // sqc2 vf9, 304(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf10, 320, v1); // sqc2 vf10, 320(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf11, 336, v1); // sqc2 vf11, 336(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf12, 352, v1); // sqc2 vf12, 352(v1)
|
|
//beq r0, r0, L72 // beq r0, r0, L72
|
|
c->sqc2(vf23, 288, v1); // sqc2 vf23, 288(v1)
|
|
goto block_132; // branch always
|
|
|
|
|
|
block_178:
|
|
// nop // sll r0, r0, 0
|
|
c->lw(t4, 3016, v1); // lw t4, 3016(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf9, 304, v1); // lqc2 vf9, 304(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf10, 320, v1); // lqc2 vf10, 320(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf11, 336, v1); // lqc2 vf11, 336(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf12, 352, v1); // lqc2 vf12, 352(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sw(t4, 3008, v1); // sw t4, 3008(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf9, 432, v1); // sqc2 vf9, 432(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf9, 816, v1); // sqc2 vf9, 816(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf10, 448, v1); // sqc2 vf10, 448(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf10, 832, v1); // sqc2 vf10, 832(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf11, 464, v1); // sqc2 vf11, 464(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf11, 848, v1); // sqc2 vf11, 848(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf12, 480, v1); // sqc2 vf12, 480(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf12, 864, v1); // sqc2 vf12, 864(v1)
|
|
//beq r0, r0, L72 // beq r0, r0, L72
|
|
c->lqc2(vf23, 288, v1); // lqc2 vf23, 288(v1)
|
|
goto block_132; // branch always
|
|
|
|
|
|
block_179:
|
|
c->lbu(t4, 4, t3); // lbu t4, 4(t3)
|
|
c->daddiu(t3, t3, 1); // daddiu t3, t3, 1
|
|
c->vadd(DEST::xyz, vf4, vf23, vf15); // vadd.xyz vf4, vf23, vf15
|
|
c->andi(t5, t4, 127); // andi t5, t4, 127
|
|
c->vsub(DEST::xyzw, vf1, vf25, vf23); // vsub.xyzw vf1, vf25, vf23
|
|
c->daddiu(t5, t5, 255); // daddiu t5, t5, 255
|
|
//beq r0, r0, L89 // beq r0, r0, L89
|
|
c->sll(t5, t5, 4); // sll t5, t5, 4
|
|
goto block_183; // branch always
|
|
|
|
|
|
block_180:
|
|
c->vadd(DEST::xyz, vf4, vf23, vf15); // vadd.xyz vf4, vf23, vf15
|
|
c->sll(t5, t4, 4); // sll t5, t4, 4
|
|
c->vsub(DEST::xyzw, vf1, vf25, vf23); // vsub.xyzw vf1, vf25, vf23
|
|
c->daddiu(t6, t4, -10); // daddiu t6, t4, -10
|
|
bc = c->sgpr64(t6) == 0; // beq t6, r0, L88
|
|
c->daddiu(t6, t4, -13); // daddiu t6, t4, -13
|
|
if (bc) {goto block_182;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t6) != 0; // bne t6, r0, L89
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_183;} // branch non-likely
|
|
|
|
|
|
block_182:
|
|
c->daddiu(t2, t2, 16); // daddiu t2, t2, 16
|
|
// nop // sll r0, r0, 0
|
|
//beq r0, r0, L72 // beq r0, r0, L72
|
|
c->lqc2(vf23, 944, t2); // lqc2 vf23, 944(t2)
|
|
goto block_132; // branch always
|
|
|
|
|
|
block_183:
|
|
c->addu(t5, t5, a3); // addu t5, t5, a3
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf5, -256, t5); // lqc2 vf5, -256(t5)
|
|
c->mov128_gpr_vf(t5, vf1); // qmfc2.i t5, vf1
|
|
bc = ((s64)c->sgpr64(t5)) < 0; // bltz t5, L92
|
|
c->vadd(DEST::xyz, vf6, vf5, vf16); // vadd.xyz vf6, vf5, vf16
|
|
if (bc) {goto block_189;} // branch non-likely
|
|
|
|
c->sra(t5, t5, 31); // sra t5, t5, 31
|
|
c->vadd(DEST::xyz, vf7, vf5, vf17); // vadd.xyz vf7, vf5, vf17
|
|
bc = ((s64)c->sgpr64(t5)) < 0; // bltz t5, L72
|
|
c->vadd(DEST::xyz, vf8, vf5, vf18); // vadd.xyz vf8, vf5, vf18
|
|
if (bc) {goto block_132;} // branch non-likely
|
|
|
|
c->vadd(DEST::xyz, vf1, vf23, vf0); // vadd.xyz vf1, vf23, vf0
|
|
// nop // sll r0, r0, 0
|
|
c->vadd(DEST::xyz, vf2, vf23, vf13); // vadd.xyz vf2, vf23, vf13
|
|
// nop // sll r0, r0, 0
|
|
c->vadd(DEST::xyz, vf3, vf23, vf14); // vadd.xyz vf3, vf23, vf14
|
|
c->sqc2(vf5, 496, v1); // sqc2 vf5, 496(v1)
|
|
c->vadd(DEST::xyz, vf4, vf23, vf15); // vadd.xyz vf4, vf23, vf15
|
|
c->sqc2(vf6, 512, v1); // sqc2 vf6, 512(v1)
|
|
c->vmul(DEST::xyzw, vf19, vf5, vf13); // vmul.xyzw vf19, vf5, vf13
|
|
c->sqc2(vf7, 528, v1); // sqc2 vf7, 528(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf8, 544, v1); // sqc2 vf8, 544(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf1, 368, v1); // sqc2 vf1, 368(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf2, 384, v1); // sqc2 vf2, 384(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf3, 400, v1); // sqc2 vf3, 400(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf4, 416, v1); // sqc2 vf4, 416(v1)
|
|
c->lqc2(vf1, 368, v1); // lqc2 vf1, 368(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf2, 384, v1); // lqc2 vf2, 384(v1)
|
|
c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0); // vmulaw.xyzw acc, vf31, vf0
|
|
c->lqc2(vf3, 400, v1); // lqc2 vf3, 400(v1)
|
|
c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf1); // vmaddax.xyzw acc, vf28, vf1
|
|
c->lqc2(vf4, 416, v1); // lqc2 vf4, 416(v1)
|
|
c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf1); // vmadday.xyzw acc, vf29, vf1
|
|
// nop // sll r0, r0, 0
|
|
c->vmadd_bc(DEST::xyzw, BC::z, vf1, vf30, vf1); // vmaddz.xyzw vf1, vf30, vf1
|
|
// nop // sll r0, r0, 0
|
|
c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0); // vmulaw.xyzw acc, vf31, vf0
|
|
// nop // sll r0, r0, 0
|
|
c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf2); // vmaddax.xyzw acc, vf28, vf2
|
|
// nop // sll r0, r0, 0
|
|
c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf2); // vmadday.xyzw acc, vf29, vf2
|
|
// nop // sll r0, r0, 0
|
|
c->vmadd_bc(DEST::xyzw, BC::z, vf2, vf30, vf2); // vmaddz.xyzw vf2, vf30, vf2
|
|
// nop // sll r0, r0, 0
|
|
c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0); // vmulaw.xyzw acc, vf31, vf0
|
|
// nop // sll r0, r0, 0
|
|
c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf3); // vmaddax.xyzw acc, vf28, vf3
|
|
// nop // sll r0, r0, 0
|
|
c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf3); // vmadday.xyzw acc, vf29, vf3
|
|
// nop // sll r0, r0, 0
|
|
c->vmadd_bc(DEST::xyzw, BC::z, vf3, vf30, vf3); // vmaddz.xyzw vf3, vf30, vf3
|
|
// nop // sll r0, r0, 0
|
|
c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0); // vmulaw.xyzw acc, vf31, vf0
|
|
// nop // sll r0, r0, 0
|
|
c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf4); // vmaddax.xyzw acc, vf28, vf4
|
|
// nop // sll r0, r0, 0
|
|
c->vmadda_bc(DEST::xyzw, BC::y, vf29, vf4); // vmadday.xyzw acc, vf29, vf4
|
|
// nop // sll r0, r0, 0
|
|
c->vmadd_bc(DEST::xyzw, BC::z, vf4, vf30, vf4); // vmaddz.xyzw vf4, vf30, vf4
|
|
c->vdiv(vf25, BC::z, vf1, BC::w); // vdiv Q, vf25.z, vf1.w
|
|
c->lq(t5, 32, v1); // lq t5, 32(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t6, 48, v1); // lq t6, 48(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t5, 0, a1); // sq t5, 0(a1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t6, 16, a1); // sq t6, 16(a1)
|
|
c->lqc2(vf5, 496, v1); // lqc2 vf5, 496(v1)
|
|
c->mov128_gpr_gpr(t5, t0); // por t5, t0, r0
|
|
c->lqc2(vf6, 512, v1); // lqc2 vf6, 512(v1)
|
|
c->andi(t4, t4, 128); // andi t4, t4, 128
|
|
c->lqc2(vf7, 528, v1); // lqc2 vf7, 528(v1)
|
|
c->movn(t5, t1, t4); // movn t5, t1, t4
|
|
c->vmulq(DEST::xyz, vf1, vf1); // vmulq.xyz vf1, vf1, Q
|
|
c->sq(t5, 32, a1); // sq t5, 32(a1)
|
|
c->vmulq(DEST::xyz, vf5, vf5); // vmulq.xyz vf5, vf5, Q
|
|
// nop // sll r0, r0, 0
|
|
// nop // vnop
|
|
// nop // sll r0, r0, 0
|
|
// nop // vnop
|
|
// nop // sll r0, r0, 0
|
|
c->vdiv(vf25, BC::z, vf2, BC::w); // vdiv Q, vf25.z, vf2.w
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf8, 544, v1); // lqc2 vf8, 544(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->vadd(DEST::xyzw, vf1, vf1, vf27); // vadd.xyzw vf1, vf1, vf27
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf9, 432, v1); // lqc2 vf9, 432(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf10, 448, v1); // lqc2 vf10, 448(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf11, 464, v1); // lqc2 vf11, 464(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->vftoi4(DEST::xyzw, vf1, vf1); // vftoi4.xyzw vf1, vf1
|
|
// nop // sll r0, r0, 0
|
|
c->vmulq(DEST::xyz, vf2, vf2); // vmulq.xyz vf2, vf2, Q
|
|
// nop // sll r0, r0, 0
|
|
c->vmulq(DEST::xyz, vf6, vf6); // vmulq.xyz vf6, vf6, Q
|
|
c->sqc2(vf5, 48, a1); // sqc2 vf5, 48(a1)
|
|
// nop // vnop
|
|
// nop // sll r0, r0, 0
|
|
// nop // vnop
|
|
// nop // sll r0, r0, 0
|
|
c->vdiv(vf25, BC::z, vf3, BC::w); // vdiv Q, vf25.z, vf3.w
|
|
c->sqc2(vf9, 64, a1); // sqc2 vf9, 64(a1)
|
|
c->lqc2(vf12, 480, v1); // lqc2 vf12, 480(v1)
|
|
c->sqc2(vf1, 80, a1); // sqc2 vf1, 80(a1)
|
|
c->vadd(DEST::xyzw, vf2, vf2, vf27); // vadd.xyzw vf2, vf2, vf27
|
|
// 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->vftoi4(DEST::xyzw, vf2, vf2); // vftoi4.xyzw vf2, vf2
|
|
// nop // sll r0, r0, 0
|
|
c->vmulq(DEST::xyz, vf3, vf3); // vmulq.xyz vf3, vf3, Q
|
|
// nop // sll r0, r0, 0
|
|
c->vmulq(DEST::xyz, vf7, vf7); // vmulq.xyz vf7, vf7, Q
|
|
c->sqc2(vf6, 96, a1); // sqc2 vf6, 96(a1)
|
|
// nop // vnop
|
|
// nop // sll r0, r0, 0
|
|
// nop // vnop
|
|
// nop // sll r0, r0, 0
|
|
c->vdiv(vf25, BC::z, vf4, BC::w); // vdiv Q, vf25.z, vf4.w
|
|
c->sqc2(vf10, 112, a1); // sqc2 vf10, 112(a1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf2, 128, a1); // sqc2 vf2, 128(a1)
|
|
c->vadd(DEST::xyzw, vf3, vf3, vf27); // vadd.xyzw vf3, vf3, vf27
|
|
// 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->vftoi4(DEST::xyzw, vf3, vf3); // vftoi4.xyzw vf3, vf3
|
|
// nop // sll r0, r0, 0
|
|
c->vmulq(DEST::xyz, vf4, vf4); // vmulq.xyz vf4, vf4, Q
|
|
// nop // sll r0, r0, 0
|
|
c->vmulq(DEST::xyz, vf8, vf8); // vmulq.xyz vf8, vf8, Q
|
|
c->sqc2(vf7, 144, a1); // sqc2 vf7, 144(a1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf11, 160, a1); // sqc2 vf11, 160(a1)
|
|
c->vadd(DEST::xyzw, vf4, vf4, vf27); // vadd.xyzw vf4, vf4, vf27
|
|
c->sqc2(vf3, 176, a1); // sqc2 vf3, 176(a1)
|
|
c->andi(t4, a0, 2); // andi t4, a0, 2
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L90
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_187;} // branch non-likely
|
|
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf19); // vaddw.x vf23, vf23, vf19
|
|
goto block_188; // branch always
|
|
|
|
|
|
block_187:
|
|
// nop // sll r0, r0, 0
|
|
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf14); // vaddw.x vf23, vf23, vf14
|
|
|
|
block_188:
|
|
c->vftoi4(DEST::xyzw, vf4, vf4); // vftoi4.xyzw vf4, vf4
|
|
// nop // sll r0, r0, 0
|
|
// nop // sll r0, r0, 0
|
|
// nop // sll r0, r0, 0
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf8, 192, a1); // sqc2 vf8, 192(a1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf12, 208, a1); // sqc2 vf12, 208(a1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf4, 224, a1); // sqc2 vf4, 224(a1)
|
|
//beq r0, r0, L72 // beq r0, r0, L72
|
|
c->daddiu(a1, a1, 240); // daddiu a1, a1, 240
|
|
goto block_132; // branch always
|
|
|
|
|
|
block_189:
|
|
c->lw(v1, 3024, v1); // lw v1, 3024(v1)
|
|
c->sw(a1, 4, v1); // sw a1, 4(v1)
|
|
c->lqc2(vf24, 12, a2); // lqc2 vf24, 12(a2)
|
|
c->vsub(DEST::xyzw, vf23, vf23, vf24); // vsub.xyzw vf23, vf23, vf24
|
|
c->mov128_gpr_vf(v0, vf23); // qmfc2.i v0, vf23
|
|
//jr ra // jr ra
|
|
c->daddu(sp, sp, r0); // daddu sp, sp, r0
|
|
goto end_of_function; // return
|
|
|
|
end_of_function:
|
|
return c->gprs[v0].du64[0];
|
|
}
|
|
|
|
void link() {
|
|
cache.font_work = intern_from_c("*font-work*").c();
|
|
cache.font12_table = intern_from_c("*font12-table*").c();
|
|
cache.font24_table = intern_from_c("*font24-table*").c();
|
|
cache.math_camera = intern_from_c("*math-camera*").c();
|
|
cache.video_parms = intern_from_c("*video-parms*").c();
|
|
gLinkedFunctionTable.reg("draw-string", execute, 0);
|
|
}
|
|
|
|
} // namespace draw_string
|
|
} // namespace Mips2C
|
|
// clang-format on
|