You've already forked DNZHRecomp
mirror of
https://github.com/izzy2lost/DNZHRecomp.git
synced 2026-03-10 11:36:25 -07:00
2273 lines
71 KiB
C++
2273 lines
71 KiB
C++
|
|
#include "librecomp/rsp.hpp"
|
||
|
|
#include "librecomp/rsp_vu_impl.hpp"
|
||
|
|
RspExitReason aspMain(uint8_t* rdram, [[maybe_unused]] uint32_t ucode_addr) {
|
||
|
|
uint32_t r1 = 0, r2 = 0, r3 = 0, r4 = 0, r5 = 0, r6 = 0, r7 = 0;
|
||
|
|
uint32_t r8 = 0, r9 = 0, r10 = 0, r11 = 0, r12 = 0, r13 = 0, r14 = 0, r15 = 0;
|
||
|
|
uint32_t r16 = 0, r17 = 0, r18 = 0, r19 = 0, r20 = 0, r21 = 0, r22 = 0, r23 = 0;
|
||
|
|
uint32_t r24 = 0, r25 = 0, r26 = 0, r27 = 0, r28 = 0, r29 = 0, r30 = 0, r31 = 0;
|
||
|
|
uint32_t dma_mem_address = 0, dma_dram_address = 0, jump_target = 0;
|
||
|
|
const char * debug_file = NULL; int debug_line = 0;
|
||
|
|
RSP rsp{};
|
||
|
|
r1 = 0xFC0;
|
||
|
|
// addi $24, $zero, 0x360
|
||
|
|
r24 = RSP_ADD32(0, 0X360);
|
||
|
|
// addi $23, $zero, 0xF90
|
||
|
|
r23 = RSP_ADD32(0, 0XF90);
|
||
|
|
// lw $28, 0x30($1)
|
||
|
|
r28 = RSP_MEM_W_LOAD(0X30, r1);
|
||
|
|
// lw $27, 0x34($1)
|
||
|
|
r27 = RSP_MEM_W_LOAD(0X34, r1);
|
||
|
|
// mfc0 $5, DPC_STATUS
|
||
|
|
r5 = 0;
|
||
|
|
// andi $4, $5, 0x1
|
||
|
|
r4 = r5 & 0X1;
|
||
|
|
// beq $4, $zero, L_10B4
|
||
|
|
if (r4 == 0) {
|
||
|
|
// andi $4, $5, 0x100
|
||
|
|
r4 = r5 & 0X100;
|
||
|
|
goto L_10B4;
|
||
|
|
}
|
||
|
|
// andi $4, $5, 0x100
|
||
|
|
r4 = r5 & 0X100;
|
||
|
|
// beq $4, $zero, L_10B4
|
||
|
|
if (r4 == 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_10B4;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_10A8:
|
||
|
|
// mfc0 $4, DPC_STATUS
|
||
|
|
r4 = 0;
|
||
|
|
// andi $4, $4, 0x100
|
||
|
|
r4 = r4 & 0X100;
|
||
|
|
// bgtz $4, L_10A8
|
||
|
|
if (RSP_SIGNED(r4) > 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_10A8;
|
||
|
|
}
|
||
|
|
L_10B4:
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// jal 0x1150
|
||
|
|
r31 = 0x10C0;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1150;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_10C0:
|
||
|
|
// addi $2, $zero, 0xF
|
||
|
|
r2 = RSP_ADD32(0, 0XF);
|
||
|
|
// addi $1, $zero, 0x320
|
||
|
|
r1 = RSP_ADD32(0, 0X320);
|
||
|
|
L_10C8:
|
||
|
|
// sw $zero, 0x0($1)
|
||
|
|
RSP_MEM_W_STORE(0X0, r1, 0);
|
||
|
|
// bgtz $2, L_10C8
|
||
|
|
if (RSP_SIGNED(r2) > 0) {
|
||
|
|
// addi $2, $2, -0x1
|
||
|
|
r2 = RSP_ADD32(r2, -0X1);
|
||
|
|
goto L_10C8;
|
||
|
|
}
|
||
|
|
// addi $2, $2, -0x1
|
||
|
|
r2 = RSP_ADD32(r2, -0X1);
|
||
|
|
L_10D4:
|
||
|
|
// mfc0 $2, SP_DMA_BUSY
|
||
|
|
r2 = 0;
|
||
|
|
// bne $2, $zero, L_10D4
|
||
|
|
if (r2 != 0) {
|
||
|
|
// addi $29, $zero, 0x380
|
||
|
|
r29 = RSP_ADD32(0, 0X380);
|
||
|
|
goto L_10D4;
|
||
|
|
}
|
||
|
|
// addi $29, $zero, 0x380
|
||
|
|
r29 = RSP_ADD32(0, 0X380);
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
L_10E4:
|
||
|
|
// lw $26, 0x0($29)
|
||
|
|
r26 = RSP_MEM_W_LOAD(0X0, r29);
|
||
|
|
// lw $25, 0x4($29)
|
||
|
|
r25 = RSP_MEM_W_LOAD(0X4, r29);
|
||
|
|
// srl $1, $26, 23
|
||
|
|
r1 = S32(U32(r26) >> 23);
|
||
|
|
// andi $1, $1, 0xFE
|
||
|
|
r1 = r1 & 0XFE;
|
||
|
|
// addi $28, $28, 0x8
|
||
|
|
r28 = RSP_ADD32(r28, 0X8);
|
||
|
|
// addi $27, $27, -0x8
|
||
|
|
r27 = RSP_ADD32(r27, -0X8);
|
||
|
|
// addi $29, $29, 0x8
|
||
|
|
r29 = RSP_ADD32(r29, 0X8);
|
||
|
|
// addi $30, $30, -0x8
|
||
|
|
r30 = RSP_ADD32(r30, -0X8);
|
||
|
|
// add $2, $zero, $1
|
||
|
|
r2 = RSP_ADD32(0, r1);
|
||
|
|
// lh $2, 0x10($2)
|
||
|
|
r2 = RSP_MEM_H_LOAD(0X10, r2);
|
||
|
|
// jr $2
|
||
|
|
jump_target = r2;
|
||
|
|
debug_file = __FILE__; debug_line = __LINE__;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto do_indirect_jump;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// break 0
|
||
|
|
return RspExitReason::Broke;
|
||
|
|
L_1118:
|
||
|
|
// bgtz $30, L_10E4
|
||
|
|
if (RSP_SIGNED(r30) > 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_10E4;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// blez $27, L_1138
|
||
|
|
if (RSP_SIGNED(r27) <= 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1138;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// jal 0x1150
|
||
|
|
r31 = 0x1130;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1150;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_1130:
|
||
|
|
// j L_10D4
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_10D4;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_1138:
|
||
|
|
// ori $1, $zero, 0x4000
|
||
|
|
r1 = 0 | 0X4000;
|
||
|
|
// mtc0 $1, SP_STATUS
|
||
|
|
// break 0
|
||
|
|
return RspExitReason::Broke;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_1148:
|
||
|
|
// b L_1148
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1148;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_1150:
|
||
|
|
// addi $5, $ra, 0x0
|
||
|
|
r5 = RSP_ADD32(r31, 0X0);
|
||
|
|
// add $2, $zero, $28
|
||
|
|
r2 = RSP_ADD32(0, r28);
|
||
|
|
// addi $3, $27, 0x0
|
||
|
|
r3 = RSP_ADD32(r27, 0X0);
|
||
|
|
// addi $4, $3, -0x140
|
||
|
|
r4 = RSP_ADD32(r3, -0X140);
|
||
|
|
// blez $4, L_116C
|
||
|
|
if (RSP_SIGNED(r4) <= 0) {
|
||
|
|
// addi $1, $zero, 0x380
|
||
|
|
r1 = RSP_ADD32(0, 0X380);
|
||
|
|
goto L_116C;
|
||
|
|
}
|
||
|
|
// addi $1, $zero, 0x380
|
||
|
|
r1 = RSP_ADD32(0, 0X380);
|
||
|
|
// addi $3, $zero, 0x140
|
||
|
|
r3 = RSP_ADD32(0, 0X140);
|
||
|
|
L_116C:
|
||
|
|
// addi $30, $3, 0x0
|
||
|
|
r30 = RSP_ADD32(r3, 0X0);
|
||
|
|
// jal 0x1184
|
||
|
|
r31 = 0x1178;
|
||
|
|
// addi $3, $3, -0x1
|
||
|
|
r3 = RSP_ADD32(r3, -0X1);
|
||
|
|
goto L_1184;
|
||
|
|
// addi $3, $3, -0x1
|
||
|
|
r3 = RSP_ADD32(r3, -0X1);
|
||
|
|
L_1178:
|
||
|
|
// addi $29, $zero, 0x380
|
||
|
|
r29 = RSP_ADD32(0, 0X380);
|
||
|
|
// jr $5
|
||
|
|
jump_target = r5;
|
||
|
|
debug_file = __FILE__; debug_line = __LINE__;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto do_indirect_jump;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_1184:
|
||
|
|
// mfc0 $4, SP_SEMAPHORE
|
||
|
|
r4 = 0;
|
||
|
|
// bne $4, $zero, L_1184
|
||
|
|
if (r4 != 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1184;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_1190:
|
||
|
|
// mfc0 $4, SP_DMA_FULL
|
||
|
|
r4 = 0;
|
||
|
|
// bne $4, $zero, L_1190
|
||
|
|
if (r4 != 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1190;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// mtc0 $1, SP_MEM_ADDR
|
||
|
|
SET_DMA_MEM(r1);
|
||
|
|
// mtc0 $2, SP_DRAM_ADDR
|
||
|
|
SET_DMA_DRAM(r2);
|
||
|
|
// mtc0 $3, SP_RD_LEN
|
||
|
|
DO_DMA_READ(r3);
|
||
|
|
// jr $ra
|
||
|
|
jump_target = r31;
|
||
|
|
debug_file = __FILE__; debug_line = __LINE__;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto do_indirect_jump;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_11B0:
|
||
|
|
// mfc0 $4, SP_SEMAPHORE
|
||
|
|
r4 = 0;
|
||
|
|
// bne $4, $zero, L_11B0
|
||
|
|
if (r4 != 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_11B0;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_11BC:
|
||
|
|
// mfc0 $4, SP_DMA_FULL
|
||
|
|
r4 = 0;
|
||
|
|
// bne $4, $zero, L_11BC
|
||
|
|
if (r4 != 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_11BC;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// mtc0 $1, SP_MEM_ADDR
|
||
|
|
SET_DMA_MEM(r1);
|
||
|
|
// mtc0 $2, SP_DRAM_ADDR
|
||
|
|
SET_DMA_DRAM(r2);
|
||
|
|
// mtc0 $3, SP_WR_LEN
|
||
|
|
DO_DMA_WRITE(r3);
|
||
|
|
// jr $ra
|
||
|
|
jump_target = r31;
|
||
|
|
debug_file = __FILE__; debug_line = __LINE__;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto do_indirect_jump;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_11DC:
|
||
|
|
// andi $3, $25, 0xFFFF
|
||
|
|
r3 = r25 & 0XFFFF;
|
||
|
|
// beq $3, $zero, L_1118
|
||
|
|
if (r3 == 0) {
|
||
|
|
// addi $4, $zero, 0x5C0
|
||
|
|
r4 = RSP_ADD32(0, 0X5C0);
|
||
|
|
goto L_1118;
|
||
|
|
}
|
||
|
|
// addi $4, $zero, 0x5C0
|
||
|
|
r4 = RSP_ADD32(0, 0X5C0);
|
||
|
|
// andi $2, $26, 0xFFFF
|
||
|
|
r2 = r26 & 0XFFFF;
|
||
|
|
// add $2, $2, $4
|
||
|
|
r2 = RSP_ADD32(r2, r4);
|
||
|
|
// vxor $v1, $v1, $v1
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[1], rsp.vpu.r[1], rsp.vpu.r[1]);
|
||
|
|
// addi $3, $3, -0x10
|
||
|
|
r3 = RSP_ADD32(r3, -0X10);
|
||
|
|
L_11F8:
|
||
|
|
// sdv $v1[0], 0x0($2)
|
||
|
|
rsp.SDV<0>(rsp.vpu.r[1], r2, 0X0);
|
||
|
|
// sdv $v1[0], 0x8($2)
|
||
|
|
rsp.SDV<0>(rsp.vpu.r[1], r2, 0X1);
|
||
|
|
// addi $2, $2, 0x10
|
||
|
|
r2 = RSP_ADD32(r2, 0X10);
|
||
|
|
// bgtz $3, L_11F8
|
||
|
|
if (RSP_SIGNED(r3) > 0) {
|
||
|
|
// addi $3, $3, -0x10
|
||
|
|
r3 = RSP_ADD32(r3, -0X10);
|
||
|
|
goto L_11F8;
|
||
|
|
}
|
||
|
|
// addi $3, $3, -0x10
|
||
|
|
r3 = RSP_ADD32(r3, -0X10);
|
||
|
|
// j L_1118
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1118;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_1214:
|
||
|
|
// lhu $3, 0x4($24)
|
||
|
|
r3 = RSP_MEM_HU_LOAD(0X4, r24);
|
||
|
|
// beq $3, $zero, L_1118
|
||
|
|
if (r3 == 0) {
|
||
|
|
// sll $2, $25, 8
|
||
|
|
r2 = S32(r25) << 8;
|
||
|
|
goto L_1118;
|
||
|
|
}
|
||
|
|
// sll $2, $25, 8
|
||
|
|
r2 = S32(r25) << 8;
|
||
|
|
// srl $2, $2, 8
|
||
|
|
r2 = S32(U32(r2) >> 8);
|
||
|
|
// srl $4, $25, 24
|
||
|
|
r4 = S32(U32(r25) >> 24);
|
||
|
|
// sll $4, $4, 2
|
||
|
|
r4 = S32(r4) << 2;
|
||
|
|
// lw $5, 0x320($4)
|
||
|
|
r5 = RSP_MEM_W_LOAD(0X320, r4);
|
||
|
|
// add $2, $2, $5
|
||
|
|
r2 = RSP_ADD32(r2, r5);
|
||
|
|
// lhu $1, 0x0($24)
|
||
|
|
r1 = RSP_MEM_HU_LOAD(0X0, r24);
|
||
|
|
// jal 0x1184
|
||
|
|
r31 = 0x1240;
|
||
|
|
// addi $3, $3, -0x1
|
||
|
|
r3 = RSP_ADD32(r3, -0X1);
|
||
|
|
goto L_1184;
|
||
|
|
// addi $3, $3, -0x1
|
||
|
|
r3 = RSP_ADD32(r3, -0X1);
|
||
|
|
L_1240:
|
||
|
|
// mfc0 $1, SP_DMA_BUSY
|
||
|
|
r1 = 0;
|
||
|
|
// bne $1, $zero, L_1240
|
||
|
|
if (r1 != 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1240;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// j L_1118
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
goto L_1118;
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
L_1254:
|
||
|
|
// lhu $3, 0x4($24)
|
||
|
|
r3 = RSP_MEM_HU_LOAD(0X4, r24);
|
||
|
|
// beq $3, $zero, L_1118
|
||
|
|
if (r3 == 0) {
|
||
|
|
// sll $2, $25, 8
|
||
|
|
r2 = S32(r25) << 8;
|
||
|
|
goto L_1118;
|
||
|
|
}
|
||
|
|
// sll $2, $25, 8
|
||
|
|
r2 = S32(r25) << 8;
|
||
|
|
// srl $2, $2, 8
|
||
|
|
r2 = S32(U32(r2) >> 8);
|
||
|
|
// srl $4, $25, 24
|
||
|
|
r4 = S32(U32(r25) >> 24);
|
||
|
|
// sll $4, $4, 2
|
||
|
|
r4 = S32(r4) << 2;
|
||
|
|
// lw $5, 0x320($4)
|
||
|
|
r5 = RSP_MEM_W_LOAD(0X320, r4);
|
||
|
|
// add $2, $2, $5
|
||
|
|
r2 = RSP_ADD32(r2, r5);
|
||
|
|
// lhu $1, 0x2($24)
|
||
|
|
r1 = RSP_MEM_HU_LOAD(0X2, r24);
|
||
|
|
// jal 0x11B0
|
||
|
|
r31 = 0x1280;
|
||
|
|
// addi $3, $3, -0x1
|
||
|
|
r3 = RSP_ADD32(r3, -0X1);
|
||
|
|
goto L_11B0;
|
||
|
|
// addi $3, $3, -0x1
|
||
|
|
r3 = RSP_ADD32(r3, -0X1);
|
||
|
|
L_1280:
|
||
|
|
// mfc0 $1, SP_DMA_BUSY
|
||
|
|
r1 = 0;
|
||
|
|
// bne $1, $zero, L_1280
|
||
|
|
if (r1 != 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1280;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// j L_1118
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
goto L_1118;
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
L_1294:
|
||
|
|
// sll $2, $25, 8
|
||
|
|
r2 = S32(r25) << 8;
|
||
|
|
// srl $2, $2, 8
|
||
|
|
r2 = S32(U32(r2) >> 8);
|
||
|
|
// srl $4, $25, 24
|
||
|
|
r4 = S32(U32(r25) >> 24);
|
||
|
|
// sll $4, $4, 2
|
||
|
|
r4 = S32(r4) << 2;
|
||
|
|
// lw $5, 0x320($4)
|
||
|
|
r5 = RSP_MEM_W_LOAD(0X320, r4);
|
||
|
|
// add $2, $2, $5
|
||
|
|
r2 = RSP_ADD32(r2, r5);
|
||
|
|
// addi $1, $zero, 0x4C0
|
||
|
|
r1 = RSP_ADD32(0, 0X4C0);
|
||
|
|
// andi $3, $26, 0xFFFF
|
||
|
|
r3 = r26 & 0XFFFF;
|
||
|
|
// jal 0x1184
|
||
|
|
r31 = 0x12BC;
|
||
|
|
// addi $3, $3, -0x1
|
||
|
|
r3 = RSP_ADD32(r3, -0X1);
|
||
|
|
goto L_1184;
|
||
|
|
// addi $3, $3, -0x1
|
||
|
|
r3 = RSP_ADD32(r3, -0X1);
|
||
|
|
L_12BC:
|
||
|
|
// mfc0 $1, SP_DMA_BUSY
|
||
|
|
r1 = 0;
|
||
|
|
// bne $1, $zero, L_12BC
|
||
|
|
if (r1 != 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_12BC;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// j L_1118
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
goto L_1118;
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
L_12D0:
|
||
|
|
// sll $3, $25, 8
|
||
|
|
r3 = S32(r25) << 8;
|
||
|
|
// srl $3, $3, 8
|
||
|
|
r3 = S32(U32(r3) >> 8);
|
||
|
|
// srl $2, $25, 24
|
||
|
|
r2 = S32(U32(r25) >> 24);
|
||
|
|
// sll $2, $2, 2
|
||
|
|
r2 = S32(r2) << 2;
|
||
|
|
// add $4, $zero, $2
|
||
|
|
r4 = RSP_ADD32(0, r2);
|
||
|
|
// j L_1118
|
||
|
|
// sw $3, 0x320($4)
|
||
|
|
RSP_MEM_W_STORE(0X320, r4, r3);
|
||
|
|
goto L_1118;
|
||
|
|
// sw $3, 0x320($4)
|
||
|
|
RSP_MEM_W_STORE(0X320, r4, r3);
|
||
|
|
L_12EC:
|
||
|
|
// addi $1, $26, 0x5C0
|
||
|
|
r1 = RSP_ADD32(r26, 0X5C0);
|
||
|
|
// srl $2, $25, 16
|
||
|
|
r2 = S32(U32(r25) >> 16);
|
||
|
|
// addi $2, $2, 0x5C0
|
||
|
|
r2 = RSP_ADD32(r2, 0X5C0);
|
||
|
|
// srl $4, $26, 16
|
||
|
|
r4 = S32(U32(r26) >> 16);
|
||
|
|
// andi $4, $4, 0x8
|
||
|
|
r4 = r4 & 0X8;
|
||
|
|
// bgtz $4, L_1318
|
||
|
|
if (RSP_SIGNED(r4) > 0) {
|
||
|
|
// addi $3, $25, 0x5C0
|
||
|
|
r3 = RSP_ADD32(r25, 0X5C0);
|
||
|
|
goto L_1318;
|
||
|
|
}
|
||
|
|
// addi $3, $25, 0x5C0
|
||
|
|
r3 = RSP_ADD32(r25, 0X5C0);
|
||
|
|
// sh $1, 0x0($24)
|
||
|
|
RSP_MEM_H_STORE(0X0, r24, r1);
|
||
|
|
// sh $2, 0x2($24)
|
||
|
|
RSP_MEM_H_STORE(0X2, r24, r2);
|
||
|
|
// j L_1118
|
||
|
|
// sh $25, 0x4($24)
|
||
|
|
RSP_MEM_H_STORE(0X4, r24, r25);
|
||
|
|
goto L_1118;
|
||
|
|
// sh $25, 0x4($24)
|
||
|
|
RSP_MEM_H_STORE(0X4, r24, r25);
|
||
|
|
L_1318:
|
||
|
|
// sh $3, 0xE($24)
|
||
|
|
RSP_MEM_H_STORE(0XE, r24, r3);
|
||
|
|
// sh $1, 0xA($24)
|
||
|
|
RSP_MEM_H_STORE(0XA, r24, r1);
|
||
|
|
// j L_1118
|
||
|
|
// sh $2, 0xC($24)
|
||
|
|
RSP_MEM_H_STORE(0XC, r24, r2);
|
||
|
|
goto L_1118;
|
||
|
|
// sh $2, 0xC($24)
|
||
|
|
RSP_MEM_H_STORE(0XC, r24, r2);
|
||
|
|
L_1328:
|
||
|
|
// srl $2, $26, 16
|
||
|
|
r2 = S32(U32(r26) >> 16);
|
||
|
|
// andi $1, $2, 0x8
|
||
|
|
r1 = r2 & 0X8;
|
||
|
|
// beq $1, $zero, L_1344
|
||
|
|
if (r1 == 0) {
|
||
|
|
// andi $1, $2, 0x4
|
||
|
|
r1 = r2 & 0X4;
|
||
|
|
goto L_1344;
|
||
|
|
}
|
||
|
|
// andi $1, $2, 0x4
|
||
|
|
r1 = r2 & 0X4;
|
||
|
|
// sh $26, 0x1C($24)
|
||
|
|
RSP_MEM_H_STORE(0X1C, r24, r26);
|
||
|
|
// j L_1118
|
||
|
|
// sh $25, 0x1E($24)
|
||
|
|
RSP_MEM_H_STORE(0X1E, r24, r25);
|
||
|
|
goto L_1118;
|
||
|
|
// sh $25, 0x1E($24)
|
||
|
|
RSP_MEM_H_STORE(0X1E, r24, r25);
|
||
|
|
L_1344:
|
||
|
|
// beq $1, $zero, L_1364
|
||
|
|
if (r1 == 0) {
|
||
|
|
// andi $1, $2, 0x2
|
||
|
|
r1 = r2 & 0X2;
|
||
|
|
goto L_1364;
|
||
|
|
}
|
||
|
|
// andi $1, $2, 0x2
|
||
|
|
r1 = r2 & 0X2;
|
||
|
|
// beq $1, $zero, L_135C
|
||
|
|
if (r1 == 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_135C;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// j L_1118
|
||
|
|
// sh $26, 0x6($24)
|
||
|
|
RSP_MEM_H_STORE(0X6, r24, r26);
|
||
|
|
goto L_1118;
|
||
|
|
// sh $26, 0x6($24)
|
||
|
|
RSP_MEM_H_STORE(0X6, r24, r26);
|
||
|
|
L_135C:
|
||
|
|
// j L_1118
|
||
|
|
// sh $26, 0x8($24)
|
||
|
|
RSP_MEM_H_STORE(0X8, r24, r26);
|
||
|
|
goto L_1118;
|
||
|
|
// sh $26, 0x8($24)
|
||
|
|
RSP_MEM_H_STORE(0X8, r24, r26);
|
||
|
|
L_1364:
|
||
|
|
// beq $1, $zero, L_137C
|
||
|
|
if (r1 == 0) {
|
||
|
|
// srl $1, $25, 16
|
||
|
|
r1 = S32(U32(r25) >> 16);
|
||
|
|
goto L_137C;
|
||
|
|
}
|
||
|
|
// srl $1, $25, 16
|
||
|
|
r1 = S32(U32(r25) >> 16);
|
||
|
|
// sh $26, 0x10($24)
|
||
|
|
RSP_MEM_H_STORE(0X10, r24, r26);
|
||
|
|
// sh $1, 0x12($24)
|
||
|
|
RSP_MEM_H_STORE(0X12, r24, r1);
|
||
|
|
// j L_1118
|
||
|
|
// sh $25, 0x14($24)
|
||
|
|
RSP_MEM_H_STORE(0X14, r24, r25);
|
||
|
|
goto L_1118;
|
||
|
|
// sh $25, 0x14($24)
|
||
|
|
RSP_MEM_H_STORE(0X14, r24, r25);
|
||
|
|
L_137C:
|
||
|
|
// sh $26, 0x16($24)
|
||
|
|
RSP_MEM_H_STORE(0X16, r24, r26);
|
||
|
|
// sh $1, 0x18($24)
|
||
|
|
RSP_MEM_H_STORE(0X18, r24, r1);
|
||
|
|
// j L_1118
|
||
|
|
// sh $25, 0x1A($24)
|
||
|
|
RSP_MEM_H_STORE(0X1A, r24, r25);
|
||
|
|
goto L_1118;
|
||
|
|
// sh $25, 0x1A($24)
|
||
|
|
RSP_MEM_H_STORE(0X1A, r24, r25);
|
||
|
|
L_138C:
|
||
|
|
// lhu $1, 0x4($24)
|
||
|
|
r1 = RSP_MEM_HU_LOAD(0X4, r24);
|
||
|
|
// lhu $4, 0x2($24)
|
||
|
|
r4 = RSP_MEM_HU_LOAD(0X2, r24);
|
||
|
|
// beq $1, $zero, L_1118
|
||
|
|
if (r1 == 0) {
|
||
|
|
// andi $3, $25, 0xFFFF
|
||
|
|
r3 = r25 & 0XFFFF;
|
||
|
|
goto L_1118;
|
||
|
|
}
|
||
|
|
// andi $3, $25, 0xFFFF
|
||
|
|
r3 = r25 & 0XFFFF;
|
||
|
|
// addi $3, $3, 0x5C0
|
||
|
|
r3 = RSP_ADD32(r3, 0X5C0);
|
||
|
|
// srl $2, $25, 16
|
||
|
|
r2 = S32(U32(r25) >> 16);
|
||
|
|
// addi $2, $2, 0x5C0
|
||
|
|
r2 = RSP_ADD32(r2, 0X5C0);
|
||
|
|
L_13A8:
|
||
|
|
// lqv $v1[0], 0x0($2)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[1], r2, 0X0);
|
||
|
|
// lqv $v2[0], 0x0($3)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[2], r3, 0X0);
|
||
|
|
// ssv $v1[0], 0x0($4)
|
||
|
|
rsp.SSV<0>(rsp.vpu.r[1], r4, 0X0);
|
||
|
|
// ssv $v2[0], 0x2($4)
|
||
|
|
rsp.SSV<0>(rsp.vpu.r[2], r4, 0X1);
|
||
|
|
// ssv $v1[2], 0x4($4)
|
||
|
|
rsp.SSV<2>(rsp.vpu.r[1], r4, 0X2);
|
||
|
|
// ssv $v2[2], 0x6($4)
|
||
|
|
rsp.SSV<2>(rsp.vpu.r[2], r4, 0X3);
|
||
|
|
// ssv $v1[4], 0x8($4)
|
||
|
|
rsp.SSV<4>(rsp.vpu.r[1], r4, 0X4);
|
||
|
|
// ssv $v2[4], 0xA($4)
|
||
|
|
rsp.SSV<4>(rsp.vpu.r[2], r4, 0X5);
|
||
|
|
// ssv $v1[6], 0xC($4)
|
||
|
|
rsp.SSV<6>(rsp.vpu.r[1], r4, 0X6);
|
||
|
|
// ssv $v2[6], 0xE($4)
|
||
|
|
rsp.SSV<6>(rsp.vpu.r[2], r4, 0X7);
|
||
|
|
// ssv $v1[8], 0x10($4)
|
||
|
|
rsp.SSV<8>(rsp.vpu.r[1], r4, 0X8);
|
||
|
|
// ssv $v2[8], 0x12($4)
|
||
|
|
rsp.SSV<8>(rsp.vpu.r[2], r4, 0X9);
|
||
|
|
// ssv $v1[10], 0x14($4)
|
||
|
|
rsp.SSV<10>(rsp.vpu.r[1], r4, 0XA);
|
||
|
|
// ssv $v2[10], 0x16($4)
|
||
|
|
rsp.SSV<10>(rsp.vpu.r[2], r4, 0XB);
|
||
|
|
// ssv $v1[12], 0x18($4)
|
||
|
|
rsp.SSV<12>(rsp.vpu.r[1], r4, 0XC);
|
||
|
|
// ssv $v2[12], 0x1A($4)
|
||
|
|
rsp.SSV<12>(rsp.vpu.r[2], r4, 0XD);
|
||
|
|
// ssv $v1[14], 0x1C($4)
|
||
|
|
rsp.SSV<14>(rsp.vpu.r[1], r4, 0XE);
|
||
|
|
// ssv $v2[14], 0x1E($4)
|
||
|
|
rsp.SSV<14>(rsp.vpu.r[2], r4, 0XF);
|
||
|
|
// addi $1, $1, -0x10
|
||
|
|
r1 = RSP_ADD32(r1, -0X10);
|
||
|
|
// addi $2, $2, 0x10
|
||
|
|
r2 = RSP_ADD32(r2, 0X10);
|
||
|
|
// addi $3, $3, 0x10
|
||
|
|
r3 = RSP_ADD32(r3, 0X10);
|
||
|
|
// bgtz $1, L_13A8
|
||
|
|
if (RSP_SIGNED(r1) > 0) {
|
||
|
|
// addi $4, $4, 0x20
|
||
|
|
r4 = RSP_ADD32(r4, 0X20);
|
||
|
|
goto L_13A8;
|
||
|
|
}
|
||
|
|
// addi $4, $4, 0x20
|
||
|
|
r4 = RSP_ADD32(r4, 0X20);
|
||
|
|
// j L_1118
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1118;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_140C:
|
||
|
|
// andi $1, $25, 0xFFFF
|
||
|
|
r1 = r25 & 0XFFFF;
|
||
|
|
// beq $1, $zero, L_1118
|
||
|
|
if (r1 == 0) {
|
||
|
|
// andi $2, $26, 0xFFFF
|
||
|
|
r2 = r26 & 0XFFFF;
|
||
|
|
goto L_1118;
|
||
|
|
}
|
||
|
|
// andi $2, $26, 0xFFFF
|
||
|
|
r2 = r26 & 0XFFFF;
|
||
|
|
// addi $2, $2, 0x5C0
|
||
|
|
r2 = RSP_ADD32(r2, 0X5C0);
|
||
|
|
// srl $3, $25, 16
|
||
|
|
r3 = S32(U32(r25) >> 16);
|
||
|
|
// addi $3, $3, 0x5C0
|
||
|
|
r3 = RSP_ADD32(r3, 0X5C0);
|
||
|
|
L_1424:
|
||
|
|
// ldv $v1[0], 0x0($2)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[1], r2, 0X0);
|
||
|
|
// ldv $v2[0], 0x8($2)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[2], r2, 0X1);
|
||
|
|
// addi $1, $1, -0x10
|
||
|
|
r1 = RSP_ADD32(r1, -0X10);
|
||
|
|
// addi $2, $2, 0x10
|
||
|
|
r2 = RSP_ADD32(r2, 0X10);
|
||
|
|
// sdv $v1[0], 0x0($3)
|
||
|
|
rsp.SDV<0>(rsp.vpu.r[1], r3, 0X0);
|
||
|
|
// sdv $v2[0], 0x8($3)
|
||
|
|
rsp.SDV<0>(rsp.vpu.r[2], r3, 0X1);
|
||
|
|
// bgtz $1, L_1424
|
||
|
|
if (RSP_SIGNED(r1) > 0) {
|
||
|
|
// addi $3, $3, 0x10
|
||
|
|
r3 = RSP_ADD32(r3, 0X10);
|
||
|
|
goto L_1424;
|
||
|
|
}
|
||
|
|
// addi $3, $3, 0x10
|
||
|
|
r3 = RSP_ADD32(r3, 0X10);
|
||
|
|
// j L_1118
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1118;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_144C:
|
||
|
|
// sll $1, $25, 8
|
||
|
|
r1 = S32(r25) << 8;
|
||
|
|
// srl $1, $1, 8
|
||
|
|
r1 = S32(U32(r1) >> 8);
|
||
|
|
// srl $3, $25, 24
|
||
|
|
r3 = S32(U32(r25) >> 24);
|
||
|
|
// sll $3, $3, 2
|
||
|
|
r3 = S32(r3) << 2;
|
||
|
|
// lw $2, 0x320($3)
|
||
|
|
r2 = RSP_MEM_W_LOAD(0X320, r3);
|
||
|
|
// add $1, $1, $2
|
||
|
|
r1 = RSP_ADD32(r1, r2);
|
||
|
|
// sw $1, 0x10($24)
|
||
|
|
RSP_MEM_W_STORE(0X10, r24, r1);
|
||
|
|
// j L_1118
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1118;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_1470:
|
||
|
|
// lqv $v31[0], 0x0($zero)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[31], 0, 0X0);
|
||
|
|
// vxor $v27, $v27, $v27
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[27], rsp.vpu.r[27], rsp.vpu.r[27]);
|
||
|
|
// lhu $21, 0x0($24)
|
||
|
|
r21 = RSP_MEM_HU_LOAD(0X0, r24);
|
||
|
|
// vxor $v25, $v25, $v25
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[25], rsp.vpu.r[25], rsp.vpu.r[25]);
|
||
|
|
// vxor $v24, $v24, $v24
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[24], rsp.vpu.r[24], rsp.vpu.r[24]);
|
||
|
|
// addi $20, $21, 0x1
|
||
|
|
r20 = RSP_ADD32(r21, 0X1);
|
||
|
|
// lhu $19, 0x2($24)
|
||
|
|
r19 = RSP_MEM_HU_LOAD(0X2, r24);
|
||
|
|
// vxor $v13, $v13, $v13
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[13], rsp.vpu.r[13], rsp.vpu.r[13]);
|
||
|
|
// vxor $v14, $v14, $v14
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[14], rsp.vpu.r[14], rsp.vpu.r[14]);
|
||
|
|
// lhu $18, 0x4($24)
|
||
|
|
r18 = RSP_MEM_HU_LOAD(0X4, r24);
|
||
|
|
// vxor $v15, $v15, $v15
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[15], rsp.vpu.r[15], rsp.vpu.r[15]);
|
||
|
|
// lui $1, 0xFF
|
||
|
|
r1 = S32(0XFF << 16);
|
||
|
|
// vxor $v16, $v16, $v16
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[16], rsp.vpu.r[16], rsp.vpu.r[16]);
|
||
|
|
// ori $1, $1, 0xFFFF
|
||
|
|
r1 = r1 | 0XFFFF;
|
||
|
|
// vxor $v17, $v17, $v17
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[17], rsp.vpu.r[17], rsp.vpu.r[17]);
|
||
|
|
// and $17, $25, $1
|
||
|
|
r17 = r25 & r1;
|
||
|
|
// vxor $v18, $v18, $v18
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[18], rsp.vpu.r[18], rsp.vpu.r[18]);
|
||
|
|
// srl $2, $25, 24
|
||
|
|
r2 = S32(U32(r25) >> 24);
|
||
|
|
// vxor $v19, $v19, $v19
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[19], rsp.vpu.r[19], rsp.vpu.r[19]);
|
||
|
|
// sll $2, $2, 2
|
||
|
|
r2 = S32(r2) << 2;
|
||
|
|
// lw $3, 0x320($2)
|
||
|
|
r3 = RSP_MEM_W_LOAD(0X320, r2);
|
||
|
|
// add $17, $17, $3
|
||
|
|
r17 = RSP_ADD32(r17, r3);
|
||
|
|
// sqv $v27[0], 0x0($19)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[27], r19, 0X0);
|
||
|
|
// sqv $v27[0], 0x10($19)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[27], r19, 0X1);
|
||
|
|
// srl $1, $26, 16
|
||
|
|
r1 = S32(U32(r26) >> 16);
|
||
|
|
// andi $1, $1, 0x1
|
||
|
|
r1 = r1 & 0X1;
|
||
|
|
// bgtz $1, L_150C
|
||
|
|
if (RSP_SIGNED(r1) > 0) {
|
||
|
|
// srl $1, $26, 16
|
||
|
|
r1 = S32(U32(r26) >> 16);
|
||
|
|
goto L_150C;
|
||
|
|
}
|
||
|
|
// srl $1, $26, 16
|
||
|
|
r1 = S32(U32(r26) >> 16);
|
||
|
|
// andi $1, $1, 0x2
|
||
|
|
r1 = r1 & 0X2;
|
||
|
|
// beq $zero, $1, L_14F0
|
||
|
|
if (0 == r1) {
|
||
|
|
// addi $2, $17, 0x0
|
||
|
|
r2 = RSP_ADD32(r17, 0X0);
|
||
|
|
goto L_14F0;
|
||
|
|
}
|
||
|
|
// addi $2, $17, 0x0
|
||
|
|
r2 = RSP_ADD32(r17, 0X0);
|
||
|
|
// lw $2, 0x10($24)
|
||
|
|
r2 = RSP_MEM_W_LOAD(0X10, r24);
|
||
|
|
L_14F0:
|
||
|
|
// addi $1, $19, 0x0
|
||
|
|
r1 = RSP_ADD32(r19, 0X0);
|
||
|
|
// jal 0x1184
|
||
|
|
r31 = 0x14FC;
|
||
|
|
// addi $3, $zero, 0x1F
|
||
|
|
r3 = RSP_ADD32(0, 0X1F);
|
||
|
|
goto L_1184;
|
||
|
|
// addi $3, $zero, 0x1F
|
||
|
|
r3 = RSP_ADD32(0, 0X1F);
|
||
|
|
L_14FC:
|
||
|
|
// mfc0 $5, SP_DMA_BUSY
|
||
|
|
r5 = 0;
|
||
|
|
// bne $5, $zero, L_14FC
|
||
|
|
if (r5 != 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_14FC;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
L_150C:
|
||
|
|
// addi $16, $zero, 0x30
|
||
|
|
r16 = RSP_ADD32(0, 0X30);
|
||
|
|
// addi $15, $zero, 0x4C0
|
||
|
|
r15 = RSP_ADD32(0, 0X4C0);
|
||
|
|
// ldv $v25[0], 0x0($16)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[25], r16, 0X0);
|
||
|
|
// ldv $v24[8], 0x0($16)
|
||
|
|
rsp.LDV<8>(rsp.vpu.r[24], r16, 0X0);
|
||
|
|
// ldv $v23[0], 0x8($16)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[23], r16, 0X1);
|
||
|
|
// ldv $v23[8], 0x8($16)
|
||
|
|
rsp.LDV<8>(rsp.vpu.r[23], r16, 0X1);
|
||
|
|
// lqv $v27[0], 0x10($19)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[27], r19, 0X1);
|
||
|
|
// addi $19, $19, 0x20
|
||
|
|
r19 = RSP_ADD32(r19, 0X20);
|
||
|
|
// beq $18, $zero, L_16E8
|
||
|
|
if (r18 == 0) {
|
||
|
|
// ldv $v1[0], 0x0($20)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[1], r20, 0X0);
|
||
|
|
goto L_16E8;
|
||
|
|
}
|
||
|
|
// ldv $v1[0], 0x0($20)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[1], r20, 0X0);
|
||
|
|
// lbu $1, 0x0($21)
|
||
|
|
r1 = RSP_MEM_BU(0X0, r21);
|
||
|
|
// andi $11, $1, 0xF
|
||
|
|
r11 = r1 & 0XF;
|
||
|
|
// sll $11, $11, 5
|
||
|
|
r11 = S32(r11) << 5;
|
||
|
|
// vand $v3, $v25, $v1[0]
|
||
|
|
rsp.VAND<8>(rsp.vpu.r[3], rsp.vpu.r[25], rsp.vpu.r[1]);
|
||
|
|
// add $13, $11, $15
|
||
|
|
r13 = RSP_ADD32(r11, r15);
|
||
|
|
// vand $v4, $v24, $v1[1]
|
||
|
|
rsp.VAND<9>(rsp.vpu.r[4], rsp.vpu.r[24], rsp.vpu.r[1]);
|
||
|
|
// srl $14, $1, 4
|
||
|
|
r14 = S32(U32(r1) >> 4);
|
||
|
|
// vand $v5, $v25, $v1[2]
|
||
|
|
rsp.VAND<10>(rsp.vpu.r[5], rsp.vpu.r[25], rsp.vpu.r[1]);
|
||
|
|
// addi $2, $zero, 0xC
|
||
|
|
r2 = RSP_ADD32(0, 0XC);
|
||
|
|
// vand $v6, $v24, $v1[3]
|
||
|
|
rsp.VAND<11>(rsp.vpu.r[6], rsp.vpu.r[24], rsp.vpu.r[1]);
|
||
|
|
// sub $14, $2, $14
|
||
|
|
r14 = RSP_SUB32(r2, r14);
|
||
|
|
// addi $2, $14, -0x1
|
||
|
|
r2 = RSP_ADD32(r14, -0X1);
|
||
|
|
// addi $3, $zero, 0x1
|
||
|
|
r3 = RSP_ADD32(0, 0X1);
|
||
|
|
// sll $3, $3, 15
|
||
|
|
r3 = S32(r3) << 15;
|
||
|
|
// srlv $4, $3, $2
|
||
|
|
r4 = S32(U32(r3) >> (r2 & 31));
|
||
|
|
// mtc2 $4, $v22[0]
|
||
|
|
rsp.MTC2<0>(r4, rsp.vpu.r[22]);
|
||
|
|
// lqv $v21[0], 0x0($13)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[21], r13, 0X0);
|
||
|
|
// lqv $v20[0], 0x10($13)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[20], r13, 0X1);
|
||
|
|
// addi $13, $13, -0x2
|
||
|
|
r13 = RSP_ADD32(r13, -0X2);
|
||
|
|
// lrv $v19[0], 0x20($13)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[19], r13, 0X2);
|
||
|
|
// addi $13, $13, -0x2
|
||
|
|
r13 = RSP_ADD32(r13, -0X2);
|
||
|
|
// lrv $v18[0], 0x20($13)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[18], r13, 0X2);
|
||
|
|
// addi $13, $13, -0x2
|
||
|
|
r13 = RSP_ADD32(r13, -0X2);
|
||
|
|
// lrv $v17[0], 0x20($13)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[17], r13, 0X2);
|
||
|
|
// addi $13, $13, -0x2
|
||
|
|
r13 = RSP_ADD32(r13, -0X2);
|
||
|
|
// lrv $v16[0], 0x20($13)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[16], r13, 0X2);
|
||
|
|
// addi $13, $13, -0x2
|
||
|
|
r13 = RSP_ADD32(r13, -0X2);
|
||
|
|
// lrv $v15[0], 0x20($13)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[15], r13, 0X2);
|
||
|
|
// addi $13, $13, -0x2
|
||
|
|
r13 = RSP_ADD32(r13, -0X2);
|
||
|
|
// lrv $v14[0], 0x20($13)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[14], r13, 0X2);
|
||
|
|
// addi $13, $13, -0x2
|
||
|
|
r13 = RSP_ADD32(r13, -0X2);
|
||
|
|
// lrv $v13[0], 0x20($13)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[13], r13, 0X2);
|
||
|
|
L_15B4:
|
||
|
|
// addi $20, $20, 0x9
|
||
|
|
r20 = RSP_ADD32(r20, 0X9);
|
||
|
|
// vmudn $v30, $v3, $v23
|
||
|
|
rsp.VMUDN<0>(rsp.vpu.r[30], rsp.vpu.r[3], rsp.vpu.r[23]);
|
||
|
|
// addi $21, $21, 0x9
|
||
|
|
r21 = RSP_ADD32(r21, 0X9);
|
||
|
|
// vmadn $v30, $v4, $v23
|
||
|
|
rsp.VMADN<0>(rsp.vpu.r[30], rsp.vpu.r[4], rsp.vpu.r[23]);
|
||
|
|
// ldv $v1[0], 0x0($20)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[1], r20, 0X0);
|
||
|
|
// vmudn $v29, $v5, $v23
|
||
|
|
rsp.VMUDN<0>(rsp.vpu.r[29], rsp.vpu.r[5], rsp.vpu.r[23]);
|
||
|
|
// lbu $1, 0x0($21)
|
||
|
|
r1 = RSP_MEM_BU(0X0, r21);
|
||
|
|
// vmadn $v29, $v6, $v23
|
||
|
|
rsp.VMADN<0>(rsp.vpu.r[29], rsp.vpu.r[6], rsp.vpu.r[23]);
|
||
|
|
// blez $14, L_15E4
|
||
|
|
if (RSP_SIGNED(r14) <= 0) {
|
||
|
|
// andi $11, $1, 0xF
|
||
|
|
r11 = r1 & 0XF;
|
||
|
|
goto L_15E4;
|
||
|
|
}
|
||
|
|
// andi $11, $1, 0xF
|
||
|
|
r11 = r1 & 0XF;
|
||
|
|
// vmudm $v30, $v30, $v22[0]
|
||
|
|
rsp.VMUDM<8>(rsp.vpu.r[30], rsp.vpu.r[30], rsp.vpu.r[22]);
|
||
|
|
// vmudm $v29, $v29, $v22[0]
|
||
|
|
rsp.VMUDM<8>(rsp.vpu.r[29], rsp.vpu.r[29], rsp.vpu.r[22]);
|
||
|
|
L_15E4:
|
||
|
|
// sll $11, $11, 5
|
||
|
|
r11 = S32(r11) << 5;
|
||
|
|
// vand $v3, $v25, $v1[0]
|
||
|
|
rsp.VAND<8>(rsp.vpu.r[3], rsp.vpu.r[25], rsp.vpu.r[1]);
|
||
|
|
// add $13, $11, $15
|
||
|
|
r13 = RSP_ADD32(r11, r15);
|
||
|
|
// vand $v4, $v24, $v1[1]
|
||
|
|
rsp.VAND<9>(rsp.vpu.r[4], rsp.vpu.r[24], rsp.vpu.r[1]);
|
||
|
|
// vand $v5, $v25, $v1[2]
|
||
|
|
rsp.VAND<10>(rsp.vpu.r[5], rsp.vpu.r[25], rsp.vpu.r[1]);
|
||
|
|
// vand $v6, $v24, $v1[3]
|
||
|
|
rsp.VAND<11>(rsp.vpu.r[6], rsp.vpu.r[24], rsp.vpu.r[1]);
|
||
|
|
// srl $14, $1, 4
|
||
|
|
r14 = S32(U32(r1) >> 4);
|
||
|
|
// vmudh $v2, $v21, $v27[6]
|
||
|
|
rsp.VMUDH<14>(rsp.vpu.r[2], rsp.vpu.r[21], rsp.vpu.r[27]);
|
||
|
|
// addi $2, $zero, 0xC
|
||
|
|
r2 = RSP_ADD32(0, 0XC);
|
||
|
|
// vmadh $v2, $v20, $v27[7]
|
||
|
|
rsp.VMADH<15>(rsp.vpu.r[2], rsp.vpu.r[20], rsp.vpu.r[27]);
|
||
|
|
// sub $14, $2, $14
|
||
|
|
r14 = RSP_SUB32(r2, r14);
|
||
|
|
// vmadh $v2, $v19, $v30[0]
|
||
|
|
rsp.VMADH<8>(rsp.vpu.r[2], rsp.vpu.r[19], rsp.vpu.r[30]);
|
||
|
|
// addi $2, $14, -0x1
|
||
|
|
r2 = RSP_ADD32(r14, -0X1);
|
||
|
|
// vmadh $v2, $v18, $v30[1]
|
||
|
|
rsp.VMADH<9>(rsp.vpu.r[2], rsp.vpu.r[18], rsp.vpu.r[30]);
|
||
|
|
// addi $3, $zero, 0x1
|
||
|
|
r3 = RSP_ADD32(0, 0X1);
|
||
|
|
// vmadh $v2, $v17, $v30[2]
|
||
|
|
rsp.VMADH<10>(rsp.vpu.r[2], rsp.vpu.r[17], rsp.vpu.r[30]);
|
||
|
|
// sll $3, $3, 15
|
||
|
|
r3 = S32(r3) << 15;
|
||
|
|
// vmadh $v2, $v16, $v30[3]
|
||
|
|
rsp.VMADH<11>(rsp.vpu.r[2], rsp.vpu.r[16], rsp.vpu.r[30]);
|
||
|
|
// srlv $4, $3, $2
|
||
|
|
r4 = S32(U32(r3) >> (r2 & 31));
|
||
|
|
// vmadh $v28, $v15, $v30[4]
|
||
|
|
rsp.VMADH<12>(rsp.vpu.r[28], rsp.vpu.r[15], rsp.vpu.r[30]);
|
||
|
|
// mtc2 $4, $v22[0]
|
||
|
|
rsp.MTC2<0>(r4, rsp.vpu.r[22]);
|
||
|
|
// vmadh $v2, $v14, $v30[5]
|
||
|
|
rsp.VMADH<13>(rsp.vpu.r[2], rsp.vpu.r[14], rsp.vpu.r[30]);
|
||
|
|
// vmadh $v2, $v13, $v30[6]
|
||
|
|
rsp.VMADH<14>(rsp.vpu.r[2], rsp.vpu.r[13], rsp.vpu.r[30]);
|
||
|
|
// vmadh $v2, $v30, $v31[5]
|
||
|
|
rsp.VMADH<13>(rsp.vpu.r[2], rsp.vpu.r[30], rsp.vpu.r[31]);
|
||
|
|
// vsar $v26, $v7, $v28[1]
|
||
|
|
rsp.VSAR<9>(rsp.vpu.r[26], rsp.vpu.r[7]);
|
||
|
|
// vsar $v28, $v7, $v28[0]
|
||
|
|
rsp.VSAR<8>(rsp.vpu.r[28], rsp.vpu.r[7]);
|
||
|
|
// vmudn $v2, $v26, $v31[4]
|
||
|
|
rsp.VMUDN<12>(rsp.vpu.r[2], rsp.vpu.r[26], rsp.vpu.r[31]);
|
||
|
|
// vmadh $v28, $v28, $v31[4]
|
||
|
|
rsp.VMADH<12>(rsp.vpu.r[28], rsp.vpu.r[28], rsp.vpu.r[31]);
|
||
|
|
// vmudh $v2, $v19, $v29[0]
|
||
|
|
rsp.VMUDH<8>(rsp.vpu.r[2], rsp.vpu.r[19], rsp.vpu.r[29]);
|
||
|
|
// addi $12, $13, -0x2
|
||
|
|
r12 = RSP_ADD32(r13, -0X2);
|
||
|
|
// vmadh $v2, $v18, $v29[1]
|
||
|
|
rsp.VMADH<9>(rsp.vpu.r[2], rsp.vpu.r[18], rsp.vpu.r[29]);
|
||
|
|
// lrv $v19[0], 0x20($12)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[19], r12, 0X2);
|
||
|
|
// vmadh $v2, $v17, $v29[2]
|
||
|
|
rsp.VMADH<10>(rsp.vpu.r[2], rsp.vpu.r[17], rsp.vpu.r[29]);
|
||
|
|
// addi $12, $12, -0x2
|
||
|
|
r12 = RSP_ADD32(r12, -0X2);
|
||
|
|
// vmadh $v2, $v16, $v29[3]
|
||
|
|
rsp.VMADH<11>(rsp.vpu.r[2], rsp.vpu.r[16], rsp.vpu.r[29]);
|
||
|
|
// lrv $v18[0], 0x20($12)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[18], r12, 0X2);
|
||
|
|
// vmadh $v2, $v15, $v29[4]
|
||
|
|
rsp.VMADH<12>(rsp.vpu.r[2], rsp.vpu.r[15], rsp.vpu.r[29]);
|
||
|
|
// addi $12, $12, -0x2
|
||
|
|
r12 = RSP_ADD32(r12, -0X2);
|
||
|
|
// vmadh $v2, $v14, $v29[5]
|
||
|
|
rsp.VMADH<13>(rsp.vpu.r[2], rsp.vpu.r[14], rsp.vpu.r[29]);
|
||
|
|
// lrv $v17[0], 0x20($12)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[17], r12, 0X2);
|
||
|
|
// vmadh $v2, $v13, $v29[6]
|
||
|
|
rsp.VMADH<14>(rsp.vpu.r[2], rsp.vpu.r[13], rsp.vpu.r[29]);
|
||
|
|
// addi $12, $12, -0x2
|
||
|
|
r12 = RSP_ADD32(r12, -0X2);
|
||
|
|
// vmadh $v2, $v29, $v31[5]
|
||
|
|
rsp.VMADH<13>(rsp.vpu.r[2], rsp.vpu.r[29], rsp.vpu.r[31]);
|
||
|
|
// lrv $v16[0], 0x20($12)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[16], r12, 0X2);
|
||
|
|
// vmadh $v2, $v21, $v28[6]
|
||
|
|
rsp.VMADH<14>(rsp.vpu.r[2], rsp.vpu.r[21], rsp.vpu.r[28]);
|
||
|
|
// addi $12, $12, -0x2
|
||
|
|
r12 = RSP_ADD32(r12, -0X2);
|
||
|
|
// vmadh $v2, $v20, $v28[7]
|
||
|
|
rsp.VMADH<15>(rsp.vpu.r[2], rsp.vpu.r[20], rsp.vpu.r[28]);
|
||
|
|
// lrv $v15[0], 0x20($12)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[15], r12, 0X2);
|
||
|
|
// vsar $v26, $v7, $v27[1]
|
||
|
|
rsp.VSAR<9>(rsp.vpu.r[26], rsp.vpu.r[7]);
|
||
|
|
// addi $12, $12, -0x2
|
||
|
|
r12 = RSP_ADD32(r12, -0X2);
|
||
|
|
// vsar $v27, $v7, $v27[0]
|
||
|
|
rsp.VSAR<8>(rsp.vpu.r[27], rsp.vpu.r[7]);
|
||
|
|
// lrv $v14[0], 0x20($12)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[14], r12, 0X2);
|
||
|
|
// addi $12, $12, -0x2
|
||
|
|
r12 = RSP_ADD32(r12, -0X2);
|
||
|
|
// lrv $v13[0], 0x20($12)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[13], r12, 0X2);
|
||
|
|
// lqv $v21[0], 0x0($13)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[21], r13, 0X0);
|
||
|
|
// vmudn $v2, $v26, $v31[4]
|
||
|
|
rsp.VMUDN<12>(rsp.vpu.r[2], rsp.vpu.r[26], rsp.vpu.r[31]);
|
||
|
|
// lqv $v20[0], 0x10($13)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[20], r13, 0X1);
|
||
|
|
// vmadh $v27, $v27, $v31[4]
|
||
|
|
rsp.VMADH<12>(rsp.vpu.r[27], rsp.vpu.r[27], rsp.vpu.r[31]);
|
||
|
|
// addi $18, $18, -0x20
|
||
|
|
r18 = RSP_ADD32(r18, -0X20);
|
||
|
|
// sdv $v28[0], 0x0($19)
|
||
|
|
rsp.SDV<0>(rsp.vpu.r[28], r19, 0X0);
|
||
|
|
// sdv $v28[8], 0x8($19)
|
||
|
|
rsp.SDV<8>(rsp.vpu.r[28], r19, 0X1);
|
||
|
|
// sdv $v27[0], 0x10($19)
|
||
|
|
rsp.SDV<0>(rsp.vpu.r[27], r19, 0X2);
|
||
|
|
// sdv $v27[8], 0x18($19)
|
||
|
|
rsp.SDV<8>(rsp.vpu.r[27], r19, 0X3);
|
||
|
|
// bgtz $18, L_15B4
|
||
|
|
if (RSP_SIGNED(r18) > 0) {
|
||
|
|
// addi $19, $19, 0x20
|
||
|
|
r19 = RSP_ADD32(r19, 0X20);
|
||
|
|
goto L_15B4;
|
||
|
|
}
|
||
|
|
// addi $19, $19, 0x20
|
||
|
|
r19 = RSP_ADD32(r19, 0X20);
|
||
|
|
L_16E8:
|
||
|
|
// addi $1, $19, -0x20
|
||
|
|
r1 = RSP_ADD32(r19, -0X20);
|
||
|
|
// addi $2, $17, 0x0
|
||
|
|
r2 = RSP_ADD32(r17, 0X0);
|
||
|
|
// jal 0x11B0
|
||
|
|
r31 = 0x16F8;
|
||
|
|
// addi $3, $zero, 0x1F
|
||
|
|
r3 = RSP_ADD32(0, 0X1F);
|
||
|
|
goto L_11B0;
|
||
|
|
// addi $3, $zero, 0x1F
|
||
|
|
r3 = RSP_ADD32(0, 0X1F);
|
||
|
|
L_16F8:
|
||
|
|
// mfc0 $5, SP_DMA_BUSY
|
||
|
|
r5 = 0;
|
||
|
|
// bne $5, $zero, L_16F8
|
||
|
|
if (r5 != 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_16F8;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// j L_1118
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
goto L_1118;
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
L_170C:
|
||
|
|
// lqv $v31[0], 0x0($zero)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[31], 0, 0X0);
|
||
|
|
// vxor $v28, $v28, $v28
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[28], rsp.vpu.r[28], rsp.vpu.r[28]);
|
||
|
|
// lhu $21, 0x0($24)
|
||
|
|
r21 = RSP_MEM_HU_LOAD(0X0, r24);
|
||
|
|
// vxor $v17, $v17, $v17
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[17], rsp.vpu.r[17], rsp.vpu.r[17]);
|
||
|
|
// lhu $20, 0x2($24)
|
||
|
|
r20 = RSP_MEM_HU_LOAD(0X2, r24);
|
||
|
|
// vxor $v18, $v18, $v18
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[18], rsp.vpu.r[18], rsp.vpu.r[18]);
|
||
|
|
// lhu $19, 0x4($24)
|
||
|
|
r19 = RSP_MEM_HU_LOAD(0X4, r24);
|
||
|
|
// vxor $v19, $v19, $v19
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[19], rsp.vpu.r[19], rsp.vpu.r[19]);
|
||
|
|
// beq $19, $zero, L_1874
|
||
|
|
if (r19 == 0) {
|
||
|
|
// andi $14, $26, 0xFFFF
|
||
|
|
r14 = r26 & 0XFFFF;
|
||
|
|
goto L_1874;
|
||
|
|
}
|
||
|
|
// andi $14, $26, 0xFFFF
|
||
|
|
r14 = r26 & 0XFFFF;
|
||
|
|
// mtc2 $14, $v31[10]
|
||
|
|
rsp.MTC2<10>(r14, rsp.vpu.r[31]);
|
||
|
|
// sll $14, $14, 2
|
||
|
|
r14 = S32(r14) << 2;
|
||
|
|
// mtc2 $14, $v16[0]
|
||
|
|
rsp.MTC2<0>(r14, rsp.vpu.r[16]);
|
||
|
|
// lui $1, 0xFF
|
||
|
|
r1 = S32(0XFF << 16);
|
||
|
|
// vxor $v20, $v20, $v20
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[20], rsp.vpu.r[20], rsp.vpu.r[20]);
|
||
|
|
// ori $1, $1, 0xFFFF
|
||
|
|
r1 = r1 | 0XFFFF;
|
||
|
|
// vxor $v21, $v21, $v21
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[21], rsp.vpu.r[21], rsp.vpu.r[21]);
|
||
|
|
// and $18, $25, $1
|
||
|
|
r18 = r25 & r1;
|
||
|
|
// vxor $v22, $v22, $v22
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[22], rsp.vpu.r[22], rsp.vpu.r[22]);
|
||
|
|
// srl $2, $25, 24
|
||
|
|
r2 = S32(U32(r25) >> 24);
|
||
|
|
// vxor $v23, $v23, $v23
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[23], rsp.vpu.r[23], rsp.vpu.r[23]);
|
||
|
|
// sll $2, $2, 2
|
||
|
|
r2 = S32(r2) << 2;
|
||
|
|
// lw $3, 0x320($2)
|
||
|
|
r3 = RSP_MEM_W_LOAD(0X320, r2);
|
||
|
|
// add $18, $18, $3
|
||
|
|
r18 = RSP_ADD32(r18, r3);
|
||
|
|
// slv $v28[0], 0x0($23)
|
||
|
|
rsp.SLV<0>(rsp.vpu.r[28], r23, 0X0);
|
||
|
|
// srl $1, $26, 16
|
||
|
|
r1 = S32(U32(r26) >> 16);
|
||
|
|
// andi $1, $1, 0x1
|
||
|
|
r1 = r1 & 0X1;
|
||
|
|
// bgtz $1, L_17A0
|
||
|
|
if (RSP_SIGNED(r1) > 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_17A0;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// addi $1, $23, 0x0
|
||
|
|
r1 = RSP_ADD32(r23, 0X0);
|
||
|
|
// addi $2, $18, 0x0
|
||
|
|
r2 = RSP_ADD32(r18, 0X0);
|
||
|
|
// jal 0x1184
|
||
|
|
r31 = 0x1790;
|
||
|
|
// addi $3, $zero, 0x7
|
||
|
|
r3 = RSP_ADD32(0, 0X7);
|
||
|
|
goto L_1184;
|
||
|
|
// addi $3, $zero, 0x7
|
||
|
|
r3 = RSP_ADD32(0, 0X7);
|
||
|
|
L_1790:
|
||
|
|
// mfc0 $5, SP_DMA_BUSY
|
||
|
|
r5 = 0;
|
||
|
|
// bne $5, $zero, L_1790
|
||
|
|
if (r5 != 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1790;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
L_17A0:
|
||
|
|
// addi $13, $zero, 0x4C0
|
||
|
|
r13 = RSP_ADD32(0, 0X4C0);
|
||
|
|
// addi $1, $zero, 0x4
|
||
|
|
r1 = RSP_ADD32(0, 0X4);
|
||
|
|
// mtc2 $1, $v14[0]
|
||
|
|
rsp.MTC2<0>(r1, rsp.vpu.r[14]);
|
||
|
|
// lqv $v24[0], 0x10($13)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[24], r13, 0X1);
|
||
|
|
// vmudm $v16, $v24, $v16[0]
|
||
|
|
rsp.VMUDM<8>(rsp.vpu.r[16], rsp.vpu.r[24], rsp.vpu.r[16]);
|
||
|
|
// ldv $v28[8], 0x0($23)
|
||
|
|
rsp.LDV<8>(rsp.vpu.r[28], r23, 0X0);
|
||
|
|
// sqv $v16[0], 0x10($13)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[16], r13, 0X1);
|
||
|
|
// lqv $v25[0], 0x0($13)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[25], r13, 0X0);
|
||
|
|
// addi $13, $13, -0x2
|
||
|
|
r13 = RSP_ADD32(r13, -0X2);
|
||
|
|
// lrv $v23[0], 0x20($13)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[23], r13, 0X2);
|
||
|
|
// addi $13, $13, -0x2
|
||
|
|
r13 = RSP_ADD32(r13, -0X2);
|
||
|
|
// lrv $v22[0], 0x20($13)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[22], r13, 0X2);
|
||
|
|
// addi $13, $13, -0x2
|
||
|
|
r13 = RSP_ADD32(r13, -0X2);
|
||
|
|
// lrv $v21[0], 0x20($13)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[21], r13, 0X2);
|
||
|
|
// addi $13, $13, -0x2
|
||
|
|
r13 = RSP_ADD32(r13, -0X2);
|
||
|
|
// lrv $v20[0], 0x20($13)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[20], r13, 0X2);
|
||
|
|
// addi $13, $13, -0x2
|
||
|
|
r13 = RSP_ADD32(r13, -0X2);
|
||
|
|
// lrv $v19[0], 0x20($13)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[19], r13, 0X2);
|
||
|
|
// addi $13, $13, -0x2
|
||
|
|
r13 = RSP_ADD32(r13, -0X2);
|
||
|
|
// lrv $v18[0], 0x20($13)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[18], r13, 0X2);
|
||
|
|
// addi $13, $13, -0x2
|
||
|
|
r13 = RSP_ADD32(r13, -0X2);
|
||
|
|
// lrv $v17[0], 0x20($13)
|
||
|
|
rsp.LRV<0>(rsp.vpu.r[17], r13, 0X2);
|
||
|
|
// ldv $v30[0], 0x0($21)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[30], r21, 0X0);
|
||
|
|
// ldv $v30[8], 0x8($21)
|
||
|
|
rsp.LDV<8>(rsp.vpu.r[30], r21, 0X1);
|
||
|
|
L_1800:
|
||
|
|
// vmudh $v16, $v25, $v28[6]
|
||
|
|
rsp.VMUDH<14>(rsp.vpu.r[16], rsp.vpu.r[25], rsp.vpu.r[28]);
|
||
|
|
// addi $21, $21, 0x10
|
||
|
|
r21 = RSP_ADD32(r21, 0X10);
|
||
|
|
// vmadh $v16, $v24, $v28[7]
|
||
|
|
rsp.VMADH<15>(rsp.vpu.r[16], rsp.vpu.r[24], rsp.vpu.r[28]);
|
||
|
|
// addi $19, $19, -0x10
|
||
|
|
r19 = RSP_ADD32(r19, -0X10);
|
||
|
|
// vmadh $v16, $v23, $v30[0]
|
||
|
|
rsp.VMADH<8>(rsp.vpu.r[16], rsp.vpu.r[23], rsp.vpu.r[30]);
|
||
|
|
// vmadh $v16, $v22, $v30[1]
|
||
|
|
rsp.VMADH<9>(rsp.vpu.r[16], rsp.vpu.r[22], rsp.vpu.r[30]);
|
||
|
|
// vmadh $v16, $v21, $v30[2]
|
||
|
|
rsp.VMADH<10>(rsp.vpu.r[16], rsp.vpu.r[21], rsp.vpu.r[30]);
|
||
|
|
// vmadh $v16, $v20, $v30[3]
|
||
|
|
rsp.VMADH<11>(rsp.vpu.r[16], rsp.vpu.r[20], rsp.vpu.r[30]);
|
||
|
|
// vmadh $v28, $v19, $v30[4]
|
||
|
|
rsp.VMADH<12>(rsp.vpu.r[28], rsp.vpu.r[19], rsp.vpu.r[30]);
|
||
|
|
// vmadh $v16, $v18, $v30[5]
|
||
|
|
rsp.VMADH<13>(rsp.vpu.r[16], rsp.vpu.r[18], rsp.vpu.r[30]);
|
||
|
|
// vmadh $v16, $v17, $v30[6]
|
||
|
|
rsp.VMADH<14>(rsp.vpu.r[16], rsp.vpu.r[17], rsp.vpu.r[30]);
|
||
|
|
// vmadh $v16, $v30, $v31[5]
|
||
|
|
rsp.VMADH<13>(rsp.vpu.r[16], rsp.vpu.r[30], rsp.vpu.r[31]);
|
||
|
|
// ldv $v30[0], 0x0($21)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[30], r21, 0X0);
|
||
|
|
// vsar $v26, $v15, $v28[1]
|
||
|
|
rsp.VSAR<9>(rsp.vpu.r[26], rsp.vpu.r[15]);
|
||
|
|
// ldv $v30[8], 0x8($21)
|
||
|
|
rsp.LDV<8>(rsp.vpu.r[30], r21, 0X1);
|
||
|
|
// vsar $v28, $v15, $v28[0]
|
||
|
|
rsp.VSAR<8>(rsp.vpu.r[28], rsp.vpu.r[15]);
|
||
|
|
// vmudn $v16, $v26, $v14[0]
|
||
|
|
rsp.VMUDN<8>(rsp.vpu.r[16], rsp.vpu.r[26], rsp.vpu.r[14]);
|
||
|
|
// vmadh $v28, $v28, $v14[0]
|
||
|
|
rsp.VMADH<8>(rsp.vpu.r[28], rsp.vpu.r[28], rsp.vpu.r[14]);
|
||
|
|
// sdv $v28[0], 0x0($20)
|
||
|
|
rsp.SDV<0>(rsp.vpu.r[28], r20, 0X0);
|
||
|
|
// sdv $v28[8], 0x8($20)
|
||
|
|
rsp.SDV<8>(rsp.vpu.r[28], r20, 0X1);
|
||
|
|
// bgtz $19, L_1800
|
||
|
|
if (RSP_SIGNED(r19) > 0) {
|
||
|
|
// addi $20, $20, 0x10
|
||
|
|
r20 = RSP_ADD32(r20, 0X10);
|
||
|
|
goto L_1800;
|
||
|
|
}
|
||
|
|
// addi $20, $20, 0x10
|
||
|
|
r20 = RSP_ADD32(r20, 0X10);
|
||
|
|
// addi $1, $20, -0x8
|
||
|
|
r1 = RSP_ADD32(r20, -0X8);
|
||
|
|
// addi $2, $18, 0x0
|
||
|
|
r2 = RSP_ADD32(r18, 0X0);
|
||
|
|
// jal 0x11B0
|
||
|
|
r31 = 0x1868;
|
||
|
|
// addi $3, $zero, 0x7
|
||
|
|
r3 = RSP_ADD32(0, 0X7);
|
||
|
|
goto L_11B0;
|
||
|
|
// addi $3, $zero, 0x7
|
||
|
|
r3 = RSP_ADD32(0, 0X7);
|
||
|
|
L_1868:
|
||
|
|
// mfc0 $5, SP_DMA_BUSY
|
||
|
|
r5 = 0;
|
||
|
|
// bne $5, $zero, L_1868
|
||
|
|
if (r5 != 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1868;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_1874:
|
||
|
|
// j L_1118
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
goto L_1118;
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
L_187C:
|
||
|
|
// lh $8, 0x0($24)
|
||
|
|
r8 = RSP_MEM_H_LOAD(0X0, r24);
|
||
|
|
// lh $19, 0x2($24)
|
||
|
|
r19 = RSP_MEM_H_LOAD(0X2, r24);
|
||
|
|
// lh $18, 0x4($24)
|
||
|
|
r18 = RSP_MEM_H_LOAD(0X4, r24);
|
||
|
|
// lui $4, 0xFF
|
||
|
|
r4 = S32(0XFF << 16);
|
||
|
|
// ori $4, $4, 0xFFFF
|
||
|
|
r4 = r4 | 0XFFFF;
|
||
|
|
// and $2, $25, $4
|
||
|
|
r2 = r25 & r4;
|
||
|
|
// srl $5, $25, 24
|
||
|
|
r5 = S32(U32(r25) >> 24);
|
||
|
|
// sll $5, $5, 2
|
||
|
|
r5 = S32(r5) << 2;
|
||
|
|
// lw $6, 0x320($5)
|
||
|
|
r6 = RSP_MEM_W_LOAD(0X320, r5);
|
||
|
|
// add $2, $2, $6
|
||
|
|
r2 = RSP_ADD32(r2, r6);
|
||
|
|
// addi $1, $23, 0x0
|
||
|
|
r1 = RSP_ADD32(r23, 0X0);
|
||
|
|
// sw $2, 0x40($23)
|
||
|
|
RSP_MEM_W_STORE(0X40, r23, r2);
|
||
|
|
// addi $3, $zero, 0x1F
|
||
|
|
r3 = RSP_ADD32(0, 0X1F);
|
||
|
|
// srl $7, $26, 16
|
||
|
|
r7 = S32(U32(r26) >> 16);
|
||
|
|
// andi $10, $7, 0x1
|
||
|
|
r10 = r7 & 0X1;
|
||
|
|
// bgtz $10, L_18DC
|
||
|
|
if (RSP_SIGNED(r10) > 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_18DC;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// jal 0x1184
|
||
|
|
r31 = 0x18C8;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1184;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_18C8:
|
||
|
|
// mfc0 $1, SP_DMA_BUSY
|
||
|
|
r1 = 0;
|
||
|
|
// bne $1, $zero, L_18C8
|
||
|
|
if (r1 != 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_18C8;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// j L_18E8
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
goto L_18E8;
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
L_18DC:
|
||
|
|
// sh $zero, 0x8($23)
|
||
|
|
RSP_MEM_H_STORE(0X8, r23, 0);
|
||
|
|
// vxor $v16, $v16, $v16
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[16], rsp.vpu.r[16], rsp.vpu.r[16]);
|
||
|
|
// sdv $v16[0], 0x0($23)
|
||
|
|
rsp.SDV<0>(rsp.vpu.r[16], r23, 0X0);
|
||
|
|
L_18E8:
|
||
|
|
// andi $10, $7, 0x2
|
||
|
|
r10 = r7 & 0X2;
|
||
|
|
// beq $10, $zero, L_1908
|
||
|
|
if (r10 == 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1908;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// lh $11, 0xA($23)
|
||
|
|
r11 = RSP_MEM_H_LOAD(0XA, r23);
|
||
|
|
// lqv $v3[0], 0x10($23)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[3], r23, 0X1);
|
||
|
|
// sdv $v3[0], 0x3F0($8)
|
||
|
|
rsp.SDV<0>(rsp.vpu.r[3], r8, -0X2);
|
||
|
|
// sdv $v3[8], 0x3F8($8)
|
||
|
|
rsp.SDV<8>(rsp.vpu.r[3], r8, -0X1);
|
||
|
|
// sub $8, $8, $11
|
||
|
|
r8 = RSP_SUB32(r8, r11);
|
||
|
|
L_1908:
|
||
|
|
// addi $8, $8, -0x8
|
||
|
|
r8 = RSP_ADD32(r8, -0X8);
|
||
|
|
// lsv $v23[14], 0x8($23)
|
||
|
|
rsp.LSV<14>(rsp.vpu.r[23], r23, 0X4);
|
||
|
|
// ldv $v16[0], 0x0($23)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[16], r23, 0X0);
|
||
|
|
// sdv $v16[0], 0x0($8)
|
||
|
|
rsp.SDV<0>(rsp.vpu.r[16], r8, 0X0);
|
||
|
|
// mtc2 $8, $v18[4]
|
||
|
|
rsp.MTC2<4>(r8, rsp.vpu.r[18]);
|
||
|
|
// addi $10, $zero, 0xC0
|
||
|
|
r10 = RSP_ADD32(0, 0XC0);
|
||
|
|
// mtc2 $10, $v18[6]
|
||
|
|
rsp.MTC2<6>(r10, rsp.vpu.r[18]);
|
||
|
|
// mtc2 $26, $v18[8]
|
||
|
|
rsp.MTC2<8>(r26, rsp.vpu.r[18]);
|
||
|
|
// addi $10, $zero, 0x40
|
||
|
|
r10 = RSP_ADD32(0, 0X40);
|
||
|
|
// mtc2 $10, $v18[10]
|
||
|
|
rsp.MTC2<10>(r10, rsp.vpu.r[18]);
|
||
|
|
// addi $9, $zero, 0x40
|
||
|
|
r9 = RSP_ADD32(0, 0X40);
|
||
|
|
// lqv $v31[0], 0x10($9)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[31], r9, 0X1);
|
||
|
|
// lqv $v25[0], 0x0($9)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[25], r9, 0X0);
|
||
|
|
// vsub $v25, $v25, $v31
|
||
|
|
rsp.VSUB<0>(rsp.vpu.r[25], rsp.vpu.r[25], rsp.vpu.r[31]);
|
||
|
|
// lqv $v30[0], 0x20($9)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[30], r9, 0X2);
|
||
|
|
// lqv $v29[0], 0x30($9)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[29], r9, 0X3);
|
||
|
|
// lqv $v28[0], 0x40($9)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[28], r9, 0X4);
|
||
|
|
// lqv $v27[0], 0x50($9)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[27], r9, 0X5);
|
||
|
|
// lqv $v26[0], 0x60($9)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[26], r9, 0X6);
|
||
|
|
// vsub $v25, $v25, $v31
|
||
|
|
rsp.VSUB<0>(rsp.vpu.r[25], rsp.vpu.r[25], rsp.vpu.r[31]);
|
||
|
|
// lqv $v24[0], 0x70($9)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[24], r9, 0X7);
|
||
|
|
// addi $21, $23, 0x20
|
||
|
|
r21 = RSP_ADD32(r23, 0X20);
|
||
|
|
// addi $20, $23, 0x30
|
||
|
|
r20 = RSP_ADD32(r23, 0X30);
|
||
|
|
// vxor $v22, $v22, $v22
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[22], rsp.vpu.r[22], rsp.vpu.r[22]);
|
||
|
|
// vmudm $v23, $v31, $v23[7]
|
||
|
|
rsp.VMUDM<15>(rsp.vpu.r[23], rsp.vpu.r[31], rsp.vpu.r[23]);
|
||
|
|
// vmadm $v22, $v25, $v18[4]
|
||
|
|
rsp.VMADM<12>(rsp.vpu.r[22], rsp.vpu.r[25], rsp.vpu.r[18]);
|
||
|
|
// vmadn $v23, $v31, $v30[0]
|
||
|
|
rsp.VMADN<8>(rsp.vpu.r[23], rsp.vpu.r[31], rsp.vpu.r[30]);
|
||
|
|
// vmudn $v21, $v31, $v18[2]
|
||
|
|
rsp.VMUDN<10>(rsp.vpu.r[21], rsp.vpu.r[31], rsp.vpu.r[18]);
|
||
|
|
// vmadn $v21, $v22, $v30[2]
|
||
|
|
rsp.VMADN<10>(rsp.vpu.r[21], rsp.vpu.r[22], rsp.vpu.r[30]);
|
||
|
|
// vmudl $v17, $v23, $v18[5]
|
||
|
|
rsp.VMUDL<13>(rsp.vpu.r[17], rsp.vpu.r[23], rsp.vpu.r[18]);
|
||
|
|
// vmudn $v17, $v17, $v30[4]
|
||
|
|
rsp.VMUDN<12>(rsp.vpu.r[17], rsp.vpu.r[17], rsp.vpu.r[30]);
|
||
|
|
// vmadn $v17, $v31, $v18[3]
|
||
|
|
rsp.VMADN<11>(rsp.vpu.r[17], rsp.vpu.r[31], rsp.vpu.r[18]);
|
||
|
|
// lqv $v25[0], 0x0($9)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[25], r9, 0X0);
|
||
|
|
// sqv $v21[0], 0x0($21)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[21], r21, 0X0);
|
||
|
|
// sqv $v17[0], 0x0($20)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[17], r20, 0X0);
|
||
|
|
// ssv $v23[7], 0x8($23)
|
||
|
|
rsp.SSV<7>(rsp.vpu.r[23], r23, 0X4);
|
||
|
|
// lh $17, 0x0($21)
|
||
|
|
r17 = RSP_MEM_H_LOAD(0X0, r21);
|
||
|
|
// lh $9, 0x0($20)
|
||
|
|
r9 = RSP_MEM_H_LOAD(0X0, r20);
|
||
|
|
// lh $13, 0x8($21)
|
||
|
|
r13 = RSP_MEM_H_LOAD(0X8, r21);
|
||
|
|
// lh $5, 0x8($20)
|
||
|
|
r5 = RSP_MEM_H_LOAD(0X8, r20);
|
||
|
|
// lh $16, 0x2($21)
|
||
|
|
r16 = RSP_MEM_H_LOAD(0X2, r21);
|
||
|
|
// lh $8, 0x2($20)
|
||
|
|
r8 = RSP_MEM_H_LOAD(0X2, r20);
|
||
|
|
// lh $12, 0xA($21)
|
||
|
|
r12 = RSP_MEM_H_LOAD(0XA, r21);
|
||
|
|
// lh $4, 0xA($20)
|
||
|
|
r4 = RSP_MEM_H_LOAD(0XA, r20);
|
||
|
|
// lh $15, 0x4($21)
|
||
|
|
r15 = RSP_MEM_H_LOAD(0X4, r21);
|
||
|
|
// lh $7, 0x4($20)
|
||
|
|
r7 = RSP_MEM_H_LOAD(0X4, r20);
|
||
|
|
// lh $11, 0xC($21)
|
||
|
|
r11 = RSP_MEM_H_LOAD(0XC, r21);
|
||
|
|
// lh $3, 0xC($20)
|
||
|
|
r3 = RSP_MEM_H_LOAD(0XC, r20);
|
||
|
|
// lh $14, 0x6($21)
|
||
|
|
r14 = RSP_MEM_H_LOAD(0X6, r21);
|
||
|
|
// lh $6, 0x6($20)
|
||
|
|
r6 = RSP_MEM_H_LOAD(0X6, r20);
|
||
|
|
// lh $10, 0xE($21)
|
||
|
|
r10 = RSP_MEM_H_LOAD(0XE, r21);
|
||
|
|
// lh $2, 0xE($20)
|
||
|
|
r2 = RSP_MEM_H_LOAD(0XE, r20);
|
||
|
|
L_19D8:
|
||
|
|
// ldv $v16[0], 0x0($17)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[16], r17, 0X0);
|
||
|
|
// vmudm $v23, $v31, $v23[7]
|
||
|
|
rsp.VMUDM<15>(rsp.vpu.r[23], rsp.vpu.r[31], rsp.vpu.r[23]);
|
||
|
|
// ldv $v15[0], 0x0($9)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[15], r9, 0X0);
|
||
|
|
// vmadh $v23, $v31, $v22[7]
|
||
|
|
rsp.VMADH<15>(rsp.vpu.r[23], rsp.vpu.r[31], rsp.vpu.r[22]);
|
||
|
|
// ldv $v16[8], 0x0($13)
|
||
|
|
rsp.LDV<8>(rsp.vpu.r[16], r13, 0X0);
|
||
|
|
// vmadm $v22, $v25, $v18[4]
|
||
|
|
rsp.VMADM<12>(rsp.vpu.r[22], rsp.vpu.r[25], rsp.vpu.r[18]);
|
||
|
|
// ldv $v15[8], 0x0($5)
|
||
|
|
rsp.LDV<8>(rsp.vpu.r[15], r5, 0X0);
|
||
|
|
// vmadn $v23, $v31, $v30[0]
|
||
|
|
rsp.VMADN<8>(rsp.vpu.r[23], rsp.vpu.r[31], rsp.vpu.r[30]);
|
||
|
|
// ldv $v14[0], 0x0($16)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[14], r16, 0X0);
|
||
|
|
// vmudn $v21, $v31, $v18[2]
|
||
|
|
rsp.VMUDN<10>(rsp.vpu.r[21], rsp.vpu.r[31], rsp.vpu.r[18]);
|
||
|
|
// ldv $v13[0], 0x0($8)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[13], r8, 0X0);
|
||
|
|
// vmadn $v21, $v22, $v30[2]
|
||
|
|
rsp.VMADN<10>(rsp.vpu.r[21], rsp.vpu.r[22], rsp.vpu.r[30]);
|
||
|
|
// ldv $v14[8], 0x0($12)
|
||
|
|
rsp.LDV<8>(rsp.vpu.r[14], r12, 0X0);
|
||
|
|
// vmudl $v17, $v23, $v18[5]
|
||
|
|
rsp.VMUDL<13>(rsp.vpu.r[17], rsp.vpu.r[23], rsp.vpu.r[18]);
|
||
|
|
// ldv $v13[8], 0x0($4)
|
||
|
|
rsp.LDV<8>(rsp.vpu.r[13], r4, 0X0);
|
||
|
|
// ldv $v12[0], 0x0($15)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[12], r15, 0X0);
|
||
|
|
// ldv $v11[0], 0x0($7)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[11], r7, 0X0);
|
||
|
|
// ldv $v12[8], 0x0($11)
|
||
|
|
rsp.LDV<8>(rsp.vpu.r[12], r11, 0X0);
|
||
|
|
// vmudn $v17, $v17, $v30[4]
|
||
|
|
rsp.VMUDN<12>(rsp.vpu.r[17], rsp.vpu.r[17], rsp.vpu.r[30]);
|
||
|
|
// ldv $v11[8], 0x0($3)
|
||
|
|
rsp.LDV<8>(rsp.vpu.r[11], r3, 0X0);
|
||
|
|
// ldv $v10[0], 0x0($14)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[10], r14, 0X0);
|
||
|
|
// ldv $v9[0], 0x0($6)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[9], r6, 0X0);
|
||
|
|
// vmadn $v17, $v31, $v18[3]
|
||
|
|
rsp.VMADN<11>(rsp.vpu.r[17], rsp.vpu.r[31], rsp.vpu.r[18]);
|
||
|
|
// ldv $v10[8], 0x0($10)
|
||
|
|
rsp.LDV<8>(rsp.vpu.r[10], r10, 0X0);
|
||
|
|
// vmulf $v8, $v16, $v15
|
||
|
|
rsp.VMULF<0>(rsp.vpu.r[8], rsp.vpu.r[16], rsp.vpu.r[15]);
|
||
|
|
// ldv $v9[8], 0x0($2)
|
||
|
|
rsp.LDV<8>(rsp.vpu.r[9], r2, 0X0);
|
||
|
|
// vmulf $v7, $v14, $v13
|
||
|
|
rsp.VMULF<0>(rsp.vpu.r[7], rsp.vpu.r[14], rsp.vpu.r[13]);
|
||
|
|
// sqv $v21[0], 0x0($21)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[21], r21, 0X0);
|
||
|
|
// vmulf $v6, $v12, $v11
|
||
|
|
rsp.VMULF<0>(rsp.vpu.r[6], rsp.vpu.r[12], rsp.vpu.r[11]);
|
||
|
|
// sqv $v17[0], 0x0($20)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[17], r20, 0X0);
|
||
|
|
// lh $17, 0x0($21)
|
||
|
|
r17 = RSP_MEM_H_LOAD(0X0, r21);
|
||
|
|
// vmulf $v5, $v10, $v9
|
||
|
|
rsp.VMULF<0>(rsp.vpu.r[5], rsp.vpu.r[10], rsp.vpu.r[9]);
|
||
|
|
// lh $9, 0x0($20)
|
||
|
|
r9 = RSP_MEM_H_LOAD(0X0, r20);
|
||
|
|
// vadd $v8, $v8, $v8[1q]
|
||
|
|
rsp.VADD<3>(rsp.vpu.r[8], rsp.vpu.r[8], rsp.vpu.r[8]);
|
||
|
|
// lh $13, 0x8($21)
|
||
|
|
r13 = RSP_MEM_H_LOAD(0X8, r21);
|
||
|
|
// vadd $v7, $v7, $v7[1q]
|
||
|
|
rsp.VADD<3>(rsp.vpu.r[7], rsp.vpu.r[7], rsp.vpu.r[7]);
|
||
|
|
// lh $5, 0x8($20)
|
||
|
|
r5 = RSP_MEM_H_LOAD(0X8, r20);
|
||
|
|
// vadd $v6, $v6, $v6[1q]
|
||
|
|
rsp.VADD<3>(rsp.vpu.r[6], rsp.vpu.r[6], rsp.vpu.r[6]);
|
||
|
|
// lh $16, 0x2($21)
|
||
|
|
r16 = RSP_MEM_H_LOAD(0X2, r21);
|
||
|
|
// vadd $v5, $v5, $v5[1q]
|
||
|
|
rsp.VADD<3>(rsp.vpu.r[5], rsp.vpu.r[5], rsp.vpu.r[5]);
|
||
|
|
// lh $8, 0x2($20)
|
||
|
|
r8 = RSP_MEM_H_LOAD(0X2, r20);
|
||
|
|
// vadd $v8, $v8, $v8[2h]
|
||
|
|
rsp.VADD<6>(rsp.vpu.r[8], rsp.vpu.r[8], rsp.vpu.r[8]);
|
||
|
|
// lh $12, 0xA($21)
|
||
|
|
r12 = RSP_MEM_H_LOAD(0XA, r21);
|
||
|
|
// vadd $v7, $v7, $v7[2h]
|
||
|
|
rsp.VADD<6>(rsp.vpu.r[7], rsp.vpu.r[7], rsp.vpu.r[7]);
|
||
|
|
// lh $4, 0xA($20)
|
||
|
|
r4 = RSP_MEM_H_LOAD(0XA, r20);
|
||
|
|
// vadd $v6, $v6, $v6[2h]
|
||
|
|
rsp.VADD<6>(rsp.vpu.r[6], rsp.vpu.r[6], rsp.vpu.r[6]);
|
||
|
|
// lh $15, 0x4($21)
|
||
|
|
r15 = RSP_MEM_H_LOAD(0X4, r21);
|
||
|
|
// vadd $v5, $v5, $v5[2h]
|
||
|
|
rsp.VADD<6>(rsp.vpu.r[5], rsp.vpu.r[5], rsp.vpu.r[5]);
|
||
|
|
// lh $7, 0x4($20)
|
||
|
|
r7 = RSP_MEM_H_LOAD(0X4, r20);
|
||
|
|
// vmudn $v4, $v29, $v8[0h]
|
||
|
|
rsp.VMUDN<4>(rsp.vpu.r[4], rsp.vpu.r[29], rsp.vpu.r[8]);
|
||
|
|
// lh $11, 0xC($21)
|
||
|
|
r11 = RSP_MEM_H_LOAD(0XC, r21);
|
||
|
|
// vmadn $v4, $v28, $v7[0h]
|
||
|
|
rsp.VMADN<4>(rsp.vpu.r[4], rsp.vpu.r[28], rsp.vpu.r[7]);
|
||
|
|
// lh $3, 0xC($20)
|
||
|
|
r3 = RSP_MEM_H_LOAD(0XC, r20);
|
||
|
|
// vmadn $v4, $v27, $v6[0h]
|
||
|
|
rsp.VMADN<4>(rsp.vpu.r[4], rsp.vpu.r[27], rsp.vpu.r[6]);
|
||
|
|
// lh $14, 0x6($21)
|
||
|
|
r14 = RSP_MEM_H_LOAD(0X6, r21);
|
||
|
|
// vmadn $v4, $v26, $v5[0h]
|
||
|
|
rsp.VMADN<4>(rsp.vpu.r[4], rsp.vpu.r[26], rsp.vpu.r[5]);
|
||
|
|
// lh $6, 0x6($20)
|
||
|
|
r6 = RSP_MEM_H_LOAD(0X6, r20);
|
||
|
|
// lh $10, 0xE($21)
|
||
|
|
r10 = RSP_MEM_H_LOAD(0XE, r21);
|
||
|
|
// addi $18, $18, -0x10
|
||
|
|
r18 = RSP_ADD32(r18, -0X10);
|
||
|
|
// sqv $v4[0], 0x0($19)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[4], r19, 0X0);
|
||
|
|
// blez $18, L_1AD8
|
||
|
|
if (RSP_SIGNED(r18) <= 0) {
|
||
|
|
// lh $2, 0xE($20)
|
||
|
|
r2 = RSP_MEM_H_LOAD(0XE, r20);
|
||
|
|
goto L_1AD8;
|
||
|
|
}
|
||
|
|
// lh $2, 0xE($20)
|
||
|
|
r2 = RSP_MEM_H_LOAD(0XE, r20);
|
||
|
|
// j L_19D8
|
||
|
|
// addi $19, $19, 0x10
|
||
|
|
r19 = RSP_ADD32(r19, 0X10);
|
||
|
|
goto L_19D8;
|
||
|
|
// addi $19, $19, 0x10
|
||
|
|
r19 = RSP_ADD32(r19, 0X10);
|
||
|
|
L_1AD8:
|
||
|
|
// ssv $v23[0], 0x8($23)
|
||
|
|
rsp.SSV<0>(rsp.vpu.r[23], r23, 0X4);
|
||
|
|
// ldv $v16[0], 0x0($17)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[16], r17, 0X0);
|
||
|
|
// sdv $v16[0], 0x0($23)
|
||
|
|
rsp.SDV<0>(rsp.vpu.r[16], r23, 0X0);
|
||
|
|
// lh $6, 0x0($24)
|
||
|
|
r6 = RSP_MEM_H_LOAD(0X0, r24);
|
||
|
|
// addi $17, $17, 0x8
|
||
|
|
r17 = RSP_ADD32(r17, 0X8);
|
||
|
|
// sub $5, $17, $6
|
||
|
|
r5 = RSP_SUB32(r17, r6);
|
||
|
|
// andi $4, $5, 0xF
|
||
|
|
r4 = r5 & 0XF;
|
||
|
|
// sub $17, $17, $4
|
||
|
|
r17 = RSP_SUB32(r17, r4);
|
||
|
|
// beq $4, $zero, L_1B04
|
||
|
|
if (r4 == 0) {
|
||
|
|
// addi $7, $zero, 0x10
|
||
|
|
r7 = RSP_ADD32(0, 0X10);
|
||
|
|
goto L_1B04;
|
||
|
|
}
|
||
|
|
// addi $7, $zero, 0x10
|
||
|
|
r7 = RSP_ADD32(0, 0X10);
|
||
|
|
// sub $4, $7, $4
|
||
|
|
r4 = RSP_SUB32(r7, r4);
|
||
|
|
L_1B04:
|
||
|
|
// sh $4, 0xA($23)
|
||
|
|
RSP_MEM_H_STORE(0XA, r23, r4);
|
||
|
|
// ldv $v3[0], 0x0($17)
|
||
|
|
rsp.LDV<0>(rsp.vpu.r[3], r17, 0X0);
|
||
|
|
// ldv $v3[8], 0x8($17)
|
||
|
|
rsp.LDV<8>(rsp.vpu.r[3], r17, 0X1);
|
||
|
|
// sqv $v3[0], 0x10($23)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[3], r23, 0X1);
|
||
|
|
// lw $2, 0x40($23)
|
||
|
|
r2 = RSP_MEM_W_LOAD(0X40, r23);
|
||
|
|
// addi $1, $23, 0x0
|
||
|
|
r1 = RSP_ADD32(r23, 0X0);
|
||
|
|
// jal 0x11B0
|
||
|
|
r31 = 0x1B24;
|
||
|
|
// addi $3, $zero, 0x1F
|
||
|
|
r3 = RSP_ADD32(0, 0X1F);
|
||
|
|
goto L_11B0;
|
||
|
|
// addi $3, $zero, 0x1F
|
||
|
|
r3 = RSP_ADD32(0, 0X1F);
|
||
|
|
L_1B24:
|
||
|
|
// mfc0 $5, SP_DMA_BUSY
|
||
|
|
r5 = 0;
|
||
|
|
// bne $5, $zero, L_1B24
|
||
|
|
if (r5 != 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1B24;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// j L_1118
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
goto L_1118;
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
L_1B38:
|
||
|
|
// lui $4, 0xFF
|
||
|
|
r4 = S32(0XFF << 16);
|
||
|
|
// ori $4, $4, 0xFFFF
|
||
|
|
r4 = r4 | 0XFFFF;
|
||
|
|
// and $2, $25, $4
|
||
|
|
r2 = r25 & r4;
|
||
|
|
// srl $5, $25, 24
|
||
|
|
r5 = S32(U32(r25) >> 24);
|
||
|
|
// sll $5, $5, 2
|
||
|
|
r5 = S32(r5) << 2;
|
||
|
|
// lw $6, 0x320($5)
|
||
|
|
r6 = RSP_MEM_W_LOAD(0X320, r5);
|
||
|
|
// add $2, $2, $6
|
||
|
|
r2 = RSP_ADD32(r2, r6);
|
||
|
|
// addi $1, $23, 0x0
|
||
|
|
r1 = RSP_ADD32(r23, 0X0);
|
||
|
|
// addi $3, $zero, 0x4F
|
||
|
|
r3 = RSP_ADD32(0, 0X4F);
|
||
|
|
// vxor $v0, $v0, $v0
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[0], rsp.vpu.r[0], rsp.vpu.r[0]);
|
||
|
|
// addi $11, $zero, 0x40
|
||
|
|
r11 = RSP_ADD32(0, 0X40);
|
||
|
|
// lqv $v31[0], 0x10($11)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[31], r11, 0X1);
|
||
|
|
// lqv $v10[0], 0x0($zero)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[10], 0, 0X0);
|
||
|
|
// srl $12, $26, 16
|
||
|
|
r12 = S32(U32(r26) >> 16);
|
||
|
|
// andi $10, $12, 0x1
|
||
|
|
r10 = r12 & 0X1;
|
||
|
|
// beq $10, $zero, L_1B84
|
||
|
|
if (r10 == 0) {
|
||
|
|
// lqv $v24[0], 0x10($24)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[24], r24, 0X1);
|
||
|
|
goto L_1B84;
|
||
|
|
}
|
||
|
|
// lqv $v24[0], 0x10($24)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[24], r24, 0X1);
|
||
|
|
// j L_1BB0
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1BB0;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_1B84:
|
||
|
|
// jal 0x1184
|
||
|
|
r31 = 0x1B8C;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1184;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_1B8C:
|
||
|
|
// mfc0 $5, SP_DMA_BUSY
|
||
|
|
r5 = 0;
|
||
|
|
// bne $5, $zero, L_1B8C
|
||
|
|
if (r5 != 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1B8C;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
// lqv $v20[0], 0x0($23)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[20], r23, 0X0);
|
||
|
|
// lqv $v21[0], 0x10($23)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[21], r23, 0X1);
|
||
|
|
// lqv $v18[0], 0x20($23)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[18], r23, 0X2);
|
||
|
|
// lqv $v19[0], 0x30($23)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[19], r23, 0X3);
|
||
|
|
// lqv $v24[0], 0x40($23)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[24], r23, 0X4);
|
||
|
|
L_1BB0:
|
||
|
|
// lh $13, 0x0($24)
|
||
|
|
r13 = RSP_MEM_H_LOAD(0X0, r24);
|
||
|
|
// lh $19, 0x2($24)
|
||
|
|
r19 = RSP_MEM_H_LOAD(0X2, r24);
|
||
|
|
// lh $18, 0xA($24)
|
||
|
|
r18 = RSP_MEM_H_LOAD(0XA, r24);
|
||
|
|
// lh $17, 0xC($24)
|
||
|
|
r17 = RSP_MEM_H_LOAD(0XC, r24);
|
||
|
|
// lh $16, 0xE($24)
|
||
|
|
r16 = RSP_MEM_H_LOAD(0XE, r24);
|
||
|
|
// lh $14, 0x4($24)
|
||
|
|
r14 = RSP_MEM_H_LOAD(0X4, r24);
|
||
|
|
// addi $15, $zero, 0x10
|
||
|
|
r15 = RSP_ADD32(0, 0X10);
|
||
|
|
// mfc2 $21, $v24[2]
|
||
|
|
rsp.MFC2<2>(r21, rsp.vpu.r[24]);
|
||
|
|
// mfc2 $20, $v24[8]
|
||
|
|
rsp.MFC2<8>(r20, rsp.vpu.r[24]);
|
||
|
|
// andi $9, $12, 0x8
|
||
|
|
r9 = r12 & 0X8;
|
||
|
|
// bgtz $9, L_1BEC
|
||
|
|
if (RSP_SIGNED(r9) > 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1BEC;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// addi $17, $23, 0x50
|
||
|
|
r17 = RSP_ADD32(r23, 0X50);
|
||
|
|
// add $16, $zero, $17
|
||
|
|
r16 = RSP_ADD32(0, r17);
|
||
|
|
// addi $15, $zero, 0x0
|
||
|
|
r15 = RSP_ADD32(0, 0X0);
|
||
|
|
L_1BEC:
|
||
|
|
// beq $10, $zero, L_1CF0
|
||
|
|
if (r10 == 0) {
|
||
|
|
// lqv $v30[0], 0x70($11)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[30], r11, 0X7);
|
||
|
|
goto L_1CF0;
|
||
|
|
}
|
||
|
|
// lqv $v30[0], 0x70($11)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[30], r11, 0X7);
|
||
|
|
// lqv $v17[0], 0x0($13)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[17], r13, 0X0);
|
||
|
|
// lqv $v29[0], 0x0($19)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[29], r19, 0X0);
|
||
|
|
// lqv $v27[0], 0x0($17)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[27], r17, 0X0);
|
||
|
|
// vxor $v21, $v21, $v21
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[21], rsp.vpu.r[21], rsp.vpu.r[21]);
|
||
|
|
// lsv $v20[14], 0x6($24)
|
||
|
|
rsp.LSV<14>(rsp.vpu.r[20], r24, 0X3);
|
||
|
|
// vmudm $v23, $v20, $v24[2]
|
||
|
|
rsp.VMUDM<10>(rsp.vpu.r[23], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
// vmadh $v22, $v20, $v24[1]
|
||
|
|
rsp.VMADH<9>(rsp.vpu.r[22], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
// vmadn $v23, $v31, $v0[0]
|
||
|
|
rsp.VMADN<8>(rsp.vpu.r[23], rsp.vpu.r[31], rsp.vpu.r[0]);
|
||
|
|
// vsubc $v23, $v23, $v21
|
||
|
|
rsp.VSUBC<0>(rsp.vpu.r[23], rsp.vpu.r[23], rsp.vpu.r[21]);
|
||
|
|
// vsub $v22, $v22, $v20
|
||
|
|
rsp.VSUB<0>(rsp.vpu.r[22], rsp.vpu.r[22], rsp.vpu.r[20]);
|
||
|
|
// vmudl $v23, $v30, $v23[7]
|
||
|
|
rsp.VMUDL<15>(rsp.vpu.r[23], rsp.vpu.r[30], rsp.vpu.r[23]);
|
||
|
|
// vmadn $v23, $v30, $v22[7]
|
||
|
|
rsp.VMADN<15>(rsp.vpu.r[23], rsp.vpu.r[30], rsp.vpu.r[22]);
|
||
|
|
// vmadm $v22, $v31, $v0[0]
|
||
|
|
rsp.VMADM<8>(rsp.vpu.r[22], rsp.vpu.r[31], rsp.vpu.r[0]);
|
||
|
|
// vmadm $v21, $v31, $v21[7]
|
||
|
|
rsp.VMADM<15>(rsp.vpu.r[21], rsp.vpu.r[31], rsp.vpu.r[21]);
|
||
|
|
// vmadh $v20, $v31, $v20[7]
|
||
|
|
rsp.VMADH<15>(rsp.vpu.r[20], rsp.vpu.r[31], rsp.vpu.r[20]);
|
||
|
|
// bgtz $21, L_1C44
|
||
|
|
if (RSP_SIGNED(r21) > 0) {
|
||
|
|
// vmadn $v21, $v31, $v0[0]
|
||
|
|
rsp.VMADN<8>(rsp.vpu.r[21], rsp.vpu.r[31], rsp.vpu.r[0]);
|
||
|
|
goto L_1C44;
|
||
|
|
}
|
||
|
|
// vmadn $v21, $v31, $v0[0]
|
||
|
|
rsp.VMADN<8>(rsp.vpu.r[21], rsp.vpu.r[31], rsp.vpu.r[0]);
|
||
|
|
// vge $v20, $v20, $v24[0]
|
||
|
|
rsp.VGE<8>(rsp.vpu.r[20], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
// j L_1C48
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1C48;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_1C44:
|
||
|
|
// vcl $v20, $v20, $v24[0]
|
||
|
|
rsp.VCL<8>(rsp.vpu.r[20], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
L_1C48:
|
||
|
|
// vmulf $v16, $v20, $v24[6]
|
||
|
|
rsp.VMULF<14>(rsp.vpu.r[16], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
// vmulf $v15, $v20, $v24[7]
|
||
|
|
rsp.VMULF<15>(rsp.vpu.r[15], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
// vmulf $v29, $v29, $v10[6]
|
||
|
|
rsp.VMULF<14>(rsp.vpu.r[29], rsp.vpu.r[29], rsp.vpu.r[10]);
|
||
|
|
// vmacf $v29, $v17, $v16
|
||
|
|
rsp.VMACF<0>(rsp.vpu.r[29], rsp.vpu.r[17], rsp.vpu.r[16]);
|
||
|
|
// vmulf $v27, $v27, $v10[6]
|
||
|
|
rsp.VMULF<14>(rsp.vpu.r[27], rsp.vpu.r[27], rsp.vpu.r[10]);
|
||
|
|
// vmacf $v27, $v17, $v15
|
||
|
|
rsp.VMACF<0>(rsp.vpu.r[27], rsp.vpu.r[17], rsp.vpu.r[15]);
|
||
|
|
// sqv $v29[0], 0x0($19)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[29], r19, 0X0);
|
||
|
|
// sqv $v27[0], 0x0($17)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[27], r17, 0X0);
|
||
|
|
// lqv $v28[0], 0x0($18)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[28], r18, 0X0);
|
||
|
|
// lqv $v26[0], 0x0($16)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[26], r16, 0X0);
|
||
|
|
// vxor $v19, $v19, $v19
|
||
|
|
rsp.VXOR<0>(rsp.vpu.r[19], rsp.vpu.r[19], rsp.vpu.r[19]);
|
||
|
|
// lsv $v18[14], 0x8($24)
|
||
|
|
rsp.LSV<14>(rsp.vpu.r[18], r24, 0X4);
|
||
|
|
// vmudm $v23, $v18, $v24[5]
|
||
|
|
rsp.VMUDM<13>(rsp.vpu.r[23], rsp.vpu.r[18], rsp.vpu.r[24]);
|
||
|
|
// vmadh $v22, $v18, $v24[4]
|
||
|
|
rsp.VMADH<12>(rsp.vpu.r[22], rsp.vpu.r[18], rsp.vpu.r[24]);
|
||
|
|
// vmadn $v23, $v31, $v0[0]
|
||
|
|
rsp.VMADN<8>(rsp.vpu.r[23], rsp.vpu.r[31], rsp.vpu.r[0]);
|
||
|
|
// vsubc $v23, $v23, $v19
|
||
|
|
rsp.VSUBC<0>(rsp.vpu.r[23], rsp.vpu.r[23], rsp.vpu.r[19]);
|
||
|
|
// vsub $v22, $v22, $v18
|
||
|
|
rsp.VSUB<0>(rsp.vpu.r[22], rsp.vpu.r[22], rsp.vpu.r[18]);
|
||
|
|
// vmudl $v23, $v30, $v23[7]
|
||
|
|
rsp.VMUDL<15>(rsp.vpu.r[23], rsp.vpu.r[30], rsp.vpu.r[23]);
|
||
|
|
// vmadn $v23, $v30, $v22[7]
|
||
|
|
rsp.VMADN<15>(rsp.vpu.r[23], rsp.vpu.r[30], rsp.vpu.r[22]);
|
||
|
|
// vmadm $v22, $v31, $v0[0]
|
||
|
|
rsp.VMADM<8>(rsp.vpu.r[22], rsp.vpu.r[31], rsp.vpu.r[0]);
|
||
|
|
// vmadm $v19, $v31, $v19[7]
|
||
|
|
rsp.VMADM<15>(rsp.vpu.r[19], rsp.vpu.r[31], rsp.vpu.r[19]);
|
||
|
|
// vmadh $v18, $v31, $v18[7]
|
||
|
|
rsp.VMADH<15>(rsp.vpu.r[18], rsp.vpu.r[31], rsp.vpu.r[18]);
|
||
|
|
// bgtz $20, L_1CB4
|
||
|
|
if (RSP_SIGNED(r20) > 0) {
|
||
|
|
// vmadn $v19, $v31, $v0[0]
|
||
|
|
rsp.VMADN<8>(rsp.vpu.r[19], rsp.vpu.r[31], rsp.vpu.r[0]);
|
||
|
|
goto L_1CB4;
|
||
|
|
}
|
||
|
|
// vmadn $v19, $v31, $v0[0]
|
||
|
|
rsp.VMADN<8>(rsp.vpu.r[19], rsp.vpu.r[31], rsp.vpu.r[0]);
|
||
|
|
// vge $v18, $v18, $v24[3]
|
||
|
|
rsp.VGE<11>(rsp.vpu.r[18], rsp.vpu.r[18], rsp.vpu.r[24]);
|
||
|
|
// j L_1CB8
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1CB8;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
L_1CB4:
|
||
|
|
// vcl $v18, $v18, $v24[3]
|
||
|
|
rsp.VCL<11>(rsp.vpu.r[18], rsp.vpu.r[18], rsp.vpu.r[24]);
|
||
|
|
L_1CB8:
|
||
|
|
// vmulf $v16, $v18, $v24[6]
|
||
|
|
rsp.VMULF<14>(rsp.vpu.r[16], rsp.vpu.r[18], rsp.vpu.r[24]);
|
||
|
|
// vmulf $v15, $v18, $v24[7]
|
||
|
|
rsp.VMULF<15>(rsp.vpu.r[15], rsp.vpu.r[18], rsp.vpu.r[24]);
|
||
|
|
// vmulf $v28, $v28, $v10[6]
|
||
|
|
rsp.VMULF<14>(rsp.vpu.r[28], rsp.vpu.r[28], rsp.vpu.r[10]);
|
||
|
|
// vmacf $v28, $v17, $v16
|
||
|
|
rsp.VMACF<0>(rsp.vpu.r[28], rsp.vpu.r[17], rsp.vpu.r[16]);
|
||
|
|
// vmulf $v26, $v26, $v10[6]
|
||
|
|
rsp.VMULF<14>(rsp.vpu.r[26], rsp.vpu.r[26], rsp.vpu.r[10]);
|
||
|
|
// vmacf $v26, $v17, $v15
|
||
|
|
rsp.VMACF<0>(rsp.vpu.r[26], rsp.vpu.r[17], rsp.vpu.r[15]);
|
||
|
|
// sqv $v28[0], 0x0($18)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[28], r18, 0X0);
|
||
|
|
// sqv $v26[0], 0x0($16)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[26], r16, 0X0);
|
||
|
|
// addi $14, $14, -0x10
|
||
|
|
r14 = RSP_ADD32(r14, -0X10);
|
||
|
|
// addi $13, $13, 0x10
|
||
|
|
r13 = RSP_ADD32(r13, 0X10);
|
||
|
|
// addi $19, $19, 0x10
|
||
|
|
r19 = RSP_ADD32(r19, 0X10);
|
||
|
|
// addi $18, $18, 0x10
|
||
|
|
r18 = RSP_ADD32(r18, 0X10);
|
||
|
|
// add $17, $17, $15
|
||
|
|
r17 = RSP_ADD32(r17, r15);
|
||
|
|
// add $16, $16, $15
|
||
|
|
r16 = RSP_ADD32(r16, r15);
|
||
|
|
L_1CF0:
|
||
|
|
// vmudl $v23, $v21, $v24[2]
|
||
|
|
rsp.VMUDL<10>(rsp.vpu.r[23], rsp.vpu.r[21], rsp.vpu.r[24]);
|
||
|
|
// vmadm $v23, $v20, $v24[2]
|
||
|
|
rsp.VMADM<10>(rsp.vpu.r[23], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
// vmadn $v23, $v21, $v24[1]
|
||
|
|
rsp.VMADN<9>(rsp.vpu.r[23], rsp.vpu.r[21], rsp.vpu.r[24]);
|
||
|
|
// vmadh $v20, $v20, $v24[1]
|
||
|
|
rsp.VMADH<9>(rsp.vpu.r[20], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
// vmadn $v21, $v31, $v0[0]
|
||
|
|
rsp.VMADN<8>(rsp.vpu.r[21], rsp.vpu.r[31], rsp.vpu.r[0]);
|
||
|
|
L_1D04:
|
||
|
|
// bgtz $21, L_1D30
|
||
|
|
if (RSP_SIGNED(r21) > 0) {
|
||
|
|
// lqv $v17[0], 0x0($13)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[17], r13, 0X0);
|
||
|
|
goto L_1D30;
|
||
|
|
}
|
||
|
|
// lqv $v17[0], 0x0($13)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[17], r13, 0X0);
|
||
|
|
// vge $v20, $v20, $v24[0]
|
||
|
|
rsp.VGE<8>(rsp.vpu.r[20], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
// vmudl $v23, $v19, $v24[5]
|
||
|
|
rsp.VMUDL<13>(rsp.vpu.r[23], rsp.vpu.r[19], rsp.vpu.r[24]);
|
||
|
|
// vmadm $v23, $v18, $v24[5]
|
||
|
|
rsp.VMADM<13>(rsp.vpu.r[23], rsp.vpu.r[18], rsp.vpu.r[24]);
|
||
|
|
// vmadn $v23, $v19, $v24[4]
|
||
|
|
rsp.VMADN<12>(rsp.vpu.r[23], rsp.vpu.r[19], rsp.vpu.r[24]);
|
||
|
|
// lqv $v29[0], 0x0($19)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[29], r19, 0X0);
|
||
|
|
// vmadh $v18, $v18, $v24[4]
|
||
|
|
rsp.VMADH<12>(rsp.vpu.r[18], rsp.vpu.r[18], rsp.vpu.r[24]);
|
||
|
|
// lqv $v27[0], 0x0($17)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[27], r17, 0X0);
|
||
|
|
// j L_1D50
|
||
|
|
// vmadn $v19, $v31, $v0[0]
|
||
|
|
rsp.VMADN<8>(rsp.vpu.r[19], rsp.vpu.r[31], rsp.vpu.r[0]);
|
||
|
|
goto L_1D50;
|
||
|
|
// vmadn $v19, $v31, $v0[0]
|
||
|
|
rsp.VMADN<8>(rsp.vpu.r[19], rsp.vpu.r[31], rsp.vpu.r[0]);
|
||
|
|
L_1D30:
|
||
|
|
// vcl $v20, $v20, $v24[0]
|
||
|
|
rsp.VCL<8>(rsp.vpu.r[20], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
// vmudl $v23, $v19, $v24[5]
|
||
|
|
rsp.VMUDL<13>(rsp.vpu.r[23], rsp.vpu.r[19], rsp.vpu.r[24]);
|
||
|
|
// vmadm $v23, $v18, $v24[5]
|
||
|
|
rsp.VMADM<13>(rsp.vpu.r[23], rsp.vpu.r[18], rsp.vpu.r[24]);
|
||
|
|
// vmadn $v23, $v19, $v24[4]
|
||
|
|
rsp.VMADN<12>(rsp.vpu.r[23], rsp.vpu.r[19], rsp.vpu.r[24]);
|
||
|
|
// lqv $v29[0], 0x0($19)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[29], r19, 0X0);
|
||
|
|
// vmadh $v18, $v18, $v24[4]
|
||
|
|
rsp.VMADH<12>(rsp.vpu.r[18], rsp.vpu.r[18], rsp.vpu.r[24]);
|
||
|
|
// lqv $v27[0], 0x0($17)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[27], r17, 0X0);
|
||
|
|
// vmadn $v19, $v31, $v0[0]
|
||
|
|
rsp.VMADN<8>(rsp.vpu.r[19], rsp.vpu.r[31], rsp.vpu.r[0]);
|
||
|
|
L_1D50:
|
||
|
|
// vmulf $v16, $v20, $v24[6]
|
||
|
|
rsp.VMULF<14>(rsp.vpu.r[16], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
// sqv $v20[0], 0x0($23)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[20], r23, 0X0);
|
||
|
|
// vmulf $v15, $v20, $v24[7]
|
||
|
|
rsp.VMULF<15>(rsp.vpu.r[15], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
// sqv $v21[0], 0x10($23)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[21], r23, 0X1);
|
||
|
|
// vmulf $v29, $v29, $v10[6]
|
||
|
|
rsp.VMULF<14>(rsp.vpu.r[29], rsp.vpu.r[29], rsp.vpu.r[10]);
|
||
|
|
// vmacf $v29, $v17, $v16
|
||
|
|
rsp.VMACF<0>(rsp.vpu.r[29], rsp.vpu.r[17], rsp.vpu.r[16]);
|
||
|
|
// lqv $v28[0], 0x0($18)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[28], r18, 0X0);
|
||
|
|
// vmulf $v27, $v27, $v10[6]
|
||
|
|
rsp.VMULF<14>(rsp.vpu.r[27], rsp.vpu.r[27], rsp.vpu.r[10]);
|
||
|
|
// lqv $v26[0], 0x0($16)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[26], r16, 0X0);
|
||
|
|
// vmacf $v27, $v17, $v15
|
||
|
|
rsp.VMACF<0>(rsp.vpu.r[27], rsp.vpu.r[17], rsp.vpu.r[15]);
|
||
|
|
// bgtz $20, L_1DA0
|
||
|
|
if (RSP_SIGNED(r20) > 0) {
|
||
|
|
// sqv $v29[0], 0x0($19)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[29], r19, 0X0);
|
||
|
|
goto L_1DA0;
|
||
|
|
}
|
||
|
|
// sqv $v29[0], 0x0($19)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[29], r19, 0X0);
|
||
|
|
// vge $v18, $v18, $v24[3]
|
||
|
|
rsp.VGE<11>(rsp.vpu.r[18], rsp.vpu.r[18], rsp.vpu.r[24]);
|
||
|
|
// vmudl $v23, $v21, $v24[2]
|
||
|
|
rsp.VMUDL<10>(rsp.vpu.r[23], rsp.vpu.r[21], rsp.vpu.r[24]);
|
||
|
|
// sqv $v27[0], 0x0($17)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[27], r17, 0X0);
|
||
|
|
// vmadm $v23, $v20, $v24[2]
|
||
|
|
rsp.VMADM<10>(rsp.vpu.r[23], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
// vmadn $v23, $v21, $v24[1]
|
||
|
|
rsp.VMADN<9>(rsp.vpu.r[23], rsp.vpu.r[21], rsp.vpu.r[24]);
|
||
|
|
// vmadh $v20, $v20, $v24[1]
|
||
|
|
rsp.VMADH<9>(rsp.vpu.r[20], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
// j L_1DBC
|
||
|
|
// vmadn $v21, $v31, $v0[0]
|
||
|
|
rsp.VMADN<8>(rsp.vpu.r[21], rsp.vpu.r[31], rsp.vpu.r[0]);
|
||
|
|
goto L_1DBC;
|
||
|
|
// vmadn $v21, $v31, $v0[0]
|
||
|
|
rsp.VMADN<8>(rsp.vpu.r[21], rsp.vpu.r[31], rsp.vpu.r[0]);
|
||
|
|
L_1DA0:
|
||
|
|
// vcl $v18, $v18, $v24[3]
|
||
|
|
rsp.VCL<11>(rsp.vpu.r[18], rsp.vpu.r[18], rsp.vpu.r[24]);
|
||
|
|
// vmudl $v23, $v21, $v24[2]
|
||
|
|
rsp.VMUDL<10>(rsp.vpu.r[23], rsp.vpu.r[21], rsp.vpu.r[24]);
|
||
|
|
// sqv $v27[0], 0x0($17)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[27], r17, 0X0);
|
||
|
|
// vmadm $v23, $v20, $v24[2]
|
||
|
|
rsp.VMADM<10>(rsp.vpu.r[23], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
// vmadn $v23, $v21, $v24[1]
|
||
|
|
rsp.VMADN<9>(rsp.vpu.r[23], rsp.vpu.r[21], rsp.vpu.r[24]);
|
||
|
|
// vmadh $v20, $v20, $v24[1]
|
||
|
|
rsp.VMADH<9>(rsp.vpu.r[20], rsp.vpu.r[20], rsp.vpu.r[24]);
|
||
|
|
// vmadn $v21, $v31, $v0[0]
|
||
|
|
rsp.VMADN<8>(rsp.vpu.r[21], rsp.vpu.r[31], rsp.vpu.r[0]);
|
||
|
|
L_1DBC:
|
||
|
|
// vmulf $v16, $v18, $v24[6]
|
||
|
|
rsp.VMULF<14>(rsp.vpu.r[16], rsp.vpu.r[18], rsp.vpu.r[24]);
|
||
|
|
// addi $14, $14, -0x10
|
||
|
|
r14 = RSP_ADD32(r14, -0X10);
|
||
|
|
// vmulf $v15, $v18, $v24[7]
|
||
|
|
rsp.VMULF<15>(rsp.vpu.r[15], rsp.vpu.r[18], rsp.vpu.r[24]);
|
||
|
|
// addi $19, $19, 0x10
|
||
|
|
r19 = RSP_ADD32(r19, 0X10);
|
||
|
|
// vmulf $v28, $v28, $v10[6]
|
||
|
|
rsp.VMULF<14>(rsp.vpu.r[28], rsp.vpu.r[28], rsp.vpu.r[10]);
|
||
|
|
// add $17, $17, $15
|
||
|
|
r17 = RSP_ADD32(r17, r15);
|
||
|
|
// vmacf $v28, $v17, $v16
|
||
|
|
rsp.VMACF<0>(rsp.vpu.r[28], rsp.vpu.r[17], rsp.vpu.r[16]);
|
||
|
|
// addi $13, $13, 0x10
|
||
|
|
r13 = RSP_ADD32(r13, 0X10);
|
||
|
|
// vmulf $v26, $v26, $v10[6]
|
||
|
|
rsp.VMULF<14>(rsp.vpu.r[26], rsp.vpu.r[26], rsp.vpu.r[10]);
|
||
|
|
// vmacf $v26, $v17, $v15
|
||
|
|
rsp.VMACF<0>(rsp.vpu.r[26], rsp.vpu.r[17], rsp.vpu.r[15]);
|
||
|
|
// sqv $v28[0], 0x0($18)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[28], r18, 0X0);
|
||
|
|
// addi $18, $18, 0x10
|
||
|
|
r18 = RSP_ADD32(r18, 0X10);
|
||
|
|
// blez $14, L_1DFC
|
||
|
|
if (RSP_SIGNED(r14) <= 0) {
|
||
|
|
// sqv $v26[0], 0x0($16)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[26], r16, 0X0);
|
||
|
|
goto L_1DFC;
|
||
|
|
}
|
||
|
|
// sqv $v26[0], 0x0($16)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[26], r16, 0X0);
|
||
|
|
// j L_1D04
|
||
|
|
// add $16, $16, $15
|
||
|
|
r16 = RSP_ADD32(r16, r15);
|
||
|
|
goto L_1D04;
|
||
|
|
// add $16, $16, $15
|
||
|
|
r16 = RSP_ADD32(r16, r15);
|
||
|
|
L_1DFC:
|
||
|
|
// sqv $v18[0], 0x20($23)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[18], r23, 0X2);
|
||
|
|
// sqv $v19[0], 0x30($23)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[19], r23, 0X3);
|
||
|
|
// sqv $v24[0], 0x40($23)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[24], r23, 0X4);
|
||
|
|
// jal 0x11B0
|
||
|
|
r31 = 0x1E10;
|
||
|
|
// addi $3, $zero, 0x4F
|
||
|
|
r3 = RSP_ADD32(0, 0X4F);
|
||
|
|
goto L_11B0;
|
||
|
|
// addi $3, $zero, 0x4F
|
||
|
|
r3 = RSP_ADD32(0, 0X4F);
|
||
|
|
L_1E10:
|
||
|
|
// mfc0 $5, SP_DMA_BUSY
|
||
|
|
r5 = 0;
|
||
|
|
// bne $5, $zero, L_1E10
|
||
|
|
if (r5 != 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1E10;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// j L_1118
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
goto L_1118;
|
||
|
|
// mtc0 $zero, SP_SEMAPHORE
|
||
|
|
L_1E24:
|
||
|
|
// lqv $v31[0], 0x0($zero)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[31], 0, 0X0);
|
||
|
|
// lhu $18, 0x4($24)
|
||
|
|
r18 = RSP_MEM_HU_LOAD(0X4, r24);
|
||
|
|
// beq $18, $zero, L_1E94
|
||
|
|
if (r18 == 0) {
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1E94;
|
||
|
|
}
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// andi $19, $25, 0xFFFF
|
||
|
|
r19 = r25 & 0XFFFF;
|
||
|
|
// addi $19, $19, 0x5C0
|
||
|
|
r19 = RSP_ADD32(r19, 0X5C0);
|
||
|
|
// srl $20, $25, 16
|
||
|
|
r20 = S32(U32(r25) >> 16);
|
||
|
|
// addi $20, $20, 0x5C0
|
||
|
|
r20 = RSP_ADD32(r20, 0X5C0);
|
||
|
|
// andi $17, $26, 0xFFFF
|
||
|
|
r17 = r26 & 0XFFFF;
|
||
|
|
// mtc2 $17, $v30[0]
|
||
|
|
rsp.MTC2<0>(r17, rsp.vpu.r[30]);
|
||
|
|
// lqv $v27[0], 0x0($19)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[27], r19, 0X0);
|
||
|
|
// lqv $v29[0], 0x0($20)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[29], r20, 0X0);
|
||
|
|
// lqv $v26[0], 0x10($19)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[26], r19, 0X1);
|
||
|
|
// lqv $v28[0], 0x10($20)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[28], r20, 0X1);
|
||
|
|
L_1E5C:
|
||
|
|
// vmulf $v27, $v27, $v31[6]
|
||
|
|
rsp.VMULF<14>(rsp.vpu.r[27], rsp.vpu.r[27], rsp.vpu.r[31]);
|
||
|
|
// addi $18, $18, -0x20
|
||
|
|
r18 = RSP_ADD32(r18, -0X20);
|
||
|
|
// vmacf $v27, $v29, $v30[0]
|
||
|
|
rsp.VMACF<8>(rsp.vpu.r[27], rsp.vpu.r[29], rsp.vpu.r[30]);
|
||
|
|
// addi $20, $20, 0x20
|
||
|
|
r20 = RSP_ADD32(r20, 0X20);
|
||
|
|
// sqv $v27[0], 0x0($19)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[27], r19, 0X0);
|
||
|
|
// vmulf $v26, $v26, $v31[6]
|
||
|
|
rsp.VMULF<14>(rsp.vpu.r[26], rsp.vpu.r[26], rsp.vpu.r[31]);
|
||
|
|
// lqv $v29[0], 0x0($20)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[29], r20, 0X0);
|
||
|
|
// vmacf $v26, $v28, $v30[0]
|
||
|
|
rsp.VMACF<8>(rsp.vpu.r[26], rsp.vpu.r[28], rsp.vpu.r[30]);
|
||
|
|
// lqv $v28[0], 0x10($20)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[28], r20, 0X1);
|
||
|
|
// sqv $v26[0], 0x10($19)
|
||
|
|
rsp.SQV<0>(rsp.vpu.r[26], r19, 0X1);
|
||
|
|
// addi $19, $19, 0x20
|
||
|
|
r19 = RSP_ADD32(r19, 0X20);
|
||
|
|
// lqv $v27[0], 0x0($19)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[27], r19, 0X0);
|
||
|
|
// bgtz $18, L_1E5C
|
||
|
|
if (RSP_SIGNED(r18) > 0) {
|
||
|
|
// lqv $v26[0], 0x10($19)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[26], r19, 0X1);
|
||
|
|
goto L_1E5C;
|
||
|
|
}
|
||
|
|
// lqv $v26[0], 0x10($19)
|
||
|
|
rsp.LQV<0>(rsp.vpu.r[26], r19, 0X1);
|
||
|
|
L_1E94:
|
||
|
|
// j L_1118
|
||
|
|
// nop
|
||
|
|
|
||
|
|
goto L_1118;
|
||
|
|
// nop
|
||
|
|
|
||
|
|
// nop
|
||
|
|
|
||
|
|
return RspExitReason::ImemOverrun;
|
||
|
|
do_indirect_jump:
|
||
|
|
switch ((jump_target | 0x1000) & 0X1FFF) {
|
||
|
|
case 0x18C8: goto L_18C8;
|
||
|
|
case 0x14FC: goto L_14FC;
|
||
|
|
case 0x1868: goto L_1868;
|
||
|
|
case 0x10C0: goto L_10C0;
|
||
|
|
case 0x1178: goto L_1178;
|
||
|
|
case 0x1130: goto L_1130;
|
||
|
|
case 0x1240: goto L_1240;
|
||
|
|
case 0x1280: goto L_1280;
|
||
|
|
case 0x1294: goto L_1294;
|
||
|
|
case 0x1254: goto L_1254;
|
||
|
|
case 0x1214: goto L_1214;
|
||
|
|
case 0x1E10: goto L_1E10;
|
||
|
|
case 0x16F8: goto L_16F8;
|
||
|
|
case 0x12BC: goto L_12BC;
|
||
|
|
case 0x1790: goto L_1790;
|
||
|
|
case 0x1B24: goto L_1B24;
|
||
|
|
case 0x1B8C: goto L_1B8C;
|
||
|
|
case 0x1118: goto L_1118;
|
||
|
|
case 0x1470: goto L_1470;
|
||
|
|
case 0x11DC: goto L_11DC;
|
||
|
|
case 0x1B38: goto L_1B38;
|
||
|
|
case 0x187C: goto L_187C;
|
||
|
|
case 0x12D0: goto L_12D0;
|
||
|
|
case 0x12EC: goto L_12EC;
|
||
|
|
case 0x1328: goto L_1328;
|
||
|
|
case 0x144C: goto L_144C;
|
||
|
|
case 0x140C: goto L_140C;
|
||
|
|
case 0x1E24: goto L_1E24;
|
||
|
|
case 0x138C: goto L_138C;
|
||
|
|
case 0x170C: goto L_170C;
|
||
|
|
}
|
||
|
|
printf("Unhandled jump target 0x%04X in microcode aspMain, coming from [%s:%d]\n", jump_target, debug_file, debug_line);
|
||
|
|
printf("Register dump: r0 = %08X r1 = %08X r2 = %08X r3 = %08X r4 = %08X r5 = %08X r6 = %08X r7 = %08X\n"
|
||
|
|
" r8 = %08X r9 = %08X r10 = %08X r11 = %08X r12 = %08X r13 = %08X r14 = %08X r15 = %08X\n"
|
||
|
|
" r16 = %08X r17 = %08X r18 = %08X r19 = %08X r20 = %08X r21 = %08X r22 = %08X r23 = %08X\n"
|
||
|
|
" r24 = %08X r25 = %08X r26 = %08X r27 = %08X r28 = %08X r29 = %08X r30 = %08X r31 = %08X\n",
|
||
|
|
0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16,
|
||
|
|
r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31);
|
||
|
|
return RspExitReason::UnhandledJumpTarget;
|
||
|
|
}
|