mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
2820 lines
158 KiB
C++
2820 lines
158 KiB
C++
|
|
//--------------------------MIPS2C---------------------
|
|
// clang-format off
|
|
#include "game/mips2c/mips2c_private.h"
|
|
#include "game/kernel/jak2/kscheme.h"
|
|
using ::jak2::intern_from_c;
|
|
namespace Mips2C::jak2 {
|
|
namespace draw_string {
|
|
struct Cache {
|
|
void* font_work; // *font-work*
|
|
void* dma_buffer_free; // dma-buffer-free
|
|
void* draw_string_asm; // draw-string-asm
|
|
void* string; // string
|
|
} cache;
|
|
|
|
u64 execute(void* ctxt) {
|
|
auto* c = (ExecutionContext*)ctxt;
|
|
bool bc = false;
|
|
u32 call_addr = 0;
|
|
c->daddiu(sp, sp, -80); // daddiu sp, sp, -80
|
|
c->sd(ra, 0, sp); // sd ra, 0(sp)
|
|
c->sd(fp, 8, sp); // sd fp, 8(sp)
|
|
c->mov64(fp, t9); // or fp, t9, r0
|
|
c->sq(s3, 16, sp); // sq s3, 16(sp)
|
|
c->sq(s4, 32, sp); // sq s4, 32(sp)
|
|
c->sq(s5, 48, sp); // sq s5, 48(sp)
|
|
c->sq(gp, 64, sp); // sq gp, 64(sp)
|
|
c->mov64(gp, a0); // or gp, a0, r0
|
|
c->mov64(s5, a1); // or s5, a1, r0
|
|
c->mov64(s4, a2); // or s4, a2, r0
|
|
c->lui(v1, 17152); // lui v1, 17152
|
|
c->mtc1(f0, v1); // mtc1 f0, v1
|
|
c->lwc1(f1, 76, s4); // lwc1 f1, 76(s4)
|
|
c->muls(f0, f0, f1); // mul.s f0, f0, f1
|
|
c->cvtws(f0, f0); // cvt.w.s f0, f0
|
|
c->mfc1(v1, f0); // mfc1 v1, f0
|
|
c->lq(a0, 12, s4); // lq a0, 12(s4)
|
|
c->addiu(a0, r0, 0); // addiu a0, r0, 0
|
|
//beq r0, r0, L27 // beq r0, r0, L27
|
|
// nop // sll r0, r0, 0
|
|
goto block_5; // branch always
|
|
|
|
|
|
block_1:
|
|
c->addiu(a1, r0, 0); // addiu a1, r0, 0
|
|
//beq r0, r0, L26 // beq r0, r0, L26
|
|
// nop // sll r0, r0, 0
|
|
goto block_3; // branch always
|
|
|
|
|
|
block_2:
|
|
c->dsll(a2, a1, 2); // dsll a2, a1, 2
|
|
c->dsll(a3, a0, 4); // dsll a3, a0, 4
|
|
c->daddu(a2, a2, a3); // daddu a2, a2, a3
|
|
c->load_symbol2(a3, cache.font_work); // lw a3, *font-work*(s7)
|
|
c->daddu(a2, a2, a3); // daddu a2, a2, a3
|
|
c->lwu(a2, 2160, a2); // lwu a2, 2160(a2)
|
|
// Unknown instr: ld a3, L164(fp)
|
|
c->gprs[a3].du64[0] = 0xffffffff'00ffffff;
|
|
c->and_(a2, a2, a3); // and a2, a2, a3
|
|
c->dsll32(a3, v1, 24); // dsll32 a3, v1, 24
|
|
c->dsrl32(a3, a3, 0); // dsrl32 a3, a3, 0
|
|
c->or_(a2, a2, a3); // or a2, a2, a3
|
|
c->dsll(a3, a1, 2); // dsll a3, a1, 2
|
|
c->dsll(t0, a0, 4); // dsll t0, a0, 4
|
|
c->daddu(a3, a3, t0); // daddu a3, a3, t0
|
|
c->load_symbol2(t0, cache.font_work); // lw t0, *font-work*(s7)
|
|
c->daddu(a3, a3, t0); // daddu a3, a3, t0
|
|
c->sw(a2, 2160, a3); // sw a2, 2160(a3)
|
|
c->daddiu(a1, a1, 1); // daddiu a1, a1, 1
|
|
|
|
block_3:
|
|
c->slti(a2, a1, 4); // slti a2, a1, 4
|
|
bc = c->sgpr64(a2) != 0; // bne a2, r0, L25
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_2;} // branch non-likely
|
|
|
|
c->mov64(a1, s7); // or a1, s7, r0
|
|
c->mov64(a1, s7); // or a1, s7, r0
|
|
c->daddiu(a0, a0, 1); // daddiu a0, a0, 1
|
|
|
|
block_5:
|
|
c->slti(a1, a0, 40); // slti a1, a0, 40
|
|
bc = c->sgpr64(a1) != 0; // bne a1, r0, L24
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_1;} // branch non-likely
|
|
|
|
c->mov64(a0, s7); // or a0, s7, r0
|
|
c->mov64(a0, s7); // or a0, s7, r0
|
|
c->load_symbol2(a0, cache.font_work); // lw a0, *font-work*(s7)
|
|
c->sw(v1, 2156, a0); // sw v1, 2156(a0)
|
|
c->load_symbol2(t9, cache.dma_buffer_free); // lw t9, dma-buffer-free(s7)
|
|
c->mov64(a0, s5); // or a0, s5, r0
|
|
call_addr = c->gprs[t9].du32[0]; // function call:
|
|
c->sll(v0, ra, 0); // sll v0, ra, 0
|
|
c->jalr(call_addr); // jalr ra, t9
|
|
c->mov64(s3, v0); // or s3, v0, r0
|
|
c->mov64(a0, gp); // or a0, gp, r0
|
|
c->load_symbol2(v1, cache.string); // lw v1, string(s7)
|
|
c->lwu(t9, 32, v1); // lwu t9, 32(v1)
|
|
call_addr = c->gprs[t9].du32[0]; // function call:
|
|
c->sll(v0, ra, 0); // sll v0, ra, 0
|
|
c->jalr(call_addr); // jalr ra, t9
|
|
c->mov64(v1, v0); // or v1, v0, r0
|
|
c->dsll(v1, v1, 5); // dsll v1, v1, 5
|
|
c->sltu(v1, s3, v1); // sltu v1, s3, v1
|
|
bc = c->sgpr64(v1) == 0; // beq v1, r0, L28
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_8;} // branch non-likely
|
|
|
|
c->lq(v0, 12, s4); // lq v0, 12(s4)
|
|
c->mov128_gpr_gpr(v1, v0); // por v1, v0, r0
|
|
//beq r0, r0, L29 // beq r0, r0, L29
|
|
// nop // sll r0, r0, 0
|
|
goto block_9; // branch always
|
|
|
|
|
|
block_8:
|
|
c->load_symbol2(t9, cache.draw_string_asm); // lw t9, draw-string-asm(s7)
|
|
c->mov64(a0, gp); // or a0, gp, r0
|
|
c->mov64(a1, s5); // or a1, s5, r0
|
|
c->mov64(a2, s4); // or a2, s4, r0
|
|
call_addr = c->gprs[t9].du32[0]; // function call:
|
|
c->sll(v0, ra, 0); // sll v0, ra, 0
|
|
c->jalr(call_addr); // jalr ra, t9
|
|
c->mov128_gpr_gpr(v1, v0); // por v1, v0, r0
|
|
|
|
block_9:
|
|
c->addiu(v1, r0, 0); // addiu v1, r0, 0
|
|
//beq r0, r0, L33 // beq r0, r0, L33
|
|
// nop // sll r0, r0, 0
|
|
goto block_14; // branch always
|
|
|
|
|
|
block_10:
|
|
c->addiu(a0, r0, 0); // addiu a0, r0, 0
|
|
//beq r0, r0, L32 // beq r0, r0, L32
|
|
// nop // sll r0, r0, 0
|
|
goto block_12; // branch always
|
|
|
|
|
|
block_11:
|
|
c->dsll(a1, a0, 2); // dsll a1, a0, 2
|
|
c->dsll(a2, v1, 4); // dsll a2, v1, 4
|
|
c->daddu(a1, a1, a2); // daddu a1, a1, a2
|
|
c->load_symbol2(a2, cache.font_work); // lw a2, *font-work*(s7)
|
|
c->daddu(a1, a1, a2); // daddu a1, a1, a2
|
|
c->lwu(a1, 2160, a1); // lwu a1, 2160(a1)
|
|
// Unknown instr: ld a2, L164(fp)
|
|
c->gprs[a2].du64[0] = 0xffffffff'00ffffff;
|
|
c->and_(a1, a1, a2); // and a1, a1, a2
|
|
c->ori(a2, r0, 32768); // ori a2, r0, 32768
|
|
c->dsll(a2, a2, 16); // dsll a2, a2, 16
|
|
c->or_(a1, a1, a2); // or a1, a1, a2
|
|
c->dsll(a2, a0, 2); // dsll a2, a0, 2
|
|
c->dsll(a3, v1, 4); // dsll a3, v1, 4
|
|
c->daddu(a2, a2, a3); // daddu a2, a2, a3
|
|
c->load_symbol2(a3, cache.font_work); // lw a3, *font-work*(s7)
|
|
c->daddu(a2, a2, a3); // daddu a2, a2, a3
|
|
c->sw(a1, 2160, a2); // sw a1, 2160(a2)
|
|
c->daddiu(a0, a0, 1); // daddiu a0, a0, 1
|
|
|
|
block_12:
|
|
c->slti(a1, a0, 4); // slti a1, a0, 4
|
|
bc = c->sgpr64(a1) != 0; // bne a1, r0, L31
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_11;} // branch non-likely
|
|
|
|
c->mov64(a0, s7); // or a0, s7, r0
|
|
c->mov64(a0, s7); // or a0, s7, r0
|
|
c->daddiu(v1, v1, 1); // daddiu v1, v1, 1
|
|
|
|
block_14:
|
|
c->slti(a0, v1, 40); // slti a0, v1, 40
|
|
bc = c->sgpr64(a0) != 0; // bne a0, r0, L30
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_10;} // branch non-likely
|
|
|
|
c->mov64(v1, s7); // or v1, s7, r0
|
|
c->mov64(v1, s7); // or v1, s7, r0
|
|
c->addiu(v1, r0, 128); // addiu v1, r0, 128
|
|
c->load_symbol2(a0, cache.font_work); // lw a0, *font-work*(s7)
|
|
c->sw(v1, 2156, a0); // sw v1, 2156(a0)
|
|
c->ld(ra, 0, sp); // ld ra, 0(sp)
|
|
c->ld(fp, 8, sp); // ld fp, 8(sp)
|
|
c->lq(gp, 64, sp); // lq gp, 64(sp)
|
|
c->lq(s5, 48, sp); // lq s5, 48(sp)
|
|
c->lq(s4, 32, sp); // lq s4, 32(sp)
|
|
c->lq(s3, 16, sp); // lq s3, 16(sp)
|
|
//jr ra // jr ra
|
|
c->daddiu(sp, sp, 80); // daddiu sp, sp, 80
|
|
goto end_of_function; // return
|
|
|
|
// nop // sll r0, r0, 0
|
|
// nop // sll r0, r0, 0
|
|
end_of_function:
|
|
return c->gprs[v0].du64[0];
|
|
}
|
|
|
|
void link() {
|
|
cache.font_work = intern_from_c("*font-work*").c();
|
|
cache.dma_buffer_free = intern_from_c("dma-buffer-free").c();
|
|
cache.draw_string_asm = intern_from_c("draw-string-asm").c();
|
|
cache.string = intern_from_c("string").c();
|
|
gLinkedFunctionTable.reg("draw-string", execute, 512);
|
|
}
|
|
|
|
} // namespace draw_string
|
|
} // namespace Mips2C
|
|
|
|
//--------------------------MIPS2C---------------------
|
|
// clang-format off
|
|
#include "game/mips2c/mips2c_private.h"
|
|
#include "game/kernel/jak2/kscheme.h"
|
|
using ::jak2::intern_from_c;
|
|
namespace Mips2C::jak2 {
|
|
namespace get_string_length {
|
|
struct Cache {
|
|
void* font_work; // *font-work*
|
|
void* font12_table; // *font12-table*
|
|
void* font24_table; // *font24-table*
|
|
void* video_params; // *video-params*
|
|
} cache;
|
|
|
|
u64 execute(void* ctxt) {
|
|
auto* c = (ExecutionContext*)ctxt;
|
|
bool bc = false;
|
|
// u32 call_addr = 0;
|
|
c->lqc2(vf23, 12, a1); // lqc2 vf23, 12(a1)
|
|
c->lqc2(vf24, 12, a1); // lqc2 vf24, 12(a1)
|
|
c->lw(v1, 64, a1); // lw v1, 64(a1)
|
|
c->load_symbol2(a2, cache.font_work); // lw a2, *font-work*(s7)
|
|
c->mov64(a2, a2); // or a2, a2, r0
|
|
c->sw(a0, 2876, a2); // sw a0, 2876(a2)
|
|
c->sw(v1, 2880, a2); // sw v1, 2880(a2)
|
|
c->vmove(DEST::xyzw, vf1, vf0); // vmove.xyzw vf1, vf0
|
|
// nop // sll r0, r0, 0
|
|
c->andi(a3, v1, 32); // andi a3, v1, 32
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(a3) != 0; // bne a3, r0, L4
|
|
c->load_symbol2(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, 208, a2); // lqc2 vf13, 208(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 224, a2); // lqc2 vf14, 224(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 352, a2); // sqc2 vf14, 352(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 368, a2); // sqc2 vf14, 368(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 384, a2); // sqc2 vf14, 384(a2)
|
|
//beq r0, r0, L5 // beq r0, r0, L5
|
|
c->sqc2(vf14, 400, a2); // sqc2 vf14, 400(a2)
|
|
goto block_3; // branch always
|
|
|
|
|
|
block_2:
|
|
// nop // sll r0, r0, 0
|
|
c->load_symbol2(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, 256, a2); // lqc2 vf13, 256(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 272, a2); // lqc2 vf14, 272(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 352, a2); // sqc2 vf14, 352(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 288, a2); // lqc2 vf14, 288(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 368, a2); // sqc2 vf14, 368(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 304, a2); // lqc2 vf14, 304(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 384, a2); // sqc2 vf14, 384(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 320, a2); // lqc2 vf14, 320(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 400, a2); // sqc2 vf14, 400(a2)
|
|
|
|
block_3:
|
|
c->lbu(t0, 4, a0); // lbu t0, 4(a0)
|
|
c->daddiu(a0, a0, 1); // daddiu a0, a0, 1
|
|
bc = c->sgpr64(t0) == 0; // beq t0, r0, L22
|
|
c->daddiu(t1, t0, -3); // daddiu t1, t0, -3
|
|
if (bc) {goto block_60;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t1)) <= 0; // blez t1, L15
|
|
c->daddiu(t1, t0, -126); // daddiu t1, t0, -126
|
|
if (bc) {goto block_48;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t1) != 0; // bne t1, r0, L18
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_53;} // branch non-likely
|
|
|
|
c->lbu(t0, 4, a0); // lbu t0, 4(a0)
|
|
c->daddiu(a0, a0, 1); // daddiu a0, a0, 1
|
|
c->addiu(t1, r0, 0); // addiu t1, r0, 0
|
|
c->addiu(t2, r0, 0); // addiu t2, r0, 0
|
|
bc = c->sgpr64(t0) == 0; // beq t0, r0, L22
|
|
c->daddiu(t3, t0, -43); // daddiu t3, t0, -43
|
|
if (bc) {goto block_60;} // branch non-likely
|
|
|
|
c->movz(t1, t0, t3); // movz t1, t0, t3
|
|
c->daddiu(t3, t0, -45); // daddiu t3, t0, -45
|
|
c->movz(t1, t0, t3); // movz t1, t0, t3
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t1) != 0; // bne t1, r0, L6
|
|
c->daddiu(t3, t0, -121); // daddiu t3, t0, -121
|
|
if (bc) {goto block_15;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L13
|
|
c->daddiu(t2, t0, -89); // daddiu t2, t0, -89
|
|
if (bc) {goto block_46;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L13
|
|
c->daddiu(t2, t0, -122); // daddiu t2, t0, -122
|
|
if (bc) {goto block_46;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L14
|
|
c->daddiu(t2, t0, -90); // daddiu t2, t0, -90
|
|
if (bc) {goto block_47;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L14
|
|
c->daddiu(t2, t0, -48); // daddiu t2, t0, -48
|
|
if (bc) {goto block_47;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t2)) < 0; // bltz t2, L18
|
|
c->daddiu(t2, t0, -57); // daddiu t2, t0, -57
|
|
if (bc) {goto block_53;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t2)) > 0; // bgtz t2, L18
|
|
c->daddiu(t2, t0, -126); // daddiu t2, t0, -126
|
|
if (bc) {goto block_53;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L18
|
|
c->daddiu(t2, t0, -48); // daddiu t2, t0, -48
|
|
if (bc) {goto block_53;} // branch non-likely
|
|
|
|
|
|
block_15:
|
|
c->lbu(t0, 4, a0); // lbu t0, 4(a0)
|
|
c->daddiu(a0, a0, 1); // daddiu a0, a0, 1
|
|
bc = c->sgpr64(t0) == 0; // beq t0, r0, L22
|
|
c->daddiu(t3, t0, -110); // daddiu t3, t0, -110
|
|
if (bc) {goto block_60;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L7
|
|
c->daddiu(t3, t0, -78); // daddiu t3, t0, -78
|
|
if (bc) {goto block_36;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L7
|
|
c->daddiu(t3, t0, -108); // daddiu t3, t0, -108
|
|
if (bc) {goto block_36;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L5
|
|
c->daddiu(t3, t0, -76); // daddiu t3, t0, -76
|
|
if (bc) {goto block_3;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L5
|
|
c->daddiu(t3, t0, -119); // daddiu t3, t0, -119
|
|
if (bc) {goto block_3;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L5
|
|
c->daddiu(t3, t0, -87); // daddiu t3, t0, -87
|
|
if (bc) {goto block_3;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L5
|
|
c->daddiu(t3, t0, -107); // daddiu t3, t0, -107
|
|
if (bc) {goto block_3;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L9
|
|
c->daddiu(t3, t0, -75); // daddiu t3, t0, -75
|
|
if (bc) {goto block_39;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L9
|
|
c->daddiu(t3, t0, -106); // daddiu t3, t0, -106
|
|
if (bc) {goto block_39;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L5
|
|
c->daddiu(t3, t0, -74); // daddiu t3, t0, -74
|
|
if (bc) {goto block_3;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L5
|
|
c->daddiu(t3, t0, -104); // daddiu t3, t0, -104
|
|
if (bc) {goto block_3;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L10
|
|
c->daddiu(t3, t0, -72); // daddiu t3, t0, -72
|
|
if (bc) {goto block_41;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L10
|
|
c->daddiu(t3, t0, -118); // daddiu t3, t0, -118
|
|
if (bc) {goto block_41;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L5
|
|
c->daddiu(t3, t0, -86); // daddiu t3, t0, -86
|
|
if (bc) {goto block_3;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L5
|
|
c->daddiu(t3, t0, -117); // daddiu t3, t0, -117
|
|
if (bc) {goto block_3;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L5
|
|
c->daddiu(t3, t0, -85); // daddiu t3, t0, -85
|
|
if (bc) {goto block_3;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L5
|
|
c->daddiu(t3, t0, -48); // daddiu t3, t0, -48
|
|
if (bc) {goto block_3;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L5
|
|
c->daddiu(t3, t0, -48); // daddiu t3, t0, -48
|
|
if (bc) {goto block_3;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t3)) < 0; // bltz t3, L18
|
|
c->daddiu(t4, t0, -57); // daddiu t4, t0, -57
|
|
if (bc) {goto block_53;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t4)) > 0; // bgtz t4, L18
|
|
c->sll(t4, t2, 2); // sll t4, t2, 2
|
|
if (bc) {goto block_53;} // branch non-likely
|
|
|
|
c->daddu(t0, t2, t4); // daddu t0, t2, t4
|
|
// nop // sll r0, r0, 0
|
|
c->sll(t0, t0, 1); // sll t0, t0, 1
|
|
// nop // sll r0, r0, 0
|
|
//beq r0, r0, L6 // beq r0, r0, L6
|
|
c->daddu(t2, t0, t3); // daddu t2, t0, t3
|
|
goto block_15; // branch always
|
|
|
|
|
|
block_36:
|
|
bc = c->sgpr64(t2) != 0; // bne t2, r0, L8
|
|
c->load_symbol2(a3, cache.font12_table); // lw a3, *font12-table*(s7)
|
|
if (bc) {goto block_38;} // branch non-likely
|
|
|
|
c->mov64(a3, a3); // or a3, a3, r0
|
|
c->addiu(t0, r0, -33); // addiu t0, r0, -33
|
|
c->lqc2(vf13, 208, a2); // lqc2 vf13, 208(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 224, a2); // lqc2 vf14, 224(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 352, a2); // sqc2 vf14, 352(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 368, a2); // sqc2 vf14, 368(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 384, a2); // sqc2 vf14, 384(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 400, a2); // sqc2 vf14, 400(a2)
|
|
//beq r0, r0, L5 // beq r0, r0, L5
|
|
c->and_(v1, v1, t0); // and v1, v1, t0
|
|
goto block_3; // branch always
|
|
|
|
|
|
block_38:
|
|
// nop // sll r0, r0, 0
|
|
c->load_symbol2(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, 256, a2); // lqc2 vf13, 256(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 272, a2); // lqc2 vf14, 272(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 352, a2); // sqc2 vf14, 352(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 288, a2); // lqc2 vf14, 288(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 368, a2); // sqc2 vf14, 368(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 304, a2); // lqc2 vf14, 304(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 384, a2); // sqc2 vf14, 384(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 320, a2); // lqc2 vf14, 320(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 400, a2); // sqc2 vf14, 400(a2)
|
|
//beq r0, r0, L5 // beq r0, r0, L5
|
|
c->ori(v1, v1, 32); // ori v1, v1, 32
|
|
goto block_3; // branch always
|
|
|
|
|
|
block_39:
|
|
c->addiu(t0, r0, -3); // addiu t0, r0, -3
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L5
|
|
c->and_(v1, v1, t0); // and v1, v1, t0
|
|
if (bc) {goto block_3;} // branch non-likely
|
|
|
|
//beq r0, r0, L5 // beq r0, r0, L5
|
|
c->ori(v1, v1, 2); // ori v1, v1, 2
|
|
goto block_3; // branch always
|
|
|
|
|
|
block_41:
|
|
c->mov128_vf_gpr(vf1, t2); // qmtc2.i vf1, t2
|
|
c->daddiu(t0, t1, -45); // daddiu t0, t1, -45
|
|
bc = c->sgpr64(t1) == 0; // beq t1, r0, L12
|
|
c->vitof0(DEST::xyzw, vf1, vf1); // vitof0.xyzw vf1, vf1
|
|
if (bc) {goto block_45;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t0) == 0; // beq t0, r0, L11
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_44;} // branch non-likely
|
|
|
|
//beq r0, r0, L5 // beq r0, r0, L5
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf23, vf1); // vaddx.x vf23, vf23, vf1
|
|
goto block_3; // branch always
|
|
|
|
|
|
block_44:
|
|
//beq r0, r0, L5 // beq r0, r0, L5
|
|
c->vsub_bc(DEST::x, BC::x, vf23, vf23, vf1); // vsubx.x vf23, vf23, vf1
|
|
goto block_3; // branch always
|
|
|
|
|
|
block_45:
|
|
//beq r0, r0, L5 // beq r0, r0, L5
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf1); // vaddx.x vf23, vf0, vf1
|
|
goto block_3; // branch always
|
|
|
|
|
|
block_46:
|
|
//beq r0, r0, L5 // beq r0, r0, L5
|
|
c->sqc2(vf23, 464, a2); // sqc2 vf23, 464(a2)
|
|
goto block_3; // branch always
|
|
|
|
|
|
block_47:
|
|
//beq r0, r0, L5 // beq r0, r0, L5
|
|
c->lqc2(vf23, 464, a2); // lqc2 vf23, 464(a2)
|
|
goto block_3; // branch always
|
|
|
|
|
|
block_48:
|
|
c->daddiu(t1, t0, -3); // daddiu t1, t0, -3
|
|
c->ori(v1, v1, 64); // ori v1, v1, 64
|
|
bc = c->sgpr64(t1) == 0; // beq t1, r0, L16
|
|
c->daddiu(t0, t0, -2); // daddiu t0, t0, -2
|
|
if (bc) {goto block_51;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t0) == 0; // beq t0, r0, L17
|
|
c->lqc2(vf14, 384, a2); // lqc2 vf14, 384(a2)
|
|
if (bc) {goto block_52;} // branch non-likely
|
|
|
|
//beq r0, r0, L17 // beq r0, r0, L17
|
|
c->lqc2(vf14, 368, a2); // lqc2 vf14, 368(a2)
|
|
goto block_52; // branch always
|
|
|
|
|
|
block_51:
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 400, a2); // lqc2 vf14, 400(a2)
|
|
|
|
block_52:
|
|
c->lbu(t0, 4, a0); // lbu t0, 4(a0)
|
|
c->daddiu(a0, a0, 1); // daddiu a0, a0, 1
|
|
//beq r0, r0, L20 // beq r0, r0, L20
|
|
c->sll(t1, t0, 4); // sll t1, t0, 4
|
|
goto block_56; // branch always
|
|
|
|
|
|
block_53:
|
|
// nop // sll r0, r0, 0
|
|
c->addiu(t1, r0, -65); // addiu t1, r0, -65
|
|
c->and_(v1, v1, t1); // and v1, v1, t1
|
|
c->lqc2(vf14, 352, a2); // lqc2 vf14, 352(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sll(t1, t0, 4); // sll t1, t0, 4
|
|
// nop // sll r0, r0, 0
|
|
c->daddiu(t2, t0, -10); // daddiu t2, t0, -10
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L19
|
|
c->daddiu(t0, t0, -13); // daddiu t0, t0, -13
|
|
if (bc) {goto block_55;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t0) != 0; // bne t0, r0, L20
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_56;} // branch non-likely
|
|
|
|
|
|
block_55:
|
|
//beq r0, r0, L5 // beq r0, r0, L5
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf24); // vaddx.x vf23, vf0, vf24
|
|
goto block_3; // branch always
|
|
|
|
|
|
block_56:
|
|
c->addu(t0, t1, a3); // addu t0, t1, a3
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf5, -96, t0); // lqc2 vf5, -96(t0)
|
|
// nop // sll r0, r0, 0
|
|
c->vmul(DEST::xyzw, vf19, vf5, vf13); // vmul.xyzw vf19, vf5, vf13
|
|
c->andi(t0, v1, 2); // andi t0, v1, 2
|
|
bc = c->sgpr64(t0) == 0; // beq t0, r0, L21
|
|
c->andi(t0, v1, 64); // andi t0, v1, 64
|
|
if (bc) {goto block_59;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t0) != 0; // bne t0, r0, L21
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_59;} // branch non-likely
|
|
|
|
//beq r0, r0, L5 // beq r0, r0, L5
|
|
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf19); // vaddw.x vf23, vf23, vf19
|
|
goto block_3; // branch always
|
|
|
|
|
|
block_59:
|
|
//beq r0, r0, L5 // beq r0, r0, L5
|
|
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf14); // vaddw.x vf23, vf23, vf14
|
|
goto block_3; // branch always
|
|
|
|
|
|
block_60:
|
|
c->vsub(DEST::xyzw, vf23, vf23, vf24); // vsub.xyzw vf23, vf23, vf24
|
|
c->load_symbol2(v1, cache.video_params); // lw v1, *video-params*(s7)
|
|
c->mov64(v1, v1); // or v1, v1, r0
|
|
c->lqc2(vf1, 16, v1); // lqc2 vf1, 16(v1)
|
|
c->vmul(DEST::x, vf23, vf23, vf1); // vmul.x vf23, vf23, vf1
|
|
c->lqc2(vf1, 44, a1); // lqc2 vf1, 44(a1)
|
|
c->vmul_bc(DEST::x, BC::w, vf23, vf23, vf1); // vmulw.x vf23, vf23, vf1
|
|
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
|
|
|
|
// nop // sll r0, r0, 0
|
|
// nop // sll r0, r0, 0
|
|
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.video_params = intern_from_c("*video-params*").c();
|
|
gLinkedFunctionTable.reg("get-string-length", execute, 512);
|
|
}
|
|
|
|
} // namespace get_string_length
|
|
} // namespace Mips2C
|
|
|
|
|
|
//--------------------------MIPS2C---------------------
|
|
// clang-format off
|
|
#include "game/mips2c/mips2c_private.h"
|
|
#include "game/kernel/jak2/kscheme.h"
|
|
using ::jak2::intern_from_c;
|
|
namespace Mips2C::jak2 {
|
|
namespace draw_string_asm {
|
|
struct Cache {
|
|
void* font_work; // *font-work*
|
|
void* font12_table; // *font12-table*
|
|
void* font24_table; // *font24-table*
|
|
void* math_camera; // *math-camera*
|
|
void* video_params; // *video-params*
|
|
} cache;
|
|
|
|
u64 execute(void* ctxt) {
|
|
auto* c = (ExecutionContext*)ctxt;
|
|
bool bc = false;
|
|
// u32 call_addr = 0;
|
|
c->load_symbol2(v1, cache.math_camera); // lw v1, *math-camera*(s7)
|
|
c->lqc2(vf26, 812, v1); // lqc2 vf26, 812(v1)
|
|
c->lqc2(vf27, 812, v1); // lqc2 vf27, 812(v1)
|
|
// shadow hack begin
|
|
c->load_symbol2(v1, cache.video_params);
|
|
c->lw(t0, 16, v1);
|
|
c->vfs[vf26].f[0] += c->gprs[t0].f[0] * 2;
|
|
c->vfs[vf26].f[1] += 1;
|
|
// 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
|
|
// shadow hack end
|
|
c->lw(v1, 68, a2); // lw v1, 68(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_symbol2(v1, cache.video_params); // lw v1, *video-params*(s7)
|
|
c->mov64(v1, v1); // or v1, v1, r0
|
|
c->lqc2(vf1, 32, v1); // lqc2 vf1, 32(v1)
|
|
c->vdiv(vf0, BC::w, vf25, BC::w); // vdiv Q, vf0.w, vf25.w
|
|
c->lqc2(vf2, 16, v1); // lqc2 vf2, 16(v1)
|
|
c->vmul(DEST::x, vf25, vf25, vf1); // vmul.x vf25, vf25, vf1
|
|
c->vmul(DEST::x, vf23, vf23, vf1); // vmul.x vf23, vf23, vf1
|
|
c->vmul(DEST::x, vf24, vf24, vf1); // vmul.x vf24, vf24, vf1
|
|
c->vwaitq(); // vwaitq
|
|
c->vmulq(DEST::xy, vf25, vf25); // vmulq.xy vf25, vf25, Q
|
|
c->vmulq(DEST::xy, vf23, vf23); // vmulq.xy vf23, vf23, Q
|
|
c->vmulq(DEST::xy, vf24, vf24); // vmulq.xy vf24, vf24, Q
|
|
c->vadd(DEST::xy, vf25, vf25, vf24); // vadd.xy vf25, vf25, vf24
|
|
c->vmul_bc(DEST::x, BC::w, vf28, vf28, vf25); // vmulw.x vf28, vf28, vf25
|
|
c->vmul_bc(DEST::y, BC::w, vf29, vf29, vf25); // vmulw.y vf29, vf29, vf25
|
|
c->vmul(DEST::x, vf28, vf28, vf2); // vmul.x vf28, vf28, vf2
|
|
c->load_symbol2(v1, cache.font_work); // lw v1, *font-work*(s7)
|
|
c->mov64(v1, v1); // or v1, v1, r0
|
|
c->sw(a1, 2872, v1); // sw a1, 2872(v1)
|
|
c->lw(a1, 4, a1); // lw a1, 4(a1)
|
|
c->sw(a0, 2876, v1); // sw a0, 2876(v1)
|
|
c->lw(t0, 64, a2); // lw t0, 64(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(t0, 2880, v1); // sw t0, 2880(v1)
|
|
c->lqc2(vf16, 416, v1); // lqc2 vf16, 416(v1)
|
|
c->lqc2(vf17, 432, v1); // lqc2 vf17, 432(v1)
|
|
c->lqc2(vf18, 448, v1); // lqc2 vf18, 448(v1)
|
|
c->load_symbol2(a3, cache.video_params); // lw a3, *video-params*(s7)
|
|
c->mov64(a3, a3); // or a3, a3, r0
|
|
c->lqc2(vf1, 16, a3); // lqc2 vf1, 16(a3)
|
|
c->andi(a3, t0, 32); // andi a3, t0, 32
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(a3) != 0; // bne a3, r0, L35
|
|
c->load_symbol2(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->lq(t1, 80, v1); // lq t1, 80(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t2, 96, v1); // lq t2, 96(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t3, 112, v1); // lq t3, 112(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t4, 128, v1); // lq t4, 128(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t1, 2800, v1); // sq t1, 2800(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 2816, v1); // sq t2, 2816(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 2832, v1); // sq t3, 2832(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t4, 2848, v1); // sq t4, 2848(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf13, 208, v1); // lqc2 vf13, 208(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 224, v1); // lqc2 vf14, 224(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 240, v1); // lqc2 vf15, 240(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 352, v1); // sqc2 vf14, 352(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 368, v1); // sqc2 vf14, 368(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 384, v1); // sqc2 vf14, 384(v1)
|
|
//beq r0, r0, L36 // beq r0, r0, L36
|
|
c->sqc2(vf14, 400, v1); // sqc2 vf14, 400(v1)
|
|
goto block_3; // branch always
|
|
|
|
|
|
block_2:
|
|
// nop // sll r0, r0, 0
|
|
c->load_symbol2(a3, cache.font24_table); // lw a3, *font24-table*(s7)
|
|
c->mov64(a3, a3); // or a3, a3, r0
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t1, 144, v1); // lq t1, 144(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t2, 160, v1); // lq t2, 160(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t3, 176, v1); // lq t3, 176(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t4, 192, v1); // lq t4, 192(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t1, 2800, v1); // sq t1, 2800(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 2816, v1); // sq t2, 2816(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 2832, v1); // sq t3, 2832(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t4, 2848, v1); // sq t4, 2848(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf13, 256, v1); // lqc2 vf13, 256(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 336, v1); // lqc2 vf15, 336(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 272, v1); // lqc2 vf14, 272(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 352, v1); // sqc2 vf14, 352(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 288, v1); // lqc2 vf14, 288(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 368, v1); // sqc2 vf14, 368(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 304, v1); // lqc2 vf14, 304(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 384, v1); // sqc2 vf14, 384(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 320, v1); // lqc2 vf14, 320(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 400, v1); // sqc2 vf14, 400(v1)
|
|
// nop // sll r0, r0, 0
|
|
|
|
block_3:
|
|
c->lw(t1, 60, a2); // lw t1, 60(a2)
|
|
// nop // sll r0, r0, 0
|
|
c->sw(t1, 2864, v1); // sw t1, 2864(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sll(t1, t1, 4); // sll t1, t1, 4
|
|
// nop // sll r0, r0, 0
|
|
c->daddu(t2, t1, v1); // daddu t2, t1, v1
|
|
// nop // sll r0, r0, 0
|
|
// nop // sll r0, r0, 0
|
|
c->lwu(t1, 2160, t2); // lwu t1, 2160(t2)
|
|
// nop // sll r0, r0, 0
|
|
c->lwu(t3, 2164, t2); // lwu t3, 2164(t2)
|
|
c->pextlb(t4, r0, t1); // pextlb t4, r0, t1
|
|
c->lwu(t1, 2168, t2); // lwu t1, 2168(t2)
|
|
c->pextlh(t4, r0, t4); // pextlh t4, r0, t4
|
|
c->lwu(t2, 2172, t2); // lwu t2, 2172(t2)
|
|
c->pextlb(t3, r0, t3); // pextlb t3, r0, t3
|
|
c->sq(t4, 608, v1); // sq t4, 608(v1)
|
|
c->pextlh(t3, r0, t3); // pextlh t3, r0, t3
|
|
c->sq(t4, 992, v1); // sq t4, 992(v1)
|
|
c->pextlb(t1, r0, t1); // pextlb t1, r0, t1
|
|
c->sq(t3, 624, v1); // sq t3, 624(v1)
|
|
c->pextlh(t1, r0, t1); // pextlh t1, r0, t1
|
|
c->sq(t3, 1008, v1); // sq t3, 1008(v1)
|
|
c->pextlb(t2, r0, t2); // pextlb t2, r0, t2
|
|
c->sq(t1, 640, v1); // sq t1, 640(v1)
|
|
c->pextlh(t2, r0, t2); // pextlh t2, r0, t2
|
|
c->sq(t1, 1024, v1); // sq t1, 1024(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 656, v1); // sq t2, 656(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 1040, v1); // sq t2, 1040(v1)
|
|
c->mov64(t1, v1); // or t1, v1, r0
|
|
// nop // sll r0, r0, 0
|
|
|
|
block_4:
|
|
c->lbu(t2, 4, a0); // lbu t2, 4(a0)
|
|
c->daddiu(a0, a0, 1); // daddiu a0, a0, 1
|
|
c->lqc2(vf20, 2800, v1); // lqc2 vf20, 2800(v1)
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L63
|
|
c->daddiu(t3, t2, -3); // daddiu t3, t2, -3
|
|
if (bc) {goto block_78;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t3)) <= 0; // blez t3, L52
|
|
c->daddiu(t3, t2, -126); // daddiu t3, t2, -126
|
|
if (bc) {goto block_59;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) != 0; // bne t3, r0, L56
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_65;} // branch non-likely
|
|
|
|
c->lbu(t2, 4, a0); // lbu t2, 4(a0)
|
|
c->daddiu(a0, a0, 1); // daddiu a0, a0, 1
|
|
c->addiu(t3, r0, 0); // addiu t3, r0, 0
|
|
c->addiu(t4, r0, 0); // addiu t4, r0, 0
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L63
|
|
c->daddiu(t5, t2, -43); // daddiu t5, t2, -43
|
|
if (bc) {goto block_78;} // branch non-likely
|
|
|
|
c->movz(t3, t2, t5); // movz t3, t2, t5
|
|
c->daddiu(t5, t2, -45); // daddiu t5, t2, -45
|
|
c->movz(t3, t2, t5); // movz t3, t2, t5
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t3) != 0; // bne t3, r0, L38
|
|
c->daddiu(t5, t2, -91); // daddiu t5, t2, -91
|
|
if (bc) {goto block_18;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L37
|
|
c->daddiu(t4, t2, -93); // daddiu t4, t2, -93
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L37
|
|
c->daddiu(t4, t2, -121); // daddiu t4, t2, -121
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L50
|
|
c->daddiu(t4, t2, -89); // daddiu t4, t2, -89
|
|
if (bc) {goto block_57;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L50
|
|
c->daddiu(t4, t2, -122); // daddiu t4, t2, -122
|
|
if (bc) {goto block_57;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L51
|
|
c->daddiu(t4, t2, -90); // daddiu t4, t2, -90
|
|
if (bc) {goto block_58;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L51
|
|
c->daddiu(t4, t2, -48); // daddiu t4, t2, -48
|
|
if (bc) {goto block_58;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t4)) < 0; // bltz t4, L56
|
|
c->daddiu(t4, t2, -57); // daddiu t4, t2, -57
|
|
if (bc) {goto block_65;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t4)) > 0; // bgtz t4, L56
|
|
c->daddiu(t4, t2, -126); // daddiu t4, t2, -126
|
|
if (bc) {goto block_65;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L56
|
|
c->daddiu(t4, t2, -48); // daddiu t4, t2, -48
|
|
if (bc) {goto block_65;} // branch non-likely
|
|
|
|
|
|
block_18:
|
|
c->lbu(t2, 4, a0); // lbu t2, 4(a0)
|
|
c->daddiu(a0, a0, 1); // daddiu a0, a0, 1
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L63
|
|
c->daddiu(t5, t2, -110); // daddiu t5, t2, -110
|
|
if (bc) {goto block_78;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L39
|
|
c->daddiu(t5, t2, -78); // daddiu t5, t2, -78
|
|
if (bc) {goto block_38;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L39
|
|
c->daddiu(t5, t2, -108); // daddiu t5, t2, -108
|
|
if (bc) {goto block_38;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L37
|
|
c->daddiu(t5, t2, -76); // daddiu t5, t2, -76
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L37
|
|
c->daddiu(t5, t2, -119); // daddiu t5, t2, -119
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L37
|
|
c->daddiu(t5, t2, -87); // daddiu t5, t2, -87
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L37
|
|
c->daddiu(t5, t2, -107); // daddiu t5, t2, -107
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L41
|
|
c->daddiu(t5, t2, -75); // daddiu t5, t2, -75
|
|
if (bc) {goto block_41;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L41
|
|
c->daddiu(t5, t2, -106); // daddiu t5, t2, -106
|
|
if (bc) {goto block_41;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L42
|
|
c->daddiu(t5, t2, -74); // daddiu t5, t2, -74
|
|
if (bc) {goto block_43;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L42
|
|
c->daddiu(t5, t2, -104); // daddiu t5, t2, -104
|
|
if (bc) {goto block_43;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L44
|
|
c->daddiu(t5, t2, -72); // daddiu t5, t2, -72
|
|
if (bc) {goto block_47;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L44
|
|
c->daddiu(t5, t2, -118); // daddiu t5, t2, -118
|
|
if (bc) {goto block_47;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L47
|
|
c->daddiu(t5, t2, -86); // daddiu t5, t2, -86
|
|
if (bc) {goto block_52;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L47
|
|
c->daddiu(t5, t2, -117); // daddiu t5, t2, -117
|
|
if (bc) {goto block_52;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L37
|
|
c->daddiu(t5, t2, -85); // daddiu t5, t2, -85
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L37
|
|
c->daddiu(t5, t2, -48); // daddiu t5, t2, -48
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t5)) < 0; // bltz t5, L56
|
|
c->daddiu(t6, t2, -57); // daddiu t6, t2, -57
|
|
if (bc) {goto block_65;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t6)) > 0; // bgtz t6, L56
|
|
c->sll(t6, t4, 2); // sll t6, t4, 2
|
|
if (bc) {goto block_65;} // branch non-likely
|
|
|
|
c->daddu(t2, t4, t6); // daddu t2, t4, t6
|
|
// nop // sll r0, r0, 0
|
|
c->sll(t2, t2, 1); // sll t2, t2, 1
|
|
// nop // sll r0, r0, 0
|
|
//beq r0, r0, L38 // beq r0, r0, L38
|
|
c->daddu(t4, t2, t5); // daddu t4, t2, t5
|
|
goto block_18; // branch always
|
|
|
|
|
|
block_38:
|
|
bc = c->sgpr64(t4) != 0; // bne t4, r0, L40
|
|
c->addiu(t2, r0, -33); // addiu t2, r0, -33
|
|
if (bc) {goto block_40;} // branch non-likely
|
|
|
|
// nop // sll r0, r0, 0
|
|
c->lq(a3, 80, v1); // lq a3, 80(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t3, 96, v1); // lq t3, 96(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t4, 112, v1); // lq t4, 112(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t5, 128, v1); // lq t5, 128(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(a3, 2800, v1); // sq a3, 2800(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 2816, v1); // sq t3, 2816(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t4, 2832, v1); // sq t4, 2832(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t5, 2848, v1); // sq t5, 2848(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->load_symbol2(a3, cache.font12_table); // lw a3, *font12-table*(s7)
|
|
c->mov64(a3, a3); // or a3, a3, r0
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf13, 208, v1); // lqc2 vf13, 208(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 224, v1); // lqc2 vf14, 224(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 240, v1); // lqc2 vf15, 240(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 352, v1); // sqc2 vf14, 352(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 368, v1); // sqc2 vf14, 368(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 384, v1); // sqc2 vf14, 384(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 400, v1); // sqc2 vf14, 400(v1)
|
|
//beq r0, r0, L37 // beq r0, r0, L37
|
|
c->and_(t0, t0, t2); // and t0, t0, t2
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_40:
|
|
// nop // sll r0, r0, 0
|
|
c->lq(a3, 144, v1); // lq a3, 144(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t2, 160, v1); // lq t2, 160(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t3, 176, v1); // lq t3, 176(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t4, 192, v1); // lq t4, 192(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(a3, 2800, v1); // sq a3, 2800(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 2816, v1); // sq t2, 2816(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 2832, v1); // sq t3, 2832(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t4, 2848, v1); // sq t4, 2848(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->load_symbol2(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, 256, v1); // lqc2 vf13, 256(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 336, v1); // lqc2 vf15, 336(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 272, v1); // lqc2 vf14, 272(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 352, v1); // sqc2 vf14, 352(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 288, v1); // lqc2 vf14, 288(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 368, v1); // sqc2 vf14, 368(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 304, v1); // lqc2 vf14, 304(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 384, v1); // sqc2 vf14, 384(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 320, v1); // lqc2 vf14, 320(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 400, v1); // sqc2 vf14, 400(v1)
|
|
//beq r0, r0, L37 // beq r0, r0, L37
|
|
c->ori(t0, t0, 32); // ori t0, t0, 32
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_41:
|
|
c->addiu(t2, r0, -3); // addiu t2, r0, -3
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L37
|
|
c->and_(t0, t0, t2); // and t0, t0, t2
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
//beq r0, r0, L37 // beq r0, r0, L37
|
|
c->ori(t0, t0, 2); // ori t0, t0, 2
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_43:
|
|
c->addiu(t2, r0, -21); // addiu t2, r0, -21
|
|
c->daddiu(t3, t4, -2); // daddiu t3, t4, -2
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L37
|
|
c->and_(t0, t0, t2); // and t0, t0, t2
|
|
if (bc) {goto block_4;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L43
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_46;} // branch non-likely
|
|
|
|
//beq r0, r0, L37 // beq r0, r0, L37
|
|
c->ori(t0, t0, 16); // ori t0, t0, 16
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_46:
|
|
//beq r0, r0, L37 // beq r0, r0, L37
|
|
c->ori(t0, t0, 4); // ori t0, t0, 4
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_47:
|
|
c->mov128_vf_gpr(vf1, t4); // qmtc2.i vf1, t4
|
|
c->daddiu(t2, t3, -45); // daddiu t2, t3, -45
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L46
|
|
c->vitof0(DEST::xyzw, vf1, vf1); // vitof0.xyzw vf1, vf1
|
|
if (bc) {goto block_51;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L45
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_50;} // branch non-likely
|
|
|
|
//beq r0, r0, L37 // beq r0, r0, L37
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf23, vf1); // vaddx.x vf23, vf23, vf1
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_50:
|
|
//beq r0, r0, L37 // beq r0, r0, L37
|
|
c->vsub_bc(DEST::x, BC::x, vf23, vf23, vf1); // vsubx.x vf23, vf23, vf1
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_51:
|
|
//beq r0, r0, L37 // beq r0, r0, L37
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf1); // vaddx.x vf23, vf0, vf1
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_52:
|
|
c->mov128_vf_gpr(vf1, t4); // qmtc2.i vf1, t4
|
|
c->daddiu(t2, t3, -45); // daddiu t2, t3, -45
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L49
|
|
c->vitof0(DEST::xyzw, vf1, vf1); // vitof0.xyzw vf1, vf1
|
|
if (bc) {goto block_56;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L48
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_55;} // branch non-likely
|
|
|
|
//beq r0, r0, L37 // beq r0, r0, L37
|
|
c->vadd_bc(DEST::y, BC::x, vf23, vf23, vf1); // vaddx.y vf23, vf23, vf1
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_55:
|
|
//beq r0, r0, L37 // beq r0, r0, L37
|
|
c->vsub_bc(DEST::y, BC::x, vf23, vf23, vf1); // vsubx.y vf23, vf23, vf1
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_56:
|
|
//beq r0, r0, L37 // beq r0, r0, L37
|
|
c->vadd_bc(DEST::y, BC::x, vf23, vf0, vf1); // vaddx.y vf23, vf0, vf1
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_57:
|
|
//beq r0, r0, L37 // beq r0, r0, L37
|
|
c->sqc2(vf23, 464, v1); // sqc2 vf23, 464(v1)
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_58:
|
|
//beq r0, r0, L37 // beq r0, r0, L37
|
|
c->lqc2(vf23, 464, v1); // lqc2 vf23, 464(v1)
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_59:
|
|
c->daddiu(t3, t2, -3); // daddiu t3, t2, -3
|
|
c->ori(t0, t0, 64); // ori t0, t0, 64
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L54
|
|
c->daddiu(t2, t2, -2); // daddiu t2, t2, -2
|
|
if (bc) {goto block_63;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L53
|
|
c->lqc2(vf14, 384, v1); // lqc2 vf14, 384(v1)
|
|
if (bc) {goto block_62;} // branch non-likely
|
|
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 368, v1); // lqc2 vf14, 368(v1)
|
|
//beq r0, r0, L55 // beq r0, r0, L55
|
|
c->lqc2(vf20, 2816, v1); // lqc2 vf20, 2816(v1)
|
|
goto block_64; // branch always
|
|
|
|
|
|
block_62:
|
|
//beq r0, r0, L55 // beq r0, r0, L55
|
|
c->lqc2(vf20, 2832, v1); // lqc2 vf20, 2832(v1)
|
|
goto block_64; // branch always
|
|
|
|
|
|
block_63:
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 400, v1); // lqc2 vf14, 400(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf20, 2848, v1); // lqc2 vf20, 2848(v1)
|
|
|
|
block_64:
|
|
c->lbu(t2, 4, a0); // lbu t2, 4(a0)
|
|
c->daddiu(a0, a0, 1); // daddiu a0, a0, 1
|
|
c->vadd(DEST::xyz, vf4, vf23, vf15); // vadd.xyz vf4, vf23, vf15
|
|
c->sll(t3, t2, 4); // sll t3, t2, 4
|
|
//beq r0, r0, L60 // beq r0, r0, L60
|
|
c->vsub(DEST::xyzw, vf1, vf25, vf23); // vsub.xyzw vf1, vf25, vf23
|
|
goto block_72; // branch always
|
|
|
|
|
|
block_65:
|
|
// nop // sll r0, r0, 0
|
|
c->addiu(t3, r0, -65); // addiu t3, r0, -65
|
|
c->and_(t0, t0, t3); // and t0, t0, t3
|
|
c->lqc2(vf14, 352, v1); // lqc2 vf14, 352(v1)
|
|
c->vadd(DEST::xyz, vf4, vf23, vf15); // vadd.xyz vf4, vf23, vf15
|
|
c->sll(t3, t2, 4); // sll t3, t2, 4
|
|
c->vsub(DEST::xyzw, vf1, vf25, vf23); // vsub.xyzw vf1, vf25, vf23
|
|
c->daddiu(t4, t2, -10); // daddiu t4, t2, -10
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L57
|
|
c->daddiu(t2, t2, -13); // daddiu t2, t2, -13
|
|
if (bc) {goto block_67;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) != 0; // bne t2, r0, L60
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_72;} // branch non-likely
|
|
|
|
|
|
block_67:
|
|
c->vsub(DEST::xyzw, vf1, vf23, vf24); // vsub.xyzw vf1, vf23, vf24
|
|
c->andi(t2, t0, 16); // andi t2, t0, 16
|
|
bc = c->sgpr64(t2) != 0; // bne t2, r0, L58
|
|
c->andi(t2, t0, 4); // andi t2, t0, 4
|
|
if (bc) {goto block_70;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) != 0; // bne t2, r0, L59
|
|
// 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
|
|
c->sqc2(vf23, 1120, t1); // sqc2 vf23, 1120(t1)
|
|
c->vadd_bc(DEST::y, BC::w, vf23, vf23, vf15); // vaddw.y vf23, vf23, vf15
|
|
//beq r0, r0, L37 // beq r0, r0, L37
|
|
c->daddiu(t1, t1, 16); // daddiu t1, t1, 16
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_70:
|
|
c->vsub(DEST::x, vf23, vf24, vf1); // vsub.x vf23, vf24, vf1
|
|
c->sqc2(vf23, 1120, t1); // sqc2 vf23, 1120(t1)
|
|
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, L37 // beq r0, r0, L37
|
|
c->daddiu(t1, t1, 16); // daddiu t1, t1, 16
|
|
goto block_4; // 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, 1120, t1); // sqc2 vf23, 1120(t1)
|
|
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, L37 // beq r0, r0, L37
|
|
c->daddiu(t1, t1, 16); // daddiu t1, t1, 16
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_72:
|
|
c->addu(t2, t3, a3); // addu t2, t3, a3
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf5, -96, t2); // lqc2 vf5, -96(t2)
|
|
c->mov128_gpr_vf(t2, vf1); // qmfc2.i t2, vf1
|
|
bc = ((s64)c->sgpr64(t2)) < 0; // bltz t2, L63
|
|
c->sra(t2, t2, 31); // sra t2, t2, 31
|
|
if (bc) {goto block_78;} // branch non-likely
|
|
|
|
c->vmul(DEST::xyzw, vf19, vf5, vf13); // vmul.xyzw vf19, vf5, vf13
|
|
c->andi(t2, t0, 2); // andi t2, t0, 2
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L61
|
|
c->andi(t2, t0, 64); // andi t2, t0, 64
|
|
if (bc) {goto block_76;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) != 0; // bne t2, r0, L61
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_76;} // branch non-likely
|
|
|
|
//beq r0, r0, L62 // beq r0, r0, L62
|
|
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf19); // vaddw.x vf23, vf23, vf19
|
|
goto block_77; // branch always
|
|
|
|
|
|
block_76:
|
|
// nop // sll r0, r0, 0
|
|
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf14); // vaddw.x vf23, vf23, vf14
|
|
|
|
block_77:
|
|
//beq r0, r0, L37 // beq r0, r0, L37
|
|
// nop // sll r0, r0, 0
|
|
goto block_4; // branch always
|
|
|
|
|
|
block_78:
|
|
c->vsub(DEST::xyzw, vf1, vf23, vf24); // vsub.xyzw vf1, vf23, vf24
|
|
c->andi(a0, t0, 16); // andi a0, t0, 16
|
|
bc = c->sgpr64(a0) != 0; // bne a0, r0, L64
|
|
c->andi(a0, t0, 4); // andi a0, t0, 4
|
|
if (bc) {goto block_81;} // branch non-likely
|
|
|
|
bc = c->sgpr64(a0) != 0; // bne a0, r0, L65
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_82;} // 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, L66 // beq r0, r0, L66
|
|
c->sqc2(vf23, 1120, t1); // sqc2 vf23, 1120(t1)
|
|
goto block_83; // branch always
|
|
|
|
|
|
block_81:
|
|
c->vsub(DEST::x, vf23, vf24, vf1); // vsub.x vf23, vf24, vf1
|
|
// nop // sll r0, r0, 0
|
|
//beq r0, r0, L66 // beq r0, r0, L66
|
|
c->sqc2(vf23, 1120, t1); // sqc2 vf23, 1120(t1)
|
|
goto block_83; // branch always
|
|
|
|
|
|
block_82:
|
|
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, 1120, t1); // sqc2 vf23, 1120(t1)
|
|
|
|
block_83:
|
|
c->lw(a0, 2880, v1); // lw a0, 2880(v1)
|
|
c->mov64(t0, v1); // or t0, v1, r0
|
|
c->lw(t1, 2876, v1); // lw t1, 2876(v1)
|
|
c->lqc2(vf23, 1120, t0); // lqc2 vf23, 1120(t0)
|
|
|
|
block_84:
|
|
c->lbu(t2, 4, t1); // lbu t2, 4(t1)
|
|
c->daddiu(t1, t1, 1); // daddiu t1, t1, 1
|
|
c->lqc2(vf20, 2800, v1); // lqc2 vf20, 2800(v1)
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L90
|
|
c->daddiu(t3, t2, -3); // daddiu t3, t2, -3
|
|
if (bc) {goto block_158;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t3)) <= 0; // blez t3, L81
|
|
c->daddiu(t3, t2, -126); // daddiu t3, t2, -126
|
|
if (bc) {goto block_137;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) != 0; // bne t3, r0, L85
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_143;} // branch non-likely
|
|
|
|
c->lbu(t2, 4, t1); // lbu t2, 4(t1)
|
|
c->daddiu(t1, t1, 1); // daddiu t1, t1, 1
|
|
c->addiu(t3, r0, 0); // addiu t3, r0, 0
|
|
c->addiu(t4, r0, 0); // addiu t4, r0, 0
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L90
|
|
c->daddiu(t5, t2, -43); // daddiu t5, t2, -43
|
|
if (bc) {goto block_158;} // branch non-likely
|
|
|
|
c->movz(t3, t2, t5); // movz t3, t2, t5
|
|
c->daddiu(t5, t2, -45); // daddiu t5, t2, -45
|
|
c->movz(t3, t2, t5); // movz t3, t2, t5
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t3) != 0; // bne t3, r0, L68
|
|
c->daddiu(t5, t2, -91); // daddiu t5, t2, -91
|
|
if (bc) {goto block_98;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L67
|
|
c->daddiu(t4, t2, -93); // daddiu t4, t2, -93
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L67
|
|
c->daddiu(t4, t2, -121); // daddiu t4, t2, -121
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L79
|
|
c->daddiu(t4, t2, -89); // daddiu t4, t2, -89
|
|
if (bc) {goto block_135;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L79
|
|
c->daddiu(t4, t2, -122); // daddiu t4, t2, -122
|
|
if (bc) {goto block_135;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L80
|
|
c->daddiu(t4, t2, -90); // daddiu t4, t2, -90
|
|
if (bc) {goto block_136;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L80
|
|
c->daddiu(t4, t2, -48); // daddiu t4, t2, -48
|
|
if (bc) {goto block_136;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t4)) < 0; // bltz t4, L85
|
|
c->daddiu(t4, t2, -57); // daddiu t4, t2, -57
|
|
if (bc) {goto block_143;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t4)) > 0; // bgtz t4, L85
|
|
c->daddiu(t4, t2, -126); // daddiu t4, t2, -126
|
|
if (bc) {goto block_143;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L85
|
|
c->daddiu(t4, t2, -48); // daddiu t4, t2, -48
|
|
if (bc) {goto block_143;} // branch non-likely
|
|
|
|
|
|
block_98:
|
|
c->lbu(t2, 4, t1); // lbu t2, 4(t1)
|
|
c->daddiu(t1, t1, 1); // daddiu t1, t1, 1
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L90
|
|
c->daddiu(t5, t2, -110); // daddiu t5, t2, -110
|
|
if (bc) {goto block_158;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L69
|
|
c->daddiu(t5, t2, -78); // daddiu t5, t2, -78
|
|
if (bc) {goto block_118;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L69
|
|
c->daddiu(t5, t2, -108); // daddiu t5, t2, -108
|
|
if (bc) {goto block_118;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L67
|
|
c->daddiu(t5, t2, -76); // daddiu t5, t2, -76
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L67
|
|
c->daddiu(t5, t2, -119); // daddiu t5, t2, -119
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L71
|
|
c->daddiu(t5, t2, -87); // daddiu t5, t2, -87
|
|
if (bc) {goto block_121;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L71
|
|
c->daddiu(t5, t2, -107); // daddiu t5, t2, -107
|
|
if (bc) {goto block_121;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L72
|
|
c->daddiu(t5, t2, -75); // daddiu t5, t2, -75
|
|
if (bc) {goto block_123;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L72
|
|
c->daddiu(t5, t2, -106); // daddiu t5, t2, -106
|
|
if (bc) {goto block_123;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L67
|
|
c->daddiu(t5, t2, -74); // daddiu t5, t2, -74
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L67
|
|
c->daddiu(t5, t2, -104); // daddiu t5, t2, -104
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L73
|
|
c->daddiu(t5, t2, -72); // daddiu t5, t2, -72
|
|
if (bc) {goto block_125;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L73
|
|
c->daddiu(t5, t2, -118); // daddiu t5, t2, -118
|
|
if (bc) {goto block_125;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L76
|
|
c->daddiu(t5, t2, -86); // daddiu t5, t2, -86
|
|
if (bc) {goto block_130;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L76
|
|
c->daddiu(t5, t2, -117); // daddiu t5, t2, -117
|
|
if (bc) {goto block_130;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L67
|
|
c->daddiu(t5, t2, -85); // daddiu t5, t2, -85
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L67
|
|
c->daddiu(t5, t2, -48); // daddiu t5, t2, -48
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t5)) < 0; // bltz t5, L85
|
|
c->daddiu(t6, t2, -57); // daddiu t6, t2, -57
|
|
if (bc) {goto block_143;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t6)) > 0; // bgtz t6, L85
|
|
c->sll(t6, t4, 2); // sll t6, t4, 2
|
|
if (bc) {goto block_143;} // branch non-likely
|
|
|
|
c->daddu(t2, t4, t6); // daddu t2, t4, t6
|
|
// nop // sll r0, r0, 0
|
|
c->sll(t2, t2, 1); // sll t2, t2, 1
|
|
// nop // sll r0, r0, 0
|
|
//beq r0, r0, L68 // beq r0, r0, L68
|
|
c->daddu(t4, t2, t5); // daddu t4, t2, t5
|
|
goto block_98; // branch always
|
|
|
|
|
|
block_118:
|
|
bc = c->sgpr64(t4) != 0; // bne t4, r0, L70
|
|
c->addiu(t2, r0, -33); // addiu t2, r0, -33
|
|
if (bc) {goto block_120;} // branch non-likely
|
|
|
|
// nop // sll r0, r0, 0
|
|
c->lq(a3, 80, v1); // lq a3, 80(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t3, 96, v1); // lq t3, 96(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t4, 112, v1); // lq t4, 112(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t5, 128, v1); // lq t5, 128(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(a3, 2800, v1); // sq a3, 2800(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 2816, v1); // sq t3, 2816(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t4, 2832, v1); // sq t4, 2832(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t5, 2848, v1); // sq t5, 2848(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->load_symbol2(a3, cache.font12_table); // lw a3, *font12-table*(s7)
|
|
c->mov64(a3, a3); // or a3, a3, r0
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf13, 208, v1); // lqc2 vf13, 208(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 224, v1); // lqc2 vf14, 224(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 240, v1); // lqc2 vf15, 240(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 352, v1); // sqc2 vf14, 352(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 368, v1); // sqc2 vf14, 368(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 384, v1); // sqc2 vf14, 384(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 400, v1); // sqc2 vf14, 400(v1)
|
|
//beq r0, r0, L67 // beq r0, r0, L67
|
|
c->and_(a0, a0, t2); // and a0, a0, t2
|
|
goto block_84; // branch always
|
|
|
|
|
|
block_120:
|
|
// nop // sll r0, r0, 0
|
|
c->lq(a3, 144, v1); // lq a3, 144(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t2, 160, v1); // lq t2, 160(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t3, 176, v1); // lq t3, 176(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t4, 192, v1); // lq t4, 192(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(a3, 2800, v1); // sq a3, 2800(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 2816, v1); // sq t2, 2816(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 2832, v1); // sq t3, 2832(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t4, 2848, v1); // sq t4, 2848(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->load_symbol2(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, 256, v1); // lqc2 vf13, 256(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 336, v1); // lqc2 vf15, 336(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 272, v1); // lqc2 vf14, 272(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 352, v1); // sqc2 vf14, 352(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 288, v1); // lqc2 vf14, 288(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 368, v1); // sqc2 vf14, 368(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 304, v1); // lqc2 vf14, 304(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 384, v1); // sqc2 vf14, 384(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 320, v1); // lqc2 vf14, 320(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 400, v1); // sqc2 vf14, 400(v1)
|
|
//beq r0, r0, L67 // beq r0, r0, L67
|
|
c->ori(a0, a0, 32); // ori a0, a0, 32
|
|
goto block_84; // branch always
|
|
|
|
|
|
block_121:
|
|
c->addiu(t2, r0, -2); // addiu t2, r0, -2
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L67
|
|
c->and_(a0, a0, t2); // and a0, a0, t2
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
//beq r0, r0, L67 // beq r0, r0, L67
|
|
c->ori(a0, a0, 1); // ori a0, a0, 1
|
|
goto block_84; // branch always
|
|
|
|
|
|
block_123:
|
|
c->addiu(t2, r0, -3); // addiu t2, r0, -3
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L67
|
|
c->and_(a0, a0, t2); // and a0, a0, t2
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
//beq r0, r0, L67 // beq r0, r0, L67
|
|
c->ori(a0, a0, 2); // ori a0, a0, 2
|
|
goto block_84; // branch always
|
|
|
|
|
|
block_125:
|
|
c->mov128_vf_gpr(vf1, t4); // qmtc2.i vf1, t4
|
|
c->daddiu(t2, t3, -45); // daddiu t2, t3, -45
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L75
|
|
c->vitof0(DEST::xyzw, vf1, vf1); // vitof0.xyzw vf1, vf1
|
|
if (bc) {goto block_129;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L74
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_128;} // branch non-likely
|
|
|
|
//beq r0, r0, L67 // beq r0, r0, L67
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf23, vf1); // vaddx.x vf23, vf23, vf1
|
|
goto block_84; // branch always
|
|
|
|
|
|
block_128:
|
|
//beq r0, r0, L67 // beq r0, r0, L67
|
|
c->vsub_bc(DEST::x, BC::x, vf23, vf23, vf1); // vsubx.x vf23, vf23, vf1
|
|
goto block_84; // branch always
|
|
|
|
|
|
block_129:
|
|
//beq r0, r0, L67 // beq r0, r0, L67
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf1); // vaddx.x vf23, vf0, vf1
|
|
goto block_84; // branch always
|
|
|
|
|
|
block_130:
|
|
c->mov128_vf_gpr(vf1, t4); // qmtc2.i vf1, t4
|
|
c->daddiu(t2, t3, -45); // daddiu t2, t3, -45
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L78
|
|
c->vitof0(DEST::xyzw, vf1, vf1); // vitof0.xyzw vf1, vf1
|
|
if (bc) {goto block_134;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L77
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_133;} // branch non-likely
|
|
|
|
//beq r0, r0, L67 // beq r0, r0, L67
|
|
c->vadd_bc(DEST::y, BC::x, vf23, vf23, vf1); // vaddx.y vf23, vf23, vf1
|
|
goto block_84; // branch always
|
|
|
|
|
|
block_133:
|
|
//beq r0, r0, L67 // beq r0, r0, L67
|
|
c->vsub_bc(DEST::y, BC::x, vf23, vf23, vf1); // vsubx.y vf23, vf23, vf1
|
|
goto block_84; // branch always
|
|
|
|
|
|
block_134:
|
|
//beq r0, r0, L67 // beq r0, r0, L67
|
|
c->vadd_bc(DEST::y, BC::x, vf23, vf0, vf1); // vaddx.y vf23, vf0, vf1
|
|
goto block_84; // branch always
|
|
|
|
|
|
block_135:
|
|
//beq r0, r0, L67 // beq r0, r0, L67
|
|
c->sqc2(vf23, 464, v1); // sqc2 vf23, 464(v1)
|
|
goto block_84; // branch always
|
|
|
|
|
|
block_136:
|
|
//beq r0, r0, L67 // beq r0, r0, L67
|
|
c->lqc2(vf23, 464, v1); // lqc2 vf23, 464(v1)
|
|
goto block_84; // branch always
|
|
|
|
|
|
block_137:
|
|
c->daddiu(t3, t2, -3); // daddiu t3, t2, -3
|
|
c->ori(a0, a0, 64); // ori a0, a0, 64
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L83
|
|
c->daddiu(t2, t2, -2); // daddiu t2, t2, -2
|
|
if (bc) {goto block_141;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L82
|
|
c->lqc2(vf14, 384, v1); // lqc2 vf14, 384(v1)
|
|
if (bc) {goto block_140;} // branch non-likely
|
|
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 368, v1); // lqc2 vf14, 368(v1)
|
|
//beq r0, r0, L84 // beq r0, r0, L84
|
|
c->lqc2(vf20, 2816, v1); // lqc2 vf20, 2816(v1)
|
|
goto block_142; // branch always
|
|
|
|
|
|
block_140:
|
|
//beq r0, r0, L84 // beq r0, r0, L84
|
|
c->lqc2(vf20, 2832, v1); // lqc2 vf20, 2832(v1)
|
|
goto block_142; // branch always
|
|
|
|
|
|
block_141:
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 400, v1); // lqc2 vf14, 400(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf20, 2848, v1); // lqc2 vf20, 2848(v1)
|
|
|
|
block_142:
|
|
c->lbu(t2, 4, t1); // lbu t2, 4(t1)
|
|
c->daddiu(t1, t1, 1); // daddiu t1, t1, 1
|
|
c->vadd(DEST::xyz, vf4, vf23, vf15); // vadd.xyz vf4, vf23, vf15
|
|
c->sll(t3, t2, 4); // sll t3, t2, 4
|
|
//beq r0, r0, L87 // beq r0, r0, L87
|
|
c->vsub(DEST::xyzw, vf1, vf25, vf23); // vsub.xyzw vf1, vf25, vf23
|
|
goto block_146; // branch always
|
|
|
|
|
|
block_143:
|
|
// nop // sll r0, r0, 0
|
|
c->addiu(t3, r0, -65); // addiu t3, r0, -65
|
|
c->and_(a0, a0, t3); // and a0, a0, t3
|
|
c->lqc2(vf14, 352, v1); // lqc2 vf14, 352(v1)
|
|
c->vadd(DEST::xyz, vf4, vf23, vf15); // vadd.xyz vf4, vf23, vf15
|
|
c->sll(t3, t2, 4); // sll t3, t2, 4
|
|
c->vsub(DEST::xyzw, vf1, vf25, vf23); // vsub.xyzw vf1, vf25, vf23
|
|
c->daddiu(t4, t2, -10); // daddiu t4, t2, -10
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L86
|
|
c->daddiu(t2, t2, -13); // daddiu t2, t2, -13
|
|
if (bc) {goto block_145;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) != 0; // bne t2, r0, L87
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_146;} // branch non-likely
|
|
|
|
|
|
block_145:
|
|
// nop // sll r0, r0, 0
|
|
c->daddiu(t0, t0, 16); // daddiu t0, t0, 16
|
|
//beq r0, r0, L67 // beq r0, r0, L67
|
|
c->lqc2(vf23, 1120, t0); // lqc2 vf23, 1120(t0)
|
|
goto block_84; // branch always
|
|
|
|
|
|
block_146:
|
|
// nop // sll r0, r0, 0
|
|
c->addu(t2, t3, a3); // addu t2, t3, a3
|
|
c->lqc2(vf5, -96, t2); // lqc2 vf5, -96(t2)
|
|
c->mov128_gpr_vf(t2, vf1); // qmfc2.i t2, vf1
|
|
bc = ((s64)c->sgpr64(t2)) < 0; // bltz t2, L90
|
|
c->vadd(DEST::xyz, vf6, vf5, vf16); // vadd.xyz vf6, vf5, vf16
|
|
if (bc) {goto block_158;} // branch non-likely
|
|
|
|
c->sra(t2, t2, 31); // sra t2, t2, 31
|
|
c->vadd(DEST::xyz, vf7, vf5, vf17); // vadd.xyz vf7, vf5, vf17
|
|
bc = ((s64)c->sgpr64(t2)) < 0; // bltz t2, L67
|
|
c->vadd(DEST::xyz, vf8, vf5, vf18); // vadd.xyz vf8, vf5, vf18
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
c->vadd(DEST::xyz, vf1, vf23, vf0); // vadd.xyz vf1, vf23, vf0
|
|
c->andi(t2, a0, 1); // andi t2, a0, 1
|
|
c->vadd(DEST::xyz, vf2, vf23, vf13); // vadd.xyz vf2, vf23, vf13
|
|
c->sqc2(vf5, 672, v1); // sqc2 vf5, 672(v1)
|
|
c->vadd(DEST::xyz, vf3, vf23, vf14); // vadd.xyz vf3, vf23, vf14
|
|
c->sqc2(vf6, 688, v1); // sqc2 vf6, 688(v1)
|
|
c->vmul(DEST::xyzw, vf19, vf5, vf13); // vmul.xyzw vf19, vf5, vf13
|
|
c->sqc2(vf7, 704, v1); // sqc2 vf7, 704(v1)
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L67
|
|
c->sqc2(vf8, 720, v1); // sqc2 vf8, 720(v1)
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf1, 544, v1); // sqc2 vf1, 544(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf2, 560, v1); // sqc2 vf2, 560(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf3, 576, v1); // sqc2 vf3, 576(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf4, 592, v1); // sqc2 vf4, 592(v1)
|
|
c->lqc2(vf1, 544, v1); // lqc2 vf1, 544(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf2, 560, v1); // lqc2 vf2, 560(v1)
|
|
c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0); // vmulaw.xyzw acc, vf31, vf0
|
|
c->lqc2(vf3, 576, v1); // lqc2 vf3, 576(v1)
|
|
c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf1); // vmaddax.xyzw acc, vf28, vf1
|
|
c->lqc2(vf4, 592, v1); // lqc2 vf4, 592(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(t2, 32, v1); // lq t2, 32(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t3, 48, v1); // lq t3, 48(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 0, a1); // sq t2, 0(a1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 16, a1); // sq t3, 16(a1)
|
|
c->lqc2(vf5, 672, v1); // lqc2 vf5, 672(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf6, 688, v1); // lqc2 vf6, 688(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf7, 704, v1); // lqc2 vf7, 704(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->vmulq(DEST::xyz, vf1, vf1); // vmulq.xyz vf1, vf1, Q
|
|
c->sqc2(vf20, 32, a1); // sqc2 vf20, 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, 720, v1); // lqc2 vf8, 720(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, 2144, v1); // lqc2 vf9, 2144(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_sat(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_sat(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_sat(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(t2, a0, 2); // andi t2, a0, 2
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L88
|
|
c->andi(t2, a0, 64); // andi t2, a0, 64
|
|
if (bc) {goto block_152;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) != 0; // bne t2, r0, L88
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_152;} // branch non-likely
|
|
|
|
//beq r0, r0, L89 // beq r0, r0, L89
|
|
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf19); // vaddw.x vf23, vf23, vf19
|
|
goto block_153; // branch always
|
|
|
|
|
|
block_152:
|
|
// nop // sll r0, r0, 0
|
|
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf14); // vaddw.x vf23, vf23, vf14
|
|
|
|
block_153:
|
|
c->vftoi4_sat(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)
|
|
// nop // sll r0, r0, 0
|
|
c->lw(t3, 80, a1); // lw t3, 80(a1)
|
|
// nop // sll r0, r0, 0
|
|
c->lw(t2, 84, a1); // lw t2, 84(a1)
|
|
c->ori(t4, r0, 36864); // ori t4, r0, 36864
|
|
c->dsubu(t3, t3, t4); // dsubu t3, t3, t4
|
|
c->lw(t4, 224, a1); // lw t4, 224(a1)
|
|
c->ori(t5, r0, 36096); // ori t5, r0, 36096
|
|
c->dsubu(t2, t2, t5); // dsubu t2, t2, t5
|
|
c->lw(t5, 228, a1); // lw t5, 228(a1)
|
|
bc = ((s64)c->sgpr64(t3)) > 0; // bgtz t3, L67
|
|
c->daddiu(t3, t4, -28672); // daddiu t3, t4, -28672
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t2)) > 0; // bgtz t2, L67
|
|
c->daddiu(t2, t5, -29440); // daddiu t2, t5, -29440
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t3)) < 0; // bltz t3, L67
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t2)) < 0; // bltz t2, L67
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_84;} // branch non-likely
|
|
|
|
//beq r0, r0, L67 // beq r0, r0, L67
|
|
c->daddiu(a1, a1, 240); // daddiu a1, a1, 240
|
|
goto block_84; // branch always
|
|
|
|
|
|
block_158:
|
|
c->lw(a0, 2880, v1); // lw a0, 2880(v1)
|
|
c->mov64(t0, v1); // or t0, v1, r0
|
|
c->lw(t1, 2876, v1); // lw t1, 2876(v1)
|
|
c->lqc2(vf23, 1120, t0); // lqc2 vf23, 1120(t0)
|
|
|
|
block_159:
|
|
c->lbu(t2, 4, t1); // lbu t2, 4(t1)
|
|
c->daddiu(t1, t1, 1); // daddiu t1, t1, 1
|
|
c->lqc2(vf20, 2800, v1); // lqc2 vf20, 2800(v1)
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L117
|
|
c->daddiu(t3, t2, -3); // daddiu t3, t2, -3
|
|
if (bc) {goto block_234;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t3)) <= 0; // blez t3, L108
|
|
c->daddiu(t3, t2, -126); // daddiu t3, t2, -126
|
|
if (bc) {goto block_214;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t3) != 0; // bne t3, r0, L112
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_220;} // branch non-likely
|
|
|
|
c->lbu(t2, 4, t1); // lbu t2, 4(t1)
|
|
c->daddiu(t1, t1, 1); // daddiu t1, t1, 1
|
|
c->addiu(t3, r0, 0); // addiu t3, r0, 0
|
|
c->addiu(t4, r0, 0); // addiu t4, r0, 0
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L117
|
|
c->daddiu(t5, t2, -43); // daddiu t5, t2, -43
|
|
if (bc) {goto block_234;} // branch non-likely
|
|
|
|
c->movz(t3, t2, t5); // movz t3, t2, t5
|
|
c->daddiu(t5, t2, -45); // daddiu t5, t2, -45
|
|
c->movz(t3, t2, t5); // movz t3, t2, t5
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t3) != 0; // bne t3, r0, L92
|
|
c->daddiu(t5, t2, -91); // daddiu t5, t2, -91
|
|
if (bc) {goto block_173;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L104
|
|
c->daddiu(t4, t2, -93); // daddiu t4, t2, -93
|
|
if (bc) {goto block_210;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L105
|
|
c->daddiu(t4, t2, -121); // daddiu t4, t2, -121
|
|
if (bc) {goto block_211;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L106
|
|
c->daddiu(t4, t2, -89); // daddiu t4, t2, -89
|
|
if (bc) {goto block_212;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L106
|
|
c->daddiu(t4, t2, -122); // daddiu t4, t2, -122
|
|
if (bc) {goto block_212;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L107
|
|
c->daddiu(t4, t2, -90); // daddiu t4, t2, -90
|
|
if (bc) {goto block_213;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L107
|
|
c->daddiu(t4, t2, -48); // daddiu t4, t2, -48
|
|
if (bc) {goto block_213;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t4)) < 0; // bltz t4, L112
|
|
c->daddiu(t4, t2, -57); // daddiu t4, t2, -57
|
|
if (bc) {goto block_220;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t4)) > 0; // bgtz t4, L112
|
|
c->daddiu(t4, t2, -126); // daddiu t4, t2, -126
|
|
if (bc) {goto block_220;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L112
|
|
c->daddiu(t4, t2, -48); // daddiu t4, t2, -48
|
|
if (bc) {goto block_220;} // branch non-likely
|
|
|
|
|
|
block_173:
|
|
c->lbu(t2, 4, t1); // lbu t2, 4(t1)
|
|
c->daddiu(t1, t1, 1); // daddiu t1, t1, 1
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L117
|
|
c->daddiu(t5, t2, -110); // daddiu t5, t2, -110
|
|
if (bc) {goto block_234;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L93
|
|
c->daddiu(t5, t2, -78); // daddiu t5, t2, -78
|
|
if (bc) {goto block_193;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L93
|
|
c->daddiu(t5, t2, -108); // daddiu t5, t2, -108
|
|
if (bc) {goto block_193;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L95
|
|
c->daddiu(t5, t2, -76); // daddiu t5, t2, -76
|
|
if (bc) {goto block_196;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L95
|
|
c->daddiu(t5, t2, -119); // daddiu t5, t2, -119
|
|
if (bc) {goto block_196;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L91
|
|
c->daddiu(t5, t2, -87); // daddiu t5, t2, -87
|
|
if (bc) {goto block_159;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L91
|
|
c->daddiu(t5, t2, -107); // daddiu t5, t2, -107
|
|
if (bc) {goto block_159;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L97
|
|
c->daddiu(t5, t2, -75); // daddiu t5, t2, -75
|
|
if (bc) {goto block_198;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L97
|
|
c->daddiu(t5, t2, -106); // daddiu t5, t2, -106
|
|
if (bc) {goto block_198;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L91
|
|
c->daddiu(t5, t2, -74); // daddiu t5, t2, -74
|
|
if (bc) {goto block_159;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L91
|
|
c->daddiu(t5, t2, -104); // daddiu t5, t2, -104
|
|
if (bc) {goto block_159;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L98
|
|
c->daddiu(t5, t2, -72); // daddiu t5, t2, -72
|
|
if (bc) {goto block_200;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L98
|
|
c->daddiu(t5, t2, -118); // daddiu t5, t2, -118
|
|
if (bc) {goto block_200;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L101
|
|
c->daddiu(t5, t2, -86); // daddiu t5, t2, -86
|
|
if (bc) {goto block_205;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L101
|
|
c->daddiu(t5, t2, -117); // daddiu t5, t2, -117
|
|
if (bc) {goto block_205;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L96
|
|
c->daddiu(t5, t2, -85); // daddiu t5, t2, -85
|
|
if (bc) {goto block_197;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t5) == 0; // beq t5, r0, L96
|
|
c->daddiu(t5, t2, -48); // daddiu t5, t2, -48
|
|
if (bc) {goto block_197;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t5)) < 0; // bltz t5, L112
|
|
c->daddiu(t6, t2, -57); // daddiu t6, t2, -57
|
|
if (bc) {goto block_220;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t6)) > 0; // bgtz t6, L112
|
|
c->sll(t6, t4, 2); // sll t6, t4, 2
|
|
if (bc) {goto block_220;} // branch non-likely
|
|
|
|
c->daddu(t2, t4, t6); // daddu t2, t4, t6
|
|
// nop // sll r0, r0, 0
|
|
c->sll(t2, t2, 1); // sll t2, t2, 1
|
|
// nop // sll r0, r0, 0
|
|
//beq r0, r0, L92 // beq r0, r0, L92
|
|
c->daddu(t4, t2, t5); // daddu t4, t2, t5
|
|
goto block_173; // branch always
|
|
|
|
|
|
block_193:
|
|
bc = c->sgpr64(t4) != 0; // bne t4, r0, L94
|
|
c->addiu(t2, r0, -33); // addiu t2, r0, -33
|
|
if (bc) {goto block_195;} // branch non-likely
|
|
|
|
// nop // sll r0, r0, 0
|
|
c->lq(a3, 80, v1); // lq a3, 80(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t3, 96, v1); // lq t3, 96(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t4, 112, v1); // lq t4, 112(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t5, 128, v1); // lq t5, 128(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(a3, 2800, v1); // sq a3, 2800(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 2816, v1); // sq t3, 2816(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t4, 2832, v1); // sq t4, 2832(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t5, 2848, v1); // sq t5, 2848(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->load_symbol2(a3, cache.font12_table); // lw a3, *font12-table*(s7)
|
|
c->mov64(a3, a3); // or a3, a3, r0
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf13, 208, v1); // lqc2 vf13, 208(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 224, v1); // lqc2 vf14, 224(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 240, v1); // lqc2 vf15, 240(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 352, v1); // sqc2 vf14, 352(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 368, v1); // sqc2 vf14, 368(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 384, v1); // sqc2 vf14, 384(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 400, v1); // sqc2 vf14, 400(v1)
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->and_(a0, a0, t2); // and a0, a0, t2
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_195:
|
|
// nop // sll r0, r0, 0
|
|
c->lq(a3, 144, v1); // lq a3, 144(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t2, 160, v1); // lq t2, 160(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t3, 176, v1); // lq t3, 176(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t4, 192, v1); // lq t4, 192(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(a3, 2800, v1); // sq a3, 2800(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 2816, v1); // sq t2, 2816(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 2832, v1); // sq t3, 2832(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t4, 2848, v1); // sq t4, 2848(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->load_symbol2(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, 256, v1); // lqc2 vf13, 256(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf15, 336, v1); // lqc2 vf15, 336(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 272, v1); // lqc2 vf14, 272(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 352, v1); // sqc2 vf14, 352(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 288, v1); // lqc2 vf14, 288(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 368, v1); // sqc2 vf14, 368(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 304, v1); // lqc2 vf14, 304(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 384, v1); // sqc2 vf14, 384(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 320, v1); // lqc2 vf14, 320(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf14, 400, v1); // sqc2 vf14, 400(v1)
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->ori(a0, a0, 32); // ori a0, a0, 32
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_196:
|
|
// nop // sll r0, r0, 0
|
|
c->sw(t4, 2864, v1); // sw t4, 2864(v1)
|
|
c->sll(t2, t4, 4); // sll t2, t4, 4
|
|
c->lq(t3, 608, v1); // lq t3, 608(v1)
|
|
c->daddu(t2, t2, v1); // daddu t2, t2, v1
|
|
c->lq(t4, 624, v1); // lq t4, 624(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 800, v1); // sq t3, 800(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t4, 816, v1); // sq t4, 816(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t3, 640, v1); // lq t3, 640(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t4, 656, v1); // lq t4, 656(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 832, v1); // sq t3, 832(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t4, 848, v1); // sq t4, 848(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lwu(t4, 2160, t2); // lwu t4, 2160(t2)
|
|
// nop // sll r0, r0, 0
|
|
c->lwu(t3, 2164, t2); // lwu t3, 2164(t2)
|
|
c->pextlb(t4, r0, t4); // pextlb t4, r0, t4
|
|
c->mfc1(r0, f31); // mfc1 r0, f31
|
|
c->pextlh(t4, r0, t4); // pextlh t4, r0, t4
|
|
c->mfc1(r0, f31); // mfc1 r0, f31
|
|
c->pextlb(t3, r0, t3); // pextlb t3, r0, t3
|
|
c->sq(t4, 608, v1); // sq t4, 608(v1)
|
|
c->pextlh(t3, r0, t3); // pextlh t3, r0, t3
|
|
c->sq(t4, 992, v1); // sq t4, 992(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 624, v1); // sq t3, 624(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 1008, v1); // sq t3, 1008(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lwu(t3, 2168, t2); // lwu t3, 2168(t2)
|
|
// nop // sll r0, r0, 0
|
|
c->lwu(t2, 2172, t2); // lwu t2, 2172(t2)
|
|
c->pextlb(t3, r0, t3); // pextlb t3, r0, t3
|
|
c->mfc1(r0, f31); // mfc1 r0, f31
|
|
c->pextlh(t3, r0, t3); // pextlh t3, r0, t3
|
|
c->mfc1(r0, f31); // mfc1 r0, f31
|
|
c->pextlb(t2, r0, t2); // pextlb t2, r0, t2
|
|
c->sq(t3, 640, v1); // sq t3, 640(v1)
|
|
c->pextlh(t2, r0, t2); // pextlh t2, r0, t2
|
|
c->sq(t3, 1024, v1); // sq t3, 1024(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 656, v1); // sq t2, 656(v1)
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->sq(t2, 1040, v1); // sq t2, 1040(v1)
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_197:
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t2, 608, v1); // lq t2, 608(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t3, 624, v1); // lq t3, 624(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 800, v1); // sq t2, 800(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 816, v1); // sq t3, 816(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t2, 640, v1); // lq t2, 640(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t3, 656, v1); // lq t3, 656(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 832, v1); // sq t2, 832(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 848, v1); // sq t3, 848(v1)
|
|
c->pextlb(t2, r0, t4); // pextlb t2, r0, t4
|
|
c->mfc1(r0, f31); // mfc1 r0, f31
|
|
c->pextlh(t2, r0, t2); // pextlh t2, r0, t2
|
|
c->mfc1(r0, f31); // mfc1 r0, f31
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 608, v1); // sq t2, 608(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 992, v1); // sq t2, 992(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 624, v1); // sq t2, 624(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 1008, v1); // sq t2, 1008(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 640, v1); // sq t2, 640(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 1024, v1); // sq t2, 1024(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 656, v1); // sq t2, 656(v1)
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->sq(t2, 1040, v1); // sq t2, 1040(v1)
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_198:
|
|
c->addiu(t2, r0, -3); // addiu t2, r0, -3
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L91
|
|
c->and_(a0, a0, t2); // and a0, a0, t2
|
|
if (bc) {goto block_159;} // branch non-likely
|
|
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->ori(a0, a0, 2); // ori a0, a0, 2
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_200:
|
|
c->mov128_vf_gpr(vf1, t4); // qmtc2.i vf1, t4
|
|
c->daddiu(t2, t3, -45); // daddiu t2, t3, -45
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L100
|
|
c->vitof0(DEST::xyzw, vf1, vf1); // vitof0.xyzw vf1, vf1
|
|
if (bc) {goto block_204;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L99
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_203;} // branch non-likely
|
|
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf23, vf1); // vaddx.x vf23, vf23, vf1
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_203:
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->vsub_bc(DEST::x, BC::x, vf23, vf23, vf1); // vsubx.x vf23, vf23, vf1
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_204:
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->vadd_bc(DEST::x, BC::x, vf23, vf0, vf1); // vaddx.x vf23, vf0, vf1
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_205:
|
|
c->mov128_vf_gpr(vf1, t4); // qmtc2.i vf1, t4
|
|
c->daddiu(t2, t3, -45); // daddiu t2, t3, -45
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L103
|
|
c->vitof0(DEST::xyzw, vf1, vf1); // vitof0.xyzw vf1, vf1
|
|
if (bc) {goto block_209;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L102
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_208;} // branch non-likely
|
|
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->vadd_bc(DEST::y, BC::x, vf23, vf23, vf1); // vaddx.y vf23, vf23, vf1
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_208:
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->vsub_bc(DEST::y, BC::x, vf23, vf23, vf1); // vsubx.y vf23, vf23, vf1
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_209:
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->vadd_bc(DEST::y, BC::x, vf23, vf0, vf1); // vaddx.y vf23, vf0, vf1
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_210:
|
|
// nop // sll r0, r0, 0
|
|
c->lw(t2, 2864, v1); // lw t2, 2864(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf9, 608, v1); // lqc2 vf9, 608(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf10, 624, v1); // lqc2 vf10, 624(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf11, 640, v1); // lqc2 vf11, 640(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf12, 656, v1); // lqc2 vf12, 656(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sw(t2, 2868, v1); // sw t2, 2868(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf9, 480, v1); // sqc2 vf9, 480(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf10, 496, v1); // sqc2 vf10, 496(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf11, 512, v1); // sqc2 vf11, 512(v1)
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->sqc2(vf12, 528, v1); // sqc2 vf12, 528(v1)
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_211:
|
|
// nop // sll r0, r0, 0
|
|
c->lw(t2, 2868, v1); // lw t2, 2868(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf9, 480, v1); // lqc2 vf9, 480(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf10, 496, v1); // lqc2 vf10, 496(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf11, 512, v1); // lqc2 vf11, 512(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf12, 528, v1); // lqc2 vf12, 528(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sw(t2, 2864, v1); // sw t2, 2864(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf9, 608, v1); // sqc2 vf9, 608(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf9, 992, v1); // sqc2 vf9, 992(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf10, 624, v1); // sqc2 vf10, 624(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf10, 1008, v1); // sqc2 vf10, 1008(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf11, 640, v1); // sqc2 vf11, 640(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf11, 1024, v1); // sqc2 vf11, 1024(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf12, 656, v1); // sqc2 vf12, 656(v1)
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->sqc2(vf12, 1040, v1); // sqc2 vf12, 1040(v1)
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_212:
|
|
// nop // sll r0, r0, 0
|
|
c->lw(t2, 2864, v1); // lw t2, 2864(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf9, 608, v1); // lqc2 vf9, 608(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf10, 624, v1); // lqc2 vf10, 624(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf11, 640, v1); // lqc2 vf11, 640(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf12, 656, v1); // lqc2 vf12, 656(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sw(t2, 2868, v1); // sw t2, 2868(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf9, 480, v1); // sqc2 vf9, 480(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf10, 496, v1); // sqc2 vf10, 496(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf11, 512, v1); // sqc2 vf11, 512(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf12, 528, v1); // sqc2 vf12, 528(v1)
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->sqc2(vf23, 464, v1); // sqc2 vf23, 464(v1)
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_213:
|
|
// nop // sll r0, r0, 0
|
|
c->lw(t2, 2868, v1); // lw t2, 2868(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf9, 480, v1); // lqc2 vf9, 480(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf10, 496, v1); // lqc2 vf10, 496(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf11, 512, v1); // lqc2 vf11, 512(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf12, 528, v1); // lqc2 vf12, 528(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sw(t2, 2864, v1); // sw t2, 2864(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf9, 608, v1); // sqc2 vf9, 608(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf9, 992, v1); // sqc2 vf9, 992(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf10, 624, v1); // sqc2 vf10, 624(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf10, 1008, v1); // sqc2 vf10, 1008(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf11, 640, v1); // sqc2 vf11, 640(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf11, 1024, v1); // sqc2 vf11, 1024(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf12, 656, v1); // sqc2 vf12, 656(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf12, 1040, v1); // sqc2 vf12, 1040(v1)
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->lqc2(vf23, 464, v1); // lqc2 vf23, 464(v1)
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_214:
|
|
c->daddiu(t3, t2, -3); // daddiu t3, t2, -3
|
|
c->ori(a0, a0, 64); // ori a0, a0, 64
|
|
bc = c->sgpr64(t3) == 0; // beq t3, r0, L110
|
|
c->daddiu(t2, t2, -2); // daddiu t2, t2, -2
|
|
if (bc) {goto block_218;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L109
|
|
c->lqc2(vf14, 384, v1); // lqc2 vf14, 384(v1)
|
|
if (bc) {goto block_217;} // branch non-likely
|
|
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 368, v1); // lqc2 vf14, 368(v1)
|
|
//beq r0, r0, L111 // beq r0, r0, L111
|
|
c->lqc2(vf20, 2816, v1); // lqc2 vf20, 2816(v1)
|
|
goto block_219; // branch always
|
|
|
|
|
|
block_217:
|
|
//beq r0, r0, L111 // beq r0, r0, L111
|
|
c->lqc2(vf20, 2832, v1); // lqc2 vf20, 2832(v1)
|
|
goto block_219; // branch always
|
|
|
|
|
|
block_218:
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf14, 400, v1); // lqc2 vf14, 400(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf20, 2848, v1); // lqc2 vf20, 2848(v1)
|
|
|
|
block_219:
|
|
c->lbu(t2, 4, t1); // lbu t2, 4(t1)
|
|
c->daddiu(t1, t1, 1); // daddiu t1, t1, 1
|
|
c->vadd(DEST::xyz, vf4, vf23, vf15); // vadd.xyz vf4, vf23, vf15
|
|
c->sll(t3, t2, 4); // sll t3, t2, 4
|
|
//beq r0, r0, L114 // beq r0, r0, L114
|
|
c->vsub(DEST::xyzw, vf1, vf25, vf23); // vsub.xyzw vf1, vf25, vf23
|
|
goto block_223; // branch always
|
|
|
|
|
|
block_220:
|
|
// nop // sll r0, r0, 0
|
|
c->addiu(t3, r0, -65); // addiu t3, r0, -65
|
|
c->and_(a0, a0, t3); // and a0, a0, t3
|
|
c->lqc2(vf14, 352, v1); // lqc2 vf14, 352(v1)
|
|
c->vadd(DEST::xyz, vf4, vf23, vf15); // vadd.xyz vf4, vf23, vf15
|
|
c->sll(t3, t2, 4); // sll t3, t2, 4
|
|
c->vsub(DEST::xyzw, vf1, vf25, vf23); // vsub.xyzw vf1, vf25, vf23
|
|
c->daddiu(t4, t2, -10); // daddiu t4, t2, -10
|
|
bc = c->sgpr64(t4) == 0; // beq t4, r0, L113
|
|
c->daddiu(t2, t2, -13); // daddiu t2, t2, -13
|
|
if (bc) {goto block_222;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) != 0; // bne t2, r0, L114
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_223;} // branch non-likely
|
|
|
|
|
|
block_222:
|
|
c->daddiu(t0, t0, 16); // daddiu t0, t0, 16
|
|
// nop // sll r0, r0, 0
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->lqc2(vf23, 1120, t0); // lqc2 vf23, 1120(t0)
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_223:
|
|
c->addu(t2, t3, a3); // addu t2, t3, a3
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf5, -96, t2); // lqc2 vf5, -96(t2)
|
|
c->mov128_gpr_vf(t2, vf1); // qmfc2.i t2, vf1
|
|
bc = ((s64)c->sgpr64(t2)) < 0; // bltz t2, L117
|
|
c->vadd(DEST::xyz, vf6, vf5, vf16); // vadd.xyz vf6, vf5, vf16
|
|
if (bc) {goto block_234;} // branch non-likely
|
|
|
|
c->sra(t2, t2, 31); // sra t2, t2, 31
|
|
c->vadd(DEST::xyz, vf7, vf5, vf17); // vadd.xyz vf7, vf5, vf17
|
|
bc = ((s64)c->sgpr64(t2)) < 0; // bltz t2, L91
|
|
c->vadd(DEST::xyz, vf8, vf5, vf18); // vadd.xyz vf8, vf5, vf18
|
|
if (bc) {goto block_159;} // 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, 672, v1); // sqc2 vf5, 672(v1)
|
|
c->vadd(DEST::xyz, vf4, vf23, vf15); // vadd.xyz vf4, vf23, vf15
|
|
c->sqc2(vf6, 688, v1); // sqc2 vf6, 688(v1)
|
|
c->vmul(DEST::xyzw, vf19, vf5, vf13); // vmul.xyzw vf19, vf5, vf13
|
|
c->sqc2(vf7, 704, v1); // sqc2 vf7, 704(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf8, 720, v1); // sqc2 vf8, 720(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf1, 544, v1); // sqc2 vf1, 544(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf2, 560, v1); // sqc2 vf2, 560(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf3, 576, v1); // sqc2 vf3, 576(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sqc2(vf4, 592, v1); // sqc2 vf4, 592(v1)
|
|
c->lqc2(vf1, 544, v1); // lqc2 vf1, 544(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf2, 560, v1); // lqc2 vf2, 560(v1)
|
|
c->vmula_bc(DEST::xyzw, BC::w, vf31, vf0); // vmulaw.xyzw acc, vf31, vf0
|
|
c->lqc2(vf3, 576, v1); // lqc2 vf3, 576(v1)
|
|
c->vmadda_bc(DEST::xyzw, BC::x, vf28, vf1); // vmaddax.xyzw acc, vf28, vf1
|
|
c->lqc2(vf4, 592, v1); // lqc2 vf4, 592(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(t2, 32, v1); // lq t2, 32(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lq(t3, 48, v1); // lq t3, 48(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t2, 0, a1); // sq t2, 0(a1)
|
|
// nop // sll r0, r0, 0
|
|
c->sq(t3, 16, a1); // sq t3, 16(a1)
|
|
c->lqc2(vf5, 672, v1); // lqc2 vf5, 672(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf6, 688, v1); // lqc2 vf6, 688(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf7, 704, v1); // lqc2 vf7, 704(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->vmulq(DEST::xyz, vf1, vf1); // vmulq.xyz vf1, vf1, Q
|
|
c->sqc2(vf20, 32, a1); // sqc2 vf20, 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, 720, v1); // lqc2 vf8, 720(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, 608, v1); // lqc2 vf9, 608(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf10, 624, v1); // lqc2 vf10, 624(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->lqc2(vf11, 640, v1); // lqc2 vf11, 640(v1)
|
|
// nop // sll r0, r0, 0
|
|
c->vftoi4_sat(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, 656, v1); // lqc2 vf12, 656(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_sat(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_sat(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(t2, a0, 2); // andi t2, a0, 2
|
|
// nop // sll r0, r0, 0
|
|
bc = c->sgpr64(t2) == 0; // beq t2, r0, L115
|
|
c->andi(t2, a0, 64); // andi t2, a0, 64
|
|
if (bc) {goto block_228;} // branch non-likely
|
|
|
|
bc = c->sgpr64(t2) != 0; // bne t2, r0, L115
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_228;} // branch non-likely
|
|
|
|
//beq r0, r0, L116 // beq r0, r0, L116
|
|
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf19); // vaddw.x vf23, vf23, vf19
|
|
goto block_229; // branch always
|
|
|
|
|
|
block_228:
|
|
// nop // sll r0, r0, 0
|
|
c->vadd_bc(DEST::x, BC::w, vf23, vf23, vf14); // vaddw.x vf23, vf23, vf14
|
|
|
|
block_229:
|
|
c->vftoi4_sat(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)
|
|
// nop // sll r0, r0, 0
|
|
c->lw(t3, 80, a1); // lw t3, 80(a1)
|
|
// nop // sll r0, r0, 0
|
|
c->lw(t2, 84, a1); // lw t2, 84(a1)
|
|
c->ori(t4, r0, 36864); // ori t4, r0, 36864
|
|
c->dsubu(t3, t3, t4); // dsubu t3, t3, t4
|
|
c->lw(t4, 224, a1); // lw t4, 224(a1)
|
|
c->ori(t5, r0, 36096); // ori t5, r0, 36096
|
|
c->dsubu(t2, t2, t5); // dsubu t2, t2, t5
|
|
c->lw(t5, 228, a1); // lw t5, 228(a1)
|
|
bc = ((s64)c->sgpr64(t3)) > 0; // bgtz t3, L91
|
|
c->daddiu(t3, t4, -28672); // daddiu t3, t4, -28672
|
|
if (bc) {goto block_159;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t2)) > 0; // bgtz t2, L91
|
|
c->daddiu(t2, t5, -29440); // daddiu t2, t5, -29440
|
|
if (bc) {goto block_159;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t3)) < 0; // bltz t3, L91
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_159;} // branch non-likely
|
|
|
|
bc = ((s64)c->sgpr64(t2)) < 0; // bltz t2, L91
|
|
// nop // sll r0, r0, 0
|
|
if (bc) {goto block_159;} // branch non-likely
|
|
|
|
//beq r0, r0, L91 // beq r0, r0, L91
|
|
c->daddiu(a1, a1, 240); // daddiu a1, a1, 240
|
|
goto block_159; // branch always
|
|
|
|
|
|
block_234:
|
|
c->lw(v1, 2872, v1); // lw v1, 2872(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
|
|
|
|
// 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.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_params = intern_from_c("*video-params*").c();
|
|
gLinkedFunctionTable.reg("draw-string-asm", execute, 512);
|
|
}
|
|
|
|
} // namespace draw_string_asm
|
|
} // namespace Mips2C
|
|
|